@cxtmanager/core 1.0.11 → 1.0.12
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 +71 -21
- package/dist/__tests__/context-manager.test.js +103 -1
- package/dist/__tests__/context-manager.test.js.map +1 -1
- package/dist/__tests__/git-repository.test.js +104 -0
- package/dist/__tests__/git-repository.test.js.map +1 -1
- package/dist/__tests__/plan-manager.test.js +60 -18
- package/dist/__tests__/plan-manager.test.js.map +1 -1
- package/dist/__tests__/validation-engine.test.js +4 -19
- package/dist/__tests__/validation-engine.test.js.map +1 -1
- package/dist/context-manager.d.ts +0 -1
- package/dist/context-manager.d.ts.map +1 -1
- package/dist/context-manager.js +64 -51
- package/dist/context-manager.js.map +1 -1
- package/dist/git-hooks-manager.d.ts +1 -1
- package/dist/git-hooks-manager.d.ts.map +1 -1
- package/dist/git-hooks-manager.js +15 -17
- package/dist/git-hooks-manager.js.map +1 -1
- package/dist/git-repository.d.ts +6 -1
- package/dist/git-repository.d.ts.map +1 -1
- package/dist/git-repository.js +141 -21
- package/dist/git-repository.js.map +1 -1
- package/dist/plan-manager.js +2 -2
- package/dist/plan-manager.js.map +1 -1
- package/dist/types/index.d.ts +1 -33
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types.d.ts +1 -44
- package/dist/types.d.ts.map +1 -1
- package/dist/validation-engine.d.ts +1 -7
- package/dist/validation-engine.d.ts.map +1 -1
- package/dist/validation-engine.js +1 -72
- package/dist/validation-engine.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @cxtmanager/core
|
|
2
2
|
|
|
3
|
-
Core library for
|
|
3
|
+
Core library for cxt-manager - context file management and Git integration.
|
|
4
4
|
|
|
5
5
|
## Philosophy
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ Core library for CxtManager - context file management and Git integration.
|
|
|
11
11
|
- **Context File Management** - Create, read, update context files (context.md, plan.md, guardrail.md)
|
|
12
12
|
- **Git Integration** - Version control for context files using Git
|
|
13
13
|
- **Branch Awareness** - Automatic switching of plan.md content based on Git branches
|
|
14
|
-
- **Validation** - Check context file
|
|
14
|
+
- **Validation** - Check context file quality and health
|
|
15
15
|
- **Template Generation** - Provide structure templates (you fill the content)
|
|
16
16
|
- **Git Hooks** - Manage Git hooks for automatic context synchronization
|
|
17
17
|
|
|
@@ -23,16 +23,46 @@ Core library for CxtManager - context file management and Git integration.
|
|
|
23
23
|
- `guardrail.md` - Universal constraints and rules
|
|
24
24
|
|
|
25
25
|
### Branch Awareness
|
|
26
|
-
`plan.md` content is branch-specific. When you switch Git branches,
|
|
26
|
+
`plan.md` content is branch-specific. When you switch Git branches, cxt-manager automatically:
|
|
27
27
|
1. Saves current branch's plan.md to `.plan-history/`
|
|
28
28
|
2. Restores the target branch's plan.md (or creates template if new)
|
|
29
29
|
|
|
30
|
-
###
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
### Validation
|
|
31
|
+
|
|
32
|
+
**Content Quality Validation (Not Markdown Syntax)**
|
|
33
|
+
|
|
34
|
+
The validation engine checks for content quality and usefulness, not markdown syntax errors:
|
|
35
|
+
|
|
36
|
+
**What we check:**
|
|
37
|
+
- ✅ **Content quality** - Empty files, short content, empty sections
|
|
38
|
+
- ✅ **Content analysis** - Filters structural elements, counts actual content
|
|
39
|
+
- ✅ **Drift detection** - Outdated information warnings
|
|
40
|
+
- ✅ **File completeness** - Ensures files have meaningful content
|
|
41
|
+
|
|
42
|
+
**What we don't check:**
|
|
43
|
+
- ❌ Markdown syntax errors (broken links, invalid formatting)
|
|
44
|
+
- ❌ Markdown style (heading levels, list formatting)
|
|
45
|
+
- ❌ Semantic alignment (deferred to future MCP/agent integration)
|
|
46
|
+
|
|
47
|
+
**Why this approach:**
|
|
48
|
+
- **Manager, not Enforcer** - Focus on content quality, not formatting rules
|
|
49
|
+
- **AI-focused** - Check what matters for AI understanding
|
|
50
|
+
- **Flexible** - Any markdown style is fine; we just ensure there's content
|
|
51
|
+
|
|
52
|
+
**Configuration:**
|
|
53
|
+
Quality thresholds are configurable:
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"context": {
|
|
57
|
+
"content_quality": {
|
|
58
|
+
"min_content_length": 100,
|
|
59
|
+
"min_content_lines": 3,
|
|
60
|
+
"empty_section_warning": true,
|
|
61
|
+
"short_content_warning": 200
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
36
66
|
|
|
37
67
|
## Installation
|
|
38
68
|
|
|
@@ -50,8 +80,7 @@ const manager = new ContextManager(projectRoot);
|
|
|
50
80
|
// Initialize context files
|
|
51
81
|
await manager.init({
|
|
52
82
|
mode: 'blank',
|
|
53
|
-
|
|
54
|
-
updateMode: 'manual'
|
|
83
|
+
trackInGit: true
|
|
55
84
|
});
|
|
56
85
|
|
|
57
86
|
// Check if initialized
|
|
@@ -60,7 +89,7 @@ const isInit = await manager.isInitialized();
|
|
|
60
89
|
// Get status
|
|
61
90
|
const status = await manager.getStatus();
|
|
62
91
|
|
|
63
|
-
// Validate
|
|
92
|
+
// Validate context health
|
|
64
93
|
const validation = await manager.validate();
|
|
65
94
|
|
|
66
95
|
// Sync plan.md for current branch
|
|
@@ -79,7 +108,7 @@ Handles all Git operations (commits, diffs, history, etc.).
|
|
|
79
108
|
Manages branch-specific plan.md content and switching.
|
|
80
109
|
|
|
81
110
|
### ValidationEngine
|
|
82
|
-
Checks context file
|
|
111
|
+
Checks context file quality, health, and completeness. Provides warnings for empty/short content and drift detection.
|
|
83
112
|
|
|
84
113
|
### GitHooksManager
|
|
85
114
|
Manages Git hook installation and removal.
|
|
@@ -93,27 +122,48 @@ Configuration is stored in `.cxt/.cxtconfig.json`:
|
|
|
93
122
|
"version": "1.0.0",
|
|
94
123
|
"mode": "blank",
|
|
95
124
|
"git_integration": {
|
|
96
|
-
"
|
|
125
|
+
"enabled": true,
|
|
126
|
+
"hooks": {
|
|
127
|
+
"post_checkout": "sync-plan",
|
|
128
|
+
"pre_commit": "validate"
|
|
129
|
+
},
|
|
130
|
+
"silent_mode": true,
|
|
131
|
+
"auto_install_hooks": true,
|
|
132
|
+
"track_in_git": true
|
|
97
133
|
},
|
|
98
134
|
"plan_management": {
|
|
99
|
-
"
|
|
135
|
+
"backup_on_switch": true,
|
|
136
|
+
"plan_template_style": undefined
|
|
137
|
+
},
|
|
138
|
+
"mcp": {
|
|
139
|
+
"enabled": false,
|
|
140
|
+
"sources": {
|
|
141
|
+
"local_files": {
|
|
142
|
+
"enabled": true,
|
|
143
|
+
"readme": true,
|
|
144
|
+
"package_json": true,
|
|
145
|
+
"git_history": true
|
|
146
|
+
}
|
|
147
|
+
}
|
|
100
148
|
},
|
|
101
149
|
"context": {
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
},
|
|
150
|
+
"health_checks": true,
|
|
151
|
+
"ai_attribution": true,
|
|
152
|
+
"drift_detection": true,
|
|
153
|
+
"warn_threshold": 3,
|
|
107
154
|
"content_quality": {
|
|
108
155
|
"min_content_length": 100,
|
|
109
156
|
"min_content_lines": 3,
|
|
110
157
|
"empty_section_warning": true,
|
|
111
158
|
"short_content_warning": 200
|
|
112
159
|
}
|
|
113
|
-
}
|
|
160
|
+
},
|
|
161
|
+
"created": "2025-01-15T10:30:00.000Z"
|
|
114
162
|
}
|
|
115
163
|
```
|
|
116
164
|
|
|
165
|
+
**Note:** The `mcp` section is reserved for future MCP/agent integration and currently has no effect.
|
|
166
|
+
|
|
117
167
|
## Development
|
|
118
168
|
|
|
119
169
|
```bash
|
|
@@ -80,6 +80,45 @@ describe('ContextManager', () => {
|
|
|
80
80
|
expect(typeof result).toBe('boolean');
|
|
81
81
|
});
|
|
82
82
|
});
|
|
83
|
+
describe('loadConfig', () => {
|
|
84
|
+
it('should throw helpful error for corrupted JSON config', async () => {
|
|
85
|
+
await fs.ensureDir(path.join(testDir, '.cxt'));
|
|
86
|
+
await fs.writeFile(path.join(testDir, '.cxt', '.cxtconfig.json'), '{ invalid json }');
|
|
87
|
+
await expect(manager.loadConfig()).rejects.toThrow('Configuration file is corrupted or invalid JSON');
|
|
88
|
+
try {
|
|
89
|
+
await manager.loadConfig();
|
|
90
|
+
fail('Should have thrown an error');
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
expect(error.message).toContain('Configuration file is corrupted or invalid JSON');
|
|
94
|
+
expect(error.message).toContain('Check .cxt/.cxtconfig.json for syntax errors');
|
|
95
|
+
expect(error.message).toContain('run "cit init" to reinitialize');
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
it('should throw helpful error for missing config file', async () => {
|
|
99
|
+
await expect(manager.loadConfig()).rejects.toThrow('Configuration file not found');
|
|
100
|
+
try {
|
|
101
|
+
await manager.loadConfig();
|
|
102
|
+
fail('Should have thrown an error');
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
expect(error.message).toContain('Configuration file not found');
|
|
106
|
+
expect(error.message).toContain('Run "cit init" to initialize cxt-manager');
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
it('should load valid config successfully', async () => {
|
|
110
|
+
await fs.ensureDir(path.join(testDir, '.cxt'));
|
|
111
|
+
await fs.writeJson(path.join(testDir, '.cxt', '.cxtconfig.json'), {
|
|
112
|
+
version: '1.0.0',
|
|
113
|
+
mode: 'blank',
|
|
114
|
+
created: new Date().toISOString()
|
|
115
|
+
});
|
|
116
|
+
const config = await manager.loadConfig();
|
|
117
|
+
expect(config).toBeDefined();
|
|
118
|
+
expect(config.version).toBe('1.0.0');
|
|
119
|
+
expect(config.mode).toBe('blank');
|
|
120
|
+
});
|
|
121
|
+
});
|
|
83
122
|
describe('status', () => {
|
|
84
123
|
it('should throw error when not initialized', async () => {
|
|
85
124
|
await expect(manager.status()).rejects.toThrow('CxtManager not initialized');
|
|
@@ -123,7 +162,6 @@ describe('ContextManager', () => {
|
|
|
123
162
|
expect(health).toHaveProperty('overall');
|
|
124
163
|
expect(health).toHaveProperty('issues');
|
|
125
164
|
expect(health).toHaveProperty('suggestions');
|
|
126
|
-
expect(health).toHaveProperty('alignments');
|
|
127
165
|
expect(health).toHaveProperty('lastChecked');
|
|
128
166
|
expect(['healthy', 'warning', 'error']).toContain(health.overall);
|
|
129
167
|
}
|
|
@@ -133,5 +171,69 @@ describe('ContextManager', () => {
|
|
|
133
171
|
}
|
|
134
172
|
});
|
|
135
173
|
});
|
|
174
|
+
describe('init', () => {
|
|
175
|
+
it('should clean up .cxt folder if initialization fails after creating it', async () => {
|
|
176
|
+
// Initialize git repo first
|
|
177
|
+
const { execSync } = require('child_process');
|
|
178
|
+
execSync('git init', { cwd: testDir });
|
|
179
|
+
try {
|
|
180
|
+
execSync('git config user.name "Test User"', { cwd: testDir });
|
|
181
|
+
execSync('git config user.email "test@example.com"', { cwd: testDir });
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Ignore config errors
|
|
185
|
+
}
|
|
186
|
+
// Mock createBlankFiles to throw an error after .cxt folder is created
|
|
187
|
+
const originalCreateBlankFiles = manager.createBlankFiles;
|
|
188
|
+
manager.createBlankFiles = async () => {
|
|
189
|
+
throw new Error('Simulated failure in createBlankFiles');
|
|
190
|
+
};
|
|
191
|
+
// Try to initialize - should fail
|
|
192
|
+
await expect(manager.init({ mode: 'blank', trackInGit: false })).rejects.toThrow('Simulated failure');
|
|
193
|
+
// Restore original method
|
|
194
|
+
manager.createBlankFiles = originalCreateBlankFiles;
|
|
195
|
+
// .cxt folder should not exist after failure
|
|
196
|
+
const cxtExists = await fs.pathExists(path.join(testDir, '.cxt'));
|
|
197
|
+
expect(cxtExists).toBe(false);
|
|
198
|
+
});
|
|
199
|
+
it('should not create .cxt folder if git repo initialization fails', async () => {
|
|
200
|
+
// Create a read-only directory to simulate permission error
|
|
201
|
+
// Actually, let's just test that .cxt doesn't exist if init fails early
|
|
202
|
+
// by checking before git is initialized
|
|
203
|
+
const cxtExistsBefore = await fs.pathExists(path.join(testDir, '.cxt'));
|
|
204
|
+
expect(cxtExistsBefore).toBe(false);
|
|
205
|
+
// Note: This test verifies that .cxt is not created if git init fails
|
|
206
|
+
// The actual git init will succeed in test environment, so we verify
|
|
207
|
+
// the cleanup logic in the other test
|
|
208
|
+
});
|
|
209
|
+
it('should throw helpful error when Git user is not configured during init with trackInGit', async () => {
|
|
210
|
+
// Initialize git repo but don't set user config
|
|
211
|
+
const { execSync } = require('child_process');
|
|
212
|
+
execSync('git init', { cwd: testDir });
|
|
213
|
+
await expect(manager.init({ mode: 'blank', trackInGit: true })).rejects.toThrow('Git user information not configured');
|
|
214
|
+
// .cxt folder should be cleaned up
|
|
215
|
+
const cxtExists = await fs.pathExists(path.join(testDir, '.cxt'));
|
|
216
|
+
expect(cxtExists).toBe(false);
|
|
217
|
+
});
|
|
218
|
+
it('should successfully initialize when all steps complete', async () => {
|
|
219
|
+
// Initialize git repo
|
|
220
|
+
const { execSync } = require('child_process');
|
|
221
|
+
execSync('git init', { cwd: testDir });
|
|
222
|
+
try {
|
|
223
|
+
execSync('git config user.name "Test User"', { cwd: testDir });
|
|
224
|
+
execSync('git config user.email "test@example.com"', { cwd: testDir });
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// Ignore config errors
|
|
228
|
+
}
|
|
229
|
+
await manager.init({ mode: 'blank', trackInGit: false });
|
|
230
|
+
// .cxt folder should exist after successful init
|
|
231
|
+
const cxtExists = await fs.pathExists(path.join(testDir, '.cxt'));
|
|
232
|
+
expect(cxtExists).toBe(true);
|
|
233
|
+
// Config should exist
|
|
234
|
+
const configExists = await fs.pathExists(path.join(testDir, '.cxt', '.cxtconfig.json'));
|
|
235
|
+
expect(configExists).toBe(true);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
136
238
|
});
|
|
137
239
|
//# sourceMappingURL=context-manager.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/context-manager.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/context-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -147,6 +147,110 @@ describe('GitRepository', () => {
|
|
|
147
147
|
expect(log.total).toBe(1);
|
|
148
148
|
expect(log.latest?.message).toBe('Test commit');
|
|
149
149
|
});
|
|
150
|
+
it('should use Git configured user when no author override', async () => {
|
|
151
|
+
const git = (0, simple_git_1.simpleGit)(testDir);
|
|
152
|
+
await git.init();
|
|
153
|
+
// Set Git user config
|
|
154
|
+
try {
|
|
155
|
+
await git.addConfig('user.name', 'Test User', false, 'local');
|
|
156
|
+
await git.addConfig('user.email', 'test@example.com', false, 'local');
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Ignore config errors
|
|
160
|
+
}
|
|
161
|
+
const testFile = path.join(testDir, 'test.txt');
|
|
162
|
+
fs.writeFileSync(testFile, 'content');
|
|
163
|
+
// No author override - Git will use configured user.name and user.email
|
|
164
|
+
await gitRepo.addAndCommit(['test.txt'], 'Test commit');
|
|
165
|
+
const log = await git.log();
|
|
166
|
+
expect(log.total).toBe(1);
|
|
167
|
+
expect(log.latest?.message).toBe('Test commit');
|
|
168
|
+
// Git will use the configured user
|
|
169
|
+
expect(log.latest?.author_name).toBe('Test User');
|
|
170
|
+
expect(log.latest?.author_email).toBe('test@example.com');
|
|
171
|
+
});
|
|
172
|
+
it('should accept properly formatted author string', async () => {
|
|
173
|
+
const git = (0, simple_git_1.simpleGit)(testDir);
|
|
174
|
+
await git.init();
|
|
175
|
+
// Set Git user config (required even when using --author override)
|
|
176
|
+
try {
|
|
177
|
+
await git.addConfig('user.name', 'Test User', false, 'local');
|
|
178
|
+
await git.addConfig('user.email', 'test@example.com', false, 'local');
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// Ignore config errors
|
|
182
|
+
}
|
|
183
|
+
const testFile = path.join(testDir, 'test.txt');
|
|
184
|
+
fs.writeFileSync(testFile, 'content');
|
|
185
|
+
// Use properly formatted author string
|
|
186
|
+
await gitRepo.addAndCommit(['test.txt'], 'Test commit', 'Custom Author <custom@example.com>');
|
|
187
|
+
const log = await git.log();
|
|
188
|
+
expect(log.total).toBe(1);
|
|
189
|
+
expect(log.latest?.author_name).toBe('Custom Author');
|
|
190
|
+
expect(log.latest?.author_email).toBe('custom@example.com');
|
|
191
|
+
});
|
|
192
|
+
it('should throw helpful error when Git user is not configured', async () => {
|
|
193
|
+
const git = (0, simple_git_1.simpleGit)(testDir);
|
|
194
|
+
await git.init();
|
|
195
|
+
// Don't set Git user config
|
|
196
|
+
const testFile = path.join(testDir, 'test.txt');
|
|
197
|
+
fs.writeFileSync(testFile, 'content');
|
|
198
|
+
await expect(gitRepo.addAndCommit(['test.txt'], 'Test commit')).rejects.toThrow('Git user information not configured');
|
|
199
|
+
try {
|
|
200
|
+
await gitRepo.addAndCommit(['test.txt'], 'Test commit');
|
|
201
|
+
fail('Should have thrown an error');
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
expect(error.message).toContain('Git user information not configured');
|
|
205
|
+
expect(error.message).toContain('git config --global user.name');
|
|
206
|
+
expect(error.message).toContain('git config --global user.email');
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
describe('ensureGitUserConfigured', () => {
|
|
211
|
+
it('should pass when Git user is configured', async () => {
|
|
212
|
+
const git = (0, simple_git_1.simpleGit)(testDir);
|
|
213
|
+
await git.init();
|
|
214
|
+
await git.addConfig('user.name', 'Test User', false, 'local');
|
|
215
|
+
await git.addConfig('user.email', 'test@example.com', false, 'local');
|
|
216
|
+
// Should not throw
|
|
217
|
+
await expect(gitRepo.ensureGitUserConfigured()).resolves.not.toThrow();
|
|
218
|
+
});
|
|
219
|
+
it('should throw when Git user name is not configured', async () => {
|
|
220
|
+
const git = (0, simple_git_1.simpleGit)(testDir);
|
|
221
|
+
await git.init();
|
|
222
|
+
// Only set email, not name
|
|
223
|
+
await git.addConfig('user.email', 'test@example.com', false, 'local');
|
|
224
|
+
await expect(gitRepo.ensureGitUserConfigured()).rejects.toThrow('Git user information not configured');
|
|
225
|
+
});
|
|
226
|
+
it('should throw when Git user email is not configured', async () => {
|
|
227
|
+
const git = (0, simple_git_1.simpleGit)(testDir);
|
|
228
|
+
await git.init();
|
|
229
|
+
// Only set name, not email
|
|
230
|
+
await git.addConfig('user.name', 'Test User', false, 'local');
|
|
231
|
+
await expect(gitRepo.ensureGitUserConfigured()).rejects.toThrow('Git user information not configured');
|
|
232
|
+
});
|
|
233
|
+
it('should check global config if local is not set', async () => {
|
|
234
|
+
const git = (0, simple_git_1.simpleGit)(testDir);
|
|
235
|
+
await git.init();
|
|
236
|
+
// Don't set local config - method should check global
|
|
237
|
+
// Note: This test verifies the method checks global, but we can't reliably
|
|
238
|
+
// set global config in tests without affecting the system. Instead, we verify
|
|
239
|
+
// the method attempts to check global by ensuring it doesn't throw immediately
|
|
240
|
+
// when local is not set (it will check global before throwing)
|
|
241
|
+
// If global config exists on the system, this should pass
|
|
242
|
+
// If not, it will throw (which is expected behavior)
|
|
243
|
+
try {
|
|
244
|
+
await gitRepo.ensureGitUserConfigured();
|
|
245
|
+
// If we get here, global config exists - test passes
|
|
246
|
+
expect(true).toBe(true);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
// If global config doesn't exist, error should mention global config
|
|
250
|
+
expect(error.message).toContain('Git user information not configured');
|
|
251
|
+
expect(error.message).toContain('git config --global');
|
|
252
|
+
}
|
|
253
|
+
});
|
|
150
254
|
});
|
|
151
255
|
});
|
|
152
256
|
//# sourceMappingURL=git-repository.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-repository.test.js","sourceRoot":"","sources":["../../src/__tests__/git-repository.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"git-repository.test.js","sourceRoot":"","sources":["../../src/__tests__/git-repository.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,25 +69,11 @@ describe('PlanManager', () => {
|
|
|
69
69
|
},
|
|
70
70
|
plan_management: {
|
|
71
71
|
backup_on_switch: true,
|
|
72
|
-
auto_commit_ai_changes
|
|
73
|
-
archive_completed: false
|
|
74
|
-
},
|
|
75
|
-
mcp: {
|
|
76
|
-
enabled: false,
|
|
77
|
-
sources: {
|
|
78
|
-
local_files: {
|
|
79
|
-
enabled: true,
|
|
80
|
-
readme: true,
|
|
81
|
-
package_json: true,
|
|
82
|
-
git_history: true
|
|
83
|
-
}
|
|
84
|
-
}
|
|
72
|
+
// auto_commit_ai_changes and archive_completed removed
|
|
85
73
|
},
|
|
86
74
|
context: {
|
|
87
|
-
auto_sync: false,
|
|
88
75
|
health_checks: true,
|
|
89
76
|
ai_attribution: true,
|
|
90
|
-
update_mode: 'manual',
|
|
91
77
|
drift_detection: true,
|
|
92
78
|
warn_threshold: 3,
|
|
93
79
|
content_quality: {
|
|
@@ -95,9 +81,7 @@ describe('PlanManager', () => {
|
|
|
95
81
|
min_content_lines: 3,
|
|
96
82
|
empty_section_warning: true,
|
|
97
83
|
short_content_warning: 200
|
|
98
|
-
}
|
|
99
|
-
show_in_changed_files: true,
|
|
100
|
-
auto_commit_context_updates: false
|
|
84
|
+
}
|
|
101
85
|
},
|
|
102
86
|
created: new Date().toISOString()
|
|
103
87
|
};
|
|
@@ -166,5 +150,63 @@ describe('PlanManager', () => {
|
|
|
166
150
|
expect(content).toContain('##');
|
|
167
151
|
});
|
|
168
152
|
});
|
|
153
|
+
describe('syncPlan - backup_on_switch', () => {
|
|
154
|
+
it('should backup plan when backup_on_switch is true', async () => {
|
|
155
|
+
config.plan_management.backup_on_switch = true;
|
|
156
|
+
manager = new plan_manager_1.PlanManager(path.join(testDir, '.cxt'), gitRepo, config);
|
|
157
|
+
// Create initial plan
|
|
158
|
+
await manager.createBlankPlan();
|
|
159
|
+
const planPath = path.join(testDir, '.cxt', 'plan.md');
|
|
160
|
+
await fs.writeFile(planPath, '# Test Plan\n\nInitial content');
|
|
161
|
+
// Create state file to simulate branch switch
|
|
162
|
+
const statePath = path.join(testDir, '.cxt', '.plan-state.json');
|
|
163
|
+
await fs.writeJson(statePath, { lastBranch: 'feature-branch' });
|
|
164
|
+
// Switch to new branch (simulated)
|
|
165
|
+
const { execSync } = require('child_process');
|
|
166
|
+
execSync('git checkout -b main', { cwd: testDir });
|
|
167
|
+
await manager.syncPlan({ silent: true });
|
|
168
|
+
// Plan should be backed up
|
|
169
|
+
const backupPath = path.join(testDir, '.cxt', '.plan-history', 'feature-branch.md');
|
|
170
|
+
expect(await fs.pathExists(backupPath)).toBe(true);
|
|
171
|
+
const backupContent = await fs.readFile(backupPath, 'utf-8');
|
|
172
|
+
expect(backupContent).toContain('Initial content');
|
|
173
|
+
});
|
|
174
|
+
it('should not backup plan when backup_on_switch is false', async () => {
|
|
175
|
+
config.plan_management.backup_on_switch = false;
|
|
176
|
+
manager = new plan_manager_1.PlanManager(path.join(testDir, '.cxt'), gitRepo, config);
|
|
177
|
+
// Create initial plan
|
|
178
|
+
await manager.createBlankPlan();
|
|
179
|
+
const planPath = path.join(testDir, '.cxt', 'plan.md');
|
|
180
|
+
await fs.writeFile(planPath, '# Test Plan\n\nInitial content');
|
|
181
|
+
// Create state file to simulate branch switch
|
|
182
|
+
const statePath = path.join(testDir, '.cxt', '.plan-state.json');
|
|
183
|
+
await fs.writeJson(statePath, { lastBranch: 'feature-branch' });
|
|
184
|
+
// Switch to new branch (simulated)
|
|
185
|
+
const { execSync } = require('child_process');
|
|
186
|
+
execSync('git checkout -b main', { cwd: testDir });
|
|
187
|
+
await manager.syncPlan({ silent: true });
|
|
188
|
+
// Plan should NOT be backed up
|
|
189
|
+
const backupPath = path.join(testDir, '.cxt', '.plan-history', 'feature-branch.md');
|
|
190
|
+
expect(await fs.pathExists(backupPath)).toBe(false);
|
|
191
|
+
});
|
|
192
|
+
it('should backup plan when backup_on_switch is undefined (defaults to true)', async () => {
|
|
193
|
+
config.plan_management.backup_on_switch = undefined;
|
|
194
|
+
manager = new plan_manager_1.PlanManager(path.join(testDir, '.cxt'), gitRepo, config);
|
|
195
|
+
// Create initial plan
|
|
196
|
+
await manager.createBlankPlan();
|
|
197
|
+
const planPath = path.join(testDir, '.cxt', 'plan.md');
|
|
198
|
+
await fs.writeFile(planPath, '# Test Plan\n\nInitial content');
|
|
199
|
+
// Create state file to simulate branch switch
|
|
200
|
+
const statePath = path.join(testDir, '.cxt', '.plan-state.json');
|
|
201
|
+
await fs.writeJson(statePath, { lastBranch: 'feature-branch' });
|
|
202
|
+
// Switch to new branch (simulated)
|
|
203
|
+
const { execSync } = require('child_process');
|
|
204
|
+
execSync('git checkout -b main', { cwd: testDir });
|
|
205
|
+
await manager.syncPlan({ silent: true });
|
|
206
|
+
// Plan should be backed up (default behavior)
|
|
207
|
+
const backupPath = path.join(testDir, '.cxt', '.plan-history', 'feature-branch.md');
|
|
208
|
+
expect(await fs.pathExists(backupPath)).toBe(true);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
169
211
|
});
|
|
170
212
|
//# sourceMappingURL=plan-manager.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/plan-manager.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA8C;AAC9C,sDAAkD;AAClD,6CAA+B;AAC/B,2CAA6B;AAC7B,uCAAyB;AAGzB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAe,CAAC;IACpB,IAAI,OAAsB,CAAC;IAC3B,IAAI,OAAoB,CAAC;IACzB,IAAI,MAAiB,CAAC;IAEtB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,wBAAwB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5B,sBAAsB;QACtB,OAAO,GAAG,IAAI,8BAAa,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE9B,2BAA2B;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,QAAQ,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,QAAQ,CAAC,0CAA0C,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvE,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE3B,iBAAiB;QACjB,MAAM,GAAG;YACP,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,OAAO;YACb,eAAe,EAAE;gBACf,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,IAAI;gBACjB,kBAAkB,EAAE,KAAK;gBACzB,YAAY,EAAE,IAAI;aACnB;YACD,eAAe,EAAE;gBACf,gBAAgB,EAAE,IAAI;gBACtB,
|
|
1
|
+
{"version":3,"file":"plan-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/plan-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -141,26 +141,11 @@ This is a short description.
|
|
|
141
141
|
await fs.writeFile(path.join(cxtDir, 'context.md'), contextContent);
|
|
142
142
|
await fs.writeFile(path.join(cxtDir, 'plan.md'), planContent);
|
|
143
143
|
const health = await validationEngine.checkHealth();
|
|
144
|
-
// Should return health status
|
|
144
|
+
// Should return health status
|
|
145
145
|
expect(health).toBeDefined();
|
|
146
|
-
expect(health
|
|
147
|
-
expect(health
|
|
148
|
-
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
describe('getAlignmentStatus', () => {
|
|
152
|
-
it('should return aligned status for matching content', async () => {
|
|
153
|
-
const cxtDir = path.join(testDir, '.cxt');
|
|
154
|
-
await fs.ensureDir(cxtDir);
|
|
155
|
-
const content = `# Test Content
|
|
156
|
-
## Section
|
|
157
|
-
- Item 1
|
|
158
|
-
- Item 2
|
|
159
|
-
`;
|
|
160
|
-
await fs.writeFile(path.join(cxtDir, 'context.md'), content);
|
|
161
|
-
await fs.writeFile(path.join(cxtDir, 'plan.md'), content);
|
|
162
|
-
const health = await validationEngine.checkHealth();
|
|
163
|
-
expect(health.alignments.contextToPlan).toBeDefined();
|
|
146
|
+
expect(health).toHaveProperty('overall');
|
|
147
|
+
expect(health).toHaveProperty('issues');
|
|
148
|
+
expect(health).toHaveProperty('suggestions');
|
|
164
149
|
});
|
|
165
150
|
});
|
|
166
151
|
});
|