context-first-cli 1.4.0 → 1.5.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.
- 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 +174 -59
- 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`));
|
|
@@ -35,6 +57,21 @@ exports.featureCommands = {
|
|
|
35
57
|
else {
|
|
36
58
|
console.log(chalk_1.default.gray('✓ Orchestrator repository already cloned'));
|
|
37
59
|
}
|
|
60
|
+
// Load ai.properties.md
|
|
61
|
+
console.log(chalk_1.default.blue('\n⚙️ Loading configuration from ai.properties.md...'));
|
|
62
|
+
const aiProperties = await (0, ai_properties_1.loadAiProperties)(orchestratorPath);
|
|
63
|
+
if (!aiProperties) {
|
|
64
|
+
(0, config_1.exitWithError)('Could not load ai.properties.md from orchestrator.\n' +
|
|
65
|
+
'Run "context-cli config:setup" to create it.');
|
|
66
|
+
}
|
|
67
|
+
const basePath = (0, ai_properties_1.getBasePath)(aiProperties);
|
|
68
|
+
if (!basePath) {
|
|
69
|
+
(0, config_1.exitWithError)('base_path not configured in ai.properties.md.\n' +
|
|
70
|
+
'Run "context-cli config:setup" to configure it.');
|
|
71
|
+
}
|
|
72
|
+
const autoClone = (0, ai_properties_1.isAutoCloneEnabled)(aiProperties);
|
|
73
|
+
console.log(chalk_1.default.gray(`✓ base_path: ${basePath}`));
|
|
74
|
+
console.log(chalk_1.default.gray(`✓ auto_clone: ${autoClone}`));
|
|
38
75
|
// Load manifest
|
|
39
76
|
const manifest = await (0, config_1.loadManifest)(orchestratorPath);
|
|
40
77
|
if (!manifest) {
|
|
@@ -68,47 +105,58 @@ exports.featureCommands = {
|
|
|
68
105
|
]);
|
|
69
106
|
repoIds = selectedRepos;
|
|
70
107
|
}
|
|
71
|
-
// Create workspace directory
|
|
72
|
-
const
|
|
73
|
-
await (0, config_1.ensureDir)(
|
|
74
|
-
const workspacePath = path_1.default.join(
|
|
108
|
+
// Create workspace directory in orchestrator/.sessions/
|
|
109
|
+
const sessionsDir = path_1.default.join(orchestratorPath, '.sessions');
|
|
110
|
+
await (0, config_1.ensureDir)(sessionsDir);
|
|
111
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
75
112
|
if (await (0, config_1.pathExists)(workspacePath)) {
|
|
76
113
|
(0, config_1.exitWithError)(`Workspace for ${issueId} already exists at ${workspacePath}`);
|
|
77
114
|
}
|
|
78
115
|
await (0, config_1.ensureDir)(workspacePath);
|
|
79
116
|
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);
|
|
117
|
+
// Process each repository
|
|
118
|
+
console.log(chalk_1.default.blue('\n🌳 Setting up repositories...'));
|
|
84
119
|
const selectedRepos = manifest.repositories.filter(repo => repoIds.includes(repo.id));
|
|
120
|
+
const branchName = `feature/${issueId}`;
|
|
85
121
|
for (const repo of selectedRepos) {
|
|
86
|
-
|
|
87
|
-
if
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
122
|
+
console.log(chalk_1.default.blue(`\n Processing ${repo.id}...`));
|
|
123
|
+
// Check if repo exists at base_path
|
|
124
|
+
const mainRepoPath = path_1.default.join(basePath, repo.id);
|
|
125
|
+
const repoExists = await (0, config_1.pathExists)(mainRepoPath);
|
|
126
|
+
if (!repoExists) {
|
|
127
|
+
if (autoClone) {
|
|
128
|
+
// Clone the repository
|
|
129
|
+
console.log(chalk_1.default.blue(` Cloning ${repo.id} to ${mainRepoPath}...`));
|
|
130
|
+
try {
|
|
131
|
+
await (0, git_1.ensureRepoCloned)(repo.url, mainRepoPath);
|
|
132
|
+
console.log(chalk_1.default.green(` ✓ Cloned ${repo.id}`));
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
console.log(chalk_1.default.yellow(` ⚠ Failed to clone ${repo.id}: ${error.message}`));
|
|
136
|
+
console.log(chalk_1.default.yellow(` Skipping ${repo.id}...`));
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
91
139
|
}
|
|
92
|
-
|
|
93
|
-
|
|
140
|
+
else {
|
|
141
|
+
// Skip if auto_clone is disabled
|
|
142
|
+
console.log(chalk_1.default.yellow(` ⚠ Repository not found at ${mainRepoPath}`));
|
|
143
|
+
console.log(chalk_1.default.yellow(` Set auto_clone=true in ai.properties.md to enable automatic cloning`));
|
|
144
|
+
console.log(chalk_1.default.yellow(` Skipping ${repo.id}...`));
|
|
145
|
+
continue;
|
|
94
146
|
}
|
|
95
147
|
}
|
|
96
148
|
else {
|
|
97
|
-
console.log(chalk_1.default.gray(`
|
|
149
|
+
console.log(chalk_1.default.gray(` ✓ Repository exists at ${mainRepoPath}`));
|
|
98
150
|
}
|
|
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);
|
|
151
|
+
// Create worktree
|
|
105
152
|
const worktreePath = path_1.default.join(workspacePath, repo.id);
|
|
106
|
-
console.log(chalk_1.default.blue(
|
|
153
|
+
console.log(chalk_1.default.blue(` Creating worktree at ${worktreePath}...`));
|
|
107
154
|
try {
|
|
108
155
|
await (0, git_1.createWorktree)(mainRepoPath, worktreePath, branchName);
|
|
156
|
+
console.log(chalk_1.default.green(` ✓ Created worktree for ${repo.id}`));
|
|
109
157
|
}
|
|
110
158
|
catch (error) {
|
|
111
|
-
console.log(chalk_1.default.yellow(`
|
|
159
|
+
console.log(chalk_1.default.yellow(` ⚠ Failed to create worktree: ${error.message}`));
|
|
112
160
|
}
|
|
113
161
|
}
|
|
114
162
|
// Save workspace metadata
|
|
@@ -130,12 +178,16 @@ exports.featureCommands = {
|
|
|
130
178
|
},
|
|
131
179
|
list: async () => {
|
|
132
180
|
console.log(chalk_1.default.blue.bold('\n📋 Active Feature Workspaces\n'));
|
|
133
|
-
const
|
|
134
|
-
if (!
|
|
135
|
-
console.log(chalk_1.default.yellow('No
|
|
181
|
+
const sessionsDir = await getSessionsDir();
|
|
182
|
+
if (!sessionsDir) {
|
|
183
|
+
console.log(chalk_1.default.yellow('No configuration found. Run "context-cli init" first.'));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (!(await (0, config_1.pathExists)(sessionsDir))) {
|
|
187
|
+
console.log(chalk_1.default.yellow('No workspaces found. Create one with "context-cli feature start <issue-id>"'));
|
|
136
188
|
return;
|
|
137
189
|
}
|
|
138
|
-
const entries = await promises_1.default.readdir(
|
|
190
|
+
const entries = await promises_1.default.readdir(sessionsDir, { withFileTypes: true });
|
|
139
191
|
const workspaceDirs = entries.filter(e => e.isDirectory()).map(e => e.name);
|
|
140
192
|
if (workspaceDirs.length === 0) {
|
|
141
193
|
console.log(chalk_1.default.yellow('No workspaces found.'));
|
|
@@ -143,7 +195,7 @@ exports.featureCommands = {
|
|
|
143
195
|
}
|
|
144
196
|
const workspaces = [];
|
|
145
197
|
for (const issueId of workspaceDirs) {
|
|
146
|
-
const workspacePath = path_1.default.join(
|
|
198
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
147
199
|
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
148
200
|
workspaces.push({ issueId, metadata });
|
|
149
201
|
}
|
|
@@ -160,25 +212,33 @@ exports.featureCommands = {
|
|
|
160
212
|
console.log(`${chalk_1.default.cyan(issueId.padEnd(14))} | ${chalk_1.default.gray('(no metadata)')}`);
|
|
161
213
|
}
|
|
162
214
|
}
|
|
163
|
-
console.log(chalk_1.default.gray('\n💡 Use "context-cli feature
|
|
215
|
+
console.log(chalk_1.default.gray('\n💡 Use "context-cli feature switch <issue-id>" to switch to a workspace'));
|
|
164
216
|
},
|
|
165
217
|
switch: async (issueId) => {
|
|
166
|
-
const
|
|
167
|
-
|
|
218
|
+
const sessionsDir = await getSessionsDir();
|
|
219
|
+
if (!sessionsDir) {
|
|
220
|
+
(0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
|
|
221
|
+
}
|
|
222
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
168
223
|
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
169
|
-
(0, config_1.exitWithError)(`Workspace for ${issueId} not found
|
|
224
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
|
|
170
225
|
}
|
|
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.
|
|
226
|
+
console.log(chalk_1.default.green(`\n✓ Workspace found: ${workspacePath}`));
|
|
227
|
+
console.log(chalk_1.default.blue('\n💡 To switch to this workspace:'));
|
|
228
|
+
console.log(chalk_1.default.gray(` cd ${workspacePath}`));
|
|
229
|
+
console.log(chalk_1.default.gray(' code .'));
|
|
174
230
|
},
|
|
175
|
-
|
|
176
|
-
console.log(chalk_1.default.blue.bold(`\n
|
|
177
|
-
const
|
|
178
|
-
|
|
231
|
+
remove: async (issueId, options) => {
|
|
232
|
+
console.log(chalk_1.default.blue.bold(`\n🗑️ Removing workspace: ${issueId}\n`));
|
|
233
|
+
const sessionsDir = await getSessionsDir();
|
|
234
|
+
if (!sessionsDir) {
|
|
235
|
+
(0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
|
|
236
|
+
}
|
|
237
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
179
238
|
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
180
|
-
(0, config_1.exitWithError)(`Workspace for ${issueId} not found
|
|
239
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
|
|
181
240
|
}
|
|
241
|
+
// Load metadata to get repository list
|
|
182
242
|
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
183
243
|
if (!metadata) {
|
|
184
244
|
(0, config_1.exitWithError)('Could not load workspace metadata');
|
|
@@ -189,36 +249,91 @@ exports.featureCommands = {
|
|
|
189
249
|
{
|
|
190
250
|
type: 'confirm',
|
|
191
251
|
name: 'confirm',
|
|
192
|
-
message: `Are you sure you want to
|
|
252
|
+
message: `Are you sure you want to remove workspace ${issueId}?`,
|
|
193
253
|
default: false,
|
|
194
254
|
},
|
|
195
255
|
]);
|
|
196
256
|
if (!confirm) {
|
|
197
|
-
console.log(chalk_1.default.yellow('✋
|
|
257
|
+
console.log(chalk_1.default.yellow('✋ Removal cancelled'));
|
|
198
258
|
return;
|
|
199
259
|
}
|
|
200
260
|
}
|
|
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
261
|
// Remove worktrees
|
|
209
|
-
console.log(chalk_1.default.blue('
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
262
|
+
console.log(chalk_1.default.blue('Removing worktrees...'));
|
|
263
|
+
// Load ai.properties to get base_path
|
|
264
|
+
const configResult = await (0, config_1.findConfig)();
|
|
265
|
+
if (configResult) {
|
|
266
|
+
const { configDir } = configResult;
|
|
267
|
+
const orchestratorPath = path_1.default.join(configDir, '.context-orchestrator');
|
|
268
|
+
const aiProperties = await (0, ai_properties_1.loadAiProperties)(orchestratorPath);
|
|
269
|
+
const basePath = (0, ai_properties_1.getBasePath)(aiProperties);
|
|
270
|
+
if (basePath) {
|
|
271
|
+
for (const repoId of metadata.repositories) {
|
|
272
|
+
const worktreePath = path_1.default.join(workspacePath, repoId);
|
|
273
|
+
const mainRepoPath = path_1.default.join(basePath, repoId);
|
|
274
|
+
if (await (0, config_1.pathExists)(worktreePath)) {
|
|
275
|
+
try {
|
|
276
|
+
console.log(chalk_1.default.gray(` Removing worktree for ${repoId}...`));
|
|
277
|
+
await (0, git_1.removeWorktree)(mainRepoPath, worktreePath);
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
console.log(chalk_1.default.yellow(` Warning: ${error.message}`));
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
216
284
|
}
|
|
217
285
|
}
|
|
218
286
|
// Remove workspace directory
|
|
219
|
-
console.log(chalk_1.default.blue('
|
|
287
|
+
console.log(chalk_1.default.blue('Removing workspace directory...'));
|
|
220
288
|
await promises_1.default.rm(workspacePath, { recursive: true, force: true });
|
|
221
|
-
console.log(chalk_1.default.green
|
|
289
|
+
console.log(chalk_1.default.green(`\n✅ Workspace ${issueId} removed successfully`));
|
|
290
|
+
},
|
|
291
|
+
status: async (issueId) => {
|
|
292
|
+
const sessionsDir = await getSessionsDir();
|
|
293
|
+
if (!sessionsDir) {
|
|
294
|
+
(0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
|
|
295
|
+
}
|
|
296
|
+
if (issueId) {
|
|
297
|
+
// Show status for specific workspace
|
|
298
|
+
const workspacePath = path_1.default.join(sessionsDir, issueId);
|
|
299
|
+
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
300
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
|
|
301
|
+
}
|
|
302
|
+
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
303
|
+
if (!metadata) {
|
|
304
|
+
(0, config_1.exitWithError)('Could not load workspace metadata');
|
|
305
|
+
}
|
|
306
|
+
console.log(chalk_1.default.blue.bold(`\n📊 Workspace Status: ${issueId}\n`));
|
|
307
|
+
console.log(chalk_1.default.gray(`Created: ${new Date(metadata.createdAt).toLocaleString()}`));
|
|
308
|
+
console.log(chalk_1.default.gray(`Last Updated: ${new Date(metadata.lastUpdated).toLocaleString()}`));
|
|
309
|
+
console.log(chalk_1.default.gray(`Status: ${metadata.status}`));
|
|
310
|
+
console.log(chalk_1.default.gray(`\nRepositories:`));
|
|
311
|
+
for (const repoId of metadata.repositories) {
|
|
312
|
+
const worktreePath = path_1.default.join(workspacePath, repoId);
|
|
313
|
+
const exists = await (0, config_1.pathExists)(worktreePath);
|
|
314
|
+
const status = exists ? chalk_1.default.green('✓') : chalk_1.default.red('✗');
|
|
315
|
+
console.log(` ${status} ${repoId}`);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
// Show current workspace status (if in workspace)
|
|
320
|
+
const cwd = process.cwd();
|
|
321
|
+
// Check if we're in a .sessions workspace
|
|
322
|
+
if (cwd.includes('.sessions')) {
|
|
323
|
+
const parts = cwd.split(path_1.default.sep);
|
|
324
|
+
const sessionIndex = parts.indexOf('.sessions');
|
|
325
|
+
if (sessionIndex >= 0 && parts.length > sessionIndex + 1) {
|
|
326
|
+
const currentIssueId = parts[sessionIndex + 1];
|
|
327
|
+
await exports.featureCommands.status(currentIssueId);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
console.log(chalk_1.default.yellow('Not in a feature workspace. Use "context-cli feature list" to see all workspaces.'));
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
end: async (issueId, options) => {
|
|
335
|
+
// Alias for remove command
|
|
336
|
+
await exports.featureCommands.remove(issueId, options);
|
|
222
337
|
},
|
|
223
338
|
};
|
|
224
339
|
//# 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
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface AiProperties {
|
|
2
|
+
base_path?: string;
|
|
3
|
+
auto_clone?: boolean;
|
|
4
|
+
task_management_system?: string;
|
|
5
|
+
jira_site?: string;
|
|
6
|
+
jira_cloud_id?: string;
|
|
7
|
+
jira_project_key?: string;
|
|
8
|
+
jira_project_id?: string;
|
|
9
|
+
linear_api_key?: string;
|
|
10
|
+
linear_team_id?: string;
|
|
11
|
+
github_org?: string;
|
|
12
|
+
github_repo?: string;
|
|
13
|
+
branch_prefix?: string;
|
|
14
|
+
branch_pattern?: string;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parse ai.properties.md file into a key-value object
|
|
19
|
+
*/
|
|
20
|
+
export declare function loadAiProperties(orchestratorPath: string): Promise<AiProperties | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Get the base path where repositories should be located
|
|
23
|
+
*/
|
|
24
|
+
export declare function getBasePath(properties: AiProperties | null): string | null;
|
|
25
|
+
/**
|
|
26
|
+
* Check if auto_clone is enabled
|
|
27
|
+
*/
|
|
28
|
+
export declare function isAutoCloneEnabled(properties: AiProperties | null): boolean;
|
|
29
|
+
//# sourceMappingURL=ai-properties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-properties.d.ts","sourceRoot":"","sources":["../../src/utils/ai-properties.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqC7F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAY1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAM3E"}
|