context-first-cli 1.2.1 → 1.3.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 +198 -66
- package/dist/commands/config-setup.d.ts +2 -0
- package/dist/commands/config-setup.d.ts.map +1 -0
- package/dist/commands/config-setup.js +165 -0
- package/dist/commands/config-setup.js.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,8 +12,8 @@ This CLI is built on three core concepts that enable scalable, parallel, and con
|
|
|
12
12
|
|
|
13
13
|
Instead of embedding process logic into each of your application repositories, you define it in one central **Orchestrator Repository**. This repository acts as the single source of truth for your development methodology. It contains:
|
|
14
14
|
|
|
15
|
-
- **Command Definitions**: Markdown files (
|
|
16
|
-
- **Repository Manifest**: A `context-manifest.json` file that maps out your entire project ecosystem, defining all repositories and their relationships.
|
|
15
|
+
- **Command Definitions**: Markdown files (`.claude/commands/`) that instruct an AI (like Claude) on the purpose and logic of each step in your process (e.g., `/work`, `/spec`, `/pr`).
|
|
16
|
+
- **Repository Manifest**: A `context-manifest.json` file that maps out your entire project ecosystem, defining all repositories (including MetaSpecs) and their relationships.
|
|
17
17
|
- **Configuration Templates**: Files like `ai.properties.md` that define project-specific commands (lint, test, build) and settings.
|
|
18
18
|
|
|
19
19
|
### 2. Feature Workspaces
|
|
@@ -25,7 +25,7 @@ To enable parallel development without conflicts, the CLI uses **Feature Workspa
|
|
|
25
25
|
|
|
26
26
|
### 3. The Agnostic CLI (`context-cli`)
|
|
27
27
|
|
|
28
|
-
This is the tool you install on your machine. It's completely project-agnostic. You can use the same CLI to manage
|
|
28
|
+
This is the tool you install on your machine. It's completely project-agnostic. You can use the same CLI to manage any project.
|
|
29
29
|
|
|
30
30
|
- **Cross-Platform**: Built with Node.js/TypeScript, it works seamlessly on Windows, macOS, and Linux.
|
|
31
31
|
- **Configurable**: The `init` command creates a `.contextrc.json` file in your project, telling the CLI which Orchestrator to use.
|
|
@@ -33,73 +33,152 @@ This is the tool you install on your machine. It's completely project-agnostic.
|
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
36
|
-
##
|
|
37
|
-
|
|
38
|
-
### Installation
|
|
36
|
+
## 📦 Installation
|
|
39
37
|
|
|
40
38
|
Install the CLI globally on your machine via NPM.
|
|
41
39
|
|
|
42
40
|
```bash
|
|
43
41
|
npm install -g context-first-cli
|
|
44
42
|
```
|
|
45
|
-
*(Note: Once published to NPM)*
|
|
46
43
|
|
|
47
|
-
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 📋 Commands Reference
|
|
48
47
|
|
|
49
|
-
|
|
48
|
+
### Setup Commands
|
|
50
49
|
|
|
51
|
-
|
|
50
|
+
| Command | Description |
|
|
51
|
+
| :--- | :--- |
|
|
52
|
+
| `context-cli init` | Initialize Context-First in an existing project by creating `.contextrc.json`. |
|
|
53
|
+
| `context-cli create:orchestrator` | Create a new orchestrator repository from a template with all necessary structure. |
|
|
54
|
+
| `context-cli add:repo` | Add a new code repository to `context-manifest.json` interactively. |
|
|
55
|
+
| `context-cli add:repo-metaspec` | Add or update the MetaSpecs repository in `context-manifest.json`. |
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
2. Run the `init` command:
|
|
55
|
-
```bash
|
|
56
|
-
context-cli init
|
|
57
|
-
```
|
|
58
|
-
3. The CLI will ask you for the Git URL of your Orchestrator repository and your preferred AI provider. It will then create a `.contextrc.json` file to link this project to its orchestrator.
|
|
57
|
+
### Workspace Commands
|
|
59
58
|
|
|
60
|
-
|
|
59
|
+
| Command | Description |
|
|
60
|
+
| :--- | :--- |
|
|
61
|
+
| `context-cli feature:start <issue-id>` | Create a new feature workspace with isolated git worktrees. |
|
|
62
|
+
| `context-cli feature:list` | List all active feature workspaces on your machine. |
|
|
63
|
+
| `context-cli feature:switch <issue-id>` | Get the command to switch to an existing feature workspace. |
|
|
64
|
+
| `context-cli feature:end <issue-id>` | Archive and clean up a completed feature workspace. |
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
### Diagnostic Commands
|
|
67
|
+
|
|
68
|
+
| Command | Description |
|
|
69
|
+
| :--- | :--- |
|
|
70
|
+
| `context-cli doctor` | Check environment and configuration for issues. |
|
|
71
|
+
| `context-cli status` | Show detailed status of the current workspace. |
|
|
68
72
|
|
|
69
73
|
---
|
|
70
74
|
|
|
71
|
-
##
|
|
75
|
+
## 🚀 Getting Started: Complete Workflow
|
|
72
76
|
|
|
73
|
-
|
|
77
|
+
### Step 1: Create a New Orchestrator
|
|
74
78
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
First, create a central orchestrator for your project ecosystem.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npx context-first-cli@latest create:orchestrator
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
This will guide you through an interactive setup:
|
|
86
|
+
1. **Project name** (e.g., `my-project-orchestrator`)
|
|
87
|
+
2. **Project description**
|
|
88
|
+
3. **MetaSpecs repository URL** (Git URL of your specifications repository)
|
|
89
|
+
4. **Task manager** (Jira, Linear, GitHub, or None)
|
|
90
|
+
5. **Initialize Git** (optional: create initial commit)
|
|
91
|
+
|
|
92
|
+
The orchestrator will be created with:
|
|
93
|
+
- `.claude/commands/` - 11 command definitions for AI (warm-up, products, engineer, quality)
|
|
94
|
+
- `context-manifest.json` - Repository manifest with your MetaSpecs already configured
|
|
95
|
+
- `ai.properties.md` - Configuration template (gitignored, each dev has their own)
|
|
96
|
+
- `.sessions/` - Session data directory (gitignored)
|
|
97
|
+
|
|
98
|
+
### Step 2: Add Application Repositories
|
|
99
|
+
|
|
100
|
+
Navigate into your orchestrator directory and add your application repositories.
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
cd my-project-orchestrator/
|
|
104
|
+
|
|
105
|
+
# Add your backend repository
|
|
106
|
+
npx context-first-cli@latest add:repo
|
|
107
|
+
# You'll be asked for: ID, URL, description, role, dependencies
|
|
108
|
+
|
|
109
|
+
# Add your frontend repository
|
|
110
|
+
npx context-first-cli@latest add:repo
|
|
111
|
+
|
|
112
|
+
# Add more repositories as needed
|
|
113
|
+
npx context-first-cli@latest add:repo
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Each repository will be added to `context-manifest.json` with its configuration.
|
|
117
|
+
|
|
118
|
+
### Step 3: Configure Local Paths
|
|
119
|
+
|
|
120
|
+
Edit `ai.properties.md` in your orchestrator to set up local paths and credentials:
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
# Paths dos Projetos
|
|
124
|
+
base_path=/path/to/your/workspace
|
|
125
|
+
meta_specs_path=/path/to/your/meta-specs
|
|
126
|
+
backend_path=/path/to/your/backend
|
|
127
|
+
frontend_path=/path/to/your/frontend
|
|
128
|
+
|
|
129
|
+
# Task Manager Configuration
|
|
130
|
+
task_management_system=jira
|
|
131
|
+
jira_site=https://your-org.atlassian.net
|
|
132
|
+
...
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Note**: This file is gitignored because it contains local paths specific to each developer.
|
|
85
136
|
|
|
86
|
-
###
|
|
137
|
+
### Step 4: Initialize Your Application Repositories
|
|
138
|
+
|
|
139
|
+
For each of your application repositories, run `init` to link it to the orchestrator.
|
|
87
140
|
|
|
88
141
|
```bash
|
|
89
|
-
|
|
90
|
-
context-cli
|
|
142
|
+
cd /path/to/your/backend/
|
|
143
|
+
npx context-first-cli@latest init
|
|
144
|
+
```
|
|
91
145
|
|
|
92
|
-
|
|
93
|
-
|
|
146
|
+
This will ask for:
|
|
147
|
+
1. The Git URL of your orchestrator repository
|
|
148
|
+
2. Your AI provider (Claude, Cursor, etc.)
|
|
94
149
|
|
|
95
|
-
|
|
96
|
-
code .
|
|
150
|
+
A `.contextrc.json` file will be created linking this project to the orchestrator.
|
|
97
151
|
|
|
98
|
-
|
|
99
|
-
context-cli work "feat(api): add validation to user endpoint"
|
|
152
|
+
### Step 5: Start Working on a Feature
|
|
100
153
|
|
|
101
|
-
|
|
102
|
-
|
|
154
|
+
Now you can start working on a feature from any of your configured repositories.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
cd /path/to/your/backend/
|
|
158
|
+
npx context-first-cli@latest feature:start FIN-123
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
This will:
|
|
162
|
+
1. Create a new workspace directory (e.g., `~/workspaces/FIN-123/`)
|
|
163
|
+
2. Use `git worktree` to check out branches for all required repositories
|
|
164
|
+
3. Set up the workspace with proper structure
|
|
165
|
+
|
|
166
|
+
### Step 6: Manage Your Workspaces
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# List all active workspaces
|
|
170
|
+
npx context-first-cli@latest feature:list
|
|
171
|
+
|
|
172
|
+
# Get the command to switch to a workspace
|
|
173
|
+
npx context-first-cli@latest feature:switch FIN-123
|
|
174
|
+
# Then run the displayed command: cd ~/workspaces/FIN-123
|
|
175
|
+
|
|
176
|
+
# Check the status of your current workspace
|
|
177
|
+
cd ~/workspaces/FIN-123/
|
|
178
|
+
npx context-first-cli@latest status
|
|
179
|
+
|
|
180
|
+
# Clean up a finished workspace
|
|
181
|
+
npx context-first-cli@latest feature:end FIN-123
|
|
103
182
|
```
|
|
104
183
|
|
|
105
184
|
---
|
|
@@ -108,37 +187,90 @@ context-cli pr
|
|
|
108
187
|
|
|
109
188
|
```mermaid
|
|
110
189
|
graph TD
|
|
111
|
-
subgraph User
|
|
112
|
-
Dev[Developer] -->|uses| CLI
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
subgraph CLI (context-cli NPM package)
|
|
116
|
-
CLI[CLI Commands] -->|reads| Config
|
|
117
|
-
CLI -->|executes logic on| Workspace
|
|
190
|
+
subgraph User Machine
|
|
191
|
+
Dev[Developer] -->|uses| CLI[context-cli]
|
|
118
192
|
end
|
|
119
193
|
|
|
120
194
|
subgraph Project Setup
|
|
121
|
-
Config[.contextrc.json]
|
|
195
|
+
CLI -->|reads| Config[.contextrc.json]
|
|
196
|
+
Config -->|points to| Orchestrator
|
|
122
197
|
end
|
|
123
198
|
|
|
124
|
-
subgraph
|
|
125
|
-
style
|
|
126
|
-
Manifest[context-manifest.json]
|
|
127
|
-
|
|
199
|
+
subgraph Orchestrator [Orchestrator Repository]
|
|
200
|
+
style Orchestrator fill:#cde,stroke:#333,stroke-width:2px
|
|
201
|
+
Manifest[context-manifest.json<br/>Repository definitions]
|
|
202
|
+
Commands[.claude/commands/<br/>AI command definitions]
|
|
203
|
+
Props[ai.properties.md<br/>Local configuration]
|
|
128
204
|
end
|
|
129
205
|
|
|
130
|
-
subgraph Workspace [Feature Workspace]
|
|
206
|
+
subgraph Workspace [Feature Workspace: FIN-123]
|
|
131
207
|
style Workspace fill:#f9f,stroke:#333,stroke-width:2px
|
|
132
|
-
|
|
133
|
-
|
|
208
|
+
WT1[metaspecs/<br/>git worktree]
|
|
209
|
+
WT2[backend/<br/>git worktree]
|
|
210
|
+
WT3[frontend/<br/>git worktree]
|
|
134
211
|
end
|
|
135
212
|
|
|
136
|
-
CLI
|
|
137
|
-
CLI
|
|
213
|
+
CLI -->|reads| Manifest
|
|
214
|
+
CLI -->|creates/manages| Workspace
|
|
138
215
|
```
|
|
139
216
|
|
|
140
217
|
This structure ensures a clean separation of concerns:
|
|
141
218
|
|
|
142
|
-
- **The CLI** is the universal engine
|
|
143
|
-
- **The Orchestrator
|
|
144
|
-
- **The Workspace** is the temporary, isolated environment where work
|
|
219
|
+
- **The CLI** is the universal engine that works for any project
|
|
220
|
+
- **The Orchestrator** defines the process and ecosystem for a specific project
|
|
221
|
+
- **The Workspace** is the temporary, isolated environment where work happens
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 📝 Example: Complete Setup for a New Project
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# 1. Create orchestrator
|
|
229
|
+
npx context-first-cli@latest create:orchestrator
|
|
230
|
+
# Name: my-saas-orchestrator
|
|
231
|
+
# MetaSpecs URL: git@github.com:myorg/my-saas-metaspecs.git
|
|
232
|
+
|
|
233
|
+
# 2. Add repositories
|
|
234
|
+
cd my-saas-orchestrator/
|
|
235
|
+
npx context-first-cli@latest add:repo
|
|
236
|
+
# ID: backend, URL: git@github.com:myorg/my-saas-backend.git
|
|
237
|
+
|
|
238
|
+
npx context-first-cli@latest add:repo
|
|
239
|
+
# ID: frontend, URL: git@github.com:myorg/my-saas-frontend.git
|
|
240
|
+
|
|
241
|
+
npx context-first-cli@latest add:repo
|
|
242
|
+
# ID: admin, URL: git@github.com:myorg/my-saas-admin.git
|
|
243
|
+
|
|
244
|
+
# 3. Configure local paths
|
|
245
|
+
nano ai.properties.md
|
|
246
|
+
# Edit paths to match your local setup
|
|
247
|
+
|
|
248
|
+
# 4. Push orchestrator to Git
|
|
249
|
+
git remote add origin git@github.com:myorg/my-saas-orchestrator.git
|
|
250
|
+
git push -u origin main
|
|
251
|
+
|
|
252
|
+
# 5. Initialize each application repo
|
|
253
|
+
cd ~/projects/my-saas-backend/
|
|
254
|
+
npx context-first-cli@latest init
|
|
255
|
+
# Orchestrator URL: git@github.com:myorg/my-saas-orchestrator.git
|
|
256
|
+
# AI Provider: claude
|
|
257
|
+
|
|
258
|
+
# 6. Start working on a feature
|
|
259
|
+
npx context-first-cli@latest feature:start PROJ-123
|
|
260
|
+
cd ~/workspaces/PROJ-123/
|
|
261
|
+
# All repositories are now checked out and ready to work!
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 📝 License
|
|
267
|
+
|
|
268
|
+
MIT
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 🔗 Links
|
|
273
|
+
|
|
274
|
+
- **NPM Package**: https://www.npmjs.com/package/context-first-cli
|
|
275
|
+
- **GitHub Repository**: https://github.com/thatix-io/context-first-cli
|
|
276
|
+
- **Issues & Support**: https://github.com/thatix-io/context-first-cli/issues
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-setup.d.ts","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"AAqBA,wBAAsB,kBAAkB,kBA+KvC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
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.configSetupCommand = configSetupCommand;
|
|
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
|
+
const os_1 = __importDefault(require("os"));
|
|
12
|
+
async function configSetupCommand() {
|
|
13
|
+
console.log(chalk_1.default.blue.bold('\n⚙️ Setting up ai.properties.md configuration\n'));
|
|
14
|
+
try {
|
|
15
|
+
// Check if we're in an orchestrator directory
|
|
16
|
+
const manifestPath = path_1.default.join(process.cwd(), 'context-manifest.json');
|
|
17
|
+
const manifestExists = await promises_1.default.access(manifestPath).then(() => true).catch(() => false);
|
|
18
|
+
if (!manifestExists) {
|
|
19
|
+
console.log(chalk_1.default.red('\n❌ context-manifest.json not found'));
|
|
20
|
+
console.log(chalk_1.default.gray('This command must be run from an orchestrator repository root'));
|
|
21
|
+
console.log(chalk_1.default.gray('Hint: Run this after creating an orchestrator with create:orchestrator'));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Read manifest to get repository list
|
|
25
|
+
const manifestContent = await promises_1.default.readFile(manifestPath, 'utf-8');
|
|
26
|
+
const manifest = JSON.parse(manifestContent);
|
|
27
|
+
console.log(chalk_1.default.gray(`Found ${manifest.repositories.length} repositories in manifest\n`));
|
|
28
|
+
// Check if ai.properties.md already exists
|
|
29
|
+
const propsPath = path_1.default.join(process.cwd(), 'ai.properties.md');
|
|
30
|
+
const propsExists = await promises_1.default.access(propsPath).then(() => true).catch(() => false);
|
|
31
|
+
if (propsExists) {
|
|
32
|
+
const { overwrite } = await inquirer_1.default.prompt([
|
|
33
|
+
{
|
|
34
|
+
type: 'confirm',
|
|
35
|
+
name: 'overwrite',
|
|
36
|
+
message: 'ai.properties.md already exists. Do you want to overwrite it?',
|
|
37
|
+
default: false,
|
|
38
|
+
},
|
|
39
|
+
]);
|
|
40
|
+
if (!overwrite) {
|
|
41
|
+
console.log(chalk_1.default.gray('\nOperation cancelled'));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Get base workspace path
|
|
46
|
+
const defaultBasePath = path_1.default.join(os_1.default.homedir(), 'workspace');
|
|
47
|
+
const baseAnswers = await inquirer_1.default.prompt([
|
|
48
|
+
{
|
|
49
|
+
type: 'input',
|
|
50
|
+
name: 'basePath',
|
|
51
|
+
message: 'Base workspace path (where repositories are cloned):',
|
|
52
|
+
default: defaultBasePath,
|
|
53
|
+
validate: (input) => {
|
|
54
|
+
if (!input.trim()) {
|
|
55
|
+
return 'Base path is required';
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
]);
|
|
61
|
+
// Get paths for each repository
|
|
62
|
+
const repoPaths = {};
|
|
63
|
+
console.log(chalk_1.default.blue('\n📂 Configure local paths for each repository:\n'));
|
|
64
|
+
for (const repo of manifest.repositories) {
|
|
65
|
+
const defaultPath = path_1.default.join(baseAnswers.basePath, repo.id);
|
|
66
|
+
const { repoPath } = await inquirer_1.default.prompt([
|
|
67
|
+
{
|
|
68
|
+
type: 'input',
|
|
69
|
+
name: 'repoPath',
|
|
70
|
+
message: `Path for ${chalk_1.default.cyan(repo.id)} (${repo.role}):`,
|
|
71
|
+
default: defaultPath,
|
|
72
|
+
},
|
|
73
|
+
]);
|
|
74
|
+
repoPaths[repo.id] = repoPath;
|
|
75
|
+
}
|
|
76
|
+
// Get task manager configuration
|
|
77
|
+
console.log(chalk_1.default.blue('\n🎯 Task Manager Configuration:\n'));
|
|
78
|
+
const taskAnswers = await inquirer_1.default.prompt([
|
|
79
|
+
{
|
|
80
|
+
type: 'list',
|
|
81
|
+
name: 'taskManager',
|
|
82
|
+
message: 'Select your task management system:',
|
|
83
|
+
choices: ['jira', 'linear', 'github', 'none'],
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'input',
|
|
87
|
+
name: 'jiraSite',
|
|
88
|
+
message: 'Jira site URL (e.g., https://your-org.atlassian.net):',
|
|
89
|
+
when: (answers) => answers.taskManager === 'jira',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'input',
|
|
93
|
+
name: 'jiraProject',
|
|
94
|
+
message: 'Jira project key (e.g., PROJ):',
|
|
95
|
+
when: (answers) => answers.taskManager === 'jira',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'input',
|
|
99
|
+
name: 'linearTeam',
|
|
100
|
+
message: 'Linear team ID:',
|
|
101
|
+
when: (answers) => answers.taskManager === 'linear',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'input',
|
|
105
|
+
name: 'githubRepo',
|
|
106
|
+
message: 'GitHub repository (e.g., owner/repo):',
|
|
107
|
+
when: (answers) => answers.taskManager === 'github',
|
|
108
|
+
},
|
|
109
|
+
]);
|
|
110
|
+
// Generate ai.properties.md content
|
|
111
|
+
let content = `# AI Properties Configuration\n\n`;
|
|
112
|
+
content += `> This file contains local paths and configurations specific to your development environment.\n`;
|
|
113
|
+
content += `> It is gitignored and should not be committed to version control.\n\n`;
|
|
114
|
+
content += `## Project Information\n\n`;
|
|
115
|
+
content += `project_name=${manifest.project}\n`;
|
|
116
|
+
content += `project_description=${manifest.description}\n\n`;
|
|
117
|
+
content += `## Repository Paths\n\n`;
|
|
118
|
+
content += `base_path=${baseAnswers.basePath}\n\n`;
|
|
119
|
+
for (const repo of manifest.repositories) {
|
|
120
|
+
const varName = repo.id.replace(/-/g, '_') + '_path';
|
|
121
|
+
content += `${varName}=${repoPaths[repo.id]}\n`;
|
|
122
|
+
}
|
|
123
|
+
content += `\n## Task Management\n\n`;
|
|
124
|
+
content += `task_management_system=${taskAnswers.taskManager}\n`;
|
|
125
|
+
if (taskAnswers.taskManager === 'jira') {
|
|
126
|
+
content += `jira_site=${taskAnswers.jiraSite}\n`;
|
|
127
|
+
content += `jira_project=${taskAnswers.jiraProject}\n`;
|
|
128
|
+
}
|
|
129
|
+
else if (taskAnswers.taskManager === 'linear') {
|
|
130
|
+
content += `linear_team=${taskAnswers.linearTeam}\n`;
|
|
131
|
+
}
|
|
132
|
+
else if (taskAnswers.taskManager === 'github') {
|
|
133
|
+
content += `github_repo=${taskAnswers.githubRepo}\n`;
|
|
134
|
+
}
|
|
135
|
+
content += `\n## Repository Commands\n\n`;
|
|
136
|
+
content += `# Define commands for each repository (lint, test, build, etc.)\n`;
|
|
137
|
+
content += `# Example:\n`;
|
|
138
|
+
content += `# backend.lint_command=npm run lint\n`;
|
|
139
|
+
content += `# backend.test_command=npm run test\n`;
|
|
140
|
+
content += `# backend.build_command=npm run build\n\n`;
|
|
141
|
+
for (const repo of manifest.repositories) {
|
|
142
|
+
if (repo.role !== 'specs-provider') {
|
|
143
|
+
content += `${repo.id}.lint_command=\n`;
|
|
144
|
+
content += `${repo.id}.test_command=\n`;
|
|
145
|
+
content += `${repo.id}.build_command=\n\n`;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Write ai.properties.md
|
|
149
|
+
await promises_1.default.writeFile(propsPath, content, 'utf-8');
|
|
150
|
+
console.log(chalk_1.default.green('\n✅ ai.properties.md created successfully!'));
|
|
151
|
+
console.log(chalk_1.default.blue('\n📝 Configuration summary:'));
|
|
152
|
+
console.log(chalk_1.default.gray(` Base path: ${baseAnswers.basePath}`));
|
|
153
|
+
console.log(chalk_1.default.gray(` Task manager: ${taskAnswers.taskManager}`));
|
|
154
|
+
console.log(chalk_1.default.gray(` Repositories configured: ${manifest.repositories.length}`));
|
|
155
|
+
console.log(chalk_1.default.blue('\n💡 Next steps:'));
|
|
156
|
+
console.log(chalk_1.default.gray(' 1. Review and edit ai.properties.md to add repository commands'));
|
|
157
|
+
console.log(chalk_1.default.gray(' 2. Ensure all repository paths exist or clone them'));
|
|
158
|
+
console.log(chalk_1.default.gray(' 3. This file is gitignored - each developer should run this command'));
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
console.error(chalk_1.default.red('\n❌ Error setting up configuration:'), error);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=config-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-setup.js","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ const init_1 = require("./commands/init");
|
|
|
6
6
|
const create_orchestrator_1 = require("./commands/create-orchestrator");
|
|
7
7
|
const add_repo_1 = require("./commands/add-repo");
|
|
8
8
|
const add_repo_metaspec_1 = require("./commands/add-repo-metaspec");
|
|
9
|
+
const config_setup_1 = require("./commands/config-setup");
|
|
9
10
|
const feature_1 = require("./commands/feature");
|
|
10
11
|
const doctor_1 = require("./commands/doctor");
|
|
11
12
|
const status_1 = require("./commands/status");
|
|
@@ -31,6 +32,10 @@ program
|
|
|
31
32
|
.command('add:repo-metaspec')
|
|
32
33
|
.description('Add or update the MetaSpecs repository in context-manifest.json')
|
|
33
34
|
.action(add_repo_metaspec_1.addRepoMetaspecCommand);
|
|
35
|
+
program
|
|
36
|
+
.command('config:setup')
|
|
37
|
+
.description('Interactively configure ai.properties.md for local development')
|
|
38
|
+
.action(config_setup_1.configSetupCommand);
|
|
34
39
|
// Feature management commands
|
|
35
40
|
const feature = program.command('feature').description('Manage feature workspaces');
|
|
36
41
|
feature
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAEpC,0CAA8C;AAC9C,wEAA2E;AAC3E,kDAAqD;AACrD,oEAAsE;AACtE,gDAAqD;AACrD,8CAAkD;AAClD,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,8EAA8E,CAAC;KAC3F,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,+CAAyB,CAAC,CAAC;AAErC,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,yBAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,0CAAsB,CAAC,CAAC;AAElC,8BAA8B;AAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;AAEpF,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,qBAAqB,EAAE,iDAAiD,CAAC;KAChF,MAAM,CAAC,yBAAe,CAAC,KAAK,CAAC,CAAC;AAEjC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,yBAAe,CAAC,IAAI,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,yBAAe,CAAC,MAAM,CAAC,CAAC;AAElC,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;KAC3D,MAAM,CAAC,yBAAe,CAAC,GAAG,CAAC,CAAC;AAE/B,sBAAsB;AACtB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAEpC,0CAA8C;AAC9C,wEAA2E;AAC3E,kDAAqD;AACrD,oEAAsE;AACtE,0DAA6D;AAC7D,gDAAqD;AACrD,8CAAkD;AAClD,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,8EAA8E,CAAC;KAC3F,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,+CAAyB,CAAC,CAAC;AAErC,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,yBAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,0CAAsB,CAAC,CAAC;AAElC,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,iCAAkB,CAAC,CAAC;AAE9B,8BAA8B;AAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;AAEpF,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,qBAAqB,EAAE,iDAAiD,CAAC;KAChF,MAAM,CAAC,yBAAe,CAAC,KAAK,CAAC,CAAC;AAEjC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,yBAAe,CAAC,IAAI,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,yBAAe,CAAC,MAAM,CAAC,CAAC;AAElC,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;KAC3D,MAAM,CAAC,yBAAe,CAAC,GAAG,CAAC,CAAC;AAE/B,sBAAsB;AACtB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/package.json
CHANGED