ai-devkit 0.3.2 → 0.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/README.md +15 -165
- package/dist/__tests__/lib/Config.test.d.ts +2 -0
- package/dist/__tests__/lib/Config.test.d.ts.map +1 -0
- package/dist/__tests__/lib/Config.test.js +281 -0
- package/dist/__tests__/lib/Config.test.js.map +1 -0
- package/dist/__tests__/lib/EnvironmentSelector.test.d.ts +2 -0
- package/dist/__tests__/lib/EnvironmentSelector.test.d.ts.map +1 -0
- package/dist/__tests__/lib/EnvironmentSelector.test.js +117 -0
- package/dist/__tests__/lib/EnvironmentSelector.test.js.map +1 -0
- package/dist/__tests__/lib/PhaseSelector.test.d.ts +2 -0
- package/dist/__tests__/lib/PhaseSelector.test.d.ts.map +1 -0
- package/dist/__tests__/lib/PhaseSelector.test.js +77 -0
- package/dist/__tests__/lib/PhaseSelector.test.js.map +1 -0
- package/dist/__tests__/util/env.test.d.ts +2 -0
- package/dist/__tests__/util/env.test.d.ts.map +1 -0
- package/dist/__tests__/util/env.test.js +166 -0
- package/dist/__tests__/util/env.test.js.map +1 -0
- package/dist/cli.js +0 -0
- package/dist/commands/init.d.ts +2 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +54 -67
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/phase.js +1 -1
- package/dist/commands/phase.js.map +1 -1
- package/dist/lib/Config.d.ts +5 -2
- package/dist/lib/Config.d.ts.map +1 -1
- package/dist/lib/Config.js +18 -3
- package/dist/lib/Config.js.map +1 -1
- package/dist/lib/EnvironmentSelector.d.ts +7 -0
- package/dist/lib/EnvironmentSelector.d.ts.map +1 -0
- package/dist/lib/EnvironmentSelector.js +62 -0
- package/dist/lib/EnvironmentSelector.js.map +1 -0
- package/dist/lib/PhaseSelector.d.ts +8 -0
- package/dist/lib/PhaseSelector.d.ts.map +1 -0
- package/dist/lib/PhaseSelector.js +58 -0
- package/dist/lib/PhaseSelector.js.map +1 -0
- package/dist/lib/TemplateManager.d.ts +5 -5
- package/dist/lib/TemplateManager.d.ts.map +1 -1
- package/dist/lib/TemplateManager.js +73 -60
- package/dist/lib/TemplateManager.js.map +1 -1
- package/dist/types.d.ts +9 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/util/env.d.ts +11 -0
- package/dist/util/env.d.ts.map +1 -0
- package/dist/util/env.js +109 -0
- package/dist/util/env.js.map +1 -0
- package/jest.config.js +22 -0
- package/package.json +16 -10
- package/web/.nojekyll +2 -0
- package/web/CNAME +1 -0
- package/web/README.md +100 -0
- package/web/app/favicon.ico +0 -0
- package/web/app/globals.css +122 -0
- package/web/app/layout.tsx +106 -0
- package/web/app/page.tsx +119 -0
- package/web/app/roadmap/page.tsx +150 -0
- package/web/app/robots.ts +16 -0
- package/web/app/sitemap.ts +46 -0
- package/web/app/vision/page.tsx +49 -0
- package/web/components/Footer.tsx +81 -0
- package/web/components/GitHubButton.tsx +49 -0
- package/web/components/GitHubStars.tsx +27 -0
- package/web/components/Header.tsx +108 -0
- package/web/components/MarkdownContent.tsx +35 -0
- package/web/components/SkipToContent.tsx +11 -0
- package/web/content/pages/vision.md +42 -0
- package/web/content/roadmap/1-web.md +9 -0
- package/web/content/roadmap/2-integrations.md +7 -0
- package/web/content/roadmap/3-cli-enhancements.md +8 -0
- package/web/content/roadmap/4-local-memory.md +8 -0
- package/web/eslint.config.mjs +18 -0
- package/web/lib/GitHubContext.tsx +57 -0
- package/web/lib/content/loader.ts +152 -0
- package/web/lib/content/types.ts +37 -0
- package/web/lib/utils.ts +12 -0
- package/web/next.config.ts +11 -0
- package/web/package-lock.json +8837 -0
- package/web/package.json +34 -0
- package/web/postcss.config.mjs +7 -0
- package/web/public/file.svg +1 -0
- package/web/public/globe.svg +1 -0
- package/web/public/next.svg +1 -0
- package/web/public/vercel.svg +1 -0
- package/web/public/window.svg +1 -0
- package/templates/env/claude/CLAUDE.md +0 -52
- package/templates/env/cursor/AGENTS.md +0 -51
- package/templates/env/cursor/rules/base.md +0 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const PhaseSelector_1 = require("../../lib/PhaseSelector");
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
jest.mock('inquirer');
|
|
6
|
+
describe('PhaseSelector', () => {
|
|
7
|
+
let selector;
|
|
8
|
+
let mockPrompt;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
selector = new PhaseSelector_1.PhaseSelector();
|
|
11
|
+
const inquirer = require('inquirer');
|
|
12
|
+
mockPrompt = jest.fn();
|
|
13
|
+
inquirer.prompt = mockPrompt;
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
jest.clearAllMocks();
|
|
17
|
+
});
|
|
18
|
+
describe('selectPhases', () => {
|
|
19
|
+
it('should return all phases when all=true', async () => {
|
|
20
|
+
const result = await selector.selectPhases(true);
|
|
21
|
+
expect(result).toEqual(types_1.AVAILABLE_PHASES);
|
|
22
|
+
expect(mockPrompt).not.toHaveBeenCalled();
|
|
23
|
+
});
|
|
24
|
+
it('should parse phases string correctly', async () => {
|
|
25
|
+
const result = await selector.selectPhases(false, 'requirements,design');
|
|
26
|
+
expect(result).toEqual(['requirements', 'design']);
|
|
27
|
+
expect(mockPrompt).not.toHaveBeenCalled();
|
|
28
|
+
});
|
|
29
|
+
it('should trim whitespace from phase names', async () => {
|
|
30
|
+
const result = await selector.selectPhases(false, ' requirements , design ');
|
|
31
|
+
expect(result).toEqual(['requirements', 'design']);
|
|
32
|
+
});
|
|
33
|
+
it('should prompt user when no options provided', async () => {
|
|
34
|
+
mockPrompt.mockResolvedValue({ phases: ['requirements', 'design'] });
|
|
35
|
+
const result = await selector.selectPhases();
|
|
36
|
+
expect(mockPrompt).toHaveBeenCalledTimes(1);
|
|
37
|
+
expect(result).toEqual(['requirements', 'design']);
|
|
38
|
+
});
|
|
39
|
+
it('should return empty array when no phases selected', async () => {
|
|
40
|
+
mockPrompt.mockResolvedValue({ phases: [] });
|
|
41
|
+
const result = await selector.selectPhases();
|
|
42
|
+
expect(result).toEqual([]);
|
|
43
|
+
});
|
|
44
|
+
it('should handle prompt rejection', async () => {
|
|
45
|
+
mockPrompt.mockRejectedValue(new Error('User cancelled'));
|
|
46
|
+
await expect(selector.selectPhases()).rejects.toThrow('User cancelled');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('displaySelectionSummary', () => {
|
|
50
|
+
let consoleSpy;
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
53
|
+
});
|
|
54
|
+
afterEach(() => {
|
|
55
|
+
consoleSpy.mockRestore();
|
|
56
|
+
});
|
|
57
|
+
it('should display nothing selected message for empty array', () => {
|
|
58
|
+
selector.displaySelectionSummary([]);
|
|
59
|
+
expect(consoleSpy).toHaveBeenCalledWith('No phases selected.');
|
|
60
|
+
expect(consoleSpy).toHaveBeenCalledTimes(1);
|
|
61
|
+
});
|
|
62
|
+
it('should display selected phases with checkmarks', () => {
|
|
63
|
+
selector.displaySelectionSummary(['requirements', 'design']);
|
|
64
|
+
expect(consoleSpy).toHaveBeenCalledWith('\nSelected phases:');
|
|
65
|
+
expect(consoleSpy).toHaveBeenCalledWith(' [OK] Requirements & Problem Understanding');
|
|
66
|
+
expect(consoleSpy).toHaveBeenCalledWith(' [OK] System Design & Architecture');
|
|
67
|
+
expect(consoleSpy).toHaveBeenCalledWith('');
|
|
68
|
+
});
|
|
69
|
+
it('should handle single phase selection', () => {
|
|
70
|
+
selector.displaySelectionSummary(['requirements']);
|
|
71
|
+
expect(consoleSpy).toHaveBeenCalledWith('\nSelected phases:');
|
|
72
|
+
expect(consoleSpy).toHaveBeenCalledWith(' [OK] Requirements & Problem Understanding');
|
|
73
|
+
expect(consoleSpy).toHaveBeenCalledWith('');
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=PhaseSelector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhaseSelector.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/PhaseSelector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/util/env.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const env_1 = require("../../util/env");
|
|
4
|
+
describe('Environment Utilities', () => {
|
|
5
|
+
describe('ENVIRONMENT_DEFINITIONS', () => {
|
|
6
|
+
it('should contain all 10 environment definitions', () => {
|
|
7
|
+
expect(Object.keys(env_1.ENVIRONMENT_DEFINITIONS)).toHaveLength(10);
|
|
8
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('cursor');
|
|
9
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('claude');
|
|
10
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('github');
|
|
11
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('gemini');
|
|
12
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('codex');
|
|
13
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('windsurf');
|
|
14
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('kilocode');
|
|
15
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('amp');
|
|
16
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('opencode');
|
|
17
|
+
expect(env_1.ENVIRONMENT_DEFINITIONS).toHaveProperty('roo');
|
|
18
|
+
});
|
|
19
|
+
it('should have correct structure for cursor environment', () => {
|
|
20
|
+
const cursor = env_1.ENVIRONMENT_DEFINITIONS.cursor;
|
|
21
|
+
expect(cursor).toEqual({
|
|
22
|
+
code: 'cursor',
|
|
23
|
+
name: 'Cursor',
|
|
24
|
+
contextFileName: 'AGENTS.md',
|
|
25
|
+
commandPath: '.cursor/commands'
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
it('should have consistent structure across all environments', () => {
|
|
29
|
+
Object.values(env_1.ENVIRONMENT_DEFINITIONS).forEach(env => {
|
|
30
|
+
expect(env).toHaveProperty('code');
|
|
31
|
+
expect(env).toHaveProperty('name');
|
|
32
|
+
expect(env).toHaveProperty('contextFileName');
|
|
33
|
+
expect(env).toHaveProperty('commandPath');
|
|
34
|
+
expect(typeof env.code).toBe('string');
|
|
35
|
+
expect(typeof env.name).toBe('string');
|
|
36
|
+
expect(typeof env.contextFileName).toBe('string');
|
|
37
|
+
expect(typeof env.commandPath).toBe('string');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('ALL_ENVIRONMENT_CODES', () => {
|
|
42
|
+
it('should contain all 10 environment codes', () => {
|
|
43
|
+
expect(env_1.ALL_ENVIRONMENT_CODES).toHaveLength(10);
|
|
44
|
+
expect(env_1.ALL_ENVIRONMENT_CODES).toEqual(expect.arrayContaining([
|
|
45
|
+
'cursor', 'claude', 'github', 'gemini', 'codex',
|
|
46
|
+
'windsurf', 'kilocode', 'amp', 'opencode', 'roo'
|
|
47
|
+
]));
|
|
48
|
+
});
|
|
49
|
+
it('should be dynamically generated from ENVIRONMENT_DEFINITIONS keys', () => {
|
|
50
|
+
const expectedCodes = Object.keys(env_1.ENVIRONMENT_DEFINITIONS);
|
|
51
|
+
expect(env_1.ALL_ENVIRONMENT_CODES).toEqual(expectedCodes);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('getAllEnvironments', () => {
|
|
55
|
+
it('should return all environment definitions', () => {
|
|
56
|
+
const environments = (0, env_1.getAllEnvironments)();
|
|
57
|
+
expect(environments).toHaveLength(10);
|
|
58
|
+
expect(environments).toEqual(Object.values(env_1.ENVIRONMENT_DEFINITIONS));
|
|
59
|
+
});
|
|
60
|
+
it('should return different array instances', () => {
|
|
61
|
+
const envs1 = (0, env_1.getAllEnvironments)();
|
|
62
|
+
const envs2 = (0, env_1.getAllEnvironments)();
|
|
63
|
+
expect(envs1).not.toBe(envs2);
|
|
64
|
+
expect(envs1).toEqual(envs2);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe('getEnvironment', () => {
|
|
68
|
+
it('should return correct environment definition for valid codes', () => {
|
|
69
|
+
const cursor = (0, env_1.getEnvironment)('cursor');
|
|
70
|
+
expect(cursor).toBeDefined();
|
|
71
|
+
expect(cursor?.code).toBe('cursor');
|
|
72
|
+
expect(cursor?.name).toBe('Cursor');
|
|
73
|
+
const claude = (0, env_1.getEnvironment)('claude');
|
|
74
|
+
expect(claude).toBeDefined();
|
|
75
|
+
expect(claude?.code).toBe('claude');
|
|
76
|
+
expect(claude?.name).toBe('Claude Code');
|
|
77
|
+
});
|
|
78
|
+
it('should return undefined for invalid codes', () => {
|
|
79
|
+
const invalid = (0, env_1.getEnvironment)('invalid');
|
|
80
|
+
expect(invalid).toBeUndefined();
|
|
81
|
+
});
|
|
82
|
+
it('should return the same reference for repeated calls', () => {
|
|
83
|
+
const env1 = (0, env_1.getEnvironment)('cursor');
|
|
84
|
+
const env2 = (0, env_1.getEnvironment)('cursor');
|
|
85
|
+
expect(env1).toBe(env2);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
describe('getAllEnvironmentCodes', () => {
|
|
89
|
+
it('should return all environment codes', () => {
|
|
90
|
+
const codes = (0, env_1.getAllEnvironmentCodes)();
|
|
91
|
+
expect(codes).toHaveLength(10);
|
|
92
|
+
expect(codes).toEqual(env_1.ALL_ENVIRONMENT_CODES);
|
|
93
|
+
});
|
|
94
|
+
it('should return different array instances', () => {
|
|
95
|
+
const codes1 = (0, env_1.getAllEnvironmentCodes)();
|
|
96
|
+
const codes2 = (0, env_1.getAllEnvironmentCodes)();
|
|
97
|
+
expect(codes1).not.toBe(codes2);
|
|
98
|
+
expect(codes1).toEqual(codes2);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('getEnvironmentsByCodes', () => {
|
|
102
|
+
it('should return correct environments for valid codes', () => {
|
|
103
|
+
const environments = (0, env_1.getEnvironmentsByCodes)(['cursor', 'claude']);
|
|
104
|
+
expect(environments).toHaveLength(2);
|
|
105
|
+
expect(environments[0].code).toBe('cursor');
|
|
106
|
+
expect(environments[1].code).toBe('claude');
|
|
107
|
+
});
|
|
108
|
+
it('should filter out invalid codes', () => {
|
|
109
|
+
const environments = (0, env_1.getEnvironmentsByCodes)(['cursor', 'invalid', 'claude']);
|
|
110
|
+
expect(environments).toHaveLength(2);
|
|
111
|
+
expect(environments[0].code).toBe('cursor');
|
|
112
|
+
expect(environments[1].code).toBe('claude');
|
|
113
|
+
});
|
|
114
|
+
it('should return empty array for empty input', () => {
|
|
115
|
+
const environments = (0, env_1.getEnvironmentsByCodes)([]);
|
|
116
|
+
expect(environments).toHaveLength(0);
|
|
117
|
+
});
|
|
118
|
+
it('should return empty array for all invalid codes', () => {
|
|
119
|
+
const environments = (0, env_1.getEnvironmentsByCodes)(['invalid1', 'invalid2']);
|
|
120
|
+
expect(environments).toHaveLength(0);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe('isValidEnvironmentCode', () => {
|
|
124
|
+
it('should return true for valid environment codes', () => {
|
|
125
|
+
expect((0, env_1.isValidEnvironmentCode)('cursor')).toBe(true);
|
|
126
|
+
expect((0, env_1.isValidEnvironmentCode)('claude')).toBe(true);
|
|
127
|
+
expect((0, env_1.isValidEnvironmentCode)('roo')).toBe(true);
|
|
128
|
+
});
|
|
129
|
+
it('should return false for invalid codes', () => {
|
|
130
|
+
expect((0, env_1.isValidEnvironmentCode)('invalid')).toBe(false);
|
|
131
|
+
expect((0, env_1.isValidEnvironmentCode)('')).toBe(false);
|
|
132
|
+
expect((0, env_1.isValidEnvironmentCode)('CURSOR')).toBe(false);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('getEnvironmentDisplayName', () => {
|
|
136
|
+
it('should return environment name for valid codes', () => {
|
|
137
|
+
expect((0, env_1.getEnvironmentDisplayName)('cursor')).toBe('Cursor');
|
|
138
|
+
expect((0, env_1.getEnvironmentDisplayName)('claude')).toBe('Claude Code');
|
|
139
|
+
expect((0, env_1.getEnvironmentDisplayName)('roo')).toBe('Roo Code');
|
|
140
|
+
});
|
|
141
|
+
it('should return code itself for invalid codes', () => {
|
|
142
|
+
expect((0, env_1.getEnvironmentDisplayName)('invalid')).toBe('invalid');
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe('validateEnvironmentCodes', () => {
|
|
146
|
+
it('should return valid codes array for all valid inputs', () => {
|
|
147
|
+
const result = (0, env_1.validateEnvironmentCodes)(['cursor', 'claude']);
|
|
148
|
+
expect(result).toEqual(['cursor', 'claude']);
|
|
149
|
+
});
|
|
150
|
+
it('should throw error for invalid codes', () => {
|
|
151
|
+
expect(() => {
|
|
152
|
+
(0, env_1.validateEnvironmentCodes)(['cursor', 'invalid']);
|
|
153
|
+
}).toThrow('Invalid environment codes: invalid');
|
|
154
|
+
});
|
|
155
|
+
it('should throw error with multiple invalid codes', () => {
|
|
156
|
+
expect(() => {
|
|
157
|
+
(0, env_1.validateEnvironmentCodes)(['cursor', 'invalid1', 'invalid2']);
|
|
158
|
+
}).toThrow('Invalid environment codes: invalid1, invalid2');
|
|
159
|
+
});
|
|
160
|
+
it('should return empty array for empty input', () => {
|
|
161
|
+
const result = (0, env_1.validateEnvironmentCodes)([]);
|
|
162
|
+
expect(result).toEqual([]);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=env.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test.js","sourceRoot":"","sources":["../../../src/__tests__/util/env.test.ts"],"names":[],"mappings":";;AAAA,wCAUwB;AAGxB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,6BAAuB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC9D,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM,CAAC,6BAAuB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAG,6BAAuB,CAAC,MAAM,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,eAAe,EAAE,WAAW;gBAC5B,WAAW,EAAE,kBAAkB;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,CAAC,MAAM,CAAC,6BAAuB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnD,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;gBAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBAC1C,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,2BAAqB,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,2BAAqB,CAAC,CAAC,OAAO,CACnC,MAAM,CAAC,eAAe,CAAC;gBACrB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;gBAC/C,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;aACjD,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,6BAAuB,CAAsB,CAAC;YAChF,MAAM,CAAC,2BAAqB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,6BAAuB,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,IAAA,wBAAkB,GAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAA,wBAAkB,GAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,MAAM,MAAM,GAAG,IAAA,oBAAc,EAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAG,IAAA,oBAAc,EAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,OAAO,GAAG,IAAA,oBAAc,EAAC,SAA4B,CAAC,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,IAAI,GAAG,IAAA,oBAAc,EAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAA,oBAAc,EAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAA,4BAAsB,GAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,2BAAqB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG,IAAA,4BAAsB,GAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAA,4BAAsB,GAAE,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,YAAY,GAAG,IAAA,4BAAsB,EAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,YAAY,GAAG,IAAA,4BAAsB,EAAC,CAAC,QAAQ,EAAE,SAA4B,EAAE,QAAQ,CAAC,CAAC,CAAC;YAChG,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,YAAY,GAAG,IAAA,4BAAsB,EAAC,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,YAAY,GAAG,IAAA,4BAAsB,EAAC,CAAC,UAA6B,EAAE,UAA6B,CAAC,CAAC,CAAC;YAC5G,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,CAAC,IAAA,4BAAsB,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,IAAA,4BAAsB,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,IAAA,4BAAsB,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,IAAA,4BAAsB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,CAAC,IAAA,4BAAsB,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAA,4BAAsB,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,CAAC,IAAA,+BAAyB,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAA,+BAAyB,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChE,MAAM,CAAC,IAAA,+BAAyB,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,CAAC,IAAA,+BAAyB,EAAC,SAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAG,IAAA,8BAAwB,EAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,8BAAwB,EAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,CAAC,GAAG,EAAE;gBACV,IAAA,8BAAwB,EAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,IAAA,8BAAwB,EAAC,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAgD,MAAM,UAAU,CAAC;AAqCzF,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAqHrD"}
|
package/dist/commands/init.js
CHANGED
|
@@ -9,7 +9,10 @@ const inquirer_1 = __importDefault(require("inquirer"));
|
|
|
9
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
10
10
|
const Config_1 = require("../lib/Config");
|
|
11
11
|
const TemplateManager_1 = require("../lib/TemplateManager");
|
|
12
|
+
const EnvironmentSelector_1 = require("../lib/EnvironmentSelector");
|
|
13
|
+
const PhaseSelector_1 = require("../lib/PhaseSelector");
|
|
12
14
|
const types_1 = require("../types");
|
|
15
|
+
const env_js_1 = require("../util/env.js");
|
|
13
16
|
function isGitAvailable() {
|
|
14
17
|
try {
|
|
15
18
|
(0, child_process_1.execSync)('git --version', { stdio: 'ignore' });
|
|
@@ -21,7 +24,7 @@ function isGitAvailable() {
|
|
|
21
24
|
}
|
|
22
25
|
function ensureGitRepository() {
|
|
23
26
|
if (!isGitAvailable()) {
|
|
24
|
-
console.log(chalk_1.default.yellow('
|
|
27
|
+
console.log(chalk_1.default.yellow('Warning: Git is not installed or not available on the PATH. Skipping repository initialization.'));
|
|
25
28
|
return;
|
|
26
29
|
}
|
|
27
30
|
try {
|
|
@@ -30,16 +33,18 @@ function ensureGitRepository() {
|
|
|
30
33
|
catch {
|
|
31
34
|
try {
|
|
32
35
|
(0, child_process_1.execSync)('git init', { stdio: 'ignore' });
|
|
33
|
-
console.log(chalk_1.default.green('
|
|
36
|
+
console.log(chalk_1.default.green('[OK] Initialized a new git repository'));
|
|
34
37
|
}
|
|
35
38
|
catch (error) {
|
|
36
|
-
console.log(chalk_1.default.red('
|
|
39
|
+
console.log(chalk_1.default.red('[ERROR] Failed to initialize git repository:'), error instanceof Error ? error.message : error);
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
43
|
async function initCommand(options) {
|
|
41
44
|
const configManager = new Config_1.ConfigManager();
|
|
42
45
|
const templateManager = new TemplateManager_1.TemplateManager();
|
|
46
|
+
const environmentSelector = new EnvironmentSelector_1.EnvironmentSelector();
|
|
47
|
+
const phaseSelector = new PhaseSelector_1.PhaseSelector();
|
|
43
48
|
ensureGitRepository();
|
|
44
49
|
if (await configManager.exists()) {
|
|
45
50
|
const { shouldContinue } = await inquirer_1.default.prompt([
|
|
@@ -55,75 +60,56 @@ async function initCommand(options) {
|
|
|
55
60
|
return;
|
|
56
61
|
}
|
|
57
62
|
}
|
|
58
|
-
let
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
environment = envAnswer.environment;
|
|
63
|
+
let selectedEnvironments = options.environment || [];
|
|
64
|
+
if (selectedEnvironments.length === 0) {
|
|
65
|
+
console.log(chalk_1.default.blue('\nAI Environment Setup\n'));
|
|
66
|
+
selectedEnvironments = await environmentSelector.selectEnvironments();
|
|
67
|
+
}
|
|
68
|
+
if (selectedEnvironments.length === 0) {
|
|
69
|
+
console.log(chalk_1.default.yellow('No environments selected. Initialization cancelled.'));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
for (const envCode of selectedEnvironments) {
|
|
73
|
+
if (!(0, env_js_1.isValidEnvironmentCode)(envCode)) {
|
|
74
|
+
console.log(chalk_1.default.red(`Invalid environment code: ${envCode}`));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
73
77
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
const existingEnvironments = [];
|
|
79
|
+
for (const envId of selectedEnvironments) {
|
|
80
|
+
if (await templateManager.checkEnvironmentExists(envId)) {
|
|
81
|
+
existingEnvironments.push(envId);
|
|
82
|
+
}
|
|
77
83
|
}
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
let shouldProceedWithSetup = true;
|
|
85
|
+
if (existingEnvironments.length > 0) {
|
|
86
|
+
console.log(chalk_1.default.yellow(`\nWarning: The following environments are already set up: ${existingEnvironments.join(', ')}\n`));
|
|
87
|
+
shouldProceedWithSetup = await environmentSelector.confirmOverride(existingEnvironments);
|
|
80
88
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
type: 'checkbox',
|
|
85
|
-
name: 'phases',
|
|
86
|
-
message: 'Which phases do you want to initialize? (or use --all flag)',
|
|
87
|
-
choices: types_1.AVAILABLE_PHASES.map(phase => ({
|
|
88
|
-
name: types_1.PHASE_DISPLAY_NAMES[phase],
|
|
89
|
-
value: phase,
|
|
90
|
-
checked: true
|
|
91
|
-
}))
|
|
92
|
-
}
|
|
93
|
-
]);
|
|
94
|
-
selectedPhases = phaseAnswer.phases;
|
|
89
|
+
if (!shouldProceedWithSetup) {
|
|
90
|
+
console.log(chalk_1.default.yellow('Environment setup cancelled.'));
|
|
91
|
+
return;
|
|
95
92
|
}
|
|
93
|
+
const selectedPhases = await phaseSelector.selectPhases(options.all, options.phases);
|
|
96
94
|
if (selectedPhases.length === 0) {
|
|
97
95
|
console.log(chalk_1.default.yellow('No phases selected. Nothing to initialize.'));
|
|
98
96
|
return;
|
|
99
97
|
}
|
|
100
98
|
console.log(chalk_1.default.blue('\nInitializing AI DevKit...\n'));
|
|
101
|
-
await configManager.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
let shouldCopyEnv = true;
|
|
106
|
-
if (envExists) {
|
|
107
|
-
const { overwrite } = await inquirer_1.default.prompt([
|
|
108
|
-
{
|
|
109
|
-
type: 'confirm',
|
|
110
|
-
name: 'overwrite',
|
|
111
|
-
message: `Environment configuration files already exist. Overwrite?`,
|
|
112
|
-
default: false
|
|
113
|
-
}
|
|
114
|
-
]);
|
|
115
|
-
shouldCopyEnv = overwrite;
|
|
116
|
-
}
|
|
117
|
-
if (shouldCopyEnv) {
|
|
118
|
-
const envFiles = await templateManager.copyEnvironmentTemplates(environment);
|
|
119
|
-
envFiles.forEach(file => {
|
|
120
|
-
console.log(chalk_1.default.green(`✓ Created ${file}`));
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
console.log(chalk_1.default.yellow('⊘ Skipped environment configuration'));
|
|
125
|
-
}
|
|
99
|
+
let config = await configManager.read();
|
|
100
|
+
if (!config) {
|
|
101
|
+
config = await configManager.create();
|
|
102
|
+
console.log(chalk_1.default.green('[OK] Created configuration file'));
|
|
126
103
|
}
|
|
104
|
+
await configManager.setEnvironments(selectedEnvironments);
|
|
105
|
+
console.log(chalk_1.default.green('[OK] Updated configuration with selected environments'));
|
|
106
|
+
environmentSelector.displaySelectionSummary(selectedEnvironments);
|
|
107
|
+
phaseSelector.displaySelectionSummary(selectedPhases);
|
|
108
|
+
console.log(chalk_1.default.blue('\nSetting up environment templates...\n'));
|
|
109
|
+
const envFiles = await templateManager.setupMultipleEnvironments(selectedEnvironments);
|
|
110
|
+
envFiles.forEach(file => {
|
|
111
|
+
console.log(chalk_1.default.green(`[OK] Created ${file}`));
|
|
112
|
+
});
|
|
127
113
|
for (const phase of selectedPhases) {
|
|
128
114
|
const exists = await templateManager.fileExists(phase);
|
|
129
115
|
let shouldCopy = true;
|
|
@@ -141,16 +127,17 @@ async function initCommand(options) {
|
|
|
141
127
|
if (shouldCopy) {
|
|
142
128
|
const file = await templateManager.copyPhaseTemplate(phase);
|
|
143
129
|
await configManager.addPhase(phase);
|
|
144
|
-
console.log(chalk_1.default.green(
|
|
130
|
+
console.log(chalk_1.default.green(`[OK] Created ${phase} phase`));
|
|
145
131
|
}
|
|
146
132
|
else {
|
|
147
|
-
console.log(chalk_1.default.yellow(
|
|
133
|
+
console.log(chalk_1.default.yellow(`[SKIP] Skipped ${phase} phase`));
|
|
148
134
|
}
|
|
149
135
|
}
|
|
150
|
-
console.log(chalk_1.default.green('\
|
|
136
|
+
console.log(chalk_1.default.green('\nAI DevKit initialized successfully!\n'));
|
|
151
137
|
console.log(chalk_1.default.blue('Next steps:'));
|
|
152
138
|
console.log(' • Review and customize templates in docs/ai/');
|
|
153
|
-
console.log(' •
|
|
154
|
-
console.log(' • Run `ai-devkit phase <name>` to add more phases later
|
|
139
|
+
console.log(' • Your AI environments are ready to use with the generated configurations');
|
|
140
|
+
console.log(' • Run `ai-devkit phase <name>` to add more phases later');
|
|
141
|
+
console.log(' • Run `ai-devkit init` again to add more environments\n');
|
|
155
142
|
}
|
|
156
143
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/phase.js
CHANGED
|
@@ -73,7 +73,7 @@ async function phaseCommand(phaseName) {
|
|
|
73
73
|
}
|
|
74
74
|
const file = await templateManager.copyPhaseTemplate(phase);
|
|
75
75
|
await configManager.addPhase(phase);
|
|
76
|
-
console.log(chalk_1.default.green(`\n
|
|
76
|
+
console.log(chalk_1.default.green(`\n[OK] ${types_1.PHASE_DISPLAY_NAMES[phase]} created successfully!`));
|
|
77
77
|
console.log(chalk_1.default.blue(` Location: ${file}\n`));
|
|
78
78
|
}
|
|
79
79
|
//# sourceMappingURL=phase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/commands/phase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/commands/phase.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/Config.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { DevKitConfig, Phase,
|
|
1
|
+
import { DevKitConfig, Phase, EnvironmentCode } from '../types';
|
|
2
2
|
export declare class ConfigManager {
|
|
3
3
|
private configPath;
|
|
4
4
|
constructor(targetDir?: string);
|
|
5
5
|
exists(): Promise<boolean>;
|
|
6
6
|
read(): Promise<DevKitConfig | null>;
|
|
7
|
-
create(
|
|
7
|
+
create(): Promise<DevKitConfig>;
|
|
8
8
|
update(updates: Partial<DevKitConfig>): Promise<DevKitConfig>;
|
|
9
9
|
addPhase(phase: Phase): Promise<DevKitConfig>;
|
|
10
10
|
hasPhase(phase: Phase): Promise<boolean>;
|
|
11
|
+
getEnvironments(): Promise<EnvironmentCode[]>;
|
|
12
|
+
setEnvironments(environments: EnvironmentCode[]): Promise<DevKitConfig>;
|
|
13
|
+
hasEnvironment(envId: EnvironmentCode): Promise<boolean>;
|
|
11
14
|
}
|
|
12
15
|
//# sourceMappingURL=Config.d.ts.map
|
package/dist/lib/Config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/lib/Config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/lib/Config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhE,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,GAAE,MAAsB;IAIvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,IAAI,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAOpC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAa/B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAgB7D,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC;IAc7C,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxC,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAK7C,eAAe,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAIvE,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;CAI/D"}
|
package/dist/lib/Config.js
CHANGED
|
@@ -32,10 +32,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.ConfigManager = void 0;
|
|
37
40
|
const fs = __importStar(require("fs-extra"));
|
|
38
41
|
const path = __importStar(require("path"));
|
|
42
|
+
const package_json_1 = __importDefault(require("../../package.json"));
|
|
39
43
|
const CONFIG_FILE_NAME = '.ai-devkit.json';
|
|
40
44
|
class ConfigManager {
|
|
41
45
|
constructor(targetDir = process.cwd()) {
|
|
@@ -50,10 +54,10 @@ class ConfigManager {
|
|
|
50
54
|
}
|
|
51
55
|
return null;
|
|
52
56
|
}
|
|
53
|
-
async create(
|
|
57
|
+
async create() {
|
|
54
58
|
const config = {
|
|
55
|
-
version:
|
|
56
|
-
|
|
59
|
+
version: package_json_1.default.version,
|
|
60
|
+
environments: [],
|
|
57
61
|
initializedPhases: [],
|
|
58
62
|
createdAt: new Date().toISOString(),
|
|
59
63
|
updatedAt: new Date().toISOString()
|
|
@@ -89,6 +93,17 @@ class ConfigManager {
|
|
|
89
93
|
const config = await this.read();
|
|
90
94
|
return config ? config.initializedPhases.includes(phase) : false;
|
|
91
95
|
}
|
|
96
|
+
async getEnvironments() {
|
|
97
|
+
const config = await this.read();
|
|
98
|
+
return config?.environments || [];
|
|
99
|
+
}
|
|
100
|
+
async setEnvironments(environments) {
|
|
101
|
+
return this.update({ environments });
|
|
102
|
+
}
|
|
103
|
+
async hasEnvironment(envId) {
|
|
104
|
+
const environments = await this.getEnvironments();
|
|
105
|
+
return environments.includes(envId);
|
|
106
|
+
}
|
|
92
107
|
}
|
|
93
108
|
exports.ConfigManager = ConfigManager;
|
|
94
109
|
//# sourceMappingURL=Config.js.map
|
package/dist/lib/Config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/lib/Config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/lib/Config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EnvironmentCode } from '../types';
|
|
2
|
+
export declare class EnvironmentSelector {
|
|
3
|
+
selectEnvironments(): Promise<EnvironmentCode[]>;
|
|
4
|
+
confirmOverride(conflicts: EnvironmentCode[]): Promise<boolean>;
|
|
5
|
+
displaySelectionSummary(selected: EnvironmentCode[]): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=EnvironmentSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvironmentSelector.d.ts","sourceRoot":"","sources":["../../src/lib/EnvironmentSelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,qBAAa,mBAAmB;IACxB,kBAAkB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IA4BhD,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBrE,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI;CAY3D"}
|