@mytechtoday/augment-extensions 1.3.0 → 1.4.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/LICENSE +22 -22
- package/README.md +105 -6
- package/augment-extensions/domain-rules/software-architecture/README.md +143 -143
- package/augment-extensions/domain-rules/software-architecture/examples/banking-layered.md +961 -961
- package/augment-extensions/domain-rules/software-architecture/examples/ecommerce-microservices.md +990 -990
- package/augment-extensions/domain-rules/software-architecture/examples/iot-eventdriven.md +882 -882
- package/augment-extensions/domain-rules/software-architecture/examples/monolith-to-microservices-migration.md +703 -703
- package/augment-extensions/domain-rules/software-architecture/examples/serverless-imageprocessing.md +957 -957
- package/augment-extensions/domain-rules/software-architecture/examples/trading-eventdriven.md +747 -747
- package/augment-extensions/domain-rules/software-architecture/module.json +119 -119
- package/augment-extensions/domain-rules/software-architecture/rules/challenges-solutions.md +763 -763
- package/augment-extensions/domain-rules/software-architecture/rules/definitions-terminology.md +409 -409
- package/augment-extensions/domain-rules/software-architecture/rules/design-principles.md +684 -684
- package/augment-extensions/domain-rules/software-architecture/rules/evaluation-testing.md +1381 -1381
- package/augment-extensions/domain-rules/software-architecture/rules/event-driven-architecture.md +616 -616
- package/augment-extensions/domain-rules/software-architecture/rules/fundamentals.md +306 -306
- package/augment-extensions/domain-rules/software-architecture/rules/industry-architectures.md +554 -554
- package/augment-extensions/domain-rules/software-architecture/rules/layered-architecture.md +776 -776
- package/augment-extensions/domain-rules/software-architecture/rules/microservices-architecture.md +503 -503
- package/augment-extensions/domain-rules/software-architecture/rules/modeling-documentation.md +1199 -1199
- package/augment-extensions/domain-rules/software-architecture/rules/monolithic-architecture.md +351 -351
- package/augment-extensions/domain-rules/software-architecture/rules/principles.md +556 -556
- package/augment-extensions/domain-rules/software-architecture/rules/quality-attributes.md +797 -797
- package/augment-extensions/domain-rules/software-architecture/rules/scalability-performance.md +1345 -1345
- package/augment-extensions/domain-rules/software-architecture/rules/security-architecture.md +1039 -1039
- package/augment-extensions/domain-rules/software-architecture/rules/serverless-architecture.md +711 -711
- package/augment-extensions/domain-rules/software-architecture/rules/skills-development.md +568 -568
- package/augment-extensions/domain-rules/software-architecture/rules/tools-methodologies.md +961 -961
- package/augment-extensions/visual-design/CHANGELOG.md +132 -132
- package/augment-extensions/visual-design/README.md +255 -255
- package/augment-extensions/visual-design/__tests__/README.md +119 -119
- package/augment-extensions/visual-design/__tests__/style-selector.test.ts +172 -172
- package/augment-extensions/visual-design/__tests__/vendor-styles.test.ts +214 -214
- package/augment-extensions/visual-design/domains/other/ai-prompt-helper.ts +157 -157
- package/augment-extensions/visual-design/domains/other/dotnet-application.ts +156 -156
- package/augment-extensions/visual-design/domains/other/linux-platform.ts +156 -156
- package/augment-extensions/visual-design/domains/other/mobile-application.ts +157 -157
- package/augment-extensions/visual-design/domains/other/motion-picture.ts +156 -156
- package/augment-extensions/visual-design/domains/other/os-application.ts +156 -156
- package/augment-extensions/visual-design/domains/other/print-campaigns.ts +158 -158
- package/augment-extensions/visual-design/domains/other/web-app.ts +157 -157
- package/augment-extensions/visual-design/domains/other/website.ts +161 -161
- package/augment-extensions/visual-design/domains/other/windows-platform.ts +156 -156
- package/augment-extensions/visual-design/domains/web-page-styles/amazon-cloudscape.ts +506 -506
- package/augment-extensions/visual-design/domains/web-page-styles/google-modern.ts +615 -615
- package/augment-extensions/visual-design/domains/web-page-styles/microsoft-fluent.ts +531 -531
- package/augment-extensions/visual-design/examples/README.md +97 -97
- package/augment-extensions/visual-design/examples/ai-prompt-generation.md +233 -233
- package/augment-extensions/visual-design/examples/basic-usage.md +216 -216
- package/augment-extensions/visual-design/examples/domain-workflows.md +257 -257
- package/augment-extensions/visual-design/examples/vendor-comparison.md +247 -247
- package/augment-extensions/visual-design/module.json +78 -78
- package/augment-extensions/visual-design/style-selector.ts +177 -177
- package/augment-extensions/visual-design/types.ts +302 -302
- package/augment-extensions/visual-design/visual-design-core.ts +469 -469
- package/augment-extensions/workflows/adr-support/README.md +227 -227
- package/augment-extensions/workflows/adr-support/__tests__/adr-validator.test.ts +203 -203
- package/augment-extensions/workflows/adr-support/adr-validator.ts +162 -162
- package/augment-extensions/workflows/adr-support/examples/complete-lifecycle-example.md +449 -449
- package/augment-extensions/workflows/adr-support/examples/integration-example.md +580 -580
- package/augment-extensions/workflows/adr-support/examples/superseding-example.md +436 -436
- package/augment-extensions/workflows/adr-support/module.json +112 -112
- package/augment-extensions/workflows/adr-support/rules/adr-creation.md +372 -372
- package/augment-extensions/workflows/adr-support/rules/beads-integration.md +443 -443
- package/augment-extensions/workflows/adr-support/rules/conflict-detection.md +486 -486
- package/augment-extensions/workflows/adr-support/rules/decision-detection.md +362 -362
- package/augment-extensions/workflows/adr-support/rules/lifecycle-management.md +427 -427
- package/augment-extensions/workflows/adr-support/rules/openspec-integration.md +465 -465
- package/augment-extensions/workflows/adr-support/rules/template-selection.md +405 -405
- package/augment-extensions/workflows/adr-support/rules/validation-rules.md +543 -543
- package/augment-extensions/workflows/adr-support/schemas/adr-config.json +191 -191
- package/augment-extensions/workflows/adr-support/schemas/adr-metadata.json +172 -172
- package/augment-extensions/workflows/adr-support/templates/business-case.md +235 -235
- package/augment-extensions/workflows/adr-support/templates/madr-elaborate.md +197 -197
- package/augment-extensions/workflows/adr-support/templates/madr-simple.md +68 -68
- package/augment-extensions/workflows/adr-support/templates/nygard.md +84 -84
- package/augment-extensions/writing-standards/screenplay/rules/file-organization.md +213 -213
- package/augment-extensions/writing-standards/screenplay/utils/__tests__/file-organization.test.ts +169 -169
- package/augment-extensions/writing-standards/screenplay/utils/file-organization.ts +165 -165
- package/cli/dist/commands/agent.d.ts +37 -0
- package/cli/dist/commands/agent.d.ts.map +1 -0
- package/cli/dist/commands/agent.js +222 -0
- package/cli/dist/commands/agent.js.map +1 -0
- package/cli/dist/commands/beads.d.ts +64 -0
- package/cli/dist/commands/beads.d.ts.map +1 -0
- package/cli/dist/commands/beads.js +377 -0
- package/cli/dist/commands/beads.js.map +1 -0
- package/cli/dist/commands/change.d.ts +54 -0
- package/cli/dist/commands/change.d.ts.map +1 -0
- package/cli/dist/commands/change.js +243 -0
- package/cli/dist/commands/change.js.map +1 -0
- package/cli/dist/commands/clean.d.ts +15 -0
- package/cli/dist/commands/clean.d.ts.map +1 -0
- package/cli/dist/commands/clean.js +63 -0
- package/cli/dist/commands/clean.js.map +1 -0
- package/cli/dist/commands/clone.d.ts +15 -0
- package/cli/dist/commands/clone.d.ts.map +1 -0
- package/cli/dist/commands/clone.js +49 -0
- package/cli/dist/commands/clone.js.map +1 -0
- package/cli/dist/commands/config.d.ts +33 -0
- package/cli/dist/commands/config.d.ts.map +1 -0
- package/cli/dist/commands/config.js +166 -0
- package/cli/dist/commands/config.js.map +1 -0
- package/cli/dist/commands/context.d.ts +38 -0
- package/cli/dist/commands/context.d.ts.map +1 -0
- package/cli/dist/commands/context.js +205 -0
- package/cli/dist/commands/context.js.map +1 -0
- package/cli/dist/commands/create.d.ts +18 -0
- package/cli/dist/commands/create.d.ts.map +1 -0
- package/cli/dist/commands/create.js +178 -0
- package/cli/dist/commands/create.js.map +1 -0
- package/cli/dist/commands/diff.d.ts +19 -0
- package/cli/dist/commands/diff.d.ts.map +1 -0
- package/cli/dist/commands/diff.js +104 -0
- package/cli/dist/commands/diff.js.map +1 -0
- package/cli/dist/commands/doctor.d.ts +14 -0
- package/cli/dist/commands/doctor.d.ts.map +1 -0
- package/cli/dist/commands/doctor.js +62 -0
- package/cli/dist/commands/doctor.js.map +1 -0
- package/cli/dist/commands/export.d.ts +28 -0
- package/cli/dist/commands/export.d.ts.map +1 -0
- package/cli/dist/commands/export.js +135 -0
- package/cli/dist/commands/export.js.map +1 -0
- package/cli/dist/commands/import.d.ts +23 -0
- package/cli/dist/commands/import.d.ts.map +1 -0
- package/cli/dist/commands/import.js +118 -0
- package/cli/dist/commands/import.js.map +1 -0
- package/cli/dist/commands/prompt.d.ts +45 -0
- package/cli/dist/commands/prompt.d.ts.map +1 -0
- package/cli/dist/commands/prompt.js +223 -0
- package/cli/dist/commands/prompt.js.map +1 -0
- package/cli/dist/commands/spec.d.ts +57 -0
- package/cli/dist/commands/spec.d.ts.map +1 -0
- package/cli/dist/commands/spec.js +279 -0
- package/cli/dist/commands/spec.js.map +1 -0
- package/cli/dist/commands/stats.d.ts +18 -0
- package/cli/dist/commands/stats.d.ts.map +1 -0
- package/cli/dist/commands/stats.js +85 -0
- package/cli/dist/commands/stats.js.map +1 -0
- package/cli/dist/commands/task.d.ts +65 -0
- package/cli/dist/commands/task.d.ts.map +1 -0
- package/cli/dist/commands/task.js +282 -0
- package/cli/dist/commands/task.js.map +1 -0
- package/cli/dist/commands/template.d.ts +17 -0
- package/cli/dist/commands/template.d.ts.map +1 -0
- package/cli/dist/commands/template.js +55 -0
- package/cli/dist/commands/template.js.map +1 -0
- package/cli/dist/utils/agent-config.d.ts +129 -0
- package/cli/dist/utils/agent-config.d.ts.map +1 -0
- package/cli/dist/utils/agent-config.js +297 -0
- package/cli/dist/utils/agent-config.js.map +1 -0
- package/cli/dist/utils/auto-sync.js +19 -19
- package/cli/dist/utils/beads-graph.d.ts +17 -0
- package/cli/dist/utils/beads-graph.d.ts.map +1 -0
- package/cli/dist/utils/beads-graph.js +150 -0
- package/cli/dist/utils/beads-graph.js.map +1 -0
- package/cli/dist/utils/beads-integration.d.ts +112 -0
- package/cli/dist/utils/beads-integration.d.ts.map +1 -0
- package/cli/dist/utils/beads-integration.js +312 -0
- package/cli/dist/utils/beads-integration.js.map +1 -0
- package/cli/dist/utils/beads-reporter.d.ts +17 -0
- package/cli/dist/utils/beads-reporter.d.ts.map +1 -0
- package/cli/dist/utils/beads-reporter.js +160 -0
- package/cli/dist/utils/beads-reporter.js.map +1 -0
- package/cli/dist/utils/cache-manager.d.ts +55 -0
- package/cli/dist/utils/cache-manager.d.ts.map +1 -0
- package/cli/dist/utils/cache-manager.js +150 -0
- package/cli/dist/utils/cache-manager.js.map +1 -0
- package/cli/dist/utils/change-manager.d.ts +70 -0
- package/cli/dist/utils/change-manager.d.ts.map +1 -0
- package/cli/dist/utils/change-manager.js +412 -0
- package/cli/dist/utils/change-manager.js.map +1 -0
- package/cli/dist/utils/config-manager-enhanced.d.ts +66 -0
- package/cli/dist/utils/config-manager-enhanced.d.ts.map +1 -0
- package/cli/dist/utils/config-manager-enhanced.js +77 -0
- package/cli/dist/utils/config-manager-enhanced.js.map +1 -0
- package/cli/dist/utils/context-manager.d.ts +96 -0
- package/cli/dist/utils/context-manager.d.ts.map +1 -0
- package/cli/dist/utils/context-manager.js +258 -0
- package/cli/dist/utils/context-manager.js.map +1 -0
- package/cli/dist/utils/diff-engine.d.ts +78 -0
- package/cli/dist/utils/diff-engine.d.ts.map +1 -0
- package/cli/dist/utils/diff-engine.js +233 -0
- package/cli/dist/utils/diff-engine.js.map +1 -0
- package/cli/dist/utils/export-system.d.ts +101 -0
- package/cli/dist/utils/export-system.d.ts.map +1 -0
- package/cli/dist/utils/export-system.js +289 -0
- package/cli/dist/utils/export-system.js.map +1 -0
- package/cli/dist/utils/health-checker.d.ts +66 -0
- package/cli/dist/utils/health-checker.d.ts.map +1 -0
- package/cli/dist/utils/health-checker.js +285 -0
- package/cli/dist/utils/health-checker.js.map +1 -0
- package/cli/dist/utils/import-system.d.ts +74 -0
- package/cli/dist/utils/import-system.d.ts.map +1 -0
- package/cli/dist/utils/import-system.js +317 -0
- package/cli/dist/utils/import-system.js.map +1 -0
- package/cli/dist/utils/module-cloner.d.ts +40 -0
- package/cli/dist/utils/module-cloner.d.ts.map +1 -0
- package/cli/dist/utils/module-cloner.js +136 -0
- package/cli/dist/utils/module-cloner.js.map +1 -0
- package/cli/dist/utils/prompt-manager.d.ts +90 -0
- package/cli/dist/utils/prompt-manager.d.ts.map +1 -0
- package/cli/dist/utils/prompt-manager.js +302 -0
- package/cli/dist/utils/prompt-manager.js.map +1 -0
- package/cli/dist/utils/spec-manager.d.ts +65 -0
- package/cli/dist/utils/spec-manager.d.ts.map +1 -0
- package/cli/dist/utils/spec-manager.js +329 -0
- package/cli/dist/utils/spec-manager.js.map +1 -0
- package/cli/dist/utils/stats-collector.d.ts +74 -0
- package/cli/dist/utils/stats-collector.d.ts.map +1 -0
- package/cli/dist/utils/stats-collector.js +164 -0
- package/cli/dist/utils/stats-collector.js.map +1 -0
- package/cli/dist/utils/template-engine.d.ts +47 -0
- package/cli/dist/utils/template-engine.d.ts.map +1 -0
- package/cli/dist/utils/template-engine.js +204 -0
- package/cli/dist/utils/template-engine.js.map +1 -0
- package/package.json +12 -3
- package/augment-extensions/workflows/openspec/README.md +0 -96
- package/augment-extensions/workflows/openspec/examples/complete-change-example.md +0 -244
- package/augment-extensions/workflows/openspec/module.json +0 -54
- package/augment-extensions/workflows/openspec/rules/best-practices.md +0 -272
- package/augment-extensions/workflows/openspec/rules/manual-setup.md +0 -231
- package/augment-extensions/workflows/openspec/rules/spec-format.md +0 -236
- package/augment-extensions/workflows/openspec/rules/workflow.md +0 -214
- package/cli/dist/utils/__tests__/adr-validator.example.d.ts +0 -6
- package/cli/dist/utils/__tests__/adr-validator.example.d.ts.map +0 -1
- package/cli/dist/utils/__tests__/adr-validator.example.js +0 -148
- package/cli/dist/utils/__tests__/adr-validator.example.js.map +0 -1
- package/cli/dist/utils/adr-validator.d.ts +0 -65
- package/cli/dist/utils/adr-validator.d.ts.map +0 -1
- package/cli/dist/utils/adr-validator.js +0 -203
- package/cli/dist/utils/adr-validator.js.map +0 -1
|
@@ -1,177 +1,177 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Style Selector - Vendor Priority and Fallback Logic
|
|
3
|
-
*
|
|
4
|
-
* This module implements the default fallback chain for vendor style selection:
|
|
5
|
-
* 1. Google Modern (Material 3 Expressive) - Primary
|
|
6
|
-
* 2. Microsoft Fluent 2 - Secondary
|
|
7
|
-
* 3. Amazon Cloudscape - Tertiary
|
|
8
|
-
*
|
|
9
|
-
* The priority chain can be overridden via .augment/extensions.json configuration.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { VendorStyle, DomainStyle, StylePreferences, StyleSelector } from './types';
|
|
13
|
-
import { GOOGLE_MODERN } from './domains/web-page-styles/google-modern';
|
|
14
|
-
import { MICROSOFT_FLUENT } from './domains/web-page-styles/microsoft-fluent';
|
|
15
|
-
import { AMAZON_CLOUDSCAPE } from './domains/web-page-styles/amazon-cloudscape';
|
|
16
|
-
|
|
17
|
-
// ============================================================================
|
|
18
|
-
// Default Vendor Priority Chain
|
|
19
|
-
// ============================================================================
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Default vendor priority order:
|
|
23
|
-
* 1. Google (Material 3 Expressive)
|
|
24
|
-
* 2. Microsoft (Fluent 2)
|
|
25
|
-
* 3. Amazon (Cloudscape)
|
|
26
|
-
*/
|
|
27
|
-
export const DEFAULT_VENDOR_PRIORITY: string[] = ['google', 'microsoft', 'amazon'];
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Vendor style registry
|
|
31
|
-
* Maps vendor names to their corresponding VendorStyle implementations
|
|
32
|
-
*/
|
|
33
|
-
const VENDOR_STYLES: Record<string, VendorStyle> = {
|
|
34
|
-
google: GOOGLE_MODERN,
|
|
35
|
-
microsoft: MICROSOFT_FLUENT,
|
|
36
|
-
amazon: AMAZON_CLOUDSCAPE
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
// ============================================================================
|
|
40
|
-
// Style Selector Implementation
|
|
41
|
-
// ============================================================================
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Creates a style selector with configurable vendor priority
|
|
45
|
-
*
|
|
46
|
-
* @param vendorPriority - Optional custom vendor priority order
|
|
47
|
-
* @returns StyleSelector instance
|
|
48
|
-
*/
|
|
49
|
-
export function createStyleSelector(
|
|
50
|
-
vendorPriority: string[] = DEFAULT_VENDOR_PRIORITY
|
|
51
|
-
): StyleSelector {
|
|
52
|
-
return {
|
|
53
|
-
vendorPriority,
|
|
54
|
-
fallbackChain: vendorPriority,
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Selects a vendor style based on preferences and fallback chain
|
|
58
|
-
*
|
|
59
|
-
* @param preferences - Optional style preferences
|
|
60
|
-
* @returns Selected VendorStyle or DomainStyle
|
|
61
|
-
*/
|
|
62
|
-
selectStyle(preferences?: StylePreferences): VendorStyle | DomainStyle {
|
|
63
|
-
// If vendor preference is specified, try to use it
|
|
64
|
-
if (preferences?.vendor) {
|
|
65
|
-
const preferredStyle = VENDOR_STYLES[preferences.vendor.toLowerCase()];
|
|
66
|
-
if (preferredStyle) {
|
|
67
|
-
return preferredStyle;
|
|
68
|
-
}
|
|
69
|
-
console.warn(
|
|
70
|
-
`Vendor "${preferences.vendor}" not found. Falling back to priority chain.`
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Use fallback chain to select vendor
|
|
75
|
-
for (const vendor of this.fallbackChain) {
|
|
76
|
-
const style = VENDOR_STYLES[vendor.toLowerCase()];
|
|
77
|
-
if (style) {
|
|
78
|
-
return style;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Ultimate fallback: return Google Modern
|
|
83
|
-
console.warn('No vendor found in fallback chain. Using Google Modern as default.');
|
|
84
|
-
return GOOGLE_MODERN;
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Default style selector instance
|
|
91
|
-
* Uses the default vendor priority: google → microsoft → amazon
|
|
92
|
-
*/
|
|
93
|
-
export const defaultStyleSelector = createStyleSelector();
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Selects a vendor style using the default priority chain
|
|
97
|
-
*
|
|
98
|
-
* @param preferences - Optional style preferences
|
|
99
|
-
* @returns Selected VendorStyle
|
|
100
|
-
*/
|
|
101
|
-
export function selectVendorStyle(preferences?: StylePreferences): VendorStyle {
|
|
102
|
-
return defaultStyleSelector.selectStyle(preferences) as VendorStyle;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Gets a specific vendor style by name
|
|
107
|
-
*
|
|
108
|
-
* @param vendor - Vendor name ('google', 'microsoft', or 'amazon')
|
|
109
|
-
* @returns VendorStyle or undefined if not found
|
|
110
|
-
*/
|
|
111
|
-
export function getVendorStyle(vendor: string): VendorStyle | undefined {
|
|
112
|
-
return VENDOR_STYLES[vendor.toLowerCase()];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Gets all available vendor styles
|
|
117
|
-
*
|
|
118
|
-
* @returns Array of all VendorStyle implementations
|
|
119
|
-
*/
|
|
120
|
-
export function getAllVendorStyles(): VendorStyle[] {
|
|
121
|
-
return Object.values(VENDOR_STYLES);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Checks if a vendor style exists
|
|
126
|
-
*
|
|
127
|
-
* @param vendor - Vendor name to check
|
|
128
|
-
* @returns true if vendor exists, false otherwise
|
|
129
|
-
*/
|
|
130
|
-
export function hasVendorStyle(vendor: string): boolean {
|
|
131
|
-
return vendor.toLowerCase() in VENDOR_STYLES;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// ============================================================================
|
|
135
|
-
// Usage Examples for AI Agents
|
|
136
|
-
// ============================================================================
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* EXAMPLE 1: Use default priority chain
|
|
140
|
-
*
|
|
141
|
-
* ```typescript
|
|
142
|
-
* import { selectVendorStyle } from './style-selector';
|
|
143
|
-
*
|
|
144
|
-
* const style = selectVendorStyle();
|
|
145
|
-
* // Returns GOOGLE_MODERN (first in priority chain)
|
|
146
|
-
* ```
|
|
147
|
-
*
|
|
148
|
-
* EXAMPLE 2: Specify vendor preference
|
|
149
|
-
*
|
|
150
|
-
* ```typescript
|
|
151
|
-
* import { selectVendorStyle } from './style-selector';
|
|
152
|
-
*
|
|
153
|
-
* const style = selectVendorStyle({ vendor: 'microsoft' });
|
|
154
|
-
* // Returns MICROSOFT_FLUENT
|
|
155
|
-
* ```
|
|
156
|
-
*
|
|
157
|
-
* EXAMPLE 3: Custom priority chain
|
|
158
|
-
*
|
|
159
|
-
* ```typescript
|
|
160
|
-
* import { createStyleSelector } from './style-selector';
|
|
161
|
-
*
|
|
162
|
-
* const selector = createStyleSelector(['amazon', 'microsoft', 'google']);
|
|
163
|
-
* const style = selector.selectStyle();
|
|
164
|
-
* // Returns AMAZON_CLOUDSCAPE (first in custom chain)
|
|
165
|
-
* ```
|
|
166
|
-
*/
|
|
167
|
-
|
|
168
|
-
export default {
|
|
169
|
-
createStyleSelector,
|
|
170
|
-
defaultStyleSelector,
|
|
171
|
-
selectVendorStyle,
|
|
172
|
-
getVendorStyle,
|
|
173
|
-
getAllVendorStyles,
|
|
174
|
-
hasVendorStyle,
|
|
175
|
-
DEFAULT_VENDOR_PRIORITY
|
|
176
|
-
};
|
|
177
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Style Selector - Vendor Priority and Fallback Logic
|
|
3
|
+
*
|
|
4
|
+
* This module implements the default fallback chain for vendor style selection:
|
|
5
|
+
* 1. Google Modern (Material 3 Expressive) - Primary
|
|
6
|
+
* 2. Microsoft Fluent 2 - Secondary
|
|
7
|
+
* 3. Amazon Cloudscape - Tertiary
|
|
8
|
+
*
|
|
9
|
+
* The priority chain can be overridden via .augment/extensions.json configuration.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { VendorStyle, DomainStyle, StylePreferences, StyleSelector } from './types';
|
|
13
|
+
import { GOOGLE_MODERN } from './domains/web-page-styles/google-modern';
|
|
14
|
+
import { MICROSOFT_FLUENT } from './domains/web-page-styles/microsoft-fluent';
|
|
15
|
+
import { AMAZON_CLOUDSCAPE } from './domains/web-page-styles/amazon-cloudscape';
|
|
16
|
+
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Default Vendor Priority Chain
|
|
19
|
+
// ============================================================================
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Default vendor priority order:
|
|
23
|
+
* 1. Google (Material 3 Expressive)
|
|
24
|
+
* 2. Microsoft (Fluent 2)
|
|
25
|
+
* 3. Amazon (Cloudscape)
|
|
26
|
+
*/
|
|
27
|
+
export const DEFAULT_VENDOR_PRIORITY: string[] = ['google', 'microsoft', 'amazon'];
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Vendor style registry
|
|
31
|
+
* Maps vendor names to their corresponding VendorStyle implementations
|
|
32
|
+
*/
|
|
33
|
+
const VENDOR_STYLES: Record<string, VendorStyle> = {
|
|
34
|
+
google: GOOGLE_MODERN,
|
|
35
|
+
microsoft: MICROSOFT_FLUENT,
|
|
36
|
+
amazon: AMAZON_CLOUDSCAPE
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Style Selector Implementation
|
|
41
|
+
// ============================================================================
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Creates a style selector with configurable vendor priority
|
|
45
|
+
*
|
|
46
|
+
* @param vendorPriority - Optional custom vendor priority order
|
|
47
|
+
* @returns StyleSelector instance
|
|
48
|
+
*/
|
|
49
|
+
export function createStyleSelector(
|
|
50
|
+
vendorPriority: string[] = DEFAULT_VENDOR_PRIORITY
|
|
51
|
+
): StyleSelector {
|
|
52
|
+
return {
|
|
53
|
+
vendorPriority,
|
|
54
|
+
fallbackChain: vendorPriority,
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Selects a vendor style based on preferences and fallback chain
|
|
58
|
+
*
|
|
59
|
+
* @param preferences - Optional style preferences
|
|
60
|
+
* @returns Selected VendorStyle or DomainStyle
|
|
61
|
+
*/
|
|
62
|
+
selectStyle(preferences?: StylePreferences): VendorStyle | DomainStyle {
|
|
63
|
+
// If vendor preference is specified, try to use it
|
|
64
|
+
if (preferences?.vendor) {
|
|
65
|
+
const preferredStyle = VENDOR_STYLES[preferences.vendor.toLowerCase()];
|
|
66
|
+
if (preferredStyle) {
|
|
67
|
+
return preferredStyle;
|
|
68
|
+
}
|
|
69
|
+
console.warn(
|
|
70
|
+
`Vendor "${preferences.vendor}" not found. Falling back to priority chain.`
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Use fallback chain to select vendor
|
|
75
|
+
for (const vendor of this.fallbackChain) {
|
|
76
|
+
const style = VENDOR_STYLES[vendor.toLowerCase()];
|
|
77
|
+
if (style) {
|
|
78
|
+
return style;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Ultimate fallback: return Google Modern
|
|
83
|
+
console.warn('No vendor found in fallback chain. Using Google Modern as default.');
|
|
84
|
+
return GOOGLE_MODERN;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Default style selector instance
|
|
91
|
+
* Uses the default vendor priority: google → microsoft → amazon
|
|
92
|
+
*/
|
|
93
|
+
export const defaultStyleSelector = createStyleSelector();
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Selects a vendor style using the default priority chain
|
|
97
|
+
*
|
|
98
|
+
* @param preferences - Optional style preferences
|
|
99
|
+
* @returns Selected VendorStyle
|
|
100
|
+
*/
|
|
101
|
+
export function selectVendorStyle(preferences?: StylePreferences): VendorStyle {
|
|
102
|
+
return defaultStyleSelector.selectStyle(preferences) as VendorStyle;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Gets a specific vendor style by name
|
|
107
|
+
*
|
|
108
|
+
* @param vendor - Vendor name ('google', 'microsoft', or 'amazon')
|
|
109
|
+
* @returns VendorStyle or undefined if not found
|
|
110
|
+
*/
|
|
111
|
+
export function getVendorStyle(vendor: string): VendorStyle | undefined {
|
|
112
|
+
return VENDOR_STYLES[vendor.toLowerCase()];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Gets all available vendor styles
|
|
117
|
+
*
|
|
118
|
+
* @returns Array of all VendorStyle implementations
|
|
119
|
+
*/
|
|
120
|
+
export function getAllVendorStyles(): VendorStyle[] {
|
|
121
|
+
return Object.values(VENDOR_STYLES);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Checks if a vendor style exists
|
|
126
|
+
*
|
|
127
|
+
* @param vendor - Vendor name to check
|
|
128
|
+
* @returns true if vendor exists, false otherwise
|
|
129
|
+
*/
|
|
130
|
+
export function hasVendorStyle(vendor: string): boolean {
|
|
131
|
+
return vendor.toLowerCase() in VENDOR_STYLES;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// ============================================================================
|
|
135
|
+
// Usage Examples for AI Agents
|
|
136
|
+
// ============================================================================
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* EXAMPLE 1: Use default priority chain
|
|
140
|
+
*
|
|
141
|
+
* ```typescript
|
|
142
|
+
* import { selectVendorStyle } from './style-selector';
|
|
143
|
+
*
|
|
144
|
+
* const style = selectVendorStyle();
|
|
145
|
+
* // Returns GOOGLE_MODERN (first in priority chain)
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* EXAMPLE 2: Specify vendor preference
|
|
149
|
+
*
|
|
150
|
+
* ```typescript
|
|
151
|
+
* import { selectVendorStyle } from './style-selector';
|
|
152
|
+
*
|
|
153
|
+
* const style = selectVendorStyle({ vendor: 'microsoft' });
|
|
154
|
+
* // Returns MICROSOFT_FLUENT
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* EXAMPLE 3: Custom priority chain
|
|
158
|
+
*
|
|
159
|
+
* ```typescript
|
|
160
|
+
* import { createStyleSelector } from './style-selector';
|
|
161
|
+
*
|
|
162
|
+
* const selector = createStyleSelector(['amazon', 'microsoft', 'google']);
|
|
163
|
+
* const style = selector.selectStyle();
|
|
164
|
+
* // Returns AMAZON_CLOUDSCAPE (first in custom chain)
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
export default {
|
|
169
|
+
createStyleSelector,
|
|
170
|
+
defaultStyleSelector,
|
|
171
|
+
selectVendorStyle,
|
|
172
|
+
getVendorStyle,
|
|
173
|
+
getAllVendorStyles,
|
|
174
|
+
hasVendorStyle,
|
|
175
|
+
DEFAULT_VENDOR_PRIORITY
|
|
176
|
+
};
|
|
177
|
+
|