specweave 1.0.31 → 1.0.33
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/.claude-plugin/marketplace.json +1 -1
- package/CLAUDE.md +205 -148
- package/README.md +0 -2
- package/bin/specweave.js +11 -0
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/update-instructions.d.ts +16 -0
- package/dist/src/cli/commands/update-instructions.d.ts.map +1 -0
- package/dist/src/cli/commands/update-instructions.js +134 -0
- package/dist/src/cli/commands/update-instructions.js.map +1 -0
- package/dist/src/cli/helpers/init/directory-structure.d.ts +28 -1
- package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/directory-structure.js +163 -33
- package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
- package/dist/src/cli/helpers/init/index.d.ts +2 -1
- package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/index.js +3 -1
- package/dist/src/cli/helpers/init/index.js.map +1 -1
- package/dist/src/cli/helpers/init/instruction-file-merger.d.ts +23 -0
- package/dist/src/cli/helpers/init/instruction-file-merger.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/instruction-file-merger.js +243 -0
- package/dist/src/cli/helpers/init/instruction-file-merger.js.map +1 -0
- package/dist/src/cli/helpers/init/plugin-installer.js +49 -0
- package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
- package/dist/src/config/types.d.ts +2 -2
- package/dist/src/core/living-docs/external-sync-orchestrator.d.ts +26 -0
- package/dist/src/core/living-docs/external-sync-orchestrator.d.ts.map +1 -1
- package/dist/src/core/living-docs/external-sync-orchestrator.js +61 -0
- package/dist/src/core/living-docs/external-sync-orchestrator.js.map +1 -1
- package/dist/src/core/living-docs/scaffolding/index.d.ts +12 -0
- package/dist/src/core/living-docs/scaffolding/index.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/index.js +15 -0
- package/dist/src/core/living-docs/scaffolding/index.js.map +1 -0
- package/dist/src/core/living-docs/scaffolding/merger.d.ts +183 -0
- package/dist/src/core/living-docs/scaffolding/merger.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/merger.js +523 -0
- package/dist/src/core/living-docs/scaffolding/merger.js.map +1 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.d.ts +102 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.js +346 -0
- package/dist/src/core/living-docs/scaffolding/scaffold.js.map +1 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.d.ts +108 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.d.ts.map +1 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.js +204 -0
- package/dist/src/core/living-docs/scaffolding/template-engine.js.map +1 -0
- package/dist/src/core/living-docs/sync-helpers/generators.d.ts +38 -2
- package/dist/src/core/living-docs/sync-helpers/generators.d.ts.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/generators.js +65 -10
- package/dist/src/core/living-docs/sync-helpers/generators.js.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/index.d.ts +1 -1
- package/dist/src/core/living-docs/sync-helpers/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/index.js.map +1 -1
- package/dist/src/core/tools/index.d.ts +11 -0
- package/dist/src/core/tools/index.d.ts.map +1 -0
- package/dist/src/core/tools/index.js +10 -0
- package/dist/src/core/tools/index.js.map +1 -0
- package/dist/src/core/tools/tool-event-bus.d.ts +33 -0
- package/dist/src/core/tools/tool-event-bus.d.ts.map +1 -0
- package/dist/src/core/tools/tool-event-bus.js +84 -0
- package/dist/src/core/tools/tool-event-bus.js.map +1 -0
- package/dist/src/core/tools/tool-index-builder.d.ts +27 -0
- package/dist/src/core/tools/tool-index-builder.d.ts.map +1 -0
- package/dist/src/core/tools/tool-index-builder.js +289 -0
- package/dist/src/core/tools/tool-index-builder.js.map +1 -0
- package/dist/src/core/tools/tool-registry.d.ts +51 -0
- package/dist/src/core/tools/tool-registry.d.ts.map +1 -0
- package/dist/src/core/tools/tool-registry.js +224 -0
- package/dist/src/core/tools/tool-registry.js.map +1 -0
- package/dist/src/core/tools/tool-search-engine.d.ts +22 -0
- package/dist/src/core/tools/tool-search-engine.d.ts.map +1 -0
- package/dist/src/core/tools/tool-search-engine.js +174 -0
- package/dist/src/core/tools/tool-search-engine.js.map +1 -0
- package/dist/src/core/tools/types/tool-registry-types.d.ts +112 -0
- package/dist/src/core/tools/types/tool-registry-types.d.ts.map +1 -0
- package/dist/src/core/tools/types/tool-registry-types.js +7 -0
- package/dist/src/core/tools/types/tool-registry-types.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +1 -1
- package/package.json +1 -1
- package/plugins/specweave/hooks/hooks.json +3 -13
- package/plugins/specweave/hooks/lib/common-setup.sh +47 -321
- package/plugins/specweave/hooks/lib/migrate-increment-work.sh +5 -5
- package/plugins/specweave/hooks/lib/sync-spec-content.sh +5 -5
- package/plugins/specweave/hooks/universal/dispatcher.mjs +4 -5
- package/plugins/specweave/hooks/universal/fail-fast-wrapper.sh +43 -296
- package/plugins/specweave/hooks/universal/hook-wrapper.sh +3 -1
- package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
- package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +2 -2
- package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +1 -10
- package/plugins/specweave/hooks/v2/guards/completion-guard.sh +12 -29
- package/plugins/specweave/hooks/v2/guards/increment-duplicate-guard.sh +27 -29
- package/plugins/specweave/hooks/v2/guards/metadata-json-guard.sh +10 -4
- package/plugins/specweave/hooks/v2/guards/spec-validation-guard.sh +139 -0
- package/plugins/specweave/hooks/v2/guards/task-ac-sync-guard.sh +4 -2
- package/plugins/specweave/hooks/v2/session-end.sh +3 -1
- package/plugins/specweave/hooks/v2/session-start.sh +3 -1
- package/plugins/specweave/skills/increment-planner/templates/plan.md +14 -0
- package/plugins/specweave/skills/update-instructions/SKILL.md +80 -0
- package/plugins/specweave-ado/hooks/post-living-docs-update.sh +1 -1
- package/plugins/specweave-mobile/README.md +55 -35
- package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +805 -329
- package/plugins/specweave-mobile/skills/expo-workflow/SKILL.md +226 -9
- package/plugins/specweave-mobile/skills/native-modules/SKILL.md +221 -20
- package/plugins/specweave-mobile/skills/performance-optimization/SKILL.md +186 -14
- package/plugins/specweave-mobile/skills/react-native-setup/SKILL.md +151 -54
- package/plugins/specweave-release/commands/npm.md +61 -17
- package/plugins/specweave-release/hooks/post-task-completion.sh +2 -3
- package/src/templates/AGENTS.md.template +34 -0
- package/src/templates/CLAUDE.md.template +121 -155
- package/plugins/specweave/hooks/config-env-separator.sh +0 -99
- package/plugins/specweave/hooks/github-metadata-guard.sh +0 -73
- package/plugins/specweave/hooks/lib/circuit-breaker.sh +0 -381
- package/plugins/specweave/hooks/lib/crash-prevention.sh +0 -336
- package/plugins/specweave/hooks/lib/logging.sh +0 -231
- package/plugins/specweave/hooks/lib/metrics.sh +0 -347
- package/plugins/specweave/hooks/lib/semaphore.sh +0 -216
- package/plugins/specweave/hooks/project-folder-guard.sh +0 -274
- package/plugins/specweave/hooks/spec-project-validator.sh +0 -210
- package/plugins/specweave/hooks/v2/guards/bash-file-guard.sh +0 -212
- package/plugins/specweave/hooks/v2/guards/bash-file-guard.test.sh +0 -163
- package/plugins/specweave/hooks/v2/guards/features-folder-guard.sh +0 -51
- package/plugins/specweave/hooks/v2/guards/increment-root-guard.sh +0 -63
- package/plugins/specweave/hooks/v2/guards/per-us-project-validator.sh +0 -335
- package/plugins/specweave/hooks/v2/guards/per-us-project-validator.test.sh +0 -406
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-instructions.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/update-instructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,UAAU,yBAAyB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,IAAI,CAAC,CA2Df"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update Instructions Command
|
|
3
|
+
*
|
|
4
|
+
* Smart merge for CLAUDE.md and AGENTS.md instruction files.
|
|
5
|
+
* Preserves user customizations while updating SpecWeave sections.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from '../../utils/fs-native.js';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { mergeInstructionFile, parseTemplateSections, getPackageVersion } from '../helpers/init/instruction-file-merger.js';
|
|
11
|
+
import { findSourceDir } from '../helpers/init/path-utils.js';
|
|
12
|
+
import { getDirname } from '../../utils/esm-helpers.js';
|
|
13
|
+
const __dirname = getDirname(import.meta.url);
|
|
14
|
+
/**
|
|
15
|
+
* CLI command to update CLAUDE.md and AGENTS.md with smart merge
|
|
16
|
+
*/
|
|
17
|
+
export async function updateInstructionsCommand(options = {}) {
|
|
18
|
+
const projectPath = process.cwd();
|
|
19
|
+
const version = getPackageVersion();
|
|
20
|
+
console.log(chalk.blue('\n📄 Updating Instruction Files'));
|
|
21
|
+
console.log(chalk.gray(' Version: ' + version));
|
|
22
|
+
console.log(chalk.gray(' Project: ' + projectPath + '\n'));
|
|
23
|
+
// Find templates directory
|
|
24
|
+
const templatesDir = findSourceDir('templates', __dirname);
|
|
25
|
+
if (!templatesDir || !fs.existsSync(templatesDir)) {
|
|
26
|
+
console.error(chalk.red('✗ Templates directory not found'));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
// Update CLAUDE.md
|
|
30
|
+
const claudeResult = await updateFile(projectPath, templatesDir, 'CLAUDE.md', 'claude', version, options);
|
|
31
|
+
// Update AGENTS.md
|
|
32
|
+
const agentsResult = await updateFile(projectPath, templatesDir, 'AGENTS.md', 'agents', version, options);
|
|
33
|
+
// Summary
|
|
34
|
+
console.log(chalk.blue('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
35
|
+
console.log(chalk.blue(' Summary'));
|
|
36
|
+
console.log(chalk.blue('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
|
|
37
|
+
if (claudeResult.action !== 'skipped') {
|
|
38
|
+
console.log(' CLAUDE.md: ' + formatAction(claudeResult.action));
|
|
39
|
+
if (claudeResult.preserved > 0) {
|
|
40
|
+
console.log(chalk.gray(' Preserved ' + claudeResult.preserved + ' user sections'));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (agentsResult.action !== 'skipped') {
|
|
44
|
+
console.log(' AGENTS.md: ' + formatAction(agentsResult.action));
|
|
45
|
+
if (agentsResult.preserved > 0) {
|
|
46
|
+
console.log(chalk.gray(' Preserved ' + agentsResult.preserved + ' user sections'));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (options.dryRun) {
|
|
50
|
+
console.log(chalk.yellow('\n ⚠ Dry run - no files were modified'));
|
|
51
|
+
}
|
|
52
|
+
console.log('');
|
|
53
|
+
}
|
|
54
|
+
async function updateFile(projectPath, templatesDir, filename, type, version, options) {
|
|
55
|
+
const filePath = path.join(projectPath, filename);
|
|
56
|
+
const templatePath = path.join(templatesDir, filename + '.template');
|
|
57
|
+
if (!fs.existsSync(templatePath)) {
|
|
58
|
+
if (options.verbose) {
|
|
59
|
+
console.log(chalk.gray(' ⊘ ' + filename + ': template not found, skipping'));
|
|
60
|
+
}
|
|
61
|
+
return { action: 'skipped', preserved: 0 };
|
|
62
|
+
}
|
|
63
|
+
const templateContent = fs.readFileSync(templatePath, 'utf-8');
|
|
64
|
+
const sections = parseTemplateSections(templateContent);
|
|
65
|
+
const existingContent = fs.existsSync(filePath)
|
|
66
|
+
? fs.readFileSync(filePath, 'utf-8')
|
|
67
|
+
: null;
|
|
68
|
+
// Detect project name from existing content or directory
|
|
69
|
+
const projectName = detectProjectName(existingContent, projectPath);
|
|
70
|
+
const result = mergeInstructionFile(existingContent, sections, type, version, projectName);
|
|
71
|
+
if (options.dryRun) {
|
|
72
|
+
console.log(chalk.yellow(' ○ ' + filename + ': would ' + result.action));
|
|
73
|
+
if (options.verbose && result.updated.length > 0) {
|
|
74
|
+
console.log(chalk.gray(' Would update: ' + result.updated.join(', ')));
|
|
75
|
+
}
|
|
76
|
+
if (options.verbose && result.added.length > 0) {
|
|
77
|
+
console.log(chalk.gray(' Would add: ' + result.added.join(', ')));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
fs.writeFileSync(filePath, result.content);
|
|
82
|
+
if (result.action === 'created') {
|
|
83
|
+
console.log(chalk.green(' ✓ ' + filename + ': created'));
|
|
84
|
+
}
|
|
85
|
+
else if (result.action === 'merged') {
|
|
86
|
+
console.log(chalk.blue(' ✓ ' + filename + ': merged'));
|
|
87
|
+
if (options.verbose && result.updated.length > 0) {
|
|
88
|
+
console.log(chalk.gray(' Updated: ' + result.updated.join(', ')));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (result.action === 'preserved') {
|
|
92
|
+
console.log(chalk.yellow(' ⚠ ' + filename + ': preserved (errors found)'));
|
|
93
|
+
result.warnings.forEach(w => console.log(chalk.yellow(' ' + w)));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return { action: result.action, preserved: result.preserved };
|
|
97
|
+
}
|
|
98
|
+
function detectProjectName(content, projectPath) {
|
|
99
|
+
// Try to extract from existing content
|
|
100
|
+
if (content) {
|
|
101
|
+
const match = content.match(/^#\s+(.+?)\s*[-–—]/m);
|
|
102
|
+
if (match) {
|
|
103
|
+
return match[1].trim();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Try config.json
|
|
107
|
+
const configPath = path.join(projectPath, '.specweave', 'config.json');
|
|
108
|
+
if (fs.existsSync(configPath)) {
|
|
109
|
+
try {
|
|
110
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
111
|
+
if (config.project?.name) {
|
|
112
|
+
return config.project.name;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// ignore
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Fallback to directory name
|
|
120
|
+
return path.basename(projectPath);
|
|
121
|
+
}
|
|
122
|
+
function formatAction(action) {
|
|
123
|
+
switch (action) {
|
|
124
|
+
case 'created':
|
|
125
|
+
return chalk.green('created');
|
|
126
|
+
case 'merged':
|
|
127
|
+
return chalk.blue('merged');
|
|
128
|
+
case 'preserved':
|
|
129
|
+
return chalk.yellow('preserved (manual fix needed)');
|
|
130
|
+
default:
|
|
131
|
+
return action;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=update-instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-instructions.js","sourceRoot":"","sources":["../../../../src/cli/commands/update-instructions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Directory structure creation and template copying
|
|
3
|
+
*
|
|
4
|
+
* Enhanced with smart scaffolding for living docs (v0.35.0+)
|
|
3
5
|
*/
|
|
4
6
|
import type { SupportedLanguage } from '../../../core/i18n/types.js';
|
|
5
7
|
import type { TestMode } from './types.js';
|
|
8
|
+
import { type DetectedDoc } from '../../../core/living-docs/scaffolding/index.js';
|
|
6
9
|
/**
|
|
7
10
|
* Create the .specweave directory structure
|
|
8
11
|
*
|
|
12
|
+
* Enhanced with smart living docs scaffolding:
|
|
13
|
+
* - Creates full docs structure with README files
|
|
14
|
+
* - Detects project ID from git remote
|
|
15
|
+
* - Scans for existing documentation to merge
|
|
16
|
+
*
|
|
9
17
|
* @param targetDir - Target directory
|
|
10
18
|
* @param _adapterName - Adapter name (unused, kept for API compatibility)
|
|
19
|
+
* @param options - Optional scaffolding options
|
|
20
|
+
* @returns Promise that resolves when scaffolding is complete
|
|
21
|
+
*/
|
|
22
|
+
export declare function createDirectoryStructure(targetDir: string, _adapterName: string, options?: {
|
|
23
|
+
projectName?: string;
|
|
24
|
+
scanExistingDocs?: boolean;
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Scan for existing documentation and suggest merges
|
|
28
|
+
*
|
|
29
|
+
* Call this after createDirectoryStructure to detect existing docs
|
|
30
|
+
* that could be imported into living docs.
|
|
31
|
+
*
|
|
32
|
+
* @param targetDir - Target directory
|
|
33
|
+
* @returns Detected documentation files with merge suggestions
|
|
11
34
|
*/
|
|
12
|
-
export declare function
|
|
35
|
+
export declare function scanAndSuggestMerges(targetDir: string): Promise<{
|
|
36
|
+
detected: DetectedDoc[];
|
|
37
|
+
suggestions: Map<string, DetectedDoc[]>;
|
|
38
|
+
similarFolders: Map<string, string[]>;
|
|
39
|
+
}>;
|
|
13
40
|
/**
|
|
14
41
|
* Copy templates and generate CLAUDE.md and AGENTS.md
|
|
15
42
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory-structure.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/directory-structure.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"directory-structure.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/directory-structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,gDAAgD,CAAC;AAGxD;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,IAAI,CAAC,CAsCf;AA4BD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACrE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACxC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACvC,CAAC,CAsBD;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,iBAAwB,GACjC,OAAO,CAAC,IAAI,CAAC,CAkIf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,GAAE,OAAc,EACjC,QAAQ,CAAC,EAAE,QAAQ,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,IAAI,CAuFN"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Directory structure creation and template copying
|
|
3
|
+
*
|
|
4
|
+
* Enhanced with smart scaffolding for living docs (v0.35.0+)
|
|
3
5
|
*/
|
|
4
6
|
import * as fs from '../../../utils/fs-native.js';
|
|
5
7
|
import * as path from 'path';
|
|
@@ -8,32 +10,112 @@ import { ClaudeMdGenerator } from '../../../adapters/claude-md-generator.js';
|
|
|
8
10
|
import { AgentsMdGenerator } from '../../../adapters/agents-md-generator.js';
|
|
9
11
|
import { getLocaleManager } from '../../../core/i18n/locale-manager.js';
|
|
10
12
|
import { findSourceDir, findPackageRoot } from './path-utils.js';
|
|
13
|
+
import { mergeInstructionFile, parseTemplateSections, getPackageVersion } from './instruction-file-merger.js';
|
|
14
|
+
import { LivingDocsScaffold, scanExistingDocs, findSimilarFolders, } from '../../../core/living-docs/scaffolding/index.js';
|
|
15
|
+
import { consoleLogger } from '../../../utils/logger.js';
|
|
11
16
|
/**
|
|
12
17
|
* Create the .specweave directory structure
|
|
13
18
|
*
|
|
19
|
+
* Enhanced with smart living docs scaffolding:
|
|
20
|
+
* - Creates full docs structure with README files
|
|
21
|
+
* - Detects project ID from git remote
|
|
22
|
+
* - Scans for existing documentation to merge
|
|
23
|
+
*
|
|
14
24
|
* @param targetDir - Target directory
|
|
15
25
|
* @param _adapterName - Adapter name (unused, kept for API compatibility)
|
|
26
|
+
* @param options - Optional scaffolding options
|
|
27
|
+
* @returns Promise that resolves when scaffolding is complete
|
|
16
28
|
*/
|
|
17
|
-
export function createDirectoryStructure(targetDir, _adapterName) {
|
|
18
|
-
|
|
19
|
-
|
|
29
|
+
export async function createDirectoryStructure(targetDir, _adapterName, options) {
|
|
30
|
+
// Core directories (created first for immediate availability)
|
|
31
|
+
const coreDirectories = [
|
|
20
32
|
'.specweave/increments',
|
|
21
|
-
'.specweave/cache',
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
'.specweave/cache',
|
|
34
|
+
'.specweave/state',
|
|
35
|
+
];
|
|
36
|
+
coreDirectories.forEach((dir) => {
|
|
37
|
+
fs.mkdirSync(path.join(targetDir, dir), { recursive: true });
|
|
38
|
+
});
|
|
39
|
+
// Use smart scaffolding for living docs structure
|
|
40
|
+
const scaffold = new LivingDocsScaffold({
|
|
41
|
+
projectPath: targetDir,
|
|
42
|
+
projectName: options?.projectName,
|
|
43
|
+
logger: consoleLogger,
|
|
44
|
+
overwrite: false,
|
|
45
|
+
});
|
|
46
|
+
try {
|
|
47
|
+
// Properly await scaffold completion
|
|
48
|
+
const result = await scaffold.scaffold();
|
|
49
|
+
if (result.success) {
|
|
50
|
+
console.log(chalk.green(' ✓ Living docs structure created'));
|
|
51
|
+
if (result.dirsCreated.length > 0) {
|
|
52
|
+
console.log(chalk.gray(` ${result.dirsCreated.length} directories created`));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log(chalk.yellow(' ⚠ Living docs scaffolding had errors:'));
|
|
57
|
+
result.errors.forEach(err => console.log(chalk.gray(' ' + err)));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Fallback to basic structure if scaffolding fails
|
|
62
|
+
console.log(chalk.yellow(' ⚠ Smart scaffolding failed, using basic structure'));
|
|
63
|
+
createBasicDocsStructure(targetDir);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Fallback: Create basic docs structure without scaffolding
|
|
68
|
+
*/
|
|
69
|
+
function createBasicDocsStructure(targetDir) {
|
|
70
|
+
const directories = [
|
|
71
|
+
'.specweave/docs/internal/strategy',
|
|
72
|
+
'.specweave/docs/internal/specs',
|
|
73
|
+
'.specweave/docs/internal/architecture',
|
|
74
|
+
'.specweave/docs/internal/architecture/adr',
|
|
75
|
+
'.specweave/docs/internal/architecture/diagrams',
|
|
76
|
+
'.specweave/docs/internal/delivery',
|
|
77
|
+
'.specweave/docs/internal/operations',
|
|
78
|
+
'.specweave/docs/internal/governance',
|
|
79
|
+
'.specweave/docs/internal/modules',
|
|
80
|
+
'.specweave/docs/internal/organization',
|
|
81
|
+
'.specweave/docs/public',
|
|
82
|
+
'.specweave/docs/public/overview',
|
|
83
|
+
'.specweave/docs/public/api',
|
|
84
|
+
'.specweave/docs/public/guides',
|
|
32
85
|
];
|
|
33
86
|
directories.forEach((dir) => {
|
|
34
87
|
fs.mkdirSync(path.join(targetDir, dir), { recursive: true });
|
|
35
88
|
});
|
|
36
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Scan for existing documentation and suggest merges
|
|
92
|
+
*
|
|
93
|
+
* Call this after createDirectoryStructure to detect existing docs
|
|
94
|
+
* that could be imported into living docs.
|
|
95
|
+
*
|
|
96
|
+
* @param targetDir - Target directory
|
|
97
|
+
* @returns Detected documentation files with merge suggestions
|
|
98
|
+
*/
|
|
99
|
+
export async function scanAndSuggestMerges(targetDir) {
|
|
100
|
+
const detected = await scanExistingDocs({
|
|
101
|
+
projectPath: targetDir,
|
|
102
|
+
recursive: true,
|
|
103
|
+
maxDepth: 5,
|
|
104
|
+
minConfidence: 0.3,
|
|
105
|
+
logger: consoleLogger,
|
|
106
|
+
});
|
|
107
|
+
const similarFolders = findSimilarFolders(targetDir, detected);
|
|
108
|
+
// Group by suggested target
|
|
109
|
+
const suggestions = new Map();
|
|
110
|
+
for (const doc of detected) {
|
|
111
|
+
const target = doc.suggestedTarget;
|
|
112
|
+
if (!suggestions.has(target)) {
|
|
113
|
+
suggestions.set(target, []);
|
|
114
|
+
}
|
|
115
|
+
suggestions.get(target).push(doc);
|
|
116
|
+
}
|
|
117
|
+
return { detected, suggestions, similarFolders };
|
|
118
|
+
}
|
|
37
119
|
/**
|
|
38
120
|
* Copy templates and generate CLAUDE.md and AGENTS.md
|
|
39
121
|
*
|
|
@@ -72,27 +154,75 @@ export async function copyTemplates(templatesDir, targetDir, projectName, langua
|
|
|
72
154
|
readme = readme.replace(/{{PROJECT_NAME}}/g, projectName);
|
|
73
155
|
fs.writeFileSync(path.join(targetDir, 'README.md'), readme);
|
|
74
156
|
}
|
|
75
|
-
// Generate CLAUDE.md
|
|
76
|
-
const
|
|
77
|
-
const agentsDir = findSourceDir('agents', templatesDir);
|
|
78
|
-
const commandsDir = findSourceDir('commands', templatesDir);
|
|
157
|
+
// Generate/Merge CLAUDE.md with smart preservation of user content
|
|
158
|
+
const claudeMdPath = path.join(targetDir, 'CLAUDE.md');
|
|
79
159
|
const claudeMdTemplatePath = path.normalize(path.join(templatesDir, 'CLAUDE.md.template'));
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
160
|
+
if (fs.existsSync(claudeMdTemplatePath)) {
|
|
161
|
+
const templateContent = fs.readFileSync(claudeMdTemplatePath, 'utf-8');
|
|
162
|
+
const sections = parseTemplateSections(templateContent);
|
|
163
|
+
const existingContent = fs.existsSync(claudeMdPath)
|
|
164
|
+
? fs.readFileSync(claudeMdPath, 'utf-8')
|
|
165
|
+
: null;
|
|
166
|
+
const mergeResult = mergeInstructionFile(existingContent, sections, 'claude', getPackageVersion(), projectName);
|
|
167
|
+
fs.writeFileSync(claudeMdPath, mergeResult.content);
|
|
168
|
+
// Log merge action for user visibility
|
|
169
|
+
if (mergeResult.action === 'merged') {
|
|
170
|
+
console.log(chalk.blue(' ✓ CLAUDE.md merged (preserved ' + mergeResult.preserved + ' user sections)'));
|
|
171
|
+
if (mergeResult.updated.length > 0) {
|
|
172
|
+
console.log(chalk.gray(' Updated: ' + mergeResult.updated.join(', ')));
|
|
173
|
+
}
|
|
174
|
+
if (mergeResult.warnings.length > 0) {
|
|
175
|
+
mergeResult.warnings.forEach(w => console.log(chalk.yellow(' ⚠ ' + w)));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else if (mergeResult.action === 'created') {
|
|
179
|
+
console.log(chalk.green(' ✓ CLAUDE.md created'));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
// Fallback to old generator if template not found
|
|
184
|
+
const skillsDir = findSourceDir('skills', templatesDir);
|
|
185
|
+
const agentsDir = findSourceDir('agents', templatesDir);
|
|
186
|
+
const commandsDir = findSourceDir('commands', templatesDir);
|
|
187
|
+
const claudeGen = new ClaudeMdGenerator(skillsDir, agentsDir, commandsDir);
|
|
188
|
+
const claudeMd = await claudeGen.generate({
|
|
189
|
+
projectName,
|
|
190
|
+
projectPath: targetDir,
|
|
191
|
+
templatePath: undefined
|
|
192
|
+
});
|
|
193
|
+
fs.writeFileSync(claudeMdPath, claudeMd);
|
|
194
|
+
}
|
|
195
|
+
// Generate/Merge AGENTS.md with smart preservation of user content
|
|
196
|
+
const agentsMdPath = path.join(targetDir, 'AGENTS.md');
|
|
88
197
|
const agentsMdTemplatePath = path.normalize(path.join(templatesDir, 'AGENTS.md.template'));
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
198
|
+
if (fs.existsSync(agentsMdTemplatePath)) {
|
|
199
|
+
const templateContent = fs.readFileSync(agentsMdTemplatePath, 'utf-8');
|
|
200
|
+
const sections = parseTemplateSections(templateContent);
|
|
201
|
+
const existingContent = fs.existsSync(agentsMdPath)
|
|
202
|
+
? fs.readFileSync(agentsMdPath, 'utf-8')
|
|
203
|
+
: null;
|
|
204
|
+
const mergeResult = mergeInstructionFile(existingContent, sections, 'agents', getPackageVersion(), projectName);
|
|
205
|
+
fs.writeFileSync(agentsMdPath, mergeResult.content);
|
|
206
|
+
if (mergeResult.action === 'merged') {
|
|
207
|
+
console.log(chalk.blue(' ✓ AGENTS.md merged (preserved ' + mergeResult.preserved + ' user sections)'));
|
|
208
|
+
}
|
|
209
|
+
else if (mergeResult.action === 'created') {
|
|
210
|
+
console.log(chalk.green(' ✓ AGENTS.md created'));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
// Fallback to old generator
|
|
215
|
+
const skillsDir = findSourceDir('skills', templatesDir);
|
|
216
|
+
const agentsDir = findSourceDir('agents', templatesDir);
|
|
217
|
+
const commandsDir = findSourceDir('commands', templatesDir);
|
|
218
|
+
const agentsGen = new AgentsMdGenerator(skillsDir, agentsDir, commandsDir);
|
|
219
|
+
const agentsMd = await agentsGen.generate({
|
|
220
|
+
projectName,
|
|
221
|
+
projectPath: targetDir,
|
|
222
|
+
templatePath: undefined
|
|
223
|
+
});
|
|
224
|
+
fs.writeFileSync(agentsMdPath, agentsMd);
|
|
225
|
+
}
|
|
96
226
|
// Copy .gitignore
|
|
97
227
|
const gitignoreTemplate = path.join(templatesDir, '.gitignore.template');
|
|
98
228
|
if (fs.existsSync(gitignoreTemplate)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory-structure.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/directory-structure.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"directory-structure.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/directory-structure.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,8 @@ export { promptTestingConfig, updateConfigWithTesting, type TestingConfigResult,
|
|
|
12
12
|
export { promptLanguageSelection, getDefaultLanguageSelection, getLanguageNativeName, type LanguageSelectionResult, } from './language-selection.js';
|
|
13
13
|
export { promptTranslationConfig, updateConfigWithTranslation, getDefaultTranslationConfig, type TranslationConfigResult, type TranslationScope, } from './translation-config.js';
|
|
14
14
|
export { promptAndRunExternalImport, } from './external-import.js';
|
|
15
|
-
export { createDirectoryStructure, copyTemplates, createConfigFile, } from './directory-structure.js';
|
|
15
|
+
export { createDirectoryStructure, copyTemplates, createConfigFile, scanAndSuggestMerges, } from './directory-structure.js';
|
|
16
16
|
export { showNextSteps, } from './next-steps.js';
|
|
17
17
|
export { promptBrownfieldAnalysis, updateConfigWithBrownfield, detectExistingDocsLocations, type BrownfieldAnalysisConfig, type AnalysisDepth, type DetectedDocsLocation, } from './brownfield-analysis.js';
|
|
18
|
+
export { mergeInstructionFile, parseTemplateSections, getPackageVersion, type TemplateType, type TemplateSection, type MergeResult, } from './instruction-file-merger.js';
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,wBAAwB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,wBAAwB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,aAAa,GACd,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,8BAA8B,CAAC"}
|
|
@@ -24,7 +24,7 @@ export { promptTranslationConfig, updateConfigWithTranslation, getDefaultTransla
|
|
|
24
24
|
// External import
|
|
25
25
|
export { promptAndRunExternalImport, } from './external-import.js';
|
|
26
26
|
// Directory structure
|
|
27
|
-
export { createDirectoryStructure, copyTemplates, createConfigFile, } from './directory-structure.js';
|
|
27
|
+
export { createDirectoryStructure, copyTemplates, createConfigFile, scanAndSuggestMerges, } from './directory-structure.js';
|
|
28
28
|
// Next steps
|
|
29
29
|
export { showNextSteps, } from './next-steps.js';
|
|
30
30
|
// v1.0.27: Removed initial-increment-generator exports
|
|
@@ -32,4 +32,6 @@ export { showNextSteps, } from './next-steps.js';
|
|
|
32
32
|
// File kept for reference but no longer used
|
|
33
33
|
// Brownfield analysis configuration
|
|
34
34
|
export { promptBrownfieldAnalysis, updateConfigWithBrownfield, detectExistingDocsLocations, } from './brownfield-analysis.js';
|
|
35
|
+
// Instruction file merger (CLAUDE.md/AGENTS.md)
|
|
36
|
+
export { mergeInstructionFile, parseTemplateSections, getPackageVersion, } from './instruction-file-merger.js';
|
|
35
37
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sCAAsC;AACtC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GAEb,MAAM,wBAAwB,CAAC;AAEhC,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,iBAAiB;AACjB,OAAO,EACL,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,mBAAmB;AACnB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,iBAAiB,GAGlB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,sBAAsB,GAIvB,MAAM,uBAAuB,CAAC;AAE/B,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAE7B,6CAA6C;AAC7C,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,GAEtB,MAAM,yBAAyB,CAAC;AAEjC,4BAA4B;AAC5B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,GAG5B,MAAM,yBAAyB,CAAC;AAEjC,kBAAkB;AAClB,OAAO,EACL,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,sBAAsB;AACtB,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sCAAsC;AACtC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GAEb,MAAM,wBAAwB,CAAC;AAEhC,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,iBAAiB;AACjB,OAAO,EACL,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,mBAAmB;AACnB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,iBAAiB,GAGlB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,sBAAsB,GAIvB,MAAM,uBAAuB,CAAC;AAE/B,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAE7B,6CAA6C;AAC7C,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,GAEtB,MAAM,yBAAyB,CAAC;AAEjC,4BAA4B;AAC5B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,GAG5B,MAAM,yBAAyB,CAAC;AAEjC,kBAAkB;AAClB,OAAO,EACL,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,sBAAsB;AACtB,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,aAAa;AACb,OAAO,EACL,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,uDAAuD;AACvD,oFAAoF;AACpF,6CAA6C;AAE7C,oCAAoC;AACpC,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,GAI5B,MAAM,0BAA0B,CAAC;AAElC,gDAAgD;AAChD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAIlB,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instruction File Merger - Smart CLAUDE.md/AGENTS.md merge
|
|
3
|
+
* Updates SW sections, preserves user content
|
|
4
|
+
*/
|
|
5
|
+
export type TemplateType = 'claude' | 'agents';
|
|
6
|
+
export interface TemplateSection {
|
|
7
|
+
id: string;
|
|
8
|
+
order: number;
|
|
9
|
+
required: boolean;
|
|
10
|
+
content: string;
|
|
11
|
+
}
|
|
12
|
+
export interface MergeResult {
|
|
13
|
+
content: string;
|
|
14
|
+
action: 'created' | 'merged' | 'preserved';
|
|
15
|
+
updated: string[];
|
|
16
|
+
added: string[];
|
|
17
|
+
preserved: number;
|
|
18
|
+
warnings: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare function mergeInstructionFile(existing: string | null, secs: TemplateSection[], type: TemplateType, ver: string, name: string): MergeResult;
|
|
21
|
+
export declare function parseTemplateSections(content: string): TemplateSection[];
|
|
22
|
+
export declare function getPackageVersion(): string;
|
|
23
|
+
//# sourceMappingURL=instruction-file-merger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-file-merger.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/instruction-file-merger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAkHD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,IAAI,EAAE,eAAe,EAAE,EACvB,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,WAAW,CA2Fb;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CA+CxE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAe1C"}
|