@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.
Files changed (103) hide show
  1. package/README.md +135 -0
  2. package/bin/synapse.js +3 -0
  3. package/dist/commands/eject.d.ts +19 -0
  4. package/dist/commands/eject.d.ts.map +1 -0
  5. package/dist/commands/eject.js +146 -0
  6. package/dist/commands/eject.js.map +1 -0
  7. package/dist/commands/fetch-reference.d.ts +19 -0
  8. package/dist/commands/fetch-reference.d.ts.map +1 -0
  9. package/dist/commands/fetch-reference.js +93 -0
  10. package/dist/commands/fetch-reference.js.map +1 -0
  11. package/dist/commands/format.d.ts +26 -0
  12. package/dist/commands/format.d.ts.map +1 -0
  13. package/dist/commands/format.js +126 -0
  14. package/dist/commands/format.js.map +1 -0
  15. package/dist/commands/generate-pdf.d.ts +19 -0
  16. package/dist/commands/generate-pdf.d.ts.map +1 -0
  17. package/dist/commands/generate-pdf.js +140 -0
  18. package/dist/commands/generate-pdf.js.map +1 -0
  19. package/dist/commands/index.d.ts +17 -0
  20. package/dist/commands/index.d.ts.map +1 -0
  21. package/dist/commands/index.js +26 -0
  22. package/dist/commands/index.js.map +1 -0
  23. package/dist/commands/init.d.ts +58 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +234 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/migrate.d.ts +29 -0
  28. package/dist/commands/migrate.d.ts.map +1 -0
  29. package/dist/commands/migrate.js +297 -0
  30. package/dist/commands/migrate.js.map +1 -0
  31. package/dist/commands/scaffold.d.ts +24 -0
  32. package/dist/commands/scaffold.d.ts.map +1 -0
  33. package/dist/commands/scaffold.js +244 -0
  34. package/dist/commands/scaffold.js.map +1 -0
  35. package/dist/commands/update.d.ts +25 -0
  36. package/dist/commands/update.d.ts.map +1 -0
  37. package/dist/commands/update.js +253 -0
  38. package/dist/commands/update.js.map +1 -0
  39. package/dist/commands/validate.d.ts +37 -0
  40. package/dist/commands/validate.d.ts.map +1 -0
  41. package/dist/commands/validate.js +526 -0
  42. package/dist/commands/validate.js.map +1 -0
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +277 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/lib/bodyRules.d.ts +70 -0
  48. package/dist/lib/bodyRules.d.ts.map +1 -0
  49. package/dist/lib/bodyRules.js +711 -0
  50. package/dist/lib/bodyRules.js.map +1 -0
  51. package/dist/lib/config.d.ts +49 -0
  52. package/dist/lib/config.d.ts.map +1 -0
  53. package/dist/lib/config.js +91 -0
  54. package/dist/lib/config.js.map +1 -0
  55. package/dist/lib/git.d.ts +99 -0
  56. package/dist/lib/git.d.ts.map +1 -0
  57. package/dist/lib/git.js +266 -0
  58. package/dist/lib/git.js.map +1 -0
  59. package/dist/lib/graph.d.ts +6 -0
  60. package/dist/lib/graph.d.ts.map +1 -0
  61. package/dist/lib/graph.js +6 -0
  62. package/dist/lib/graph.js.map +1 -0
  63. package/dist/lib/homepage.d.ts +10 -0
  64. package/dist/lib/homepage.d.ts.map +1 -0
  65. package/dist/lib/homepage.js +172 -0
  66. package/dist/lib/homepage.js.map +1 -0
  67. package/dist/lib/markdown.d.ts +107 -0
  68. package/dist/lib/markdown.d.ts.map +1 -0
  69. package/dist/lib/markdown.js +318 -0
  70. package/dist/lib/markdown.js.map +1 -0
  71. package/dist/lib/mode-detection.d.ts +10 -0
  72. package/dist/lib/mode-detection.d.ts.map +1 -0
  73. package/dist/lib/mode-detection.js +29 -0
  74. package/dist/lib/mode-detection.js.map +1 -0
  75. package/dist/lib/naming.d.ts +47 -0
  76. package/dist/lib/naming.d.ts.map +1 -0
  77. package/dist/lib/naming.js +403 -0
  78. package/dist/lib/naming.js.map +1 -0
  79. package/dist/lib/schemas.d.ts +38 -0
  80. package/dist/lib/schemas.d.ts.map +1 -0
  81. package/dist/lib/schemas.js +248 -0
  82. package/dist/lib/schemas.js.map +1 -0
  83. package/dist/lib/templateLint.d.ts +21 -0
  84. package/dist/lib/templateLint.d.ts.map +1 -0
  85. package/dist/lib/templateLint.js +243 -0
  86. package/dist/lib/templateLint.js.map +1 -0
  87. package/dist/lib/templates.d.ts +53 -0
  88. package/dist/lib/templates.d.ts.map +1 -0
  89. package/dist/lib/templates.js +128 -0
  90. package/dist/lib/templates.js.map +1 -0
  91. package/dist/lib/tracking.d.ts +52 -0
  92. package/dist/lib/tracking.d.ts.map +1 -0
  93. package/dist/lib/tracking.js +135 -0
  94. package/dist/lib/tracking.js.map +1 -0
  95. package/dist/lib/types.generated.d.ts +54 -0
  96. package/dist/lib/types.generated.d.ts.map +1 -0
  97. package/dist/lib/types.generated.js +144 -0
  98. package/dist/lib/types.generated.js.map +1 -0
  99. package/dist/lib/validate-plugins.d.ts +22 -0
  100. package/dist/lib/validate-plugins.d.ts.map +1 -0
  101. package/dist/lib/validate-plugins.js +851 -0
  102. package/dist/lib/validate-plugins.js.map +1 -0
  103. 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":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,EAAE,GAAG,OAAO,CAAC;AAmBnB,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAE1C;;GAEG;AACH,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB;IACnD,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB;IACjD,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,4BAA4B,aAAa,IAAI;YAC7C,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;QAErD,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,aAAa,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB,EAAE,OAAgB;IACzE,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE9C,kCAAkC;IAClC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACrD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,OAAe,EACf,OAAgB;IAEhB,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,iCAAiC,aAAa,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,IAAI,GAAqB;QAC7B,MAAM;QACN,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClC,OAAO;QACP,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB;IACpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;IAE3C,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,OAAgB;IACpE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7C,QAAQ,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAE3B,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAe,EACf,UAAwC,EACxC,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC9B,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAmB;QAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,QAAQ,EAAE,UAAU,KAAK,SAAS;QAClC,UAAU;KACX,CAAC;IAEF,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAgB;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -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":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK;IACL,WAAW;IACX,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,KAAK;IACL,SAAS;IACT,WAAW;IACX,SAAS;IACT,WAAW;IACX,KAAK;IACL,KAAK;IACL,UAAU;IACV,QAAQ;IACR,KAAK;CACG,CAAC;AAOX;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAgB,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AACxB,CAAC;AAWD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAClE,KAAK,EAAE;QACL,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,MAAM;KACtB;IACD,WAAW,EAAE;QACX,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,YAAY;KAC5B;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,kBAAkB;QAC1B,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,cAAc;KAC9B;IACD,SAAS,EAAE;QACT,MAAM,EAAE,aAAa;QACrB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,UAAU;KAC1B;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,aAAa;QACrB,YAAY,EAAE,QAAQ;QACtB,aAAa,EAAE,UAAU;KAC1B;IACD,KAAK,EAAE;QACL,MAAM,EAAE,mBAAmB;QAC3B,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,MAAM;KACtB;IACD,SAAS,EAAE;QACT,MAAM,EAAE,cAAc;QACtB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,WAAW;KAC3B;IACD,WAAW,EAAE;QACX,MAAM,EAAE,gBAAgB;QACxB,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,YAAY;KAC5B;IACD,SAAS,EAAE;QACT,MAAM,EAAE,aAAa;QACrB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,UAAU;KAC1B;IACD,WAAW,EAAE;QACX,MAAM,EAAE,eAAe;QACvB,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,YAAY;KAC5B;IACD,KAAK,EAAE;QACL,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,MAAM;KACtB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,gBAAgB;QACxB,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,MAAM;KACtB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,cAAc;QACtB,YAAY,EAAE,UAAU;QACxB,aAAa,EAAE,WAAW;KAC3B;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,QAAQ;QACtB,aAAa,EAAE,SAAS;KACzB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,MAAM;KACtB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,OAAO,WAAW,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,WAAW,EAAE,0BAA0B;IACvC,WAAW,EAAE,EAAE;IACf,KAAK,EAAE,SAAS;CACR,CAAC"}
@@ -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"}