ai-devkit 0.4.0 → 0.4.2

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +10 -10
  3. package/dist/__tests__/lib/EnvironmentSelector.test.js +3 -3
  4. package/dist/__tests__/lib/EnvironmentSelector.test.js.map +1 -1
  5. package/dist/__tests__/lib/PhaseSelector.test.js +3 -3
  6. package/dist/__tests__/lib/PhaseSelector.test.js.map +1 -1
  7. package/dist/__tests__/lib/TemplateManager.test.d.ts +2 -0
  8. package/dist/__tests__/lib/TemplateManager.test.d.ts.map +1 -0
  9. package/dist/__tests__/lib/TemplateManager.test.js +351 -0
  10. package/dist/__tests__/lib/TemplateManager.test.js.map +1 -0
  11. package/dist/lib/EnvironmentSelector.js +1 -1
  12. package/dist/lib/EnvironmentSelector.js.map +1 -1
  13. package/dist/lib/PhaseSelector.js +1 -1
  14. package/dist/lib/PhaseSelector.js.map +1 -1
  15. package/dist/lib/TemplateManager.d.ts +3 -1
  16. package/dist/lib/TemplateManager.d.ts.map +1 -1
  17. package/dist/lib/TemplateManager.js +50 -23
  18. package/dist/lib/TemplateManager.js.map +1 -1
  19. package/dist/types.d.ts +2 -0
  20. package/dist/types.d.ts.map +1 -1
  21. package/dist/types.js.map +1 -1
  22. package/dist/util/env.d.ts.map +1 -1
  23. package/dist/util/env.js +3 -1
  24. package/dist/util/env.js.map +1 -1
  25. package/package.json +1 -1
  26. package/templates/commands/capture-knowledge.toml +49 -0
  27. package/templates/commands/check-implementation.toml +21 -0
  28. package/templates/commands/code-review.toml +83 -0
  29. package/templates/commands/debug.toml +48 -0
  30. package/templates/commands/execute-plan.toml +74 -0
  31. package/templates/commands/new-requirement.toml +129 -0
  32. package/templates/commands/review-design.toml +13 -0
  33. package/templates/commands/review-requirements.toml +11 -0
  34. package/templates/commands/update-planning.toml +63 -0
  35. package/templates/commands/writing-test.toml +46 -0
  36. package/templates/env/base.md +51 -0
  37. package/web/content/pages/vision.md +2 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## Unreleased
9
+
10
+ - Fixed Gemini CLI integration https://github.com/codeaholicguy/ai-devkit/issues/3
11
+ - Added test for TemplateManager.ts
12
+ - Fixed Github Copilot integration https://github.com/codeaholicguy/ai-devkit/issues/4
13
+
14
+ ## [0.4.0] - 2025-10-31
15
+
16
+ ### Added
17
+ - **Multi-Environment Setup** - Support for 10 AI development environments
18
+ - Interactive environment selection with multi-choice prompts
19
+ - Support for Cursor, Claude Code, GitHub Copilot, Google Gemini, OpenAI Codex, Windsurf, KiloCode, AMP, OpenCode, and Roo Code
20
+ - Unified template structure with AGENTS.md files for all environments
21
+ - Environment-specific command directories and configuration files
22
+ - Override protection with confirmation prompts for existing environments
23
+ - Config persistence storing selected environments array
24
+
25
+ ### Changed
26
+ - **Breaking Changes** - Removed legacy single-environment support for cleaner API
27
+ - Renamed `EnvironmentId` to `EnvironmentCode` throughout codebase
28
+ - Removed legacy `Environment` type union (cursor | claude | both)
29
+ - Updated config schema to use `environments: EnvironmentCode[]`
30
+ - All environments now use standardized AGENTS.md context files
31
+
32
+ ### Technical Improvements
33
+ - **Testing Infrastructure** - Complete test suite implementation
34
+ - **Architecture** - Modular design improvements
35
+
8
36
  ## [0.3.0] - 2025-10-15
9
37
 
10
38
  ### Added
package/README.md CHANGED
@@ -121,16 +121,16 @@ your-project/
121
121
  Supported Tools & Agents:
122
122
  | Agent | Support | Notes |
123
123
  |-----------------------------------------------------------|---------|---------------------------------------------------|
124
- | [Claude Code](https://www.anthropic.com/claude-code) | ✅ | |
125
- | [GitHub Copilot](https://code.visualstudio.com/) | ✅ | |
126
- | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | ✅ | |
127
- | [Cursor](https://cursor.sh/) | ✅ | |
128
- | [opencode](https://opencode.ai/) | | |
129
- | [Windsurf](https://windsurf.com/) | | |
130
- | [Kilo Code](https://github.com/Kilo-Org/kilocode) | | |
131
- | [Roo Code](https://roocode.com/) | | |
132
- | [Codex CLI](https://github.com/openai/codex) | | |
133
- | [Amp](https://ampcode.com/) | | |
124
+ | [Claude Code](https://www.anthropic.com/claude-code) | ✅ | |
125
+ | [GitHub Copilot](https://code.visualstudio.com/) | ✅ | VSCode only |
126
+ | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | ✅ | |
127
+ | [Cursor](https://cursor.sh/) | ✅ | |
128
+ | [opencode](https://opencode.ai/) | 🚧 | Testing |
129
+ | [Windsurf](https://windsurf.com/) | 🚧 | Testing |
130
+ | [Kilo Code](https://github.com/Kilo-Org/kilocode) | 🚧 | Testing |
131
+ | [Roo Code](https://roocode.com/) | 🚧 | Testing |
132
+ | [Codex CLI](https://github.com/openai/codex) | 🚧 | Testing |
133
+ | [Amp](https://ampcode.com/) | 🚧 | Testing |
134
134
 
135
135
  Templates are designed to provide structure while remaining concise and AI-friendly.
136
136
 
@@ -102,14 +102,14 @@ describe('EnvironmentSelector', () => {
102
102
  it('should display selected environments with checkmarks', () => {
103
103
  selector.displaySelectionSummary(['cursor', 'claude']);
104
104
  expect(consoleSpy).toHaveBeenCalledWith('\nSelected environments:');
105
- expect(consoleSpy).toHaveBeenCalledWith(' [OK] Cursor');
106
- expect(consoleSpy).toHaveBeenCalledWith(' [OK] Claude Code');
105
+ expect(consoleSpy).toHaveBeenCalledWith(' Cursor');
106
+ expect(consoleSpy).toHaveBeenCalledWith(' Claude Code');
107
107
  expect(consoleSpy).toHaveBeenCalledWith('');
108
108
  });
109
109
  it('should handle single environment selection', () => {
110
110
  selector.displaySelectionSummary(['cursor']);
111
111
  expect(consoleSpy).toHaveBeenCalledWith('\nSelected environments:');
112
- expect(consoleSpy).toHaveBeenCalledWith(' [OK] Cursor');
112
+ expect(consoleSpy).toHaveBeenCalledWith(' Cursor');
113
113
  expect(consoleSpy).toHaveBeenCalledWith('');
114
114
  });
115
115
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentSelector.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/EnvironmentSelector.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentSelector.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/EnvironmentSelector.test.ts"],"names":[],"mappings":";;AAAA,uEAAoE;AACpE,wCAAoD;AAEpD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEtB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,QAA6B,CAAC;IAClC,IAAI,UAAoC,CAAC;IAEzC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,yCAAmB,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACvB,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;YAC1C,UAAU,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAErE,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAEpC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC;gBACtC,MAAM,CAAC,gBAAgB,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,2EAA2E;oBACpF,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAChC,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,KAAK,EAAE,GAAG,CAAC,IAAI;wBACf,KAAK,EAAE,GAAG,CAAC,IAAI;qBAChB,CAAC,CAAC;oBACH,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;iBAC/B,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1C,UAAU,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,UAAU,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE3B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAExC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvE,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,UAAU,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE1D,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC;gBACtC;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,2HAA2H;oBACpI,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAGH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,IAAI,UAA4B,CAAC;QAEjC,UAAU,CAAC,GAAG,EAAE;YACd,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAErC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;YACrE,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,QAAQ,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAEvD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;YACpE,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,QAAQ,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE7C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;YACpE,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -62,14 +62,14 @@ describe('PhaseSelector', () => {
62
62
  it('should display selected phases with checkmarks', () => {
63
63
  selector.displaySelectionSummary(['requirements', 'design']);
64
64
  expect(consoleSpy).toHaveBeenCalledWith('\nSelected phases:');
65
- expect(consoleSpy).toHaveBeenCalledWith(' [OK] Requirements & Problem Understanding');
66
- expect(consoleSpy).toHaveBeenCalledWith(' [OK] System Design & Architecture');
65
+ expect(consoleSpy).toHaveBeenCalledWith(' Requirements & Problem Understanding');
66
+ expect(consoleSpy).toHaveBeenCalledWith(' System Design & Architecture');
67
67
  expect(consoleSpy).toHaveBeenCalledWith('');
68
68
  });
69
69
  it('should handle single phase selection', () => {
70
70
  selector.displaySelectionSummary(['requirements']);
71
71
  expect(consoleSpy).toHaveBeenCalledWith('\nSelected phases:');
72
- expect(consoleSpy).toHaveBeenCalledWith(' [OK] Requirements & Problem Understanding');
72
+ expect(consoleSpy).toHaveBeenCalledWith(' Requirements & Problem Understanding');
73
73
  expect(consoleSpy).toHaveBeenCalledWith('');
74
74
  });
75
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PhaseSelector.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/PhaseSelector.test.ts"],"names":[],"mappings":";;AAAA,2DAAwD;AACxD,uCAAoE;AAEpE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEtB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,QAAuB,CAAC;IAC5B,IAAI,UAAoC,CAAC;IAEzC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,6BAAa,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACvB,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YAE7C,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,UAAU,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE1D,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,IAAI,UAA4B,CAAC;QAEjC,UAAU,CAAC,GAAG,EAAE;YACd,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAErC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,QAAQ,CAAC,uBAAuB,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YAE7D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,6CAA6C,CAAC,CAAC;YACvF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;YAC/E,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,QAAQ,CAAC,uBAAuB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAEnD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,6CAA6C,CAAC,CAAC;YACvF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"PhaseSelector.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/PhaseSelector.test.ts"],"names":[],"mappings":";;AAAA,2DAAwD;AACxD,uCAAoE;AAEpE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEtB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,QAAuB,CAAC;IAC5B,IAAI,UAAoC,CAAC;IAEzC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,6BAAa,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACvB,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YAE7C,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,UAAU,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE1D,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,IAAI,UAA4B,CAAC;QAEjC,UAAU,CAAC,GAAG,EAAE;YACd,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAErC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,QAAQ,CAAC,uBAAuB,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YAE7D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,wCAAwC,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,CAAC;YAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,QAAQ,CAAC,uBAAuB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAEnD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,wCAAwC,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TemplateManager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateManager.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/TemplateManager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,351 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs-extra"));
37
+ const path = __importStar(require("path"));
38
+ const TemplateManager_1 = require("../../lib/TemplateManager");
39
+ jest.mock('fs-extra');
40
+ jest.mock('../../util/env');
41
+ describe('TemplateManager', () => {
42
+ let templateManager;
43
+ let mockFs;
44
+ let mockGetEnvironment;
45
+ beforeEach(() => {
46
+ mockFs = fs;
47
+ mockGetEnvironment = require('../../util/env').getEnvironment;
48
+ templateManager = new TemplateManager_1.TemplateManager('/test/target');
49
+ jest.clearAllMocks();
50
+ });
51
+ afterEach(() => {
52
+ jest.restoreAllMocks();
53
+ });
54
+ describe('setupSingleEnvironment', () => {
55
+ it('should copy context file when it exists', async () => {
56
+ const env = {
57
+ code: 'test-env',
58
+ name: 'Test Environment',
59
+ contextFileName: '.test-context.md',
60
+ commandPath: '.test',
61
+ isCustomCommandPath: false
62
+ };
63
+ mockFs.pathExists
64
+ .mockResolvedValueOnce(true)
65
+ .mockResolvedValueOnce(true);
66
+ mockFs.readdir.mockResolvedValue(['command1.md', 'command2.toml']);
67
+ const result = await templateManager.setupSingleEnvironment(env);
68
+ expect(mockFs.copy).toHaveBeenCalledWith(path.join(templateManager['templatesDir'], 'env', 'base.md'), path.join(templateManager['targetDir'], env.contextFileName));
69
+ expect(result).toContain(path.join(templateManager['targetDir'], env.contextFileName));
70
+ });
71
+ it('should warn when context file does not exist', async () => {
72
+ const consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation();
73
+ const env = {
74
+ code: 'test-env',
75
+ name: 'Test Environment',
76
+ contextFileName: '.test-context.md',
77
+ commandPath: '.test',
78
+ isCustomCommandPath: false
79
+ };
80
+ mockFs.pathExists
81
+ .mockResolvedValueOnce(false)
82
+ .mockResolvedValueOnce(true);
83
+ mockFs.readdir.mockResolvedValue(['command1.md']);
84
+ const result = await templateManager.setupSingleEnvironment(env);
85
+ expect(consoleWarnSpy).toHaveBeenCalledWith(expect.stringContaining('Warning: Context file not found'));
86
+ expect(result).toEqual([path.join(templateManager['targetDir'], env.commandPath, 'command1.md')]);
87
+ consoleWarnSpy.mockRestore();
88
+ });
89
+ it('should copy commands when isCustomCommandPath is false', async () => {
90
+ const env = {
91
+ code: 'test-env',
92
+ name: 'Test Environment',
93
+ contextFileName: '.test-context.md',
94
+ commandPath: '.test',
95
+ isCustomCommandPath: false
96
+ };
97
+ const mockCommandFiles = ['command1.md', 'command2.toml', 'command3.md'];
98
+ mockFs.pathExists
99
+ .mockResolvedValueOnce(true) // context file exists
100
+ .mockResolvedValueOnce(true); // commands directory exists
101
+ mockFs.readdir.mockResolvedValue(mockCommandFiles);
102
+ const result = await templateManager.setupSingleEnvironment(env);
103
+ expect(mockFs.ensureDir).toHaveBeenCalledWith(path.join(templateManager['targetDir'], env.commandPath));
104
+ // Should only copy .md files (not .toml files)
105
+ expect(mockFs.copy).toHaveBeenCalledWith(path.join(templateManager['templatesDir'], 'commands', 'command1.md'), path.join(templateManager['targetDir'], env.commandPath, 'command1.md'));
106
+ expect(mockFs.copy).toHaveBeenCalledWith(path.join(templateManager['templatesDir'], 'commands', 'command3.md'), path.join(templateManager['targetDir'], env.commandPath, 'command3.md'));
107
+ expect(result).toContain(path.join(templateManager['targetDir'], env.commandPath, 'command1.md'));
108
+ expect(result).toContain(path.join(templateManager['targetDir'], env.commandPath, 'command3.md'));
109
+ });
110
+ it('should skip commands when isCustomCommandPath is true', async () => {
111
+ const env = {
112
+ code: 'test-env',
113
+ name: 'Test Environment',
114
+ contextFileName: '.test-context.md',
115
+ commandPath: '.test',
116
+ isCustomCommandPath: true
117
+ };
118
+ mockFs.pathExists.mockResolvedValueOnce(true);
119
+ const result = await templateManager.setupSingleEnvironment(env);
120
+ expect(mockFs.ensureDir).not.toHaveBeenCalled();
121
+ expect(mockFs.copy).toHaveBeenCalledTimes(1);
122
+ expect(result).toContain(path.join(templateManager['targetDir'], env.contextFileName));
123
+ });
124
+ it('should handle cursor environment with special files', async () => {
125
+ const env = {
126
+ code: 'cursor',
127
+ name: 'Cursor',
128
+ contextFileName: '.cursor.md',
129
+ commandPath: '.cursor',
130
+ isCustomCommandPath: false
131
+ };
132
+ const mockRuleFiles = ['rule1.md', 'rule2.toml'];
133
+ mockFs.pathExists
134
+ .mockResolvedValueOnce(true)
135
+ .mockResolvedValueOnce(true).mockResolvedValueOnce(true);
136
+ mockFs.readdir
137
+ .mockResolvedValueOnce([]).mockResolvedValueOnce(mockRuleFiles);
138
+ const result = await templateManager.setupSingleEnvironment(env);
139
+ expect(mockFs.ensureDir).toHaveBeenCalledWith(path.join(templateManager['targetDir'], '.cursor', 'rules'));
140
+ expect(mockFs.copy).toHaveBeenCalledWith(path.join(templateManager['templatesDir'], 'env', 'cursor', 'rules'), path.join(templateManager['targetDir'], '.cursor', 'rules'));
141
+ expect(result).toContain(path.join(templateManager['targetDir'], '.cursor', 'rules', 'rule1.md'));
142
+ expect(result).toContain(path.join(templateManager['targetDir'], '.cursor', 'rules', 'rule2.toml'));
143
+ });
144
+ it('should handle gemini environment with toml files', async () => {
145
+ const env = {
146
+ code: 'gemini',
147
+ name: 'Gemini',
148
+ contextFileName: '.gemini.md',
149
+ commandPath: '.gemini',
150
+ isCustomCommandPath: false
151
+ };
152
+ const mockCommandFiles = ['command1.md', 'command2.toml', 'command3.toml'];
153
+ mockFs.pathExists
154
+ .mockResolvedValueOnce(true)
155
+ .mockResolvedValueOnce(true).mockResolvedValueOnce(true); // gemini commands directory exists
156
+ mockFs.readdir.mockResolvedValue(mockCommandFiles);
157
+ const result = await templateManager.setupSingleEnvironment(env);
158
+ expect(mockFs.ensureDir).toHaveBeenCalledWith(path.join(templateManager['targetDir'], '.gemini', 'commands'));
159
+ expect(mockFs.copy).toHaveBeenCalledWith(path.join(templateManager['templatesDir'], 'commands', 'command2.toml'), path.join(templateManager['targetDir'], '.gemini', 'commands', 'command2.toml'));
160
+ expect(mockFs.copy).toHaveBeenCalledWith(path.join(templateManager['templatesDir'], 'commands', 'command3.toml'), path.join(templateManager['targetDir'], '.gemini', 'commands', 'command3.toml'));
161
+ expect(result).toContain(path.join(templateManager['targetDir'], '.gemini', 'commands', 'command2.toml'));
162
+ expect(result).toContain(path.join(templateManager['targetDir'], '.gemini', 'commands', 'command3.toml'));
163
+ });
164
+ it('should handle errors and rethrow them', async () => {
165
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation();
166
+ const env = {
167
+ code: 'test-env',
168
+ name: 'Test Environment',
169
+ contextFileName: '.test-context.md',
170
+ commandPath: '.test',
171
+ isCustomCommandPath: false
172
+ };
173
+ const testError = new Error('Test error');
174
+ mockFs.pathExists.mockRejectedValue(testError);
175
+ await expect(templateManager.setupSingleEnvironment(env)).rejects.toThrow('Test error');
176
+ expect(consoleErrorSpy).toHaveBeenCalledWith('Error setting up environment Test Environment:', testError);
177
+ consoleErrorSpy.mockRestore();
178
+ });
179
+ });
180
+ describe('copyPhaseTemplate', () => {
181
+ it('should copy phase template and return target file path', async () => {
182
+ const phase = 'requirements';
183
+ mockFs.ensureDir.mockResolvedValue(undefined);
184
+ mockFs.copy.mockResolvedValue(undefined);
185
+ const result = await templateManager.copyPhaseTemplate(phase);
186
+ expect(mockFs.ensureDir).toHaveBeenCalledWith(path.join(templateManager['targetDir'], 'docs', 'ai', phase));
187
+ expect(mockFs.copy).toHaveBeenCalledWith(path.join(templateManager['templatesDir'], 'phases', `${phase}.md`), path.join(templateManager['targetDir'], 'docs', 'ai', phase, 'README.md'));
188
+ expect(result).toBe(path.join(templateManager['targetDir'], 'docs', 'ai', phase, 'README.md'));
189
+ });
190
+ });
191
+ describe('fileExists', () => {
192
+ it('should return true when phase file exists', async () => {
193
+ const phase = 'design';
194
+ mockFs.pathExists.mockResolvedValue(true);
195
+ const result = await templateManager.fileExists(phase);
196
+ expect(mockFs.pathExists).toHaveBeenCalledWith(path.join(templateManager['targetDir'], 'docs', 'ai', phase, 'README.md'));
197
+ expect(result).toBe(true);
198
+ });
199
+ it('should return false when phase file does not exist', async () => {
200
+ const phase = 'planning';
201
+ mockFs.pathExists.mockResolvedValue(false);
202
+ const result = await templateManager.fileExists(phase);
203
+ expect(mockFs.pathExists).toHaveBeenCalledWith(path.join(templateManager['targetDir'], 'docs', 'ai', phase, 'README.md'));
204
+ expect(result).toBe(false);
205
+ });
206
+ });
207
+ describe('setupMultipleEnvironments', () => {
208
+ it('should setup multiple environments successfully', async () => {
209
+ const envIds = ['cursor', 'gemini'];
210
+ const cursorEnv = {
211
+ code: 'cursor',
212
+ name: 'Cursor',
213
+ contextFileName: 'AGENTS.md',
214
+ commandPath: '.cursor/commands',
215
+ };
216
+ const geminiEnv = {
217
+ code: 'gemini',
218
+ name: 'Gemini',
219
+ contextFileName: 'AGENTS.md',
220
+ commandPath: '.gemini/commands',
221
+ isCustomCommandPath: true,
222
+ };
223
+ mockGetEnvironment
224
+ .mockReturnValueOnce(cursorEnv)
225
+ .mockReturnValueOnce(geminiEnv);
226
+ // Mock setupSingleEnvironment
227
+ const mockSetupSingleEnvironment = jest.fn();
228
+ mockSetupSingleEnvironment
229
+ .mockResolvedValueOnce(['/path/to/cursor/file1', '/path/to/cursor/file2'])
230
+ .mockResolvedValueOnce(['/path/to/gemini/file1']);
231
+ templateManager.setupSingleEnvironment = mockSetupSingleEnvironment;
232
+ const result = await templateManager.setupMultipleEnvironments(envIds);
233
+ expect(mockGetEnvironment).toHaveBeenCalledWith('cursor');
234
+ expect(mockGetEnvironment).toHaveBeenCalledWith('gemini');
235
+ expect(mockSetupSingleEnvironment).toHaveBeenCalledWith(cursorEnv);
236
+ expect(mockSetupSingleEnvironment).toHaveBeenCalledWith(geminiEnv);
237
+ expect(result).toEqual([
238
+ '/path/to/cursor/file1',
239
+ '/path/to/cursor/file2',
240
+ '/path/to/gemini/file1'
241
+ ]);
242
+ });
243
+ it('should skip invalid environments and continue with valid ones', async () => {
244
+ const envIds = ['cursor', 'invalid', 'gemini'];
245
+ const cursorEnv = {
246
+ code: 'cursor',
247
+ name: 'Cursor',
248
+ contextFileName: 'AGENTS.md',
249
+ commandPath: '.cursor/commands',
250
+ };
251
+ const geminiEnv = {
252
+ code: 'gemini',
253
+ name: 'Gemini',
254
+ contextFileName: 'AGENTS.md',
255
+ commandPath: '.gemini/commands',
256
+ isCustomCommandPath: true,
257
+ };
258
+ const consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation();
259
+ mockGetEnvironment
260
+ .mockReturnValueOnce(cursorEnv)
261
+ .mockReturnValueOnce(undefined) // invalid environment
262
+ .mockReturnValueOnce(geminiEnv);
263
+ // Mock setupSingleEnvironment
264
+ const mockSetupSingleEnvironment = jest.fn();
265
+ mockSetupSingleEnvironment
266
+ .mockResolvedValueOnce(['/path/to/cursor/file1'])
267
+ .mockResolvedValueOnce(['/path/to/gemini/file1']);
268
+ templateManager.setupSingleEnvironment = mockSetupSingleEnvironment;
269
+ const result = await templateManager.setupMultipleEnvironments(envIds);
270
+ expect(consoleWarnSpy).toHaveBeenCalledWith("Warning: Environment 'invalid' not found, skipping");
271
+ expect(result).toEqual([
272
+ '/path/to/cursor/file1',
273
+ '/path/to/gemini/file1'
274
+ ]);
275
+ consoleWarnSpy.mockRestore();
276
+ });
277
+ it('should throw error when setupSingleEnvironment fails', async () => {
278
+ const envIds = ['cursor'];
279
+ const cursorEnv = {
280
+ code: 'cursor',
281
+ name: 'Cursor',
282
+ contextFileName: 'AGENTS.md',
283
+ commandPath: '.cursor/commands',
284
+ };
285
+ mockGetEnvironment.mockReturnValue(cursorEnv);
286
+ const mockSetupSingleEnvironment = jest.fn().mockRejectedValue(new Error('Setup failed'));
287
+ templateManager.setupSingleEnvironment = mockSetupSingleEnvironment;
288
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation();
289
+ await expect(templateManager.setupMultipleEnvironments(envIds)).rejects.toThrow('Setup failed');
290
+ expect(consoleErrorSpy).toHaveBeenCalledWith("Error setting up environment 'Cursor':", expect.any(Error));
291
+ consoleErrorSpy.mockRestore();
292
+ });
293
+ });
294
+ describe('checkEnvironmentExists', () => {
295
+ it('should return false when environment does not exist', async () => {
296
+ const envId = 'cursor';
297
+ mockGetEnvironment.mockReturnValue(undefined);
298
+ const result = await templateManager.checkEnvironmentExists(envId);
299
+ expect(mockGetEnvironment).toHaveBeenCalledWith(envId);
300
+ expect(result).toBe(false);
301
+ });
302
+ it('should return true when context file exists', async () => {
303
+ const envId = 'cursor';
304
+ const env = {
305
+ code: 'cursor',
306
+ name: 'Cursor',
307
+ contextFileName: 'AGENTS.md',
308
+ commandPath: '.cursor/commands',
309
+ };
310
+ mockGetEnvironment.mockReturnValue(env);
311
+ mockFs.pathExists
312
+ .mockResolvedValueOnce(true) // context file exists
313
+ .mockResolvedValueOnce(false); // command dir doesn't exist
314
+ const result = await templateManager.checkEnvironmentExists(envId);
315
+ expect(mockFs.pathExists).toHaveBeenCalledWith(path.join(templateManager['targetDir'], env.contextFileName));
316
+ expect(mockFs.pathExists).toHaveBeenCalledWith(path.join(templateManager['targetDir'], env.commandPath));
317
+ expect(result).toBe(true);
318
+ });
319
+ it('should return true when command directory exists', async () => {
320
+ const envId = 'cursor';
321
+ const env = {
322
+ code: 'cursor',
323
+ name: 'Cursor',
324
+ contextFileName: 'AGENTS.md',
325
+ commandPath: '.cursor/commands',
326
+ };
327
+ mockGetEnvironment.mockReturnValue(env);
328
+ mockFs.pathExists
329
+ .mockResolvedValueOnce(false) // context file doesn't exist
330
+ .mockResolvedValueOnce(true); // command dir exists
331
+ const result = await templateManager.checkEnvironmentExists(envId);
332
+ expect(result).toBe(true);
333
+ });
334
+ it('should return false when neither context file nor command directory exists', async () => {
335
+ const envId = 'cursor';
336
+ const env = {
337
+ code: 'cursor',
338
+ name: 'Cursor',
339
+ contextFileName: 'AGENTS.md',
340
+ commandPath: '.cursor/commands',
341
+ };
342
+ mockGetEnvironment.mockReturnValue(env);
343
+ mockFs.pathExists
344
+ .mockResolvedValueOnce(false) // context file doesn't exist
345
+ .mockResolvedValueOnce(false); // command dir doesn't exist
346
+ const result = await templateManager.checkEnvironmentExists(envId);
347
+ expect(result).toBe(false);
348
+ });
349
+ });
350
+ });
351
+ //# sourceMappingURL=TemplateManager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateManager.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/TemplateManager.test.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ class EnvironmentSelector {
53
53
  }
54
54
  console.log('\nSelected environments:');
55
55
  selected.forEach(envId => {
56
- console.log(` [OK] ${(0, env_1.getEnvironmentDisplayName)(envId)}`);
56
+ console.log(` ${(0, env_1.getEnvironmentDisplayName)(envId)}`);
57
57
  });
58
58
  console.log('');
59
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentSelector.js","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAEhC,qCAAoG;AAEpG,MAAa,mBAAmB;IAC9B,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;QAE1C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,IAAuB;YAClC,KAAK,EAAE,GAAG,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,2EAA2E;gBACpF,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE;oBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAA4B;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,+BAAyB,EAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,6EAA6E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;gBAC5I,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,uBAAuB,CAAC,QAA2B;QACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,UAAU,IAAA,+BAAyB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF;AA5DD,kDA4DC"}
1
+ {"version":3,"file":"EnvironmentSelector.js","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAEhC,qCAAoG;AAEpG,MAAa,mBAAmB;IAC9B,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;QAE1C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,IAAuB;YAClC,KAAK,EAAE,GAAG,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,2EAA2E;gBACpF,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC,KAAwB,EAAE,EAAE;oBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAA4B;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,+BAAyB,EAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,6EAA6E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;gBAC5I,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,uBAAuB,CAAC,QAA2B;QACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,+BAAyB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF;AA5DD,kDA4DC"}
@@ -49,7 +49,7 @@ class PhaseSelector {
49
49
  }
50
50
  console.log('\nSelected phases:');
51
51
  selected.forEach(phase => {
52
- console.log(` [OK] ${types_1.PHASE_DISPLAY_NAMES[phase]}`);
52
+ console.log(` ${types_1.PHASE_DISPLAY_NAMES[phase]}`);
53
53
  });
54
54
  console.log('');
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PhaseSelector.js","sourceRoot":"","sources":["../../src/lib/PhaseSelector.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,oCAAwE;AAExE,MAAa,aAAa;IACxB,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,MAAe;QAC/C,IAAI,cAAc,GAAY,EAAE,CAAC;QAEjC,IAAI,GAAG,EAAE,CAAC;YACR,cAAc,GAAG,CAAC,GAAG,wBAAgB,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,6DAA6D;gBACtE,OAAO,EAAE,wBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,EAAE,2BAAmB,CAAC,KAAK,CAAC;oBAChC,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IAEO,gBAAgB,CAAC,MAAc;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAY,CAAC;IACzD,CAAC;IACD,uBAAuB,CAAC,QAAiB;QACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,UAAU,2BAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF;AApDD,sCAoDC"}
1
+ {"version":3,"file":"PhaseSelector.js","sourceRoot":"","sources":["../../src/lib/PhaseSelector.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,oCAAwE;AAExE,MAAa,aAAa;IACxB,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,MAAe;QAC/C,IAAI,cAAc,GAAY,EAAE,CAAC;QAEjC,IAAI,GAAG,EAAE,CAAC;YACR,cAAc,GAAG,CAAC,GAAG,wBAAgB,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,6DAA6D;gBACtE,OAAO,EAAE,wBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,EAAE,2BAAmB,CAAC,KAAK,CAAC;oBAChC,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IAEO,gBAAgB,CAAC,MAAc;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAY,CAAC;IACzD,CAAC;IACD,uBAAuB,CAAC,QAAiB;QACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,2BAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF;AApDD,sCAoDC"}
@@ -1,4 +1,4 @@
1
- import { Phase, EnvironmentCode } from '../types';
1
+ import { Phase, EnvironmentCode } from "../types";
2
2
  export declare class TemplateManager {
3
3
  private templatesDir;
4
4
  private targetDir;
@@ -8,6 +8,8 @@ export declare class TemplateManager {
8
8
  setupMultipleEnvironments(environmentIds: EnvironmentCode[]): Promise<string[]>;
9
9
  checkEnvironmentExists(envId: EnvironmentCode): Promise<boolean>;
10
10
  private setupSingleEnvironment;
11
+ private copyCommands;
11
12
  private copyCursorSpecificFiles;
13
+ private copyGeminiSpecificFiles;
12
14
  }
13
15
  //# sourceMappingURL=TemplateManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAyB,MAAM,UAAU,CAAC;AAGzE,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,GAAE,MAAsB;IAKvC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1C,yBAAyB,CAAC,cAAc,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsB/E,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;YAgBxD,sBAAsB;YAyCtB,uBAAuB;CActC"}
1
+ {"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/lib/TemplateManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAyB,MAAM,UAAU,CAAC;AAGzE,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,GAAE,MAAsB;IAKvC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAWhD,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C,yBAAyB,CAC7B,cAAc,EAAE,eAAe,EAAE,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBd,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;YAgBxD,sBAAsB;YAsCtB,YAAY;YA+BZ,uBAAuB;YAoBvB,uBAAuB;CAmBtC"}