context-first-cli 1.7.0 → 1.8.1

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 CHANGED
@@ -1,266 +1,651 @@
1
1
  # Context-First CLI
2
2
 
3
- A generic, cross-platform CLI to manage the **Context-First** development methodology across any project ecosystem. This tool provides a robust framework for orchestrating development workflows, managing multiple repositories, and ensuring consistency for both human developers and AI agents.
3
+ > A universal CLI for managing Context-First development methodology across any project ecosystem.
4
+
5
+ Orchestrate multi-repository workflows, create isolated feature workspaces, and maintain consistency for both human developers and AI agents.
6
+
7
+ [![npm version](https://img.shields.io/npm/v/context-first-cli.svg)](https://www.npmjs.com/package/context-first-cli)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
+
10
+ ---
11
+
12
+ ## Table of Contents
13
+
14
+ - [Why Context-First CLI?](#why-context-first-cli)
15
+ - [Quick Start](#quick-start)
16
+ - [Core Concepts](#core-concepts)
17
+ - [Installation](#installation)
18
+ - [Commands](#commands)
19
+ - [Workflow Guide](#workflow-guide)
20
+ - [Docker Support](#docker-support)
21
+ - [Architecture](#architecture)
22
+ - [Examples](#examples)
23
+ - [Troubleshooting](#troubleshooting)
24
+
25
+ ---
26
+
27
+ ## Why Context-First CLI?
28
+
29
+ **The Problem**: Managing multiple repositories, coordinating feature development, and maintaining consistent processes across teams is complex and error-prone.
30
+
31
+ **The Solution**: Context-First CLI provides:
32
+
33
+ ✅ **Isolated Feature Workspaces** - Work on multiple features simultaneously without conflicts
34
+ ✅ **Git Worktree Integration** - Efficient branch management without re-cloning repositories
35
+ ✅ **Docker Support** - Automatic `docker-compose.yml` generation with dynamic ports
36
+ ✅ **AI-Ready** - Pre-configured command templates for AI assistants (Claude, Cursor)
37
+ ✅ **Cross-Platform** - Works on Windows, macOS, and Linux
38
+ ✅ **Project-Agnostic** - One CLI for all your projects
39
+
40
+ ---
41
+
42
+ ## Quick Start
43
+
44
+ ```bash
45
+ # 1. Install globally
46
+ npm install -g context-first-cli
47
+
48
+ # 2. Create orchestrator (project control center)
49
+ npx context-first-cli@latest create:orchestrator
50
+
51
+ # 3. Configure local environment
52
+ cd your-orchestrator/
53
+ npx context-first-cli@latest config:setup
54
+
55
+ # 4. Add repositories
56
+ npx context-first-cli@latest add:repo
57
+
58
+ # 5. Start working on a feature
59
+ npx context-first-cli@latest feature start FIN-123
60
+
61
+ # 6. Enter workspace and start services
62
+ cd .sessions/FIN-123
63
+ docker-compose up -d
64
+ ```
65
+
66
+ **That's it!** You now have an isolated workspace with all repositories checked out and services running.
4
67
 
5
68
  ---
6
69
 
7
- ## 🚀 Core Concepts
70
+ ## Core Concepts
8
71
 
9
- This CLI is built on three core concepts that enable scalable, parallel, and context-aware development.
72
+ ### 1. Orchestrator Repository
10
73
 
11
- ### 1. The Orchestrator Repository
74
+ The **single source of truth** for your project's development process.
12
75
 
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:
76
+ **Contains**:
77
+ - `context-manifest.json` - Repository definitions and relationships
78
+ - `.claude/commands/` - AI command templates
79
+ - `ai.properties.md` - Local configuration (gitignored)
80
+ - `.contextrc.json` - Makes orchestrator self-aware
14
81
 
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
- - **Configuration Templates**: Files like `ai.properties.md` that define project-specific commands (lint, test, build) and settings.
82
+ **Purpose**: Define your development methodology once, use everywhere.
18
83
 
19
84
  ### 2. Feature Workspaces
20
85
 
21
- To enable parallel development without conflicts, the CLI uses **Feature Workspaces**. When you start working on a new feature (e.g., an issue from Jira), the CLI creates a dedicated, isolated directory. Inside this workspace, it uses `git worktree` to check out a specific branch for each relevant repository. This is extremely efficient, as it doesn't re-clone the entire repository, saving disk space and time.
86
+ **Isolated environments** for each feature you work on.
87
+
88
+ **Location**: `orchestrator/.sessions/<ISSUE-ID>/`
89
+
90
+ **Contains**:
91
+ - Git worktrees for each repository (efficient, no re-cloning)
92
+ - `docker-compose.yml` with dynamic ports
93
+ - Feature-specific documentation
22
94
 
23
- - **Isolation**: Every feature has its own folder, preventing any overlap or context-clash between concurrent tasks.
24
- - **Efficiency**: Powered by `git worktree`, creating and switching between workspaces is nearly instantaneous.
95
+ **Benefits**:
96
+ - Work on multiple features simultaneously
97
+ - No port conflicts (FIN-11 → 3011, FIN-12 → 3012)
98
+ - Clean separation of concerns
25
99
 
26
- ### 3. The Agnostic CLI (`context-cli`)
100
+ ### 3. Git Worktree
27
101
 
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.
102
+ **Efficient branch management** without multiple clones.
103
+
104
+ **How it works**:
105
+ ```
106
+ Main Repository (~/dev/backend):
107
+ └── main branch
29
108
 
30
- - **Cross-Platform**: Built with Node.js/TypeScript, it works seamlessly on Windows, macOS, and Linux.
31
- - **Configurable**: The `init` command creates a `.contextrc.json` file in your project, telling the CLI which Orchestrator to use.
32
- - **AI-Agnostic**: You can configure it to create command structures for different AI providers (e.g., `.claude/commands` for Claude, `.cursor/commands` for Cursor).
109
+ Workspace 1 (.sessions/FIN-11/backend):
110
+ └── feature/FIN-11 branch (worktree)
111
+
112
+ Workspace 2 (.sessions/FIN-12/backend):
113
+ └── feature/FIN-12 branch (worktree)
114
+ ```
115
+
116
+ **All share the same `.git/`** - saving disk space and time.
33
117
 
34
118
  ---
35
119
 
36
- ## 📦 Installation
120
+ ## Installation
37
121
 
38
- Install the CLI globally on your machine via NPM.
122
+ ### Global Installation (Recommended)
39
123
 
40
124
  ```bash
41
125
  npm install -g context-first-cli
42
126
  ```
43
127
 
128
+ ### Use Without Installing
129
+
130
+ ```bash
131
+ npx context-first-cli@latest <command>
132
+ ```
133
+
134
+ ### Requirements
135
+
136
+ - Node.js >= 18.0.0
137
+ - Git >= 2.5.0
138
+ - Docker (optional, for container support)
139
+
44
140
  ---
45
141
 
46
- ## 📋 Commands Reference
142
+ ## Commands
47
143
 
48
144
  ### Setup Commands
49
145
 
50
146
  | 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`. |
56
- | `context-cli config:setup` | Interactively configure `ai.properties.md` for local development. |
147
+ |---------|-------------|
148
+ | `create:orchestrator` | Create new orchestrator repository |
149
+ | `config:setup` | Configure local environment (`ai.properties.md`) |
150
+ | `add:repo` | Add repository to manifest |
151
+ | `add:repo-metaspec` | Add MetaSpecs repository |
152
+ | `init` | Initialize Context-First in existing project |
57
153
 
58
154
  ### Workspace Commands
59
155
 
60
156
  | Command | Description |
61
- | :--- | :--- |
62
- | `context-cli feature start <issue-id>` | Create a new feature workspace with isolated git worktrees. |
63
- | `context-cli feature list` | List all active feature workspaces on your machine. |
64
- | `context-cli feature switch <issue-id>` | Get the command to switch to an existing feature workspace. |
65
- | `context-cli feature merge <issue-id>` | Merge feature branch into target branch, push changes, and clean up workspace. |
66
- | `context-cli feature end <issue-id>` | Archive and clean up a completed feature workspace. |
157
+ |---------|-------------|
158
+ | `feature start <id>` | Create isolated workspace with worktrees |
159
+ | `feature list` | List all active workspaces |
160
+ | `feature switch <id>` | Get command to switch workspace |
161
+ | `feature merge <id>` | Merge feature and clean up |
162
+ | `feature end <id>` | Clean up workspace without merging |
67
163
 
68
- ### Diagnostic Commands
164
+ ### Utility Commands
69
165
 
70
166
  | Command | Description |
71
- | :--- | :--- |
72
- | `context-cli doctor` | Check environment and configuration for issues. |
73
- | `context-cli status` | Show detailed status of the current workspace. |
167
+ |---------|-------------|
168
+ | `status` | Show workspace status |
169
+ | `doctor` | Check environment health |
170
+ | `update:commands` | Update AI command templates |
74
171
 
75
172
  ---
76
173
 
77
- ## 🚀 Getting Started: The 5-Minute Workflow
78
-
79
- The primary workflow is designed to be simple and centralized within the Orchestrator.
174
+ ## Workflow Guide
80
175
 
81
- ### Step 1: Create Your Orchestrator
176
+ ### Initial Setup (Once Per Project)
82
177
 
83
- This is your project's "home base". It defines your development process and the repositories involved.
178
+ #### Step 1: Create Orchestrator
84
179
 
85
180
  ```bash
86
- # Run this once per project ecosystem
87
181
  npx context-first-cli@latest create:orchestrator
88
182
  ```
89
183
 
90
- This command interactively sets up your orchestrator, which includes:
91
- - `.contextrc.json`: A file that makes the orchestrator self-aware, so you can run all commands from here.
92
- - `context-manifest.json`: Defines all repositories in your project.
93
- - `.claude/commands/`: Pre-built command templates for your AI assistant.
94
- - `ai.properties.md`: A template for your local configuration (which is gitignored).
184
+ **Prompts**:
185
+ - Project name
186
+ - Description
187
+ - MetaSpecs repository URL (optional)
95
188
 
96
- ### Step 2: Configure Your Local Environment
189
+ **Creates**:
190
+ ```
191
+ my-project-orchestrator/
192
+ ├── .contextrc.json
193
+ ├── context-manifest.json
194
+ ├── .claude/commands/
195
+ └── ai.properties.md (template)
196
+ ```
97
197
 
98
- Navigate into the new orchestrator directory and tell the CLI where your code is located.
198
+ #### Step 2: Configure Local Environment
99
199
 
100
200
  ```bash
101
- cd your-orchestrator-name/
201
+ cd my-project-orchestrator/
102
202
  npx context-first-cli@latest config:setup
103
203
  ```
104
204
 
105
- This will ask for your **`base_path`**, which is the absolute path to the folder where you keep all your git repositories (e.g., `~/workspace` or `~/dev`). It also asks if you want to enable `auto_clone`.
205
+ **Prompts**:
206
+ - `base_path`: Where your repositories live (e.g., `~/dev`)
207
+ - `auto_clone`: Automatically clone missing repos?
208
+ - Task manager: Jira, Linear, GitHub, or none
106
209
 
107
- ### Step 3: Add Your Repositories
210
+ **Creates**: `ai.properties.md` with your local settings
108
211
 
109
- Now, define the repositories that make up your project.
212
+ #### Step 3: Add Repositories
110
213
 
111
214
  ```bash
112
- # Still inside the orchestrator directory
113
215
  npx context-first-cli@latest add:repo
114
216
  ```
115
217
 
116
- Run this command for each repository (e.g., `backend`, `frontend`, `admin`). It will interactively ask for the repository's ID, Git URL, and role, and save it to `context-manifest.json`.
218
+ **Prompts**:
219
+ - Repository folder name (e.g., `backend`)
220
+ - Git URL
221
+ - Role: `backend`, `frontend`, `metaspecs`, or `other`
222
+ - Description
117
223
 
118
- ### Step 4: Start a Feature
224
+ **Repeat** for each repository in your project.
119
225
 
120
- That's it for setup! Now you can start working on a feature. **From the orchestrator directory**, run:
226
+ #### Step 4: Commit Orchestrator
121
227
 
122
228
  ```bash
123
- npx context-first-cli@latest feature start <issue-id>
124
- # Example: npx context-first-cli@latest feature start FIN-123
229
+ git add .
230
+ git commit -m "feat: setup orchestrator"
231
+ git remote add origin <your-orchestrator-repo-url>
232
+ git push -u origin main
125
233
  ```
126
234
 
127
- This command will:
128
- 1. Read your `context-manifest.json`.
129
- 2. Look for your repositories in the `base_path` you configured.
130
- 3. If a repository isn't found and `auto_clone` is true, it will clone it for you.
131
- 4. Create a new, isolated workspace in the orchestrator (e.g., `orchestrator/.sessions/FIN-123/`).
132
- 5. Use `git worktree` to efficiently check out a new feature branch for each selected repository into the workspace.
235
+ ---
133
236
 
134
- Your isolated, multi-repo development environment is ready, organized within your orchestrator!
237
+ ### Daily Development
135
238
 
136
- ### Step 5: Manage Your Workspaces
239
+ #### Start Feature
137
240
 
138
241
  ```bash
139
- # List all active workspaces
140
- npx context-first-cli@latest feature list
242
+ # From orchestrator directory
243
+ npx context-first-cli@latest feature start FIN-123
244
+ ```
141
245
 
142
- # Get the command to switch to a workspace
143
- npx context-first-cli@latest feature switch FIN-123
144
- # Then run the displayed command: cd orchestrator/.sessions/FIN-123
246
+ **What happens**:
247
+ 1. Creates `.sessions/FIN-123/`
248
+ 2. Creates git worktrees for each repo
249
+ 3. Generates `docker-compose.yml` with ports 3123, 8123, 5523, 6423
250
+ 4. Ready to work!
145
251
 
146
- # Check the status of your current workspace
147
- cd orchestrator/.sessions/FIN-123/
148
- npx context-first-cli@latest status
252
+ #### Enter Workspace
149
253
 
150
- # Merge feature and clean up workspace
151
- npx context-first-cli@latest feature merge FIN-123
152
- # This will:
153
- # 1. Merge feature/FIN-123 into main (or specified target branch)
154
- # 2. Push changes to remote
155
- # 3. Delete feature branch
156
- # 4. Clean up workspace
254
+ ```bash
255
+ cd .sessions/FIN-123
256
+ ```
157
257
 
158
- # Or manually clean up without merging
159
- npx context-first-cli@latest feature end FIN-123
258
+ #### Start Services (Optional)
259
+
260
+ ```bash
261
+ docker-compose up -d
160
262
  ```
161
263
 
162
- **Merge Options**:
264
+ **Access**:
265
+ - Backend: `http://localhost:3123`
266
+ - Frontend: `http://localhost:8123`
267
+ - Postgres: `localhost:5523`
268
+ - Redis: `localhost:6423`
269
+
270
+ #### Work on Feature
271
+
163
272
  ```bash
164
- # Merge into a different branch
165
- npx context-first-cli@latest feature merge FIN-123 --target-branch develop
273
+ # Open in editor
274
+ code .
166
275
 
167
- # Merge without pushing (for manual review)
168
- npx context-first-cli@latest feature merge FIN-123 --no-push
276
+ # Use AI commands (if configured)
277
+ /start # Create context.md and architecture.md
278
+ /plan # Create plan.md
279
+ /work # Implement feature
280
+ /pre-pr # Review before PR
281
+ /pr # Create pull request
282
+ ```
169
283
 
170
- # Keep workspace after merge (for reference)
171
- npx context-first-cli@latest feature merge FIN-123 --keep-workspace
284
+ #### Stop Services
172
285
 
173
- # Force merge without confirmation
174
- npx context-first-cli@latest feature merge FIN-123 --force
286
+ ```bash
287
+ docker-compose down
288
+ ```
289
+
290
+ #### Finish Feature
291
+
292
+ **Option 1: Merge via CLI**
293
+ ```bash
294
+ # From orchestrator directory
295
+ npx context-first-cli@latest feature merge FIN-123
296
+ ```
297
+
298
+ **Option 2: Merge via GitHub + Clean Up**
299
+ ```bash
300
+ # 1. Create PR via /pr command or manually
301
+ # 2. Merge PR on GitHub
302
+ # 3. Clean up workspace
303
+ npx context-first-cli@latest feature end FIN-123
175
304
  ```
176
305
 
177
306
  ---
178
307
 
179
- ## 🏗️ Architecture Overview
308
+ ## Docker Support
309
+
310
+ ### Automatic Generation
180
311
 
181
- ```mermaid
182
- graph TD
183
- subgraph User Machine
184
- Dev[Developer] -->|uses| CLI[context-cli]
185
- end
312
+ When you run `feature start`, the CLI generates `docker-compose.yml` with:
186
313
 
187
- subgraph Project Setup
188
- CLI -->|reads| Config[.contextrc.json]
189
- Config -->|points to| Orchestrator
190
- end
314
+ - **Backend** (if `role: "backend"` exists)
315
+ - **Frontend** (if `role: "frontend"` exists)
316
+ - **PostgreSQL** (always included)
317
+ - **Redis** (always included)
191
318
 
192
- subgraph Orchestrator [Orchestrator Repository]
193
- style Orchestrator fill:#cde,stroke:#333,stroke-width:2px
194
- Manifest[context-manifest.json<br/>Repository definitions]
195
- Commands[.claude/commands/<br/>AI command definitions]
196
- Props[ai.properties.md<br/>Local configuration]
197
- end
319
+ ### Dynamic Ports
198
320
 
199
- subgraph Workspace [Feature Workspace: FIN-123]
200
- style Workspace fill:#f9f,stroke:#333,stroke-width:2px
201
- WT1[metaspecs/<br/>git worktree]
202
- WT2[backend/<br/>git worktree]
203
- WT3[frontend/<br/>git worktree]
204
- end
321
+ Ports are calculated from issue number:
205
322
 
206
- CLI -->|reads| Manifest
207
- CLI -->|creates/manages| Workspace
208
323
  ```
324
+ FIN-11: Backend 3011, Frontend 8011, Postgres 5411, Redis 6311
325
+ FIN-123: Backend 3123, Frontend 8123, Postgres 5523, Redis 6423
326
+ ```
327
+
328
+ **Benefit**: Run multiple workspaces simultaneously without conflicts!
329
+
330
+ ### Configuration
331
+
332
+ Edit `ai.properties.md` to customize base ports:
333
+
334
+ ```markdown
335
+ ## Docker Configuration
336
+
337
+ docker.backend_base_port=3000
338
+ docker.frontend_base_port=8000
339
+ docker.postgres_base_port=5400
340
+ docker.redis_base_port=6300
341
+ ```
342
+
343
+ ### Example `docker-compose.yml`
344
+
345
+ ```yaml
346
+ version: '3.8'
347
+
348
+ services:
349
+ backend:
350
+ build: ./backend
351
+ ports:
352
+ - "3011:3000"
353
+ environment:
354
+ - DATABASE_URL=postgresql://user:password@postgres:5432/app
355
+ networks:
356
+ - fin-11-network
357
+
358
+ frontend:
359
+ build: ./frontend
360
+ ports:
361
+ - "8011:8080"
362
+ environment:
363
+ - VITE_API_URL=http://localhost:3011
364
+ networks:
365
+ - fin-11-network
366
+
367
+ postgres:
368
+ image: postgres:15-alpine
369
+ ports:
370
+ - "5411:5432"
371
+ networks:
372
+ - fin-11-network
373
+
374
+ redis:
375
+ image: redis:7-alpine
376
+ ports:
377
+ - "6311:6379"
378
+ networks:
379
+ - fin-11-network
380
+
381
+ networks:
382
+ fin-11-network:
383
+ ```
384
+
385
+ ---
386
+
387
+ ## Architecture
209
388
 
210
- This structure ensures a clean separation of concerns:
389
+ ```
390
+ ┌─────────────────────────────────────────────────────────────┐
391
+ │ Developer Machine │
392
+ │ │
393
+ │ ┌───────────────┐ │
394
+ │ │ context-cli │ (Universal CLI) │
395
+ │ └───────┬───────┘ │
396
+ │ │ │
397
+ │ ├─────────────────────────────────────────┐ │
398
+ │ │ │ │
399
+ │ ┌───────▼────────────────────────┐ ┌───────▼─────┐ │
400
+ │ │ Orchestrator Repository │ │ Workspaces │ │
401
+ │ │ │ │ │ │
402
+ │ │ • context-manifest.json │ │ FIN-11/ │ │
403
+ │ │ • .claude/commands/ │ │ FIN-12/ │ │
404
+ │ │ • ai.properties.md │ │ FIN-13/ │ │
405
+ │ └─────────────────────────────────┘ └─────────────┘ │
406
+ │ │
407
+ └───────────────────────────────────────────────────────────────┘
408
+
409
+ ┌─────────────────────────────────────────────────────────────┐
410
+ │ Main Repositories │
411
+ │ │
412
+ │ ~/dev/backend/ (main branch) │
413
+ │ ~/dev/frontend/ (main branch) │
414
+ │ ~/dev/metaspecs/ (main branch) │
415
+ │ │
416
+ └─────────────────────────────────────────────────────────────┘
417
+ ```
211
418
 
212
- - **The CLI** is the universal engine that works for any project
213
- - **The Orchestrator** defines the process and ecosystem for a specific project
214
- - **The Workspace** is the temporary, isolated environment where work happens
419
+ **Flow**:
420
+ 1. CLI reads orchestrator configuration
421
+ 2. Creates workspace with worktrees
422
+ 3. Worktrees link to main repositories
423
+ 4. Developer works in isolated workspace
424
+ 5. Changes pushed to main repositories
215
425
 
216
426
  ---
217
427
 
218
- ## 📝 Example: Complete Setup for a New Project
428
+ ## Examples
429
+
430
+ ### Example 1: Complete Setup
219
431
 
220
432
  ```bash
221
- # 1. Create the orchestrator (once per project)
433
+ # Create orchestrator
222
434
  npx context-first-cli@latest create:orchestrator
223
- # Follow prompts: name, description, metaspecs URL...
435
+ # Name: my-saas-orchestrator
436
+ # Description: SaaS project orchestrator
224
437
 
225
- # 2. Enter the orchestrator and configure your local environment
438
+ # Configure
226
439
  cd my-saas-orchestrator/
227
440
  npx context-first-cli@latest config:setup
228
441
  # Base path: ~/dev
229
442
  # Auto-clone: Yes
443
+ # Task manager: Jira
444
+ # Jira site: https://mycompany.atlassian.net
445
+ # Jira project: SAAS
230
446
 
231
- # 3. Add all your project's repositories to the manifest
447
+ # Add repositories
232
448
  npx context-first-cli@latest add:repo
233
- # ID: backend, URL: git@github.com:myorg/my-saas-backend.git
449
+ # Folder name: my-saas-backend
450
+ # URL: git@github.com:myorg/my-saas-backend.git
451
+ # Role: backend
234
452
 
235
453
  npx context-first-cli@latest add:repo
236
- # ID: frontend, URL: git@github.com:myorg/my-saas-frontend.git
454
+ # Folder name: my-saas-frontend
455
+ # URL: git@github.com:myorg/my-saas-frontend.git
456
+ # Role: frontend
237
457
 
238
- # 4. Commit and push your orchestrator setup
458
+ # Commit
239
459
  git add .
240
- git commit -m "feat: configure orchestrator with project repositories"
241
- git remote add origin git@github.com:myorg/my-saas-orchestrator.git
460
+ git commit -m "feat: setup orchestrator"
242
461
  git push -u origin main
462
+ ```
243
463
 
244
- # 5. Start working on a feature!
245
- # (Make sure your repos like 'my-saas-backend' exist in '~/dev' or enable auto_clone)
246
- npx context-first-cli@latest feature start PROJ-123
464
+ ### Example 2: Working on Feature
247
465
 
248
- # 6. Switch to the new workspace directory to begin work
249
- cd .sessions/PROJ-123/
466
+ ```bash
467
+ # Start feature
468
+ npx context-first-cli@latest feature start SAAS-456
469
+
470
+ # Enter workspace
471
+ cd .sessions/SAAS-456
472
+
473
+ # Start services
474
+ docker-compose up -d
475
+
476
+ # Work
250
477
  code .
251
- # All selected repositories are now checked out here as worktrees!
478
+
479
+ # Stop services
480
+ docker-compose down
481
+
482
+ # Merge and clean up
483
+ cd ../..
484
+ npx context-first-cli@latest feature merge SAAS-456
485
+ ```
486
+
487
+ ### Example 3: Parallel Development
488
+
489
+ ```bash
490
+ # Developer working on two features simultaneously
491
+
492
+ # Feature 1
493
+ npx context-first-cli@latest feature start FIN-11
494
+ cd .sessions/FIN-11
495
+ docker-compose up -d
496
+ # Backend at http://localhost:3011
497
+
498
+ # Feature 2 (in another terminal)
499
+ cd ~/my-orchestrator
500
+ npx context-first-cli@latest feature start FIN-12
501
+ cd .sessions/FIN-12
502
+ docker-compose up -d
503
+ # Backend at http://localhost:3012
504
+
505
+ # Both running simultaneously! No conflicts!
506
+ ```
507
+
508
+ ---
509
+
510
+ ## Troubleshooting
511
+
512
+ ### Issue: "Workspace already exists"
513
+
514
+ **Cause**: You already created a workspace for this issue.
515
+
516
+ **Solution**:
517
+ ```bash
518
+ # Option 1: Use existing workspace
519
+ cd .sessions/FIN-123
520
+
521
+ # Option 2: Clean up and recreate
522
+ npx context-first-cli@latest feature end FIN-123
523
+ npx context-first-cli@latest feature start FIN-123
524
+ ```
525
+
526
+ ### Issue: "Repository not found"
527
+
528
+ **Cause**: Repository doesn't exist in `base_path`.
529
+
530
+ **Solution**:
531
+ ```bash
532
+ # Option 1: Clone manually
533
+ cd ~/dev
534
+ git clone <repo-url> <repo-folder-name>
535
+
536
+ # Option 2: Enable auto_clone
537
+ # Edit ai.properties.md:
538
+ auto_clone=true
539
+ ```
540
+
541
+ ### Issue: "Branch already in use"
542
+
543
+ **Cause**: Main repository is on the feature branch.
544
+
545
+ **Solution**:
546
+ ```bash
547
+ # Go to main repository
548
+ cd ~/dev/<repo-name>
549
+
550
+ # Switch to main branch
551
+ git checkout main
552
+
553
+ # Try again
554
+ cd ~/orchestrator
555
+ npx context-first-cli@latest feature start FIN-123
556
+ ```
557
+
558
+ ### Issue: "Port already in use"
559
+
560
+ **Cause**: Another workspace with same issue number is running.
561
+
562
+ **Solution**:
563
+ ```bash
564
+ # Stop other workspace
565
+ cd .sessions/FIN-123
566
+ docker-compose down
567
+
568
+ # Or use different issue number
569
+ ```
570
+
571
+ ### Issue: "Docker containers not stopping"
572
+
573
+ **Cause**: `feature end` failed to stop containers.
574
+
575
+ **Solution**:
576
+ ```bash
577
+ # Manually stop containers
578
+ cd .sessions/FIN-123
579
+ docker-compose down -v
580
+
581
+ # Then clean up workspace
582
+ cd ../..
583
+ npx context-first-cli@latest feature end FIN-123
584
+ ```
585
+
586
+ ---
587
+
588
+ ## Advanced Usage
589
+
590
+ ### Custom Docker Ports
591
+
592
+ Edit `ai.properties.md`:
593
+
594
+ ```markdown
595
+ docker.backend_base_port=4000
596
+ docker.frontend_base_port=9000
597
+ docker.postgres_base_port=6000
598
+ docker.redis_base_port=7000
599
+ ```
600
+
601
+ Now FIN-11 will use ports 4011, 9011, 6011, 7011.
602
+
603
+ ### Merge Options
604
+
605
+ ```bash
606
+ # Merge to develop instead of main
607
+ npx context-first-cli@latest feature merge FIN-123 --target-branch develop
608
+
609
+ # Merge without pushing (review first)
610
+ npx context-first-cli@latest feature merge FIN-123 --no-push
611
+
612
+ # Keep workspace after merge
613
+ npx context-first-cli@latest feature merge FIN-123 --keep-workspace
614
+
615
+ # Force merge without confirmation
616
+ npx context-first-cli@latest feature merge FIN-123 --force
252
617
  ```
253
618
 
619
+ ### Update Commands
620
+
621
+ When CLI is updated, refresh AI command templates:
622
+
623
+ ```bash
624
+ cd ~/orchestrator
625
+ npx context-first-cli@latest update:commands
626
+ ```
627
+
628
+ ---
629
+
630
+ ## Contributing
631
+
632
+ Contributions are welcome! Please open an issue or PR on [GitHub](https://github.com/thatix-io/context-first-cli).
633
+
254
634
  ---
255
635
 
256
- ## 📝 License
636
+ ## License
257
637
 
258
- MIT
638
+ MIT © [Thiago Abreu](https://github.com/thatix-io)
259
639
 
260
640
  ---
261
641
 
262
- ## 🔗 Links
642
+ ## Links
643
+
644
+ - **NPM**: https://www.npmjs.com/package/context-first-cli
645
+ - **GitHub**: https://github.com/thatix-io/context-first-cli
646
+ - **Issues**: https://github.com/thatix-io/context-first-cli/issues
647
+ - **Documentation**: https://github.com/thatix-io/context-first-cli#readme
648
+
649
+ ---
263
650
 
264
- - **NPM Package**: https://www.npmjs.com/package/context-first-cli
265
- - **GitHub Repository**: https://github.com/thatix-io/context-first-cli
266
- - **Issues & Support**: https://github.com/thatix-io/context-first-cli/issues
651
+ **Made with ❤️ for developers who value context and efficiency.**
@@ -1 +1 @@
1
- {"version":3,"file":"config-setup.d.ts","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"AAqBA,wBAAsB,kBAAkB,kBAiKvC"}
1
+ {"version":3,"file":"config-setup.d.ts","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"AAqBA,wBAAsB,kBAAkB,kBAyKvC"}
@@ -123,6 +123,13 @@ async function configSetupCommand() {
123
123
  else if (taskAnswers.taskManager === 'github') {
124
124
  content += `github_repo=${taskAnswers.githubRepo}\n`;
125
125
  }
126
+ content += `\n## Docker Configuration\n\n`;
127
+ content += `# Base ports for services (will be incremented by issue number)\n`;
128
+ content += `# Example: For FIN-11, backend will use port 3011, frontend 8011, etc.\n`;
129
+ content += `docker.backend_base_port=3000\n`;
130
+ content += `docker.frontend_base_port=8000\n`;
131
+ content += `docker.postgres_base_port=5400\n`;
132
+ content += `docker.redis_base_port=6300\n`;
126
133
  content += `\n## Repository Commands\n\n`;
127
134
  content += `# Define commands for each repository (lint, test, build, etc.)\n`;
128
135
  content += `# Example:\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"config-setup.js","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-setup.js","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"AAgEA,eAAO,MAAM,eAAe;qBACH,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;;sBA4NlC,MAAM;sBAkBN,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;uBAoFnC,MAAM;qBAiDR,MAAM,WAAW;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;mBA4HxG,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI1D,CAAC"}
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,eAAe;qBACH,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;;sBAiOlC,MAAM;sBAkBN,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;uBAuFnC,MAAM;qBAiDR,MAAM,WAAW;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;mBA4HxG,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI1D,CAAC"}
@@ -11,6 +11,7 @@ const inquirer_1 = __importDefault(require("inquirer"));
11
11
  const config_1 = require("../utils/config");
12
12
  const git_1 = require("../utils/git");
13
13
  const ai_properties_1 = require("../utils/ai-properties");
14
+ const docker_1 = require("../utils/docker");
14
15
  /**
15
16
  * Get orchestrator path from config
16
17
  */
@@ -186,11 +187,15 @@ exports.featureCommands = {
186
187
  status: 'active',
187
188
  };
188
189
  await (0, config_1.saveWorkspaceMetadata)(workspacePath, metadata);
190
+ // Generate docker-compose.yml
191
+ console.log(chalk_1.default.blue('\nGenerating docker-compose.yml...'));
192
+ await (0, docker_1.generateDockerCompose)(workspacePath, issueId, selectedRepos);
189
193
  console.log(chalk_1.default.green.bold('\n✅ Workspace created successfully!'));
190
194
  console.log(chalk_1.default.blue('\n📁 Workspace location:'));
191
195
  console.log(chalk_1.default.white(` ${workspacePath}`));
192
196
  console.log(chalk_1.default.blue('\n💡 Next steps:'));
193
197
  console.log(chalk_1.default.gray(` cd ${workspacePath}`));
198
+ console.log(chalk_1.default.gray(' docker-compose up -d # Start services'));
194
199
  console.log(chalk_1.default.gray(' code .'));
195
200
  console.log(chalk_1.default.gray(' # Start working on your feature!'));
196
201
  },
@@ -276,6 +281,8 @@ exports.featureCommands = {
276
281
  return;
277
282
  }
278
283
  }
284
+ // Cleanup Docker containers
285
+ await (0, docker_1.cleanupDockerContainers)(workspacePath, issueId);
279
286
  // Remove worktrees
280
287
  console.log(chalk_1.default.blue('Removing worktrees...'));
281
288
  // Load ai.properties to get base_path
@@ -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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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Extract issue number from issue-id
3
+ * Examples: FIN-11 → 11, PROJ-123 → 123
4
+ */
5
+ export declare function extractIssueNumber(issueId: string): number;
6
+ /**
7
+ * Calculate dynamic ports based on issue number
8
+ */
9
+ export declare function calculatePorts(issueNumber: number, basePorts: {
10
+ backend?: number;
11
+ frontend?: number;
12
+ postgres?: number;
13
+ redis?: number;
14
+ }): {
15
+ backend: number;
16
+ frontend: number;
17
+ postgres: number;
18
+ redis: number;
19
+ };
20
+ /**
21
+ * Generate docker-compose.yml content
22
+ */
23
+ export declare function generateDockerComposeContent(issueId: string, repositories: Array<{
24
+ id: string;
25
+ role?: string;
26
+ }>, ports: {
27
+ backend: number;
28
+ frontend: number;
29
+ postgres: number;
30
+ redis: number;
31
+ }): string;
32
+ /**
33
+ * Generate docker-compose.yml file in workspace
34
+ */
35
+ export declare function generateDockerCompose(workspacePath: string, issueId: string, repositories: Array<{
36
+ id: string;
37
+ role?: string;
38
+ }>, basePorts?: {
39
+ backend?: number;
40
+ frontend?: number;
41
+ postgres?: number;
42
+ redis?: number;
43
+ }): Promise<void>;
44
+ /**
45
+ * Stop and remove Docker containers for a workspace
46
+ */
47
+ export declare function cleanupDockerContainers(workspacePath: string, issueId: string): Promise<void>;
48
+ /**
49
+ * Check if Docker is installed and running
50
+ */
51
+ export declare function checkDockerAvailable(): Promise<boolean>;
52
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/utils/docker.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAOA;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E,MAAM,CAwGR;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,SAAS,CAAC,EAAE;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ7D"}
@@ -0,0 +1,201 @@
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.extractIssueNumber = extractIssueNumber;
7
+ exports.calculatePorts = calculatePorts;
8
+ exports.generateDockerComposeContent = generateDockerComposeContent;
9
+ exports.generateDockerCompose = generateDockerCompose;
10
+ exports.cleanupDockerContainers = cleanupDockerContainers;
11
+ exports.checkDockerAvailable = checkDockerAvailable;
12
+ const path_1 = __importDefault(require("path"));
13
+ const promises_1 = __importDefault(require("fs/promises"));
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const child_process_1 = require("child_process");
16
+ /**
17
+ * Extract issue number from issue-id
18
+ * Examples: FIN-11 → 11, PROJ-123 → 123
19
+ */
20
+ function extractIssueNumber(issueId) {
21
+ const match = issueId.match(/\d+$/);
22
+ if (!match) {
23
+ throw new Error(`Could not extract number from issue-id: ${issueId}`);
24
+ }
25
+ return parseInt(match[0], 10);
26
+ }
27
+ /**
28
+ * Calculate dynamic ports based on issue number
29
+ */
30
+ function calculatePorts(issueNumber, basePorts) {
31
+ return {
32
+ backend: (basePorts.backend || 3000) + issueNumber,
33
+ frontend: (basePorts.frontend || 8000) + issueNumber,
34
+ postgres: (basePorts.postgres || 5400) + issueNumber,
35
+ redis: (basePorts.redis || 6300) + issueNumber,
36
+ };
37
+ }
38
+ /**
39
+ * Generate docker-compose.yml content
40
+ */
41
+ function generateDockerComposeContent(issueId, repositories, ports) {
42
+ const issueNumber = extractIssueNumber(issueId);
43
+ const networkName = `${issueId.toLowerCase()}-network`;
44
+ const volumePrefix = issueId.toLowerCase();
45
+ // Find repositories by role
46
+ const backendRepo = repositories.find(r => r.role === 'backend');
47
+ const frontendRepo = repositories.find(r => r.role === 'frontend');
48
+ let services = '';
49
+ let volumes = '';
50
+ // Backend service
51
+ if (backendRepo) {
52
+ services += ` backend:
53
+ build:
54
+ context: ./${backendRepo.id}
55
+ dockerfile: Dockerfile
56
+ container_name: ${issueId.toLowerCase()}-backend
57
+ ports:
58
+ - "${ports.backend}:3000"
59
+ environment:
60
+ - NODE_ENV=development
61
+ - PORT=3000
62
+ - DATABASE_URL=postgresql://user:password@postgres:5432/app
63
+ - REDIS_URL=redis://redis:6379
64
+ networks:
65
+ - ${networkName}
66
+ depends_on:
67
+ - postgres
68
+ - redis
69
+ volumes:
70
+ - ./${backendRepo.id}:/app
71
+ - /app/node_modules
72
+
73
+ `;
74
+ }
75
+ // Frontend service
76
+ if (frontendRepo) {
77
+ services += ` frontend:
78
+ build:
79
+ context: ./${frontendRepo.id}
80
+ dockerfile: Dockerfile
81
+ container_name: ${issueId.toLowerCase()}-frontend
82
+ ports:
83
+ - "${ports.frontend}:8080"
84
+ environment:
85
+ - NODE_ENV=development
86
+ - VITE_API_URL=http://localhost:${ports.backend}
87
+ networks:
88
+ - ${networkName}
89
+ ${backendRepo ? 'depends_on:\n - backend' : ''}
90
+ volumes:
91
+ - ./${frontendRepo.id}:/app
92
+ - /app/node_modules
93
+
94
+ `;
95
+ }
96
+ // Postgres service
97
+ services += ` postgres:
98
+ image: postgres:15-alpine
99
+ container_name: ${issueId.toLowerCase()}-postgres
100
+ ports:
101
+ - "${ports.postgres}:5432"
102
+ environment:
103
+ - POSTGRES_USER=user
104
+ - POSTGRES_PASSWORD=password
105
+ - POSTGRES_DB=app
106
+ networks:
107
+ - ${networkName}
108
+ volumes:
109
+ - ${volumePrefix}-postgres-data:/var/lib/postgresql/data
110
+
111
+ `;
112
+ volumes += ` ${volumePrefix}-postgres-data:\n`;
113
+ // Redis service
114
+ services += ` redis:
115
+ image: redis:7-alpine
116
+ container_name: ${issueId.toLowerCase()}-redis
117
+ ports:
118
+ - "${ports.redis}:6379"
119
+ networks:
120
+ - ${networkName}
121
+ volumes:
122
+ - ${volumePrefix}-redis-data:/data
123
+
124
+ `;
125
+ volumes += ` ${volumePrefix}-redis-data:\n`;
126
+ return `version: '3.8'
127
+
128
+ services:
129
+ ${services}
130
+ networks:
131
+ ${networkName}:
132
+ name: ${networkName}
133
+
134
+ volumes:
135
+ ${volumes}`;
136
+ }
137
+ /**
138
+ * Generate docker-compose.yml file in workspace
139
+ */
140
+ async function generateDockerCompose(workspacePath, issueId, repositories, basePorts) {
141
+ try {
142
+ const issueNumber = extractIssueNumber(issueId);
143
+ const ports = calculatePorts(issueNumber, basePorts || {});
144
+ const content = generateDockerComposeContent(issueId, repositories, ports);
145
+ const filePath = path_1.default.join(workspacePath, 'docker-compose.yml');
146
+ await promises_1.default.writeFile(filePath, content, 'utf-8');
147
+ console.log(chalk_1.default.green(`✓ Generated docker-compose.yml`));
148
+ console.log(chalk_1.default.blue('\n📦 Docker Services:'));
149
+ console.log(chalk_1.default.gray(` Backend: http://localhost:${ports.backend}`));
150
+ console.log(chalk_1.default.gray(` Frontend: http://localhost:${ports.frontend}`));
151
+ console.log(chalk_1.default.gray(` Postgres: localhost:${ports.postgres}`));
152
+ console.log(chalk_1.default.gray(` Redis: localhost:${ports.redis}`));
153
+ }
154
+ catch (error) {
155
+ console.log(chalk_1.default.yellow(`⚠ Could not generate docker-compose.yml: ${error.message}`));
156
+ }
157
+ }
158
+ /**
159
+ * Stop and remove Docker containers for a workspace
160
+ */
161
+ async function cleanupDockerContainers(workspacePath, issueId) {
162
+ try {
163
+ const dockerComposePath = path_1.default.join(workspacePath, 'docker-compose.yml');
164
+ // Check if docker-compose.yml exists
165
+ try {
166
+ await promises_1.default.access(dockerComposePath);
167
+ }
168
+ catch {
169
+ // No docker-compose.yml, nothing to clean up
170
+ return;
171
+ }
172
+ console.log(chalk_1.default.blue('Stopping Docker containers...'));
173
+ try {
174
+ (0, child_process_1.execSync)('docker-compose down -v', {
175
+ cwd: workspacePath,
176
+ stdio: 'pipe',
177
+ });
178
+ console.log(chalk_1.default.green('✓ Docker containers stopped and removed'));
179
+ }
180
+ catch (error) {
181
+ console.log(chalk_1.default.yellow(`⚠ Could not stop Docker containers: ${error.message}`));
182
+ }
183
+ }
184
+ catch (error) {
185
+ console.log(chalk_1.default.yellow(`⚠ Error cleaning up Docker: ${error.message}`));
186
+ }
187
+ }
188
+ /**
189
+ * Check if Docker is installed and running
190
+ */
191
+ async function checkDockerAvailable() {
192
+ try {
193
+ (0, child_process_1.execSync)('docker --version', { stdio: 'pipe' });
194
+ (0, child_process_1.execSync)('docker ps', { stdio: 'pipe' });
195
+ return true;
196
+ }
197
+ catch {
198
+ return false;
199
+ }
200
+ }
201
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/utils/docker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-first-cli",
3
- "version": "1.7.0",
3
+ "version": "1.8.1",
4
4
  "description": "A generic CLI to manage the Context-First development methodology across any project.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",