context-first-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +144 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +253 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/feature.d.ts +11 -0
- package/dist/commands/feature.d.ts.map +1 -0
- package/dist/commands/feature.js +224 -0
- package/dist/commands/feature.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +95 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/scaffold-orchestrator.d.ts +2 -0
- package/dist/commands/scaffold-orchestrator.d.ts.map +1 -0
- package/dist/commands/scaffold-orchestrator.js +203 -0
- package/dist/commands/scaffold-orchestrator.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +102 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/config.d.ts +67 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +118 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/git.d.ts +35 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +152 -0
- package/dist/utils/git.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.featureCommands = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
const config_1 = require("../utils/config");
|
|
12
|
+
const git_1 = require("../utils/git");
|
|
13
|
+
exports.featureCommands = {
|
|
14
|
+
start: async (issueId, options) => {
|
|
15
|
+
console.log(chalk_1.default.blue.bold(`\nπ Starting feature workspace for: ${issueId}\n`));
|
|
16
|
+
// Find configuration
|
|
17
|
+
const configResult = await (0, config_1.findConfig)();
|
|
18
|
+
if (!configResult) {
|
|
19
|
+
(0, config_1.exitWithError)('No .contextrc.json found. Run "context-cli init" first.');
|
|
20
|
+
}
|
|
21
|
+
const { config, configDir } = configResult;
|
|
22
|
+
console.log(chalk_1.default.gray(`β Found configuration in ${configDir}`));
|
|
23
|
+
// Determine orchestrator path
|
|
24
|
+
const orchestratorPath = path_1.default.join(configDir, '.context-orchestrator');
|
|
25
|
+
// Clone orchestrator if needed
|
|
26
|
+
if (!(await (0, config_1.pathExists)(orchestratorPath))) {
|
|
27
|
+
console.log(chalk_1.default.blue('\nπ¦ Cloning orchestrator repository...'));
|
|
28
|
+
try {
|
|
29
|
+
await (0, git_1.ensureRepoCloned)(config.orchestratorRepo, orchestratorPath);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
(0, config_1.exitWithError)(`Failed to clone orchestrator: ${error.message}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.log(chalk_1.default.gray('β Orchestrator repository already cloned'));
|
|
37
|
+
}
|
|
38
|
+
// Load manifest
|
|
39
|
+
const manifest = await (0, config_1.loadManifest)(orchestratorPath);
|
|
40
|
+
if (!manifest) {
|
|
41
|
+
(0, config_1.exitWithError)('Could not load context-manifest.json from orchestrator');
|
|
42
|
+
}
|
|
43
|
+
console.log(chalk_1.default.gray(`β Loaded manifest for project: ${manifest.project}`));
|
|
44
|
+
// Determine which repositories to include
|
|
45
|
+
let repoIds;
|
|
46
|
+
if (options.repos) {
|
|
47
|
+
repoIds = options.repos.split(',').map(r => r.trim());
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Interactive selection
|
|
51
|
+
const { selectedRepos } = await inquirer_1.default.prompt([
|
|
52
|
+
{
|
|
53
|
+
type: 'checkbox',
|
|
54
|
+
name: 'selectedRepos',
|
|
55
|
+
message: 'Select repositories to include in this workspace:',
|
|
56
|
+
choices: manifest.repositories.map(repo => ({
|
|
57
|
+
name: `${repo.id} - ${repo.description}`,
|
|
58
|
+
value: repo.id,
|
|
59
|
+
checked: repo.role === 'application', // Auto-select application repos
|
|
60
|
+
})),
|
|
61
|
+
validate: (answer) => {
|
|
62
|
+
if (answer.length === 0) {
|
|
63
|
+
return 'You must select at least one repository';
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
]);
|
|
69
|
+
repoIds = selectedRepos;
|
|
70
|
+
}
|
|
71
|
+
// Create workspace directory
|
|
72
|
+
const workspacesDir = (0, config_1.getWorkspacesDir)();
|
|
73
|
+
await (0, config_1.ensureDir)(workspacesDir);
|
|
74
|
+
const workspacePath = path_1.default.join(workspacesDir, issueId);
|
|
75
|
+
if (await (0, config_1.pathExists)(workspacePath)) {
|
|
76
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} already exists at ${workspacePath}`);
|
|
77
|
+
}
|
|
78
|
+
await (0, config_1.ensureDir)(workspacePath);
|
|
79
|
+
console.log(chalk_1.default.green(`\nβ Created workspace directory: ${workspacePath}`));
|
|
80
|
+
// Ensure main repositories are cloned
|
|
81
|
+
console.log(chalk_1.default.blue('\nπ¦ Ensuring main repositories are cloned...'));
|
|
82
|
+
const mainReposDir = path_1.default.join(configDir, '.context-repos');
|
|
83
|
+
await (0, config_1.ensureDir)(mainReposDir);
|
|
84
|
+
const selectedRepos = manifest.repositories.filter(repo => repoIds.includes(repo.id));
|
|
85
|
+
for (const repo of selectedRepos) {
|
|
86
|
+
const mainRepoPath = path_1.default.join(mainReposDir, repo.id);
|
|
87
|
+
if (!(await (0, config_1.pathExists)(mainRepoPath))) {
|
|
88
|
+
console.log(chalk_1.default.blue(`\n Cloning ${repo.id}...`));
|
|
89
|
+
try {
|
|
90
|
+
await (0, git_1.ensureRepoCloned)(repo.url, mainRepoPath);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
(0, config_1.exitWithError)(`Failed to clone ${repo.id}: ${error.message}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log(chalk_1.default.gray(` β ${repo.id} already cloned`));
|
|
98
|
+
}
|
|
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);
|
|
105
|
+
const worktreePath = path_1.default.join(workspacePath, repo.id);
|
|
106
|
+
console.log(chalk_1.default.blue(`\n Creating worktree for ${repo.id}...`));
|
|
107
|
+
try {
|
|
108
|
+
await (0, git_1.createWorktree)(mainRepoPath, worktreePath, branchName);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.log(chalk_1.default.yellow(` Warning: ${error.message}`));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Save workspace metadata
|
|
115
|
+
const metadata = {
|
|
116
|
+
issueId,
|
|
117
|
+
repositories: repoIds,
|
|
118
|
+
createdAt: new Date().toISOString(),
|
|
119
|
+
lastUpdated: new Date().toISOString(),
|
|
120
|
+
status: 'active',
|
|
121
|
+
};
|
|
122
|
+
await (0, config_1.saveWorkspaceMetadata)(workspacePath, metadata);
|
|
123
|
+
console.log(chalk_1.default.green.bold('\nβ
Workspace created successfully!'));
|
|
124
|
+
console.log(chalk_1.default.blue('\nπ Workspace location:'));
|
|
125
|
+
console.log(chalk_1.default.white(` ${workspacePath}`));
|
|
126
|
+
console.log(chalk_1.default.blue('\nπ‘ Next steps:'));
|
|
127
|
+
console.log(chalk_1.default.gray(` cd ${workspacePath}`));
|
|
128
|
+
console.log(chalk_1.default.gray(' code .'));
|
|
129
|
+
console.log(chalk_1.default.gray(' # Start working on your feature!'));
|
|
130
|
+
},
|
|
131
|
+
list: async () => {
|
|
132
|
+
console.log(chalk_1.default.blue.bold('\nπ Active Feature Workspaces\n'));
|
|
133
|
+
const workspacesDir = (0, config_1.getWorkspacesDir)();
|
|
134
|
+
if (!(await (0, config_1.pathExists)(workspacesDir))) {
|
|
135
|
+
console.log(chalk_1.default.yellow('No workspaces found. Create one with "context-cli feature:start <issue-id>"'));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const entries = await promises_1.default.readdir(workspacesDir, { withFileTypes: true });
|
|
139
|
+
const workspaceDirs = entries.filter(e => e.isDirectory()).map(e => e.name);
|
|
140
|
+
if (workspaceDirs.length === 0) {
|
|
141
|
+
console.log(chalk_1.default.yellow('No workspaces found.'));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const workspaces = [];
|
|
145
|
+
for (const issueId of workspaceDirs) {
|
|
146
|
+
const workspacePath = path_1.default.join(workspacesDir, issueId);
|
|
147
|
+
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
148
|
+
workspaces.push({ issueId, metadata });
|
|
149
|
+
}
|
|
150
|
+
console.log(chalk_1.default.bold('Issue ID | Repositories | Created | Status'));
|
|
151
|
+
console.log(chalk_1.default.gray('β'.repeat(75)));
|
|
152
|
+
for (const { issueId, metadata } of workspaces) {
|
|
153
|
+
if (metadata) {
|
|
154
|
+
const repos = metadata.repositories.join(', ');
|
|
155
|
+
const created = new Date(metadata.createdAt).toLocaleDateString();
|
|
156
|
+
const status = metadata.status === 'active' ? chalk_1.default.green('active') : chalk_1.default.gray('archived');
|
|
157
|
+
console.log(`${chalk_1.default.cyan(issueId.padEnd(14))} | ${repos.padEnd(22)} | ${created.padEnd(14)} | ${status}`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(`${chalk_1.default.cyan(issueId.padEnd(14))} | ${chalk_1.default.gray('(no metadata)')}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
console.log(chalk_1.default.gray('\nπ‘ Use "context-cli feature:switch <issue-id>" to switch to a workspace'));
|
|
164
|
+
},
|
|
165
|
+
switch: async (issueId) => {
|
|
166
|
+
const workspacesDir = (0, config_1.getWorkspacesDir)();
|
|
167
|
+
const workspacePath = path_1.default.join(workspacesDir, issueId);
|
|
168
|
+
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
169
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found. Use "context-cli feature:list" to see available workspaces.`);
|
|
170
|
+
}
|
|
171
|
+
console.log(chalk_1.default.green(`\nβ Workspace found: ${issueId}`));
|
|
172
|
+
console.log(chalk_1.default.blue('\nπ‘ To switch to this workspace, run:'));
|
|
173
|
+
console.log(chalk_1.default.white(` cd ${workspacePath}`));
|
|
174
|
+
},
|
|
175
|
+
end: async (issueId, options) => {
|
|
176
|
+
console.log(chalk_1.default.blue.bold(`\nπ§Ή Ending feature workspace: ${issueId}\n`));
|
|
177
|
+
const workspacesDir = (0, config_1.getWorkspacesDir)();
|
|
178
|
+
const workspacePath = path_1.default.join(workspacesDir, issueId);
|
|
179
|
+
if (!(await (0, config_1.pathExists)(workspacePath))) {
|
|
180
|
+
(0, config_1.exitWithError)(`Workspace for ${issueId} not found.`);
|
|
181
|
+
}
|
|
182
|
+
const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
|
|
183
|
+
if (!metadata) {
|
|
184
|
+
(0, config_1.exitWithError)('Could not load workspace metadata');
|
|
185
|
+
}
|
|
186
|
+
// Confirm deletion
|
|
187
|
+
if (!options.force) {
|
|
188
|
+
const { confirm } = await inquirer_1.default.prompt([
|
|
189
|
+
{
|
|
190
|
+
type: 'confirm',
|
|
191
|
+
name: 'confirm',
|
|
192
|
+
message: `Are you sure you want to end workspace ${issueId}? This will remove all worktrees.`,
|
|
193
|
+
default: false,
|
|
194
|
+
},
|
|
195
|
+
]);
|
|
196
|
+
if (!confirm) {
|
|
197
|
+
console.log(chalk_1.default.yellow('β Operation cancelled'));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
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
|
+
// Remove worktrees
|
|
209
|
+
console.log(chalk_1.default.blue('π³ Removing worktrees...'));
|
|
210
|
+
for (const repoId of metadata.repositories) {
|
|
211
|
+
const mainRepoPath = path_1.default.join(mainReposDir, repoId);
|
|
212
|
+
const worktreePath = path_1.default.join(workspacePath, repoId);
|
|
213
|
+
if (await (0, config_1.pathExists)(mainRepoPath)) {
|
|
214
|
+
console.log(chalk_1.default.gray(` Removing worktree for ${repoId}...`));
|
|
215
|
+
await (0, git_1.removeWorktree)(mainRepoPath, worktreePath);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Remove workspace directory
|
|
219
|
+
console.log(chalk_1.default.blue('\nποΈ Removing workspace directory...'));
|
|
220
|
+
await promises_1.default.rm(workspacePath, { recursive: true, force: true });
|
|
221
|
+
console.log(chalk_1.default.green.bold('\nβ
Workspace ended successfully!'));
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,kBA2FhC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.initCommand = initCommand;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
async function initCommand() {
|
|
12
|
+
console.log(chalk_1.default.blue.bold('\nπ Initializing Context-First in this project\n'));
|
|
13
|
+
try {
|
|
14
|
+
// Check if already initialized
|
|
15
|
+
const configPath = path_1.default.join(process.cwd(), '.contextrc.json');
|
|
16
|
+
const exists = await promises_1.default.access(configPath).then(() => true).catch(() => false);
|
|
17
|
+
if (exists) {
|
|
18
|
+
const { overwrite } = await inquirer_1.default.prompt([
|
|
19
|
+
{
|
|
20
|
+
type: 'confirm',
|
|
21
|
+
name: 'overwrite',
|
|
22
|
+
message: 'Configuration file already exists. Overwrite?',
|
|
23
|
+
default: false,
|
|
24
|
+
},
|
|
25
|
+
]);
|
|
26
|
+
if (!overwrite) {
|
|
27
|
+
console.log(chalk_1.default.yellow('β Initialization cancelled'));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Prompt for configuration
|
|
32
|
+
const answers = await inquirer_1.default.prompt([
|
|
33
|
+
{
|
|
34
|
+
type: 'input',
|
|
35
|
+
name: 'orchestratorRepo',
|
|
36
|
+
message: 'Git URL of your Orchestrator repository:',
|
|
37
|
+
validate: (input) => {
|
|
38
|
+
if (!input.trim()) {
|
|
39
|
+
return 'Orchestrator repository URL is required';
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: 'list',
|
|
46
|
+
name: 'aiProvider',
|
|
47
|
+
message: 'Which AI provider will you use?',
|
|
48
|
+
choices: [
|
|
49
|
+
{ name: 'Claude', value: 'claude' },
|
|
50
|
+
{ name: 'Cursor', value: 'cursor' },
|
|
51
|
+
{ name: 'Custom', value: 'custom' },
|
|
52
|
+
],
|
|
53
|
+
default: 'claude',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: 'input',
|
|
57
|
+
name: 'customCommandsDir',
|
|
58
|
+
message: 'Custom commands directory path:',
|
|
59
|
+
when: (answers) => answers.aiProvider === 'custom',
|
|
60
|
+
default: '.ai/commands',
|
|
61
|
+
},
|
|
62
|
+
]);
|
|
63
|
+
// Determine commands directory based on AI provider
|
|
64
|
+
let commandsDir;
|
|
65
|
+
if (answers.aiProvider === 'custom' && answers.customCommandsDir) {
|
|
66
|
+
commandsDir = answers.customCommandsDir;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
commandsDir = `.${answers.aiProvider}/commands`;
|
|
70
|
+
}
|
|
71
|
+
// Create configuration object
|
|
72
|
+
const config = {
|
|
73
|
+
orchestratorRepo: answers.orchestratorRepo,
|
|
74
|
+
aiProvider: answers.aiProvider,
|
|
75
|
+
commandsDir: commandsDir,
|
|
76
|
+
version: '1.0.0',
|
|
77
|
+
createdAt: new Date().toISOString(),
|
|
78
|
+
};
|
|
79
|
+
// Write configuration file
|
|
80
|
+
await promises_1.default.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
81
|
+
console.log(chalk_1.default.green('\nβ
Configuration saved to .contextrc.json'));
|
|
82
|
+
console.log(chalk_1.default.gray('\nConfiguration:'));
|
|
83
|
+
console.log(chalk_1.default.gray(` Orchestrator: ${config.orchestratorRepo}`));
|
|
84
|
+
console.log(chalk_1.default.gray(` AI Provider: ${config.aiProvider}`));
|
|
85
|
+
console.log(chalk_1.default.gray(` Commands Directory: ${config.commandsDir}`));
|
|
86
|
+
console.log(chalk_1.default.blue('\nπ‘ Next steps:'));
|
|
87
|
+
console.log(chalk_1.default.gray(' 1. Run "context-cli link" to create command delegation files'));
|
|
88
|
+
console.log(chalk_1.default.gray(' 2. Run "context-cli feature:start <issue-id>" to begin working on a feature'));
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error(chalk_1.default.red('\nβ Error during initialization:'), error);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAWA,kCA2FC;AAtGD,wDAAgC;AAChC,kDAA0B;AAC1B,2DAA6B;AAC7B,gDAAwB;AAQjB,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAElF,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAE/E,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,+CAA+C;oBACxD,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAc;YACjD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,0CAA0C;gBACnD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;wBAClB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,iCAAiC;gBAC1C,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACpC;gBACD,OAAO,EAAE,QAAQ;aAClB;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,iCAAiC;gBAC1C,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ;gBAClD,OAAO,EAAE,cAAc;aACxB;SACF,CAAC,CAAC;QAEH,oDAAoD;QACpD,IAAI,WAAmB,CAAC;QACxB,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACjE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,WAAW,CAAC;QAClD,CAAC;QAED,8BAA8B;QAC9B,MAAM,MAAM,GAAG;YACb,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,2BAA2B;QAC3B,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC,CAAC;IAE3G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-orchestrator.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"AAWA,wBAAsB,2BAA2B,kBA0FhD"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.scaffoldOrchestratorCommand = scaffoldOrchestratorCommand;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
async function scaffoldOrchestratorCommand() {
|
|
12
|
+
console.log(chalk_1.default.blue.bold('\nποΈ Scaffolding a new Orchestrator repository\n'));
|
|
13
|
+
try {
|
|
14
|
+
const answers = await inquirer_1.default.prompt([
|
|
15
|
+
{
|
|
16
|
+
type: 'input',
|
|
17
|
+
name: 'projectName',
|
|
18
|
+
message: 'Project name (will be used as directory name):',
|
|
19
|
+
validate: (input) => {
|
|
20
|
+
if (!input.trim()) {
|
|
21
|
+
return 'Project name is required';
|
|
22
|
+
}
|
|
23
|
+
if (!/^[a-z0-9-]+$/.test(input)) {
|
|
24
|
+
return 'Project name must contain only lowercase letters, numbers, and hyphens';
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: 'input',
|
|
31
|
+
name: 'description',
|
|
32
|
+
message: 'Project description:',
|
|
33
|
+
default: 'Orchestrator for Context-First development',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
type: 'list',
|
|
37
|
+
name: 'taskManager',
|
|
38
|
+
message: 'Which task management system will you use?',
|
|
39
|
+
choices: [
|
|
40
|
+
{ name: 'Jira', value: 'jira' },
|
|
41
|
+
{ name: 'Linear', value: 'linear' },
|
|
42
|
+
{ name: 'GitHub Issues', value: 'github' },
|
|
43
|
+
{ name: 'None (manual)', value: 'none' },
|
|
44
|
+
],
|
|
45
|
+
default: 'jira',
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
const targetDir = path_1.default.join(process.cwd(), answers.projectName);
|
|
49
|
+
// Check if directory already exists
|
|
50
|
+
const exists = await promises_1.default.access(targetDir).then(() => true).catch(() => false);
|
|
51
|
+
if (exists) {
|
|
52
|
+
console.log(chalk_1.default.red(`\nβ Directory "${answers.projectName}" already exists`));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Create directory structure
|
|
56
|
+
await promises_1.default.mkdir(targetDir, { recursive: true });
|
|
57
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, 'commands', 'definitions', 'product'), { recursive: true });
|
|
58
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, 'commands', 'definitions', 'engineer'), { recursive: true });
|
|
59
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, 'commands', 'definitions', 'feature'), { recursive: true });
|
|
60
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, 'scripts', 'worktree'), { recursive: true });
|
|
61
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, 'sessions'), { recursive: true });
|
|
62
|
+
// Create README.md
|
|
63
|
+
const readme = generateReadme(answers);
|
|
64
|
+
await promises_1.default.writeFile(path_1.default.join(targetDir, 'README.md'), readme, 'utf-8');
|
|
65
|
+
// Create ai.properties.md template
|
|
66
|
+
const aiProperties = generateAiProperties(answers);
|
|
67
|
+
await promises_1.default.writeFile(path_1.default.join(targetDir, 'ai.properties.md'), aiProperties, 'utf-8');
|
|
68
|
+
// Create context-manifest.json
|
|
69
|
+
const manifest = generateManifest(answers);
|
|
70
|
+
await promises_1.default.writeFile(path_1.default.join(targetDir, 'context-manifest.json'), JSON.stringify(manifest, null, 2), 'utf-8');
|
|
71
|
+
// Create .gitignore
|
|
72
|
+
const gitignore = `node_modules/\n.env\n.ia.env\nsessions/*/\n*.log\n`;
|
|
73
|
+
await promises_1.default.writeFile(path_1.default.join(targetDir, '.gitignore'), gitignore, 'utf-8');
|
|
74
|
+
console.log(chalk_1.default.green(`\nβ
Orchestrator scaffolded successfully at: ${targetDir}`));
|
|
75
|
+
console.log(chalk_1.default.blue('\nπ Structure created:'));
|
|
76
|
+
console.log(chalk_1.default.gray(' commands/definitions/ - Command definitions for AI'));
|
|
77
|
+
console.log(chalk_1.default.gray(' scripts/worktree/ - Worktree management scripts'));
|
|
78
|
+
console.log(chalk_1.default.gray(' sessions/ - Feature session data'));
|
|
79
|
+
console.log(chalk_1.default.gray(' ai.properties.md - Configuration template'));
|
|
80
|
+
console.log(chalk_1.default.gray(' context-manifest.json - Repository manifest'));
|
|
81
|
+
console.log(chalk_1.default.blue('\nπ‘ Next steps:'));
|
|
82
|
+
console.log(chalk_1.default.gray(` 1. cd ${answers.projectName}`));
|
|
83
|
+
console.log(chalk_1.default.gray(' 2. Edit ai.properties.md with your project paths'));
|
|
84
|
+
console.log(chalk_1.default.gray(' 3. Edit context-manifest.json to define your repositories'));
|
|
85
|
+
console.log(chalk_1.default.gray(' 4. Initialize as a Git repository and push to remote'));
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error(chalk_1.default.red('\nβ Error during scaffolding:'), error);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function generateReadme(answers) {
|
|
93
|
+
return `# ${answers.projectName}
|
|
94
|
+
|
|
95
|
+
${answers.description}
|
|
96
|
+
|
|
97
|
+
## π Documentation
|
|
98
|
+
|
|
99
|
+
This orchestrator manages the Context-First development methodology for the project.
|
|
100
|
+
|
|
101
|
+
## ποΈ Structure
|
|
102
|
+
|
|
103
|
+
\`\`\`
|
|
104
|
+
${answers.projectName}/
|
|
105
|
+
βββ commands/
|
|
106
|
+
β βββ definitions/ # Command definitions for AI
|
|
107
|
+
β βββ product/ # Product commands
|
|
108
|
+
β βββ engineer/ # Engineering commands
|
|
109
|
+
β βββ feature/ # Feature management commands
|
|
110
|
+
βββ scripts/
|
|
111
|
+
β βββ worktree/ # Worktree management scripts
|
|
112
|
+
βββ sessions/ # Feature session data
|
|
113
|
+
βββ ai.properties.md # Configuration
|
|
114
|
+
βββ context-manifest.json # Repository manifest
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
## βοΈ Configuration
|
|
118
|
+
|
|
119
|
+
Edit \`ai.properties.md\` to configure:
|
|
120
|
+
- Project paths
|
|
121
|
+
- Task manager credentials (${answers.taskManager})
|
|
122
|
+
- Branch conventions
|
|
123
|
+
- Repository-specific commands
|
|
124
|
+
|
|
125
|
+
## π Usage
|
|
126
|
+
|
|
127
|
+
1. Configure \`ai.properties.md\` with your project paths
|
|
128
|
+
2. Define your repositories in \`context-manifest.json\`
|
|
129
|
+
3. Use \`context-cli\` to manage features and workspaces
|
|
130
|
+
|
|
131
|
+
## π License
|
|
132
|
+
|
|
133
|
+
MIT
|
|
134
|
+
`;
|
|
135
|
+
}
|
|
136
|
+
function generateAiProperties(answers) {
|
|
137
|
+
return `# ${answers.projectName} - Orchestrator Configuration
|
|
138
|
+
|
|
139
|
+
## Paths dos Projetos
|
|
140
|
+
base_path=/path/to/your/workspace
|
|
141
|
+
meta_specs_path=/path/to/your/meta-specs
|
|
142
|
+
backend_path=/path/to/your/backend
|
|
143
|
+
frontend_path=/path/to/your/frontend
|
|
144
|
+
|
|
145
|
+
## ConfiguraΓ§Γ£o ${answers.taskManager === 'jira' ? 'Jira' : answers.taskManager === 'linear' ? 'Linear' : 'Task Manager'}
|
|
146
|
+
task_management_system=${answers.taskManager}
|
|
147
|
+
${answers.taskManager === 'jira' ? `jira_site=https://your-org.atlassian.net
|
|
148
|
+
jira_cloud_id=your-cloud-id
|
|
149
|
+
jira_project_key=PROJ
|
|
150
|
+
jira_project_id=10000` : ''}
|
|
151
|
+
${answers.taskManager === 'linear' ? `linear_api_key=your-api-key
|
|
152
|
+
linear_team_id=your-team-id` : ''}
|
|
153
|
+
${answers.taskManager === 'github' ? `github_org=your-org
|
|
154
|
+
github_repo=your-repo` : ''}
|
|
155
|
+
|
|
156
|
+
## ConvenΓ§Γ΅es de Branch
|
|
157
|
+
branch_prefix=feature
|
|
158
|
+
branch_pattern=feature/{slug}
|
|
159
|
+
|
|
160
|
+
## Comandos por RepositΓ³rio
|
|
161
|
+
|
|
162
|
+
### Backend
|
|
163
|
+
backend.lint_command=npm run lint
|
|
164
|
+
backend.test_unit_command=npm run test:unit
|
|
165
|
+
backend.test_integration_command=npm run test:integration
|
|
166
|
+
backend.build_command=npm run build
|
|
167
|
+
|
|
168
|
+
### Frontend
|
|
169
|
+
frontend.lint_command=npm run lint
|
|
170
|
+
frontend.test_unit_command=npm run test:unit
|
|
171
|
+
frontend.build_command=npm run build
|
|
172
|
+
`;
|
|
173
|
+
}
|
|
174
|
+
function generateManifest(answers) {
|
|
175
|
+
return {
|
|
176
|
+
version: '1.0',
|
|
177
|
+
project: answers.projectName,
|
|
178
|
+
description: answers.description,
|
|
179
|
+
repositories: [
|
|
180
|
+
{
|
|
181
|
+
id: 'metaspecs',
|
|
182
|
+
role: 'specs-provider',
|
|
183
|
+
url: 'git@github.com:your-org/your-metaspecs.git',
|
|
184
|
+
description: 'MetaSpecs repository with technical and business specifications',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: 'backend',
|
|
188
|
+
role: 'application',
|
|
189
|
+
url: 'git@github.com:your-org/your-backend.git',
|
|
190
|
+
dependsOn: ['metaspecs'],
|
|
191
|
+
description: 'Backend application',
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
id: 'frontend',
|
|
195
|
+
role: 'application',
|
|
196
|
+
url: 'git@github.com:your-org/your-frontend.git',
|
|
197
|
+
dependsOn: ['metaspecs', 'backend'],
|
|
198
|
+
description: 'Frontend application',
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=scaffold-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-orchestrator.js","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAUA,wBAAsB,aAAa,kBAuClC"}
|