context-first-cli 1.4.0 → 1.5.3
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 +60 -96
- package/dist/commands/create-orchestrator.d.ts.map +1 -1
- package/dist/commands/create-orchestrator.js +12 -5
- package/dist/commands/create-orchestrator.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +15 -5
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/feature.d.ts +4 -0
- package/dist/commands/feature.d.ts.map +1 -1
- package/dist/commands/feature.js +195 -69
- package/dist/commands/feature.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/templates/commands/products/check.md +18 -4
- package/dist/templates/commands/products/collect.md +25 -9
- package/dist/templates/commands/products/refine.md +25 -5
- package/dist/templates/commands/products/spec.md +14 -5
- package/dist/utils/ai-properties.d.ts +29 -0
- package/dist/utils/ai-properties.d.ts.map +1 -0
- package/dist/utils/ai-properties.js +72 -0
- package/dist/utils/ai-properties.js.map +1 -0
- package/dist/utils/config.d.ts +0 -4
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +0 -7
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
- package/templates/commands/products/check.md +18 -4
- package/templates/commands/products/collect.md +25 -9
- package/templates/commands/products/refine.md +25 -5
- package/templates/commands/products/spec.md +14 -5
package/dist/commands/feature.js
CHANGED
|
@@ -10,6 +10,28 @@ const promises_1 = __importDefault(require("fs/promises"));
|
|
|
10
10
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
11
|
const config_1 = require("../utils/config");
|
|
12
12
|
const git_1 = require("../utils/git");
|
|
13
|
+
const ai_properties_1 = require("../utils/ai-properties");
|
|
14
|
+
/**
|
|
15
|
+
* Get orchestrator path from config
|
|
16
|
+
*/
|
|
17
|
+
async function getOrchestratorPath() {
|
|
18
|
+
const configResult = await (0, config_1.findConfig)();
|
|
19
|
+
if (!configResult) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const { configDir } = configResult;
|
|
23
|
+
return path_1.default.join(configDir, '.context-orchestrator');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get sessions directory from orchestrator
|
|
27
|
+
*/
|
|
28
|
+
async function getSessionsDir() {
|
|
29
|
+
const orchestratorPath = await getOrchestratorPath();
|
|
30
|
+
if (!orchestratorPath) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return path_1.default.join(orchestratorPath, '.sessions');
|
|
34
|
+
}
|
|
13
35
|
exports.featureCommands = {
|
|
14
36
|
start: async (issueId, options) => {
|
|
15
37
|
console.log(chalk_1.default.blue.bold(`\n🚀 Starting feature workspace for: ${issueId}\n`));
|
|
@@ -21,20 +43,46 @@ exports.featureCommands = {
|
|
|
21
43
|
const { config, configDir } = configResult;
|
|
22
44
|
console.log(chalk_1.default.gray(`✓ Found configuration in ${configDir}`));
|
|
23
45
|
// Determine orchestrator path
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
46
|
+
// If we're already in the orchestrator (has ai.properties.md), use configDir
|
|
47
|
+
// Otherwise, use .context-orchestrator subdirectory
|
|
48
|
+
let orchestratorPath;
|
|
49
|
+
const aiPropertiesInConfigDir = path_1.default.join(configDir, 'ai.properties.md');
|
|
50
|
+
if (await (0, config_1.pathExists)(aiPropertiesInConfigDir)) {
|
|
51
|
+
// We're already in the orchestrator
|
|
52
|
+
orchestratorPath = configDir;
|
|
53
|
+
console.log(chalk_1.default.gray('✓ Running from orchestrator directory'));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// We're in a different repo, need to clone orchestrator
|
|
57
|
+
orchestratorPath = path_1.default.join(configDir, '.context-orchestrator');
|
|
58
|
+
if (!(await (0, config_1.pathExists)(orchestratorPath))) {
|
|
59
|
+
console.log(chalk_1.default.blue('\n📦 Cloning orchestrator repository...'));
|
|
60
|
+
try {
|
|
61
|
+
await (0, git_1.ensureRepoCloned)(config.orchestratorRepo, orchestratorPath);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
(0, config_1.exitWithError)(`Failed to clone orchestrator: ${error.message}`);
|
|
65
|
+
}
|
|
30
66
|
}
|
|
31
|
-
|
|
32
|
-
(
|
|
67
|
+
else {
|
|
68
|
+
console.log(chalk_1.default.gray('✓ Orchestrator repository already cloned'));
|
|
33
69
|
}
|
|
34
70
|
}
|
|
35
|
-
|
|
36
|
-
|
|
71
|
+
// Load ai.properties.md
|
|
72
|
+
console.log(chalk_1.default.blue('\n⚙️ Loading configuration from ai.properties.md...'));
|
|
73
|
+
const aiProperties = await (0, ai_properties_1.loadAiProperties)(orchestratorPath);
|
|
74
|
+
if (!aiProperties) {
|
|
75
|
+
(0, config_1.exitWithError)('Could not load ai.properties.md from orchestrator.\n' +
|
|
76
|
+
'Run "context-cli config:setup" to create it.');
|
|
77
|
+
}
|
|
78
|
+
const basePath = (0, ai_properties_1.getBasePath)(aiProperties);
|
|
79
|
+
if (!basePath) {
|
|
80
|
+
(0, config_1.exitWithError)('base_path not configured in ai.properties.md.\n' +
|
|
81
|
+
'Run "context-cli config:setup" to configure it.');
|
|
37
82
|
}
|
|
83
|
+
const autoClone = (0, ai_properties_1.isAutoCloneEnabled)(aiProperties);
|
|
84
|
+
console.log(chalk_1.default.gray(`✓ base_path: ${basePath}`));
|
|
85
|
+
console.log(chalk_1.default.gray(`✓ auto_clone: ${autoClone}`));
|
|
38
86
|
// Load manifest
|
|
39
87
|
const manifest = await (0, config_1.loadManifest)(orchestratorPath);
|
|
40
88
|
if (!manifest) {
|
|
@@ -68,47 +116,58 @@ exports.featureCommands = {
|
|
|
68
116
|
]);
|
|
69
117
|
repoIds = selectedRepos;
|
|
70
118
|
}
|
|
71
|
-
// Create workspace directory
|
|
72
|
-
const
|
|
73
|
-
await (0, config_1.ensureDir)(
|
|
74
|
-
const workspacePath = path_1.default.join(
|
|
119
|
+
// Create workspace directory in orchestrator/.sessions/
|
|
120
|
+
const sessionsDir = path_1.default.join(orchestratorPath, '.sessions');
|
|
121
|
+
await (0, config_1.ensureDir)(sessionsDir);
|
|
122
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
75
123
|
if (await (0, config_1.pathExists)(workspacePath)) {
|
|
76
124
|
(0, config_1.exitWithError)(`Workspace for ${issueId} already exists at ${workspacePath}`);
|
|
77
125
|
}
|
|
78
126
|
await (0, config_1.ensureDir)(workspacePath);
|
|
79
127
|
console.log(chalk_1.default.green(`\n✓ Created workspace directory: ${workspacePath}`));
|
|
80
|
-
//
|
|
81
|
-
console.log(chalk_1.default.blue('\n
|
|
82
|
-
const mainReposDir = path_1.default.join(configDir, '.context-repos');
|
|
83
|
-
await (0, config_1.ensureDir)(mainReposDir);
|
|
128
|
+
// Process each repository
|
|
129
|
+
console.log(chalk_1.default.blue('\n🌳 Setting up repositories...'));
|
|
84
130
|
const selectedRepos = manifest.repositories.filter(repo => repoIds.includes(repo.id));
|
|
131
|
+
const branchName = `feature/${issueId}`;
|
|
85
132
|
for (const repo of selectedRepos) {
|
|
86
|
-
|
|
87
|
-
if
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
133
|
+
console.log(chalk_1.default.blue(`\n Processing ${repo.id}...`));
|
|
134
|
+
// Check if repo exists at base_path
|
|
135
|
+
const mainRepoPath = path_1.default.join(basePath, repo.id);
|
|
136
|
+
const repoExists = await (0, config_1.pathExists)(mainRepoPath);
|
|
137
|
+
if (!repoExists) {
|
|
138
|
+
if (autoClone) {
|
|
139
|
+
// Clone the repository
|
|
140
|
+
console.log(chalk_1.default.blue(` Cloning ${repo.id} to ${mainRepoPath}...`));
|
|
141
|
+
try {
|
|
142
|
+
await (0, git_1.ensureRepoCloned)(repo.url, mainRepoPath);
|
|
143
|
+
console.log(chalk_1.default.green(` ✓ Cloned ${repo.id}`));
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.log(chalk_1.default.yellow(` ⚠ Failed to clone ${repo.id}: ${error.message}`));
|
|
147
|
+
console.log(chalk_1.default.yellow(` Skipping ${repo.id}...`));
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
91
150
|
}
|
|
92
|
-
|
|
93
|
-
|
|
151
|
+
else {
|
|
152
|
+
// Skip if auto_clone is disabled
|
|
153
|
+
console.log(chalk_1.default.yellow(` ⚠ Repository not found at ${mainRepoPath}`));
|
|
154
|
+
console.log(chalk_1.default.yellow(` Set auto_clone=true in ai.properties.md to enable automatic cloning`));
|
|
155
|
+
console.log(chalk_1.default.yellow(` Skipping ${repo.id}...`));
|
|
156
|
+
continue;
|
|
94
157
|
}
|
|
95
158
|
}
|
|
96
159
|
else {
|
|
97
|
-
console.log(chalk_1.default.gray(`
|
|
160
|
+
console.log(chalk_1.default.gray(` ✓ Repository exists at ${mainRepoPath}`));
|
|
98
161
|
}
|
|
99
|
-
|
|
100
|
-
// Create worktrees
|
|
101
|
-
console.log(chalk_1.default.blue('\n🌳 Creating worktrees...'));
|
|
102
|
-
const branchName = `feature/${issueId}`;
|
|
103
|
-
for (const repo of selectedRepos) {
|
|
104
|
-
const mainRepoPath = path_1.default.join(mainReposDir, repo.id);
|
|
162
|
+
// Create worktree
|
|
105
163
|
const worktreePath = path_1.default.join(workspacePath, repo.id);
|
|
106
|
-
console.log(chalk_1.default.blue(
|
|
164
|
+
console.log(chalk_1.default.blue(` Creating worktree at ${worktreePath}...`));
|
|
107
165
|
try {
|
|
108
166
|
await (0, git_1.createWorktree)(mainRepoPath, worktreePath, branchName);
|
|
167
|
+
console.log(chalk_1.default.green(` ✓ Created worktree for ${repo.id}`));
|
|
109
168
|
}
|
|
110
169
|
catch (error) {
|
|
111
|
-
console.log(chalk_1.default.yellow(`
|
|
170
|
+
console.log(chalk_1.default.yellow(` ⚠ Failed to create worktree: ${error.message}`));
|
|
112
171
|
}
|
|
113
172
|
}
|
|
114
173
|
// Save workspace metadata
|
|
@@ -130,12 +189,16 @@ exports.featureCommands = {
|
|
|
130
189
|
},
|
|
131
190
|
list: async () => {
|
|
132
191
|
console.log(chalk_1.default.blue.bold('\n📋 Active Feature Workspaces\n'));
|
|
133
|
-
const
|
|
134
|
-
if (!
|
|
135
|
-
console.log(chalk_1.default.yellow('No
|
|
192
|
+
const sessionsDir = await getSessionsDir();
|
|
193
|
+
if (!sessionsDir) {
|
|
194
|
+
console.log(chalk_1.default.yellow('No configuration found. Run "context-cli init" first.'));
|
|
136
195
|
return;
|
|
137
196
|
}
|
|
138
|
-
|
|
197
|
+
if (!(await (0, config_1.pathExists)(sessionsDir))) {
|
|
198
|
+
console.log(chalk_1.default.yellow('No workspaces found. Create one with "context-cli feature start <issue-id>"'));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const entries = await promises_1.default.readdir(sessionsDir, { withFileTypes: true });
|
|
139
202
|
const workspaceDirs = entries.filter(e => e.isDirectory()).map(e => e.name);
|
|
140
203
|
if (workspaceDirs.length === 0) {
|
|
141
204
|
console.log(chalk_1.default.yellow('No workspaces found.'));
|
|
@@ -143,7 +206,7 @@ exports.featureCommands = {
|
|
|
143
206
|
}
|
|
144
207
|
const workspaces = [];
|
|
145
208
|
for (const issueId of workspaceDirs) {
|
|
146
|
-
const workspacePath = path_1.default.join(
|
|
209
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
147
210
|
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
148
211
|
workspaces.push({ issueId, metadata });
|
|
149
212
|
}
|
|
@@ -160,25 +223,33 @@ exports.featureCommands = {
|
|
|
160
223
|
console.log(`${chalk_1.default.cyan(issueId.padEnd(14))} | ${chalk_1.default.gray('(no metadata)')}`);
|
|
161
224
|
}
|
|
162
225
|
}
|
|
163
|
-
console.log(chalk_1.default.gray('\n💡 Use "context-cli feature
|
|
226
|
+
console.log(chalk_1.default.gray('\n💡 Use "context-cli feature switch <issue-id>" to switch to a workspace'));
|
|
164
227
|
},
|
|
165
228
|
switch: async (issueId) => {
|
|
166
|
-
const
|
|
167
|
-
|
|
229
|
+
const sessionsDir = await getSessionsDir();
|
|
230
|
+
if (!sessionsDir) {
|
|
231
|
+
(0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
|
|
232
|
+
}
|
|
233
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
168
234
|
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
169
|
-
(0, config_1.exitWithError)(`Workspace for ${issueId} not found
|
|
235
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
|
|
170
236
|
}
|
|
171
|
-
console.log(chalk_1.default.green(`\n✓ Workspace found: ${
|
|
172
|
-
console.log(chalk_1.default.blue('\n💡 To switch to this workspace
|
|
173
|
-
console.log(chalk_1.default.
|
|
237
|
+
console.log(chalk_1.default.green(`\n✓ Workspace found: ${workspacePath}`));
|
|
238
|
+
console.log(chalk_1.default.blue('\n💡 To switch to this workspace:'));
|
|
239
|
+
console.log(chalk_1.default.gray(` cd ${workspacePath}`));
|
|
240
|
+
console.log(chalk_1.default.gray(' code .'));
|
|
174
241
|
},
|
|
175
|
-
|
|
176
|
-
console.log(chalk_1.default.blue.bold(`\n
|
|
177
|
-
const
|
|
178
|
-
|
|
242
|
+
remove: async (issueId, options) => {
|
|
243
|
+
console.log(chalk_1.default.blue.bold(`\n🗑️ Removing workspace: ${issueId}\n`));
|
|
244
|
+
const sessionsDir = await getSessionsDir();
|
|
245
|
+
if (!sessionsDir) {
|
|
246
|
+
(0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
|
|
247
|
+
}
|
|
248
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
179
249
|
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
180
|
-
(0, config_1.exitWithError)(`Workspace for ${issueId} not found
|
|
250
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
|
|
181
251
|
}
|
|
252
|
+
// Load metadata to get repository list
|
|
182
253
|
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
183
254
|
if (!metadata) {
|
|
184
255
|
(0, config_1.exitWithError)('Could not load workspace metadata');
|
|
@@ -189,36 +260,91 @@ exports.featureCommands = {
|
|
|
189
260
|
{
|
|
190
261
|
type: 'confirm',
|
|
191
262
|
name: 'confirm',
|
|
192
|
-
message: `Are you sure you want to
|
|
263
|
+
message: `Are you sure you want to remove workspace ${issueId}?`,
|
|
193
264
|
default: false,
|
|
194
265
|
},
|
|
195
266
|
]);
|
|
196
267
|
if (!confirm) {
|
|
197
|
-
console.log(chalk_1.default.yellow('✋
|
|
268
|
+
console.log(chalk_1.default.yellow('✋ Removal cancelled'));
|
|
198
269
|
return;
|
|
199
270
|
}
|
|
200
271
|
}
|
|
201
|
-
// Find configuration to locate main repos
|
|
202
|
-
const configResult = await (0, config_1.findConfig)();
|
|
203
|
-
if (!configResult) {
|
|
204
|
-
(0, config_1.exitWithError)('No .contextrc.json found');
|
|
205
|
-
}
|
|
206
|
-
const { configDir } = configResult;
|
|
207
|
-
const mainReposDir = path_1.default.join(configDir, '.context-repos');
|
|
208
272
|
// Remove worktrees
|
|
209
|
-
console.log(chalk_1.default.blue('
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
273
|
+
console.log(chalk_1.default.blue('Removing worktrees...'));
|
|
274
|
+
// Load ai.properties to get base_path
|
|
275
|
+
const configResult = await (0, config_1.findConfig)();
|
|
276
|
+
if (configResult) {
|
|
277
|
+
const { configDir } = configResult;
|
|
278
|
+
const orchestratorPath = path_1.default.join(configDir, '.context-orchestrator');
|
|
279
|
+
const aiProperties = await (0, ai_properties_1.loadAiProperties)(orchestratorPath);
|
|
280
|
+
const basePath = (0, ai_properties_1.getBasePath)(aiProperties);
|
|
281
|
+
if (basePath) {
|
|
282
|
+
for (const repoId of metadata.repositories) {
|
|
283
|
+
const worktreePath = path_1.default.join(workspacePath, repoId);
|
|
284
|
+
const mainRepoPath = path_1.default.join(basePath, repoId);
|
|
285
|
+
if (await (0, config_1.pathExists)(worktreePath)) {
|
|
286
|
+
try {
|
|
287
|
+
console.log(chalk_1.default.gray(` Removing worktree for ${repoId}...`));
|
|
288
|
+
await (0, git_1.removeWorktree)(mainRepoPath, worktreePath);
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
console.log(chalk_1.default.yellow(` Warning: ${error.message}`));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
216
295
|
}
|
|
217
296
|
}
|
|
218
297
|
// Remove workspace directory
|
|
219
|
-
console.log(chalk_1.default.blue('
|
|
298
|
+
console.log(chalk_1.default.blue('Removing workspace directory...'));
|
|
220
299
|
await promises_1.default.rm(workspacePath, { recursive: true, force: true });
|
|
221
|
-
console.log(chalk_1.default.green
|
|
300
|
+
console.log(chalk_1.default.green(`\n✅ Workspace ${issueId} removed successfully`));
|
|
301
|
+
},
|
|
302
|
+
status: async (issueId) => {
|
|
303
|
+
const sessionsDir = await getSessionsDir();
|
|
304
|
+
if (!sessionsDir) {
|
|
305
|
+
(0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
|
|
306
|
+
}
|
|
307
|
+
if (issueId) {
|
|
308
|
+
// Show status for specific workspace
|
|
309
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
310
|
+
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
311
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
|
|
312
|
+
}
|
|
313
|
+
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
314
|
+
if (!metadata) {
|
|
315
|
+
(0, config_1.exitWithError)('Could not load workspace metadata');
|
|
316
|
+
}
|
|
317
|
+
console.log(chalk_1.default.blue.bold(`\n📊 Workspace Status: ${issueId}\n`));
|
|
318
|
+
console.log(chalk_1.default.gray(`Created: ${new Date(metadata.createdAt).toLocaleString()}`));
|
|
319
|
+
console.log(chalk_1.default.gray(`Last Updated: ${new Date(metadata.lastUpdated).toLocaleString()}`));
|
|
320
|
+
console.log(chalk_1.default.gray(`Status: ${metadata.status}`));
|
|
321
|
+
console.log(chalk_1.default.gray(`\nRepositories:`));
|
|
322
|
+
for (const repoId of metadata.repositories) {
|
|
323
|
+
const worktreePath = path_1.default.join(workspacePath, repoId);
|
|
324
|
+
const exists = await (0, config_1.pathExists)(worktreePath);
|
|
325
|
+
const status = exists ? chalk_1.default.green('✓') : chalk_1.default.red('✗');
|
|
326
|
+
console.log(` ${status} ${repoId}`);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
// Show current workspace status (if in workspace)
|
|
331
|
+
const cwd = process.cwd();
|
|
332
|
+
// Check if we're in a .sessions workspace
|
|
333
|
+
if (cwd.includes('.sessions')) {
|
|
334
|
+
const parts = cwd.split(path_1.default.sep);
|
|
335
|
+
const sessionIndex = parts.indexOf('.sessions');
|
|
336
|
+
if (sessionIndex >= 0 && parts.length > sessionIndex + 1) {
|
|
337
|
+
const currentIssueId = parts[sessionIndex + 1];
|
|
338
|
+
await exports.featureCommands.status(currentIssueId);
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
console.log(chalk_1.default.yellow('Not in a feature workspace. Use "context-cli feature list" to see all workspaces.'));
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
end: async (issueId, options) => {
|
|
346
|
+
// Alias for remove command
|
|
347
|
+
await exports.featureCommands.remove(issueId, options);
|
|
222
348
|
},
|
|
223
349
|
};
|
|
224
350
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,kBA4FhC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -84,8 +84,9 @@ async function initCommand() {
|
|
|
84
84
|
console.log(chalk_1.default.gray(` AI Provider: ${config.aiProvider}`));
|
|
85
85
|
console.log(chalk_1.default.gray(` Commands Directory: ${config.commandsDir}`));
|
|
86
86
|
console.log(chalk_1.default.blue('\n💡 Next steps:'));
|
|
87
|
-
console.log(chalk_1.default.gray(' 1. Run "context-cli
|
|
88
|
-
console.log(chalk_1.default.gray(' 2. Run "context-cli
|
|
87
|
+
console.log(chalk_1.default.gray(' 1. Run "context-cli config:setup" to configure ai.properties.md in orchestrator'));
|
|
88
|
+
console.log(chalk_1.default.gray(' 2. Run "context-cli add:repo" to add your code repositories'));
|
|
89
|
+
console.log(chalk_1.default.gray(' 3. Run "context-cli feature start <issue-id>" to begin working on a feature'));
|
|
89
90
|
}
|
|
90
91
|
catch (error) {
|
|
91
92
|
console.error(chalk_1.default.red('\n❌ Error during initialization:'), error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,9 +140,20 @@ Se houver desvios justificados:
|
|
|
140
140
|
- **Documentação**: [Onde foi documentado]
|
|
141
141
|
```
|
|
142
142
|
|
|
143
|
-
## 📄 Relatório de Validação
|
|
143
|
+
## 📄 Salvamento do Relatório de Validação
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
**PRIORIDADE 1: Usar MCP (Model Context Protocol)**
|
|
146
|
+
|
|
147
|
+
- Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
|
|
148
|
+
- Use o MCP apropriado para adicionar o relatório à issue:
|
|
149
|
+
- Adicione como comentário na issue
|
|
150
|
+
- Atualize labels/tags conforme resultado (ex: "validated", "needs-adjustment", "blocked")
|
|
151
|
+
- Se houver conflitos críticos, atualize status da issue
|
|
152
|
+
- Informe ao usuário: "✅ Relatório de validação adicionado à issue [ID]"
|
|
153
|
+
|
|
154
|
+
**FALLBACK: Criar arquivo .md apenas se MCP falhar**
|
|
155
|
+
|
|
156
|
+
Se o MCP não estiver disponível ou falhar, crie `./.sessions/<ISSUE-ID>/check-report.md`:
|
|
146
157
|
|
|
147
158
|
```markdown
|
|
148
159
|
# Relatório de Validação - [ISSUE-ID]
|
|
@@ -174,14 +185,17 @@ Crie `./.sessions/<ISSUE-ID>/check-report.md`:
|
|
|
174
185
|
- [ ] Bloqueado
|
|
175
186
|
```
|
|
176
187
|
|
|
188
|
+
Informe ao usuário: "⚠️ Relatório salvo localmente em .sessions/ (task manager não disponível)"
|
|
189
|
+
|
|
177
190
|
## 🚨 Ação em Caso de Conflitos
|
|
178
191
|
|
|
179
192
|
Se conflitos críticos forem encontrados:
|
|
180
193
|
1. 🛑 **PARE** o processo atual
|
|
181
194
|
2. 📝 **DOCUMENTE** todos os conflitos
|
|
182
195
|
3. 💬 **ALERTE** o usuário e stakeholders
|
|
183
|
-
4.
|
|
184
|
-
5.
|
|
196
|
+
4. **Via MCP**: Atualize status da issue para "Bloqueado" ou "Requer Ajustes"
|
|
197
|
+
5. 🔄 **AJUSTE** o plano/implementação conforme necessário
|
|
198
|
+
6. ✅ **REVALIDE** após ajustes
|
|
185
199
|
|
|
186
200
|
---
|
|
187
201
|
|
|
@@ -6,7 +6,7 @@ Você é um especialista em produto responsável por coletar e documentar novas
|
|
|
6
6
|
|
|
7
7
|
**Este comando é APENAS para planejamento e documentação:**
|
|
8
8
|
- ✅ Coletar e entender requisitos
|
|
9
|
-
- ✅ Criar issue no task manager
|
|
9
|
+
- ✅ Criar issue no task manager via MCP
|
|
10
10
|
- ✅ Fazer perguntas de esclarecimento
|
|
11
11
|
- ❌ **NÃO implementar código**
|
|
12
12
|
- ❌ **NÃO fazer edits em arquivos de código**
|
|
@@ -24,7 +24,7 @@ Antes de iniciar, carregue o contexto consultando:
|
|
|
24
24
|
|
|
25
25
|
## Seu Objetivo
|
|
26
26
|
|
|
27
|
-
Entender a solicitação do usuário e capturá-la como issue
|
|
27
|
+
Entender a solicitação do usuário e capturá-la como issue no task manager (via MCP).
|
|
28
28
|
|
|
29
29
|
**Nesta fase, você NÃO precisa:**
|
|
30
30
|
- ❌ Escrever especificação completa
|
|
@@ -80,13 +80,29 @@ Apenas certifique-se de que a ideia esteja **adequadamente compreendida**.
|
|
|
80
80
|
- Faça ajustes conforme feedback
|
|
81
81
|
- Obtenha aprovação final
|
|
82
82
|
|
|
83
|
-
4. **Salvamento**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
4. **Salvamento da Issue**
|
|
84
|
+
|
|
85
|
+
**PRIORIDADE 1: Usar MCP (Model Context Protocol)**
|
|
86
|
+
|
|
87
|
+
Verifique se há MCP configurado para task manager:
|
|
88
|
+
- Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
|
|
89
|
+
- Se `task_management_system=jira`: Use MCP do Jira para criar a issue
|
|
90
|
+
- Se `task_management_system=linear`: Use MCP do Linear para criar a issue
|
|
91
|
+
- Se `task_management_system=github`: Use MCP do GitHub para criar a issue
|
|
92
|
+
|
|
93
|
+
**Ao usar MCP:**
|
|
94
|
+
- Crie a issue diretamente no task manager
|
|
95
|
+
- Obtenha o ID da issue criada (ex: FIN-123, LIN-456)
|
|
96
|
+
- Informe ao usuário: "✅ Issue [ID] criada no [task manager]"
|
|
97
|
+
- **NÃO crie arquivo .md**
|
|
98
|
+
|
|
99
|
+
**FALLBACK: Criar arquivo .md apenas se MCP falhar**
|
|
100
|
+
|
|
101
|
+
Se o MCP não estiver disponível ou falhar:
|
|
102
|
+
- Crie arquivo em `./.sessions/<ISSUE-ID>/collect.md`
|
|
103
|
+
- Use formato de ID manual: `LOCAL-001`, `LOCAL-002`, etc.
|
|
104
|
+
- Inclua data, tipo e conteúdo completo
|
|
105
|
+
- Informe ao usuário: "⚠️ Issue salva localmente em .sessions/ (task manager não disponível)"
|
|
90
106
|
|
|
91
107
|
## Perguntas de Esclarecimento
|
|
92
108
|
|
|
@@ -28,11 +28,19 @@ Refinar a issue coletada, esclarecendo:
|
|
|
28
28
|
|
|
29
29
|
### 1. Carregar Issue
|
|
30
30
|
|
|
31
|
-
**
|
|
32
|
-
|
|
31
|
+
**PRIORIDADE 1: Usar MCP (Model Context Protocol)**
|
|
32
|
+
|
|
33
|
+
- Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
|
|
34
|
+
- Use o MCP apropriado para buscar a issue:
|
|
35
|
+
- `task_management_system=jira`: Use MCP do Jira
|
|
36
|
+
- `task_management_system=linear`: Use MCP do Linear
|
|
37
|
+
- `task_management_system=github`: Use MCP do GitHub
|
|
38
|
+
- Carregue todos os dados da issue (título, descrição, labels, etc.)
|
|
39
|
+
|
|
40
|
+
**FALLBACK: Se MCP não estiver disponível ou falhar**
|
|
33
41
|
|
|
34
|
-
**Senão**:
|
|
35
42
|
- Leia `./.sessions/<ISSUE-ID>/collect.md`
|
|
43
|
+
- Se o arquivo não existir, informe o erro ao usuário
|
|
36
44
|
|
|
37
45
|
### 2. Análise de Escopo
|
|
38
46
|
|
|
@@ -110,9 +118,19 @@ Forneça estimativa de esforço:
|
|
|
110
118
|
|
|
111
119
|
Liste perguntas que ainda precisam ser respondidas antes de iniciar a implementação.
|
|
112
120
|
|
|
113
|
-
## 📄
|
|
121
|
+
## 📄 Salvamento do Refinamento
|
|
122
|
+
|
|
123
|
+
**PRIORIDADE 1: Atualizar via MCP**
|
|
114
124
|
|
|
115
|
-
|
|
125
|
+
- Use o MCP do task manager para atualizar a issue
|
|
126
|
+
- Adicione os critérios de aceitação como comentário ou campo customizado
|
|
127
|
+
- Atualize labels/tags se necessário (ex: "refined", "ready-for-spec")
|
|
128
|
+
- Adicione estimativa se o task manager suportar
|
|
129
|
+
- Informe ao usuário: "✅ Issue [ID] atualizada com refinamento"
|
|
130
|
+
|
|
131
|
+
**FALLBACK: Criar arquivo .md apenas se MCP falhar**
|
|
132
|
+
|
|
133
|
+
Se o MCP não estiver disponível ou falhar, crie/atualize `./.sessions/<ISSUE-ID>/refine.md`:
|
|
116
134
|
|
|
117
135
|
```markdown
|
|
118
136
|
# [Título da Issue] - Refinamento
|
|
@@ -153,6 +171,8 @@ Crie/atualize `./.sessions/<ISSUE-ID>/refine.md`:
|
|
|
153
171
|
- [Risco 2 e mitigação]
|
|
154
172
|
```
|
|
155
173
|
|
|
174
|
+
Informe ao usuário: "⚠️ Refinamento salvo localmente em .sessions/ (task manager não disponível)"
|
|
175
|
+
|
|
156
176
|
## 🔍 Validação
|
|
157
177
|
|
|
158
178
|
Valide o refinamento contra:
|
|
@@ -203,12 +203,20 @@ Justificativa: [Por que ficam para depois]
|
|
|
203
203
|
|
|
204
204
|
## 📄 Salvamento do PRD
|
|
205
205
|
|
|
206
|
-
**
|
|
207
|
-
- Adicione o PRD como comentário na issue
|
|
208
|
-
- Ou anexe como arquivo
|
|
206
|
+
**PRIORIDADE 1: Usar MCP (Model Context Protocol)**
|
|
209
207
|
|
|
210
|
-
|
|
208
|
+
- Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
|
|
209
|
+
- Use o MCP apropriado para atualizar a issue com o PRD:
|
|
210
|
+
- Adicione o PRD completo como comentário na issue
|
|
211
|
+
- Ou anexe como arquivo (se o task manager suportar)
|
|
212
|
+
- Atualize status/labels (ex: "spec-ready", "ready-for-dev")
|
|
213
|
+
- Informe ao usuário: "✅ PRD adicionado à issue [ID]"
|
|
214
|
+
|
|
215
|
+
**FALLBACK: Criar arquivo .md apenas se MCP falhar**
|
|
216
|
+
|
|
217
|
+
Se o MCP não estiver disponível ou falhar:
|
|
211
218
|
- Salve em `./.sessions/<ISSUE-ID>/prd.md`
|
|
219
|
+
- Informe ao usuário: "⚠️ PRD salvo localmente em .sessions/ (task manager não disponível)"
|
|
212
220
|
|
|
213
221
|
## 🔍 Revisão e Aprovação
|
|
214
222
|
|
|
@@ -216,7 +224,8 @@ Antes de finalizar:
|
|
|
216
224
|
1. Revise o PRD com stakeholders
|
|
217
225
|
2. Valide contra metaspecs (se disponíveis)
|
|
218
226
|
3. Obtenha aprovação para iniciar implementação
|
|
219
|
-
4. Atualize a issue no task manager com status "Pronto para Desenvolvimento"
|
|
227
|
+
4. **Via MCP**: Atualize a issue no task manager com status "Pronto para Desenvolvimento"
|
|
228
|
+
5. **Fallback**: Documente aprovação em `./.sessions/<ISSUE-ID>/prd.md`
|
|
220
229
|
|
|
221
230
|
---
|
|
222
231
|
|