@pennyfarthing/core 9.3.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/cyclist.d.ts +1 -1
- package/dist/cli/commands/cyclist.d.ts.map +1 -1
- package/dist/cli/commands/cyclist.js +15 -25
- package/dist/cli/commands/cyclist.js.map +1 -1
- package/dist/cli/commands/cyclist.test.js +12 -8
- package/dist/cli/commands/cyclist.test.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +149 -15
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/e2e-fresh-install.test.d.ts +19 -0
- package/dist/cli/commands/e2e-fresh-install.test.d.ts.map +1 -0
- package/dist/cli/commands/e2e-fresh-install.test.js +395 -0
- package/dist/cli/commands/e2e-fresh-install.test.js.map +1 -0
- package/dist/cli/commands/e2e-upgrade.test.d.ts +22 -0
- package/dist/cli/commands/e2e-upgrade.test.d.ts.map +1 -0
- package/dist/cli/commands/e2e-upgrade.test.js +562 -0
- package/dist/cli/commands/e2e-upgrade.test.js.map +1 -0
- package/dist/cli/commands/init-consolidation.test.d.ts +17 -0
- package/dist/cli/commands/init-consolidation.test.d.ts.map +1 -0
- package/dist/cli/commands/init-consolidation.test.js +217 -0
- package/dist/cli/commands/init-consolidation.test.js.map +1 -0
- package/dist/cli/commands/init.js +18 -15
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/persona-config-consolidation.test.d.ts +18 -0
- package/dist/cli/commands/persona-config-consolidation.test.d.ts.map +1 -0
- package/dist/cli/commands/persona-config-consolidation.test.js +230 -0
- package/dist/cli/commands/persona-config-consolidation.test.js.map +1 -0
- package/dist/cli/commands/theme.js +2 -2
- package/dist/cli/commands/theme.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +2 -1
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/update-consolidation.test.d.ts +19 -0
- package/dist/cli/commands/update-consolidation.test.d.ts.map +1 -0
- package/dist/cli/commands/update-consolidation.test.js +572 -0
- package/dist/cli/commands/update-consolidation.test.js.map +1 -0
- package/dist/cli/commands/update.d.ts +25 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +128 -11
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/utils/manifest.d.ts +3 -3
- package/dist/cli/utils/manifest.d.ts.map +1 -1
- package/dist/cli/utils/manifest.js +21 -12
- package/dist/cli/utils/manifest.js.map +1 -1
- package/dist/cli/utils/settings-consolidation.test.d.ts +13 -0
- package/dist/cli/utils/settings-consolidation.test.d.ts.map +1 -0
- package/dist/cli/utils/settings-consolidation.test.js +227 -0
- package/dist/cli/utils/settings-consolidation.test.js.map +1 -0
- package/dist/cli/utils/settings.d.ts +11 -0
- package/dist/cli/utils/settings.d.ts.map +1 -1
- package/dist/cli/utils/settings.js +59 -6
- package/dist/cli/utils/settings.js.map +1 -1
- package/dist/cli/utils/themes.d.ts +3 -3
- package/dist/cli/utils/themes.d.ts.map +1 -1
- package/dist/cli/utils/themes.js +14 -12
- package/dist/cli/utils/themes.js.map +1 -1
- package/dist/cli/utils/themes.test.d.ts +2 -2
- package/dist/cli/utils/themes.test.js +29 -13
- package/dist/cli/utils/themes.test.js.map +1 -1
- package/dist/workflow/complete-step-integration.test.d.ts +13 -0
- package/dist/workflow/complete-step-integration.test.d.ts.map +1 -0
- package/dist/workflow/complete-step-integration.test.js +163 -0
- package/dist/workflow/complete-step-integration.test.js.map +1 -0
- package/dist/workflow/handoff.test.js +2 -2
- package/dist/workflow/handoff.test.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +6 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/workflow-stepped-schema.test.js +1 -1
- package/dist/workflow/workflow-stepped-schema.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for MSSCI-14367: Move persona-config.yaml into .pennyfarthing
|
|
3
|
+
*
|
|
4
|
+
* These tests verify that persona/theme configuration is consolidated to
|
|
5
|
+
* .pennyfarthing/config.local.yaml exclusively, with legacy .claude/persona-config.yaml
|
|
6
|
+
* handled through doctor migration.
|
|
7
|
+
*
|
|
8
|
+
* Acceptance Criteria:
|
|
9
|
+
* AC1: All persona config reads use .pennyfarthing/config.local.yaml as the canonical location
|
|
10
|
+
* AC2: Legacy .claude/persona-config.yaml is no longer written to by init
|
|
11
|
+
* AC3: Doctor detects .claude/persona-config.yaml at old location and migrates it
|
|
12
|
+
* AC4: All code paths that reference .claude/persona-config.yaml are updated
|
|
13
|
+
* AC5: Backward compatibility: existing installs with old location are handled gracefully
|
|
14
|
+
*
|
|
15
|
+
* Run with: cd packages/core && npm run build && npm test
|
|
16
|
+
*/
|
|
17
|
+
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
18
|
+
import assert from 'node:assert';
|
|
19
|
+
import { existsSync, mkdirSync, writeFileSync, rmSync, readFileSync, } from 'fs';
|
|
20
|
+
import { join } from 'path';
|
|
21
|
+
import { tmpdir } from 'os';
|
|
22
|
+
import { stringify as yamlStringify, parse as yamlParse } from 'yaml';
|
|
23
|
+
import { getCurrentTheme } from '../utils/themes.js';
|
|
24
|
+
import { checkLegacyFiles } from './doctor.js';
|
|
25
|
+
import { migrateTemplateFiles } from './update.js';
|
|
26
|
+
describe('MSSCI-14367: Move persona-config.yaml into .pennyfarthing', () => {
|
|
27
|
+
let testDir;
|
|
28
|
+
let claudeDir;
|
|
29
|
+
let pennyfarthingDir;
|
|
30
|
+
beforeEach(() => {
|
|
31
|
+
testDir = join(tmpdir(), `pf-persona-config-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
32
|
+
claudeDir = join(testDir, '.claude');
|
|
33
|
+
pennyfarthingDir = join(testDir, '.pennyfarthing');
|
|
34
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
35
|
+
mkdirSync(pennyfarthingDir, { recursive: true });
|
|
36
|
+
});
|
|
37
|
+
afterEach(() => {
|
|
38
|
+
if (existsSync(testDir)) {
|
|
39
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
// ─── AC1: Canonical reads from .pennyfarthing/ ────────────────────
|
|
43
|
+
describe('AC1: All persona config reads use .pennyfarthing/config.local.yaml', () => {
|
|
44
|
+
it('getCurrentTheme() should read from .pennyfarthing/config.local.yaml', () => {
|
|
45
|
+
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify({ theme: 'game-of-thrones' }));
|
|
46
|
+
const result = getCurrentTheme(testDir);
|
|
47
|
+
assert.strictEqual(result, 'game-of-thrones', 'Should read theme from .pennyfarthing/config.local.yaml');
|
|
48
|
+
});
|
|
49
|
+
it('getCurrentTheme() should NOT fall back to .claude/persona-config.yaml', () => {
|
|
50
|
+
// AC1: .claude/persona-config.yaml should no longer be a fallback source
|
|
51
|
+
// Only .pennyfarthing/config.local.yaml is canonical
|
|
52
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'legacy-theme' }));
|
|
53
|
+
const result = getCurrentTheme(testDir);
|
|
54
|
+
assert.strictEqual(result, null, 'Should NOT fall back to .claude/persona-config.yaml — only .pennyfarthing/config.local.yaml is canonical');
|
|
55
|
+
});
|
|
56
|
+
it('getCurrentTheme() should return null when no .pennyfarthing/config.local.yaml exists', () => {
|
|
57
|
+
// No config files at all
|
|
58
|
+
const result = getCurrentTheme(testDir);
|
|
59
|
+
assert.strictEqual(result, null, 'Should return null when .pennyfarthing/config.local.yaml does not exist');
|
|
60
|
+
});
|
|
61
|
+
it('getCurrentTheme() should ignore .claude/persona-config.yaml even if it has content', () => {
|
|
62
|
+
// Both files exist, but persona-config.yaml at .claude/ should be completely ignored
|
|
63
|
+
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify({ theme: 'star-trek' }));
|
|
64
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'should-be-ignored' }));
|
|
65
|
+
const result = getCurrentTheme(testDir);
|
|
66
|
+
assert.strictEqual(result, 'star-trek', 'Should use .pennyfarthing/config.local.yaml and completely ignore .claude/persona-config.yaml');
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
// ─── AC2: Init no longer writes persona-config.yaml to .claude/ ───
|
|
70
|
+
describe('AC2: Init does not write persona-config to legacy location', () => {
|
|
71
|
+
it('init should write persona-config.yaml to .pennyfarthing/ not .claude/', () => {
|
|
72
|
+
// Simulate what init does: write template to .pennyfarthing/persona-config.yaml
|
|
73
|
+
writeFileSync(join(pennyfarthingDir, 'persona-config.yaml'), yamlStringify({ theme: 'minimalist' }));
|
|
74
|
+
// Verify init did NOT create legacy file
|
|
75
|
+
assert.ok(!existsSync(join(claudeDir, 'persona-config.yaml')), 'Init should NOT create .claude/persona-config.yaml');
|
|
76
|
+
// Theme should be readable from the new location
|
|
77
|
+
const theme = getCurrentTheme(testDir);
|
|
78
|
+
assert.strictEqual(theme, 'minimalist', 'Theme should be readable from .pennyfarthing/persona-config.yaml');
|
|
79
|
+
});
|
|
80
|
+
it('getCurrentTheme should read .pennyfarthing/persona-config.yaml as project default', () => {
|
|
81
|
+
// When only .pennyfarthing/persona-config.yaml exists (set via --global or init),
|
|
82
|
+
// getCurrentTheme should find it as a fallback
|
|
83
|
+
writeFileSync(join(pennyfarthingDir, 'persona-config.yaml'), yamlStringify({ theme: 'game-of-thrones' }));
|
|
84
|
+
const result = getCurrentTheme(testDir);
|
|
85
|
+
assert.strictEqual(result, 'game-of-thrones', '.pennyfarthing/persona-config.yaml should serve as project default');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
// ─── AC3: Doctor detects and migrates legacy persona-config.yaml ───
|
|
89
|
+
describe('AC3: Doctor detects legacy persona-config.yaml and migrates to config.local.yaml', () => {
|
|
90
|
+
it('should detect legacy .claude/persona-config.yaml and offer migration', () => {
|
|
91
|
+
// Legacy persona-config exists but no config.local.yaml
|
|
92
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'discworld' }));
|
|
93
|
+
const results = checkLegacyFiles(testDir);
|
|
94
|
+
const legacyResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
95
|
+
assert.ok(legacyResult, 'Should detect legacy persona-config.yaml');
|
|
96
|
+
assert.strictEqual(legacyResult.status, 'warn', 'Should warn about legacy config');
|
|
97
|
+
assert.ok(legacyResult.fix, 'Should provide a fix function');
|
|
98
|
+
});
|
|
99
|
+
it('fix should migrate theme from .claude/persona-config.yaml to .pennyfarthing/config.local.yaml', () => {
|
|
100
|
+
// Setup: legacy config with theme
|
|
101
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'discworld' }));
|
|
102
|
+
const results = checkLegacyFiles(testDir);
|
|
103
|
+
const legacyResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
104
|
+
assert.ok(legacyResult?.fix, 'Should have fix function');
|
|
105
|
+
// Execute the fix
|
|
106
|
+
legacyResult.fix();
|
|
107
|
+
// Verify theme was migrated to config.local.yaml
|
|
108
|
+
const configPath = join(pennyfarthingDir, 'config.local.yaml');
|
|
109
|
+
assert.ok(existsSync(configPath), 'config.local.yaml should be created with migrated theme');
|
|
110
|
+
const config = yamlParse(readFileSync(configPath, 'utf8'));
|
|
111
|
+
assert.strictEqual(config.theme, 'discworld', 'Theme should be migrated from legacy persona-config.yaml to config.local.yaml');
|
|
112
|
+
});
|
|
113
|
+
it('fix should remove legacy .claude/persona-config.yaml after migration', () => {
|
|
114
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'discworld' }));
|
|
115
|
+
const results = checkLegacyFiles(testDir);
|
|
116
|
+
const legacyResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
117
|
+
assert.ok(legacyResult?.fix, 'Should have fix function');
|
|
118
|
+
legacyResult.fix();
|
|
119
|
+
assert.ok(!existsSync(join(claudeDir, 'persona-config.yaml')), 'Legacy persona-config.yaml should be removed after migration');
|
|
120
|
+
});
|
|
121
|
+
it('fix should merge theme into existing config.local.yaml without clobbering', () => {
|
|
122
|
+
// Setup: existing config.local.yaml with workflow settings
|
|
123
|
+
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify({ workflow: { permission_mode: 'accept', relay_mode: true } }));
|
|
124
|
+
// Legacy config with theme
|
|
125
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'star-wars' }));
|
|
126
|
+
const results = checkLegacyFiles(testDir);
|
|
127
|
+
const legacyResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
128
|
+
assert.ok(legacyResult?.fix, 'Should have fix function');
|
|
129
|
+
legacyResult.fix();
|
|
130
|
+
// Verify both theme and workflow settings are preserved
|
|
131
|
+
const config = yamlParse(readFileSync(join(pennyfarthingDir, 'config.local.yaml'), 'utf8'));
|
|
132
|
+
assert.strictEqual(config.theme, 'star-wars', 'Theme should be migrated');
|
|
133
|
+
assert.strictEqual(config.workflow?.permission_mode, 'accept', 'Existing workflow settings should be preserved');
|
|
134
|
+
assert.strictEqual(config.workflow?.relay_mode, true, 'Existing relay_mode should be preserved');
|
|
135
|
+
});
|
|
136
|
+
it('fix should NOT overwrite existing theme in config.local.yaml', () => {
|
|
137
|
+
// Setup: config.local.yaml already has a theme
|
|
138
|
+
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify({ theme: 'already-set' }));
|
|
139
|
+
// Legacy config with different theme
|
|
140
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'legacy-theme' }));
|
|
141
|
+
const results = checkLegacyFiles(testDir);
|
|
142
|
+
const legacyResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
143
|
+
if (legacyResult?.fix) {
|
|
144
|
+
legacyResult.fix();
|
|
145
|
+
}
|
|
146
|
+
// Existing theme in config.local.yaml should NOT be overwritten
|
|
147
|
+
const config = yamlParse(readFileSync(join(pennyfarthingDir, 'config.local.yaml'), 'utf8'));
|
|
148
|
+
assert.strictEqual(config.theme, 'already-set', 'Should NOT overwrite existing theme in config.local.yaml');
|
|
149
|
+
});
|
|
150
|
+
it('should detect legacy persona-config.yaml even when config.local.yaml exists', () => {
|
|
151
|
+
// Both exist — doctor should still detect the legacy file for cleanup
|
|
152
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'old-theme' }));
|
|
153
|
+
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify({ theme: 'current-theme' }));
|
|
154
|
+
const results = checkLegacyFiles(testDir);
|
|
155
|
+
const legacyResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
156
|
+
assert.ok(legacyResult, 'Should detect legacy config even when config.local.yaml exists');
|
|
157
|
+
assert.strictEqual(legacyResult.status, 'warn');
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
// ─── AC4: All code paths updated ──────────────────────────────────
|
|
161
|
+
describe('AC4: No code paths reference .claude/persona-config.yaml for reading', () => {
|
|
162
|
+
it('getCurrentTheme() should be the single entry point for theme reads', () => {
|
|
163
|
+
// This test verifies getCurrentTheme() behavior is self-consistent
|
|
164
|
+
// with ONLY .pennyfarthing/config.local.yaml as source
|
|
165
|
+
// Setup: write theme at canonical location
|
|
166
|
+
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify({ theme: 'star-trek' }));
|
|
167
|
+
const result = getCurrentTheme(testDir);
|
|
168
|
+
assert.strictEqual(result, 'star-trek');
|
|
169
|
+
// Now remove it — should return null (no fallback)
|
|
170
|
+
rmSync(join(pennyfarthingDir, 'config.local.yaml'));
|
|
171
|
+
const afterRemoval = getCurrentTheme(testDir);
|
|
172
|
+
assert.strictEqual(afterRemoval, null, 'After removing config.local.yaml, getCurrentTheme should return null (no fallback to .claude/)');
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
// ─── AC5: Backward compatibility ─────────────────────────────────
|
|
176
|
+
describe('AC5: Backward compatibility for existing installs', () => {
|
|
177
|
+
it('doctor --fix should handle migration for installs with only .claude/persona-config.yaml', () => {
|
|
178
|
+
// Simulate an old install: only legacy config, no .pennyfarthing/config.local.yaml
|
|
179
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'game-of-thrones' }));
|
|
180
|
+
// No config.local.yaml exists
|
|
181
|
+
const results = checkLegacyFiles(testDir);
|
|
182
|
+
const legacyResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
183
|
+
// Doctor should detect this and offer a fix
|
|
184
|
+
assert.ok(legacyResult, 'Should detect legacy-only install');
|
|
185
|
+
assert.ok(legacyResult.fix, 'Should offer migration fix');
|
|
186
|
+
// After fix, theme should be accessible through canonical path
|
|
187
|
+
legacyResult.fix();
|
|
188
|
+
const theme = getCurrentTheme(testDir);
|
|
189
|
+
assert.strictEqual(theme, 'game-of-thrones', 'After doctor --fix, theme should be readable from canonical location');
|
|
190
|
+
});
|
|
191
|
+
it('update migrateTemplateFiles should move persona-config.yaml to .pennyfarthing/', () => {
|
|
192
|
+
// The update command's migrateTemplateFiles already handles this migration
|
|
193
|
+
// Verify the migration map includes persona-config.yaml
|
|
194
|
+
// This is already covered by update-consolidation.test.ts but we verify the
|
|
195
|
+
// expected behavior here
|
|
196
|
+
// Setup legacy file
|
|
197
|
+
writeFileSync(join(claudeDir, 'persona-config.yaml'), yamlStringify({ theme: 'star-wars' }));
|
|
198
|
+
// Note: migrateTemplateFiles moves .claude/persona-config.yaml → .pennyfarthing/persona-config.yaml
|
|
199
|
+
// This is the template file migration, NOT the config.local.yaml migration
|
|
200
|
+
migrateTemplateFiles(testDir, {});
|
|
201
|
+
assert.ok(existsSync(join(pennyfarthingDir, 'persona-config.yaml')), 'migrateTemplateFiles should move persona-config.yaml to .pennyfarthing/');
|
|
202
|
+
assert.ok(!existsSync(join(claudeDir, 'persona-config.yaml')), 'Legacy persona-config.yaml should be removed after template migration');
|
|
203
|
+
});
|
|
204
|
+
it('fresh install should not create .claude/persona-config.yaml at all', () => {
|
|
205
|
+
// On fresh install, init writes persona-config.yaml to .pennyfarthing/
|
|
206
|
+
// There should be NO .claude/persona-config.yaml created
|
|
207
|
+
// This is already the case (line 331 in init.ts points to .pennyfarthing/)
|
|
208
|
+
// but we verify the expectation
|
|
209
|
+
// Simulate what init does: write template to .pennyfarthing/persona-config.yaml
|
|
210
|
+
writeFileSync(join(pennyfarthingDir, 'persona-config.yaml'), yamlStringify({ theme: 'minimalist' }));
|
|
211
|
+
assert.ok(!existsSync(join(claudeDir, 'persona-config.yaml')), 'Fresh install should NOT create .claude/persona-config.yaml');
|
|
212
|
+
assert.ok(existsSync(join(pennyfarthingDir, 'persona-config.yaml')), 'Fresh install should create .pennyfarthing/persona-config.yaml');
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
// ─── Doctor persona-config check location ─────────────────────────
|
|
216
|
+
describe('Doctor persona-config check should reference .pennyfarthing/', () => {
|
|
217
|
+
it('doctor legacy check should not flag .pennyfarthing/ files as legacy', () => {
|
|
218
|
+
// Setup: theme configured at canonical location ONLY
|
|
219
|
+
writeFileSync(join(pennyfarthingDir, 'config.local.yaml'), yamlStringify({ theme: 'game-of-thrones' }));
|
|
220
|
+
// checkLegacyFiles should NOT produce any warnings when config is only at .pennyfarthing/
|
|
221
|
+
const results = checkLegacyFiles(testDir);
|
|
222
|
+
const personaResult = results.find((r) => r.name === 'legacy/.claude/persona-config.yaml');
|
|
223
|
+
assert.strictEqual(personaResult, undefined, 'Doctor should not flag .pennyfarthing/ config as legacy');
|
|
224
|
+
// Theme should still be readable
|
|
225
|
+
const theme = getCurrentTheme(testDir);
|
|
226
|
+
assert.strictEqual(theme, 'game-of-thrones', 'Theme should be detectable from .pennyfarthing/config.local.yaml');
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
//# sourceMappingURL=persona-config-consolidation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-config-consolidation.test.js","sourceRoot":"","sources":["../../../src/cli/commands/persona-config-consolidation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,14 @@ import { getThemes, getCurrentTheme, getAgentSamples, setTheme, createTheme } fr
|
|
|
4
4
|
import { manifestExists } from '../utils/manifest.js';
|
|
5
5
|
/**
|
|
6
6
|
* Check if a directory is a Pennyfarthing project root
|
|
7
|
-
* Either has a manifest OR has .
|
|
7
|
+
* Either has a manifest OR has .pennyfarthing/persona-config.yaml (self-development case)
|
|
8
8
|
*/
|
|
9
9
|
function isPennyfarthingRoot(dir) {
|
|
10
10
|
if (manifestExists(dir)) {
|
|
11
11
|
return true;
|
|
12
12
|
}
|
|
13
13
|
// Also check for persona-config.yaml (pennyfarthing developing itself)
|
|
14
|
-
return existsSync(join(dir, '.
|
|
14
|
+
return existsSync(join(dir, '.pennyfarthing/persona-config.yaml'));
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Find the Pennyfarthing project root by walking up the directory tree
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/commands/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAa,MAAM,oBAAoB,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uEAAuE;IACvE,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/commands/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAOA,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAOA,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA8BD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuJ/E"}
|
|
@@ -20,7 +20,8 @@ const MANAGED_PATHS = [
|
|
|
20
20
|
// Project paths - only removed with --all
|
|
21
21
|
const PROJECT_PATHS = [
|
|
22
22
|
'.claude/project',
|
|
23
|
-
'.
|
|
23
|
+
'.pennyfarthing/persona-config.yaml',
|
|
24
|
+
'.pennyfarthing/config.local.yaml',
|
|
24
25
|
'.session'
|
|
25
26
|
];
|
|
26
27
|
// Always preserved - even with --all
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQ9C,iCAAiC;AACjC,wEAAwE;AACxE,MAAM,aAAa,GAAG;IACpB,uBAAuB;IACvB,gBAAgB,EAAU,UAAU;IACpC,kBAAkB,EAAQ,UAAU;IACpC,mBAAmB,EAAO,UAAU;IACpC,gBAAgB,EAAU,UAAU;IACpC,gBAAgB,EAAU,UAAU;IACpC,kBAAkB,EAAQ,UAAU;IACpC,uBAAuB;IACvB,6BAA6B;CAC9B,CAAC;AAEF,0CAA0C;AAC1C,MAAM,aAAa,GAAG;IACpB,iBAAiB;IACjB,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for MSSCI-14371: Update update command for file migration
|
|
3
|
+
*
|
|
4
|
+
* These tests verify that `pennyfarthing update` correctly migrates files
|
|
5
|
+
* from legacy locations to the consolidated .pennyfarthing/ layout.
|
|
6
|
+
*
|
|
7
|
+
* The update command must:
|
|
8
|
+
* 1. Migrate manifest from .claude/ to .pennyfarthing/
|
|
9
|
+
* 2. Use symlinks (not copies) for .pennyfarthing/ directories
|
|
10
|
+
* 3. Remove legacy .claude/{agents,guides,personas,scripts} symlinks/dirs
|
|
11
|
+
* 4. Migrate template files from .claude/project/ to .pennyfarthing/project/
|
|
12
|
+
* 5. Migrate sidecars from legacy locations
|
|
13
|
+
* 6. Be idempotent (safe to run multiple times)
|
|
14
|
+
* 7. Support dry-run mode
|
|
15
|
+
*
|
|
16
|
+
* Run with: cd packages/core && npm run build && npm test
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=update-consolidation.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-consolidation.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update-consolidation.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
|