@millstone/synapse-cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -0
- package/bin/synapse.js +3 -0
- package/dist/commands/eject.d.ts +19 -0
- package/dist/commands/eject.d.ts.map +1 -0
- package/dist/commands/eject.js +146 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/fetch-reference.d.ts +19 -0
- package/dist/commands/fetch-reference.d.ts.map +1 -0
- package/dist/commands/fetch-reference.js +93 -0
- package/dist/commands/fetch-reference.js.map +1 -0
- package/dist/commands/format.d.ts +26 -0
- package/dist/commands/format.d.ts.map +1 -0
- package/dist/commands/format.js +126 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/generate-pdf.d.ts +19 -0
- package/dist/commands/generate-pdf.d.ts.map +1 -0
- package/dist/commands/generate-pdf.js +140 -0
- package/dist/commands/generate-pdf.js.map +1 -0
- package/dist/commands/index.d.ts +17 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +26 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +58 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +234 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +29 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +297 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/scaffold.d.ts +24 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +244 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/update.d.ts +25 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +253 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +37 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +526 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +277 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bodyRules.d.ts +70 -0
- package/dist/lib/bodyRules.d.ts.map +1 -0
- package/dist/lib/bodyRules.js +711 -0
- package/dist/lib/bodyRules.js.map +1 -0
- package/dist/lib/config.d.ts +49 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +91 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/git.d.ts +99 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +266 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/graph.d.ts +6 -0
- package/dist/lib/graph.d.ts.map +1 -0
- package/dist/lib/graph.js +6 -0
- package/dist/lib/graph.js.map +1 -0
- package/dist/lib/homepage.d.ts +10 -0
- package/dist/lib/homepage.d.ts.map +1 -0
- package/dist/lib/homepage.js +172 -0
- package/dist/lib/homepage.js.map +1 -0
- package/dist/lib/markdown.d.ts +107 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +318 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/mode-detection.d.ts +10 -0
- package/dist/lib/mode-detection.d.ts.map +1 -0
- package/dist/lib/mode-detection.js +29 -0
- package/dist/lib/mode-detection.js.map +1 -0
- package/dist/lib/naming.d.ts +47 -0
- package/dist/lib/naming.d.ts.map +1 -0
- package/dist/lib/naming.js +403 -0
- package/dist/lib/naming.js.map +1 -0
- package/dist/lib/schemas.d.ts +38 -0
- package/dist/lib/schemas.d.ts.map +1 -0
- package/dist/lib/schemas.js +248 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/templateLint.d.ts +21 -0
- package/dist/lib/templateLint.d.ts.map +1 -0
- package/dist/lib/templateLint.js +243 -0
- package/dist/lib/templateLint.js.map +1 -0
- package/dist/lib/templates.d.ts +53 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +128 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/tracking.d.ts +52 -0
- package/dist/lib/tracking.d.ts.map +1 -0
- package/dist/lib/tracking.js +135 -0
- package/dist/lib/tracking.js.map +1 -0
- package/dist/lib/types.generated.d.ts +54 -0
- package/dist/lib/types.generated.d.ts.map +1 -0
- package/dist/lib/types.generated.js +144 -0
- package/dist/lib/types.generated.js.map +1 -0
- package/dist/lib/validate-plugins.d.ts +22 -0
- package/dist/lib/validate-plugins.d.ts.map +1 -0
- package/dist/lib/validate-plugins.js +851 -0
- package/dist/lib/validate-plugins.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import Handlebars from 'handlebars';
|
|
2
|
+
import fsExtra from 'fs-extra';
|
|
3
|
+
const fs = fsExtra;
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import glob from 'fast-glob';
|
|
6
|
+
// Store the Handlebars instance for helper registration
|
|
7
|
+
const handlebars = Handlebars.create();
|
|
8
|
+
/**
|
|
9
|
+
* Register custom Handlebars helpers
|
|
10
|
+
*/
|
|
11
|
+
export function registerHelpers(helpers) {
|
|
12
|
+
Object.entries(helpers).forEach(([name, helper]) => {
|
|
13
|
+
handlebars.registerHelper(name, helper);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Register default helpers for Synapse templates
|
|
18
|
+
*/
|
|
19
|
+
export function registerDefaultHelpers() {
|
|
20
|
+
// Register 'now' helper for current timestamp
|
|
21
|
+
handlebars.registerHelper('now', () => {
|
|
22
|
+
// Return quoted timestamp for YAML frontmatter
|
|
23
|
+
return `"${new Date().toISOString()}"`;
|
|
24
|
+
});
|
|
25
|
+
// Register 'slug' helper to convert text to slug format
|
|
26
|
+
handlebars.registerHelper('slug', (text) => {
|
|
27
|
+
if (!text)
|
|
28
|
+
return '';
|
|
29
|
+
return text
|
|
30
|
+
.toLowerCase()
|
|
31
|
+
.replace(/[^\w\s-]/g, '') // Remove special characters
|
|
32
|
+
.replace(/\s+/g, '-') // Replace spaces with hyphens
|
|
33
|
+
.replace(/-+/g, '-') // Replace multiple hyphens with single
|
|
34
|
+
.trim();
|
|
35
|
+
});
|
|
36
|
+
// Note: {{#each}} and {{#unless}} are Handlebars built-ins
|
|
37
|
+
// Wikilink syntax [[...]] is handled as plain text in templates
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Compile a single Handlebars template from file path
|
|
41
|
+
*/
|
|
42
|
+
export async function compileTemplate(templatePath) {
|
|
43
|
+
try {
|
|
44
|
+
const templateContent = await fs.readFile(templatePath, 'utf-8');
|
|
45
|
+
return handlebars.compile(templateContent);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Error(`Failed to compile template ${templatePath}: ${error.message}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Render a template with provided data
|
|
53
|
+
*/
|
|
54
|
+
export async function renderTemplate(templatePath, data) {
|
|
55
|
+
const template = await compileTemplate(templatePath);
|
|
56
|
+
return template(data);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Discover all .hbs template files in a directory
|
|
60
|
+
*/
|
|
61
|
+
export async function discoverTemplates(baseDir) {
|
|
62
|
+
const pattern = path.join(baseDir, '**/*.hbs');
|
|
63
|
+
const templates = await glob(pattern, {
|
|
64
|
+
absolute: true,
|
|
65
|
+
onlyFiles: true,
|
|
66
|
+
});
|
|
67
|
+
return templates;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Compile and validate all templates, returning a report
|
|
71
|
+
*/
|
|
72
|
+
export async function compileAllTemplates(templateDir) {
|
|
73
|
+
// Register default helpers before compilation
|
|
74
|
+
registerDefaultHelpers();
|
|
75
|
+
const templates = await discoverTemplates(templateDir);
|
|
76
|
+
const results = await Promise.all(templates.map(async (templatePath) => {
|
|
77
|
+
const name = path.basename(templatePath, '.hbs');
|
|
78
|
+
try {
|
|
79
|
+
await compileTemplate(templatePath);
|
|
80
|
+
return {
|
|
81
|
+
path: templatePath,
|
|
82
|
+
name,
|
|
83
|
+
compiled: true,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
return {
|
|
88
|
+
path: templatePath,
|
|
89
|
+
name,
|
|
90
|
+
compiled: false,
|
|
91
|
+
error: error.message,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}));
|
|
95
|
+
const success = results.every(r => r.compiled);
|
|
96
|
+
return { success, templates: results };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get template metadata including required fields from analysis
|
|
100
|
+
*/
|
|
101
|
+
export async function getTemplateMetadata(templatePath) {
|
|
102
|
+
const content = await fs.readFile(templatePath, 'utf-8');
|
|
103
|
+
const name = path.basename(templatePath, '.hbs');
|
|
104
|
+
// Extract variables (simple regex for {{variable}} patterns)
|
|
105
|
+
const variableMatches = content.match(/\{\{(?!#|\/|else)([^}]+)\}\}/g) || [];
|
|
106
|
+
const variables = [...new Set(variableMatches
|
|
107
|
+
.map(m => m.replace(/\{\{|\}\}/g, '').trim())
|
|
108
|
+
.filter(v => !v.startsWith('this') && !v.startsWith('@')))];
|
|
109
|
+
// Extract helpers ({{#helper}} patterns)
|
|
110
|
+
const helperMatches = content.match(/\{\{#([^}\s]+)/g) || [];
|
|
111
|
+
const helpers = [...new Set(helperMatches.map(m => m.replace('{{#', '')))];
|
|
112
|
+
return {
|
|
113
|
+
name,
|
|
114
|
+
path: templatePath,
|
|
115
|
+
variables,
|
|
116
|
+
helpers,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export default {
|
|
120
|
+
compileTemplate,
|
|
121
|
+
renderTemplate,
|
|
122
|
+
registerHelpers,
|
|
123
|
+
registerDefaultHelpers,
|
|
124
|
+
discoverTemplates,
|
|
125
|
+
compileAllTemplates,
|
|
126
|
+
getTemplateMetadata,
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export interface ConflictRecord {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
files: string[];
|
|
4
|
+
resolved: boolean;
|
|
5
|
+
resolution: 'manual' | 'accept-upstream' | 'accept-ours' | 'aborted';
|
|
6
|
+
}
|
|
7
|
+
export interface UpstreamTracking {
|
|
8
|
+
remote: string;
|
|
9
|
+
lastSync: string;
|
|
10
|
+
version: string;
|
|
11
|
+
ejected: boolean;
|
|
12
|
+
ejectedAt?: string;
|
|
13
|
+
ejectedVersion?: string;
|
|
14
|
+
conflictHistory?: ConflictRecord[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if tracking file exists
|
|
18
|
+
*/
|
|
19
|
+
export declare function trackingExists(rootDir?: string): Promise<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* Load upstream tracking data
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadTracking(rootDir?: string): Promise<UpstreamTracking>;
|
|
24
|
+
/**
|
|
25
|
+
* Save upstream tracking data
|
|
26
|
+
*/
|
|
27
|
+
export declare function saveTracking(data: UpstreamTracking, rootDir?: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Create initial tracking file
|
|
30
|
+
*/
|
|
31
|
+
export declare function createTracking(remote: string, version: string, rootDir?: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if repository is ejected from upstream
|
|
34
|
+
*/
|
|
35
|
+
export declare function isEjected(rootDir?: string): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Mark repository as ejected
|
|
38
|
+
*/
|
|
39
|
+
export declare function ejectRepository(rootDir?: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Update last sync timestamp and version
|
|
42
|
+
*/
|
|
43
|
+
export declare function updateSyncInfo(version: string, rootDir?: string): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Add a conflict record to history
|
|
46
|
+
*/
|
|
47
|
+
export declare function recordConflict(files: string[], resolution: ConflictRecord['resolution'], rootDir?: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Get conflict history
|
|
50
|
+
*/
|
|
51
|
+
export declare function getConflictHistory(rootDir?: string): Promise<ConflictRecord[]>;
|
|
52
|
+
//# sourceMappingURL=tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../src/lib/tracking.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,SAAS,CAAC;CACtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC;AAYD;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGvE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0B9E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,EACxC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAOpF"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import fsExtra from 'fs-extra';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
const fs = fsExtra;
|
|
4
|
+
const TRACKING_FILE = '.synapse-upstream';
|
|
5
|
+
/**
|
|
6
|
+
* Get the path to the tracking file
|
|
7
|
+
*/
|
|
8
|
+
function getTrackingPath(rootDir) {
|
|
9
|
+
const root = rootDir || process.cwd();
|
|
10
|
+
return path.join(root, TRACKING_FILE);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Check if tracking file exists
|
|
14
|
+
*/
|
|
15
|
+
export async function trackingExists(rootDir) {
|
|
16
|
+
const trackingPath = getTrackingPath(rootDir);
|
|
17
|
+
return fs.pathExists(trackingPath);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Load upstream tracking data
|
|
21
|
+
*/
|
|
22
|
+
export async function loadTracking(rootDir) {
|
|
23
|
+
const trackingPath = getTrackingPath(rootDir);
|
|
24
|
+
if (!(await fs.pathExists(trackingPath))) {
|
|
25
|
+
throw new Error(`Tracking file not found: ${TRACKING_FILE}\n` +
|
|
26
|
+
'Run "synapse init" to initialize fork configuration.');
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const content = await fs.readFile(trackingPath, 'utf-8');
|
|
30
|
+
const data = JSON.parse(content);
|
|
31
|
+
// Validate required fields
|
|
32
|
+
if (!data.remote || !data.lastSync || !data.version || data.ejected === undefined) {
|
|
33
|
+
throw new Error('Invalid tracking file format');
|
|
34
|
+
}
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error instanceof SyntaxError) {
|
|
39
|
+
throw new Error(`Invalid JSON in ${TRACKING_FILE}: ${error.message}`);
|
|
40
|
+
}
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Save upstream tracking data
|
|
46
|
+
*/
|
|
47
|
+
export async function saveTracking(data, rootDir) {
|
|
48
|
+
const trackingPath = getTrackingPath(rootDir);
|
|
49
|
+
// Ensure data has required fields
|
|
50
|
+
if (!data.remote || !data.lastSync || !data.version || data.ejected === undefined) {
|
|
51
|
+
throw new Error('Invalid tracking data: missing required fields');
|
|
52
|
+
}
|
|
53
|
+
const content = JSON.stringify(data, null, 2) + '\n';
|
|
54
|
+
await fs.writeFile(trackingPath, content, 'utf-8');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create initial tracking file
|
|
58
|
+
*/
|
|
59
|
+
export async function createTracking(remote, version, rootDir) {
|
|
60
|
+
const trackingPath = getTrackingPath(rootDir);
|
|
61
|
+
if (await fs.pathExists(trackingPath)) {
|
|
62
|
+
throw new Error(`Tracking file already exists: ${TRACKING_FILE}`);
|
|
63
|
+
}
|
|
64
|
+
const data = {
|
|
65
|
+
remote,
|
|
66
|
+
lastSync: new Date().toISOString(),
|
|
67
|
+
version,
|
|
68
|
+
ejected: false,
|
|
69
|
+
};
|
|
70
|
+
await saveTracking(data, rootDir);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if repository is ejected from upstream
|
|
74
|
+
*/
|
|
75
|
+
export async function isEjected(rootDir) {
|
|
76
|
+
try {
|
|
77
|
+
const tracking = await loadTracking(rootDir);
|
|
78
|
+
return tracking.ejected === true;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Mark repository as ejected
|
|
86
|
+
*/
|
|
87
|
+
export async function ejectRepository(rootDir) {
|
|
88
|
+
const tracking = await loadTracking(rootDir);
|
|
89
|
+
if (tracking.ejected) {
|
|
90
|
+
throw new Error('Repository is already ejected');
|
|
91
|
+
}
|
|
92
|
+
tracking.ejected = true;
|
|
93
|
+
tracking.ejectedAt = new Date().toISOString();
|
|
94
|
+
tracking.ejectedVersion = tracking.version;
|
|
95
|
+
await saveTracking(tracking, rootDir);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Update last sync timestamp and version
|
|
99
|
+
*/
|
|
100
|
+
export async function updateSyncInfo(version, rootDir) {
|
|
101
|
+
const tracking = await loadTracking(rootDir);
|
|
102
|
+
tracking.lastSync = new Date().toISOString();
|
|
103
|
+
tracking.version = version;
|
|
104
|
+
await saveTracking(tracking, rootDir);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Add a conflict record to history
|
|
108
|
+
*/
|
|
109
|
+
export async function recordConflict(files, resolution, rootDir) {
|
|
110
|
+
const tracking = await loadTracking(rootDir);
|
|
111
|
+
if (!tracking.conflictHistory) {
|
|
112
|
+
tracking.conflictHistory = [];
|
|
113
|
+
}
|
|
114
|
+
const record = {
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
files,
|
|
117
|
+
resolved: resolution !== 'aborted',
|
|
118
|
+
resolution,
|
|
119
|
+
};
|
|
120
|
+
tracking.conflictHistory.push(record);
|
|
121
|
+
await saveTracking(tracking, rootDir);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get conflict history
|
|
125
|
+
*/
|
|
126
|
+
export async function getConflictHistory(rootDir) {
|
|
127
|
+
try {
|
|
128
|
+
const tracking = await loadTracking(rootDir);
|
|
129
|
+
return tracking.conflictHistory || [];
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../src/lib/tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THIS FILE IS AUTO-GENERATED FROM SCHEMA FILES
|
|
3
|
+
* DO NOT EDIT DIRECTLY - Edit schemas in content/schemas/ instead
|
|
4
|
+
* Generated on: 2025-10-30T22:56:15.267Z
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* All available document types derived from schema files
|
|
8
|
+
*/
|
|
9
|
+
export declare const DOC_TYPES: readonly ["adr", "agreement", "capability", "meeting", "policy", "prd", "process", "reference", "runbook", "scorecard", "sop", "sow", "standard", "system", "tdd"];
|
|
10
|
+
/**
|
|
11
|
+
* Union type of all document types
|
|
12
|
+
*/
|
|
13
|
+
export type DocType = typeof DOC_TYPES[number];
|
|
14
|
+
/**
|
|
15
|
+
* Type guard to check if a string is a valid DocType
|
|
16
|
+
*/
|
|
17
|
+
export declare function isDocType(value: string): value is DocType;
|
|
18
|
+
/**
|
|
19
|
+
* Get all document types as a mutable array
|
|
20
|
+
*/
|
|
21
|
+
export declare function getDocTypes(): DocType[];
|
|
22
|
+
/**
|
|
23
|
+
* Template metadata for each document type
|
|
24
|
+
*/
|
|
25
|
+
export interface TemplateMetadata {
|
|
26
|
+
folder: string;
|
|
27
|
+
displayLabel: string;
|
|
28
|
+
cmsCollection: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Registry of all template metadata
|
|
32
|
+
*/
|
|
33
|
+
export declare const TEMPLATE_REGISTRY: Record<DocType, TemplateMetadata>;
|
|
34
|
+
/**
|
|
35
|
+
* Get the expected folder for a document type
|
|
36
|
+
*/
|
|
37
|
+
export declare function getExpectedFolder(type: DocType): string;
|
|
38
|
+
/**
|
|
39
|
+
* Get the display label for a document type
|
|
40
|
+
*/
|
|
41
|
+
export declare function getDisplayLabel(type: DocType): string;
|
|
42
|
+
/**
|
|
43
|
+
* Get the CMS collection name for a document type
|
|
44
|
+
*/
|
|
45
|
+
export declare function getCmsCollection(type: DocType): string;
|
|
46
|
+
/**
|
|
47
|
+
* Metadata about the generated types
|
|
48
|
+
*/
|
|
49
|
+
export declare const SCHEMA_METADATA: {
|
|
50
|
+
readonly generatedAt: "2025-10-30T22:56:15.267Z";
|
|
51
|
+
readonly schemaCount: 15;
|
|
52
|
+
readonly types: readonly ["adr", "agreement", "capability", "meeting", "policy", "prd", "process", "reference", "runbook", "scorecard", "sop", "sow", "standard", "system", "tdd"];
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=types.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.generated.d.ts","sourceRoot":"","sources":["../../src/lib/types.generated.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,oKAgBZ,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAE/C;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAEvC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CA4E/D,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THIS FILE IS AUTO-GENERATED FROM SCHEMA FILES
|
|
3
|
+
* DO NOT EDIT DIRECTLY - Edit schemas in content/schemas/ instead
|
|
4
|
+
* Generated on: 2025-10-30T22:56:15.267Z
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* All available document types derived from schema files
|
|
8
|
+
*/
|
|
9
|
+
export const DOC_TYPES = [
|
|
10
|
+
'adr',
|
|
11
|
+
'agreement',
|
|
12
|
+
'capability',
|
|
13
|
+
'meeting',
|
|
14
|
+
'policy',
|
|
15
|
+
'prd',
|
|
16
|
+
'process',
|
|
17
|
+
'reference',
|
|
18
|
+
'runbook',
|
|
19
|
+
'scorecard',
|
|
20
|
+
'sop',
|
|
21
|
+
'sow',
|
|
22
|
+
'standard',
|
|
23
|
+
'system',
|
|
24
|
+
'tdd'
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Type guard to check if a string is a valid DocType
|
|
28
|
+
*/
|
|
29
|
+
export function isDocType(value) {
|
|
30
|
+
return DOC_TYPES.includes(value);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get all document types as a mutable array
|
|
34
|
+
*/
|
|
35
|
+
export function getDocTypes() {
|
|
36
|
+
return [...DOC_TYPES];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Registry of all template metadata
|
|
40
|
+
*/
|
|
41
|
+
export const TEMPLATE_REGISTRY = {
|
|
42
|
+
'adr': {
|
|
43
|
+
folder: '90_Architecture/ADRs',
|
|
44
|
+
displayLabel: 'ADR',
|
|
45
|
+
cmsCollection: 'adrs'
|
|
46
|
+
},
|
|
47
|
+
'agreement': {
|
|
48
|
+
folder: '120_Legal/agreements',
|
|
49
|
+
displayLabel: 'Agreement',
|
|
50
|
+
cmsCollection: 'agreements'
|
|
51
|
+
},
|
|
52
|
+
'capability': {
|
|
53
|
+
folder: '110_Capabilities',
|
|
54
|
+
displayLabel: 'Capability',
|
|
55
|
+
cmsCollection: 'capabilities'
|
|
56
|
+
},
|
|
57
|
+
'meeting': {
|
|
58
|
+
folder: '60_Meetings',
|
|
59
|
+
displayLabel: 'Meeting',
|
|
60
|
+
cmsCollection: 'meetings'
|
|
61
|
+
},
|
|
62
|
+
'policy': {
|
|
63
|
+
folder: '10_Policies',
|
|
64
|
+
displayLabel: 'Policy',
|
|
65
|
+
cmsCollection: 'policies'
|
|
66
|
+
},
|
|
67
|
+
'prd': {
|
|
68
|
+
folder: '100_Products/PRDs',
|
|
69
|
+
displayLabel: 'PRD',
|
|
70
|
+
cmsCollection: 'prds'
|
|
71
|
+
},
|
|
72
|
+
'process': {
|
|
73
|
+
folder: '30_Processes',
|
|
74
|
+
displayLabel: 'Process',
|
|
75
|
+
cmsCollection: 'processes'
|
|
76
|
+
},
|
|
77
|
+
'reference': {
|
|
78
|
+
folder: '200_References',
|
|
79
|
+
displayLabel: 'Reference',
|
|
80
|
+
cmsCollection: 'references'
|
|
81
|
+
},
|
|
82
|
+
'runbook': {
|
|
83
|
+
folder: '50_Runbooks',
|
|
84
|
+
displayLabel: 'Runbook',
|
|
85
|
+
cmsCollection: 'runbooks'
|
|
86
|
+
},
|
|
87
|
+
'scorecard': {
|
|
88
|
+
folder: '80_Scorecards',
|
|
89
|
+
displayLabel: 'Scorecard',
|
|
90
|
+
cmsCollection: 'scorecards'
|
|
91
|
+
},
|
|
92
|
+
'sop': {
|
|
93
|
+
folder: '40_SOPs',
|
|
94
|
+
displayLabel: 'SOP',
|
|
95
|
+
cmsCollection: 'sops'
|
|
96
|
+
},
|
|
97
|
+
'sow': {
|
|
98
|
+
folder: '120_Legal/SOWs',
|
|
99
|
+
displayLabel: 'SOW',
|
|
100
|
+
cmsCollection: 'sows'
|
|
101
|
+
},
|
|
102
|
+
'standard': {
|
|
103
|
+
folder: '20_Standards',
|
|
104
|
+
displayLabel: 'Standard',
|
|
105
|
+
cmsCollection: 'standards'
|
|
106
|
+
},
|
|
107
|
+
'system': {
|
|
108
|
+
folder: '70_Systems',
|
|
109
|
+
displayLabel: 'System',
|
|
110
|
+
cmsCollection: 'systems'
|
|
111
|
+
},
|
|
112
|
+
'tdd': {
|
|
113
|
+
folder: '90_Architecture/TDDs',
|
|
114
|
+
displayLabel: 'TDD',
|
|
115
|
+
cmsCollection: 'tdds'
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Get the expected folder for a document type
|
|
120
|
+
*/
|
|
121
|
+
export function getExpectedFolder(type) {
|
|
122
|
+
return `content/${TEMPLATE_REGISTRY[type].folder}`;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the display label for a document type
|
|
126
|
+
*/
|
|
127
|
+
export function getDisplayLabel(type) {
|
|
128
|
+
return TEMPLATE_REGISTRY[type].displayLabel;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get the CMS collection name for a document type
|
|
132
|
+
*/
|
|
133
|
+
export function getCmsCollection(type) {
|
|
134
|
+
return TEMPLATE_REGISTRY[type].cmsCollection;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Metadata about the generated types
|
|
138
|
+
*/
|
|
139
|
+
export const SCHEMA_METADATA = {
|
|
140
|
+
generatedAt: '2025-10-30T22:56:15.267Z',
|
|
141
|
+
schemaCount: 15,
|
|
142
|
+
types: DOC_TYPES
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=types.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.generated.js","sourceRoot":"","sources":["../../src/lib/types.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface PluginValidationIssue {
|
|
2
|
+
type: "error" | "warning";
|
|
3
|
+
code: string;
|
|
4
|
+
message: string;
|
|
5
|
+
file?: string;
|
|
6
|
+
line?: number;
|
|
7
|
+
field?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface PluginValidationResult {
|
|
10
|
+
success: boolean;
|
|
11
|
+
issues: PluginValidationIssue[];
|
|
12
|
+
pluginsValidated: number;
|
|
13
|
+
componentsValidated: {
|
|
14
|
+
commands: number;
|
|
15
|
+
agents: number;
|
|
16
|
+
skills: number;
|
|
17
|
+
hooks: number;
|
|
18
|
+
mcpServers: number;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare function validatePluginMarketplace(rootDir: string, schemaDir?: string): Promise<PluginValidationResult>;
|
|
22
|
+
//# sourceMappingURL=validate-plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-plugins.d.ts","sourceRoot":"","sources":["../../src/lib/validate-plugins.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AA8zBD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC,CAqKjC"}
|