@epiccontext/mcp 0.1.30 → 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/push.d.ts +1 -0
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +44 -12
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +5 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +340 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/files.d.ts.map +1 -1
- package/dist/cli/files.js +177 -19
- package/dist/cli/files.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/sync/pull.d.ts +3 -0
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +15 -5
- package/dist/sync/pull.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GrE"}
|
|
@@ -5,9 +5,23 @@ import { createClient } from "../../api/client.js";
|
|
|
5
5
|
import { pushToCloud } from "../../sync/push.js";
|
|
6
6
|
export async function pushCommand(options) {
|
|
7
7
|
const config = loadConfig();
|
|
8
|
-
if
|
|
9
|
-
|
|
10
|
-
console.log(
|
|
8
|
+
// Check if linked to a project
|
|
9
|
+
if (!config) {
|
|
10
|
+
console.log(chalk.red("Not linked to an EpicContext project.\n"));
|
|
11
|
+
console.log("To sync your CONTEXT folder, you need to:");
|
|
12
|
+
console.log(` 1. Run ${chalk.cyan("npx @epiccontext/mcp link")} to connect to your project`);
|
|
13
|
+
console.log(` 2. Then run ${chalk.cyan("npx @epiccontext/mcp push")} to sync\n`);
|
|
14
|
+
console.log(chalk.gray("Tip: Get your project URL from the EpicContext web app settings."));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!config.project?.id) {
|
|
18
|
+
console.log(chalk.red("Project ID is missing from configuration.\n"));
|
|
19
|
+
console.log(`Run ${chalk.cyan("npx @epiccontext/mcp link")} to reconnect to your project.`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!config.auth?.apiKey) {
|
|
23
|
+
console.log(chalk.red("API key is missing from configuration.\n"));
|
|
24
|
+
console.log(`Run ${chalk.cyan("npx @epiccontext/mcp link")} to set up authentication.`);
|
|
11
25
|
return;
|
|
12
26
|
}
|
|
13
27
|
const contextPath = getContextPath();
|
|
@@ -31,30 +45,45 @@ export async function pushCommand(options) {
|
|
|
31
45
|
apiKey: config.auth.apiKey,
|
|
32
46
|
projectId: config.project.id,
|
|
33
47
|
});
|
|
34
|
-
const
|
|
48
|
+
const isDryRun = options.dryRun ?? false;
|
|
49
|
+
const spinnerText = isDryRun
|
|
50
|
+
? "Checking what would be pushed..."
|
|
51
|
+
: "Pushing to EpicContext...";
|
|
52
|
+
const spinner = ora(spinnerText).start();
|
|
35
53
|
try {
|
|
36
54
|
// Default to folder_wins for push - user is explicitly sending local changes to cloud
|
|
37
|
-
// Use --no-force (future option) or --timestamp for timestamp-based resolution
|
|
38
55
|
const result = await pushToCloud(client, contextPath, {
|
|
39
56
|
path: options.section,
|
|
40
57
|
conflictResolution: "folder_wins",
|
|
58
|
+
dryRun: isDryRun,
|
|
41
59
|
});
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
if (isDryRun) {
|
|
61
|
+
spinner.succeed("Dry run complete - no changes were made");
|
|
62
|
+
console.log("");
|
|
63
|
+
console.log(chalk.cyan(" The following changes would be made:\n"));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
spinner.succeed("Push complete!");
|
|
67
|
+
console.log("");
|
|
68
|
+
}
|
|
44
69
|
console.log(chalk.gray(` Files processed: ${result.filesProcessed}`));
|
|
45
70
|
if (result.result.created > 0) {
|
|
46
|
-
|
|
71
|
+
const verb = isDryRun ? "Would create" : "Created";
|
|
72
|
+
console.log(chalk.green(` ${verb}: ${result.result.created} block(s)`));
|
|
47
73
|
}
|
|
48
74
|
if (result.result.updated > 0) {
|
|
49
|
-
|
|
75
|
+
const verb = isDryRun ? "Would update" : "Updated";
|
|
76
|
+
console.log(chalk.blue(` ${verb}: ${result.result.updated} block(s)`));
|
|
50
77
|
}
|
|
51
78
|
// Show deleted orphan blocks
|
|
52
79
|
if (result.result.deleted && result.result.deleted > 0) {
|
|
53
|
-
|
|
80
|
+
const verb = isDryRun ? "Would delete" : "Deleted";
|
|
81
|
+
console.log(chalk.yellow(` ${verb}: ${result.result.deleted} orphan block(s)`));
|
|
54
82
|
}
|
|
55
83
|
// Show skipped files (should be rare with folder_wins, but can happen with parse errors)
|
|
56
84
|
if (result.result.skipped > 0) {
|
|
57
|
-
|
|
85
|
+
const verb = isDryRun ? "Would skip" : "Skipped";
|
|
86
|
+
console.log(chalk.gray(` ${verb}: ${result.result.skipped} file(s)`));
|
|
58
87
|
}
|
|
59
88
|
if (result.result.errors.length > 0) {
|
|
60
89
|
console.log(chalk.red(` Errors: ${result.result.errors.length}`));
|
|
@@ -63,9 +92,12 @@ export async function pushCommand(options) {
|
|
|
63
92
|
}
|
|
64
93
|
}
|
|
65
94
|
console.log("");
|
|
95
|
+
if (isDryRun && (result.result.created > 0 || result.result.updated > 0 || (result.result.deleted && result.result.deleted > 0))) {
|
|
96
|
+
console.log(chalk.gray(`Run ${chalk.cyan("npx @epicontext/mcp push")} (without --dry-run) to apply these changes.`));
|
|
97
|
+
}
|
|
66
98
|
}
|
|
67
99
|
catch (error) {
|
|
68
|
-
spinner.fail("Push failed");
|
|
100
|
+
spinner.fail(isDryRun ? "Dry run failed" : "Push failed");
|
|
69
101
|
console.error(chalk.red("Error:"), error.message);
|
|
70
102
|
process.exit(1);
|
|
71
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA4TD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF7E"}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { getContextPath } from "../config.js";
|
|
6
|
+
import { readContextFolder } from "../files.js";
|
|
7
|
+
// Block type to allowed sections and subfolder mapping
|
|
8
|
+
// Derived from block-type-masters.ts
|
|
9
|
+
const BLOCK_TYPE_RULES = {
|
|
10
|
+
// Development section
|
|
11
|
+
epic: { allowedSections: ["development"], subfolder: "epics" },
|
|
12
|
+
user_story: { allowedSections: ["development"], subfolder: "stories" },
|
|
13
|
+
task: { allowedSections: ["development"], subfolder: "tasks" },
|
|
14
|
+
roadmap: { allowedSections: ["development"], subfolder: "roadmaps" },
|
|
15
|
+
release: { allowedSections: ["development"], subfolder: "releases" },
|
|
16
|
+
impact_effort_matrix: { allowedSections: ["development"] },
|
|
17
|
+
// Users section
|
|
18
|
+
persona: { allowedSections: ["users"], subfolder: "personas" },
|
|
19
|
+
jtbd: { allowedSections: ["users"], subfolder: "jobs" },
|
|
20
|
+
journey_map: { allowedSections: ["users"], subfolder: "journeys" },
|
|
21
|
+
// Product section
|
|
22
|
+
feature: { allowedSections: ["product"], subfolder: "features" },
|
|
23
|
+
product_overview: { allowedSections: ["product"] },
|
|
24
|
+
feature_market_analysis: { allowedSections: ["product"] },
|
|
25
|
+
swot_analysis: { allowedSections: ["product"] },
|
|
26
|
+
// Brand section
|
|
27
|
+
brand_positioning: { allowedSections: ["brand"] },
|
|
28
|
+
brand_color_palette: { allowedSections: ["brand"] },
|
|
29
|
+
brand_typography: { allowedSections: ["brand"] },
|
|
30
|
+
brand_iconography: { allowedSections: ["brand"] },
|
|
31
|
+
tone_of_voice: { allowedSections: ["brand"] },
|
|
32
|
+
messaging_framework: { allowedSections: ["brand"] },
|
|
33
|
+
logo: { allowedSections: ["brand"] },
|
|
34
|
+
brand_assets: { allowedSections: ["brand"] },
|
|
35
|
+
// Technical section
|
|
36
|
+
tech_stack: { allowedSections: ["technical"] },
|
|
37
|
+
architecture_diagram: { allowedSections: ["technical"] },
|
|
38
|
+
integration: { allowedSections: ["technical"], subfolder: "integrations" },
|
|
39
|
+
constraint: { allowedSections: ["technical", "constitution"] },
|
|
40
|
+
// Research section
|
|
41
|
+
competitor: { allowedSections: ["research"], subfolder: "competitors" },
|
|
42
|
+
market_research: { allowedSections: ["research"] },
|
|
43
|
+
user_research: { allowedSections: ["research"] },
|
|
44
|
+
// Decisions section
|
|
45
|
+
decision: { allowedSections: ["decisions"] },
|
|
46
|
+
// Metrics section
|
|
47
|
+
north_star: { allowedSections: ["metrics"] },
|
|
48
|
+
kpi: { allowedSections: ["metrics"] },
|
|
49
|
+
metric: { allowedSections: ["metrics"] },
|
|
50
|
+
analytics_event: { allowedSections: ["metrics"] },
|
|
51
|
+
// Information Architecture section
|
|
52
|
+
ia_tree: { allowedSections: ["information-architecture", "information_architecture"] },
|
|
53
|
+
taxonomy: { allowedSections: ["information-architecture", "information_architecture"] },
|
|
54
|
+
// Design System section
|
|
55
|
+
storybook_link: { allowedSections: ["design-system", "design_system"] },
|
|
56
|
+
figma_embed: { allowedSections: ["design-system", "design_system"] },
|
|
57
|
+
// Constitution section
|
|
58
|
+
ai_rules: { allowedSections: ["constitution"] },
|
|
59
|
+
context_guide: { allowedSections: ["constitution"] },
|
|
60
|
+
implementation_log: { allowedSections: ["constitution"] },
|
|
61
|
+
// Business Strategy section
|
|
62
|
+
ogsm: { allowedSections: ["business-strategy", "business_strategy"] },
|
|
63
|
+
obeya_board: { allowedSections: ["business-strategy", "business_strategy"] },
|
|
64
|
+
product_strategy_canvas: { allowedSections: ["business-strategy", "business_strategy"] },
|
|
65
|
+
business_model_canvas: { allowedSections: ["business-strategy", "business_strategy"] },
|
|
66
|
+
porters_five_forces: { allowedSections: ["business-strategy", "business_strategy"] },
|
|
67
|
+
strategic_group_map: { allowedSections: ["business-strategy", "business_strategy"] },
|
|
68
|
+
// Generic types (allowed in most sections)
|
|
69
|
+
section_guide: { allowedSections: ["*"] },
|
|
70
|
+
text: { allowedSections: ["*"] },
|
|
71
|
+
};
|
|
72
|
+
// Valid sections (folder names)
|
|
73
|
+
const VALID_SECTIONS = [
|
|
74
|
+
"constitution",
|
|
75
|
+
"brand",
|
|
76
|
+
"product",
|
|
77
|
+
"business-strategy",
|
|
78
|
+
"users",
|
|
79
|
+
"research",
|
|
80
|
+
"technical",
|
|
81
|
+
"design-system",
|
|
82
|
+
"information-architecture",
|
|
83
|
+
"metrics",
|
|
84
|
+
"decisions",
|
|
85
|
+
"development",
|
|
86
|
+
];
|
|
87
|
+
/**
|
|
88
|
+
* Extract frontmatter from markdown content
|
|
89
|
+
*/
|
|
90
|
+
function extractFrontmatter(content) {
|
|
91
|
+
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
92
|
+
if (!match)
|
|
93
|
+
return null;
|
|
94
|
+
const frontmatter = {};
|
|
95
|
+
const lines = match[1].split("\n");
|
|
96
|
+
for (const line of lines) {
|
|
97
|
+
const colonIndex = line.indexOf(":");
|
|
98
|
+
if (colonIndex > 0) {
|
|
99
|
+
const key = line.slice(0, colonIndex).trim();
|
|
100
|
+
let value = line.slice(colonIndex + 1).trim();
|
|
101
|
+
// Remove quotes
|
|
102
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
103
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
104
|
+
value = value.slice(1, -1);
|
|
105
|
+
}
|
|
106
|
+
frontmatter[key] = value;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return frontmatter;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get section from file path
|
|
113
|
+
*/
|
|
114
|
+
function getSectionFromPath(filePath) {
|
|
115
|
+
// Path is like: users/personas/primary-user.md or brand/tone-of-voice.md
|
|
116
|
+
const parts = filePath.split("/");
|
|
117
|
+
if (parts.length >= 1) {
|
|
118
|
+
return parts[0];
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Normalize section name (handle hyphen/underscore differences)
|
|
124
|
+
*/
|
|
125
|
+
function normalizeSection(section) {
|
|
126
|
+
return section.replace(/-/g, "_").toLowerCase();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check if block type is allowed in section
|
|
130
|
+
*/
|
|
131
|
+
function isBlockTypeAllowedInSection(blockType, section) {
|
|
132
|
+
const rules = BLOCK_TYPE_RULES[blockType];
|
|
133
|
+
if (!rules) {
|
|
134
|
+
// Unknown block type - allow anywhere (will be caught by block type validation)
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
if (rules.allowedSections.includes("*")) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
const normalizedSection = normalizeSection(section);
|
|
141
|
+
return rules.allowedSections.some(s => normalizeSection(s) === normalizedSection);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get suggested section for a block type
|
|
145
|
+
*/
|
|
146
|
+
function getSuggestedSection(blockType) {
|
|
147
|
+
const rules = BLOCK_TYPE_RULES[blockType];
|
|
148
|
+
if (!rules || rules.allowedSections.includes("*")) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
return rules.allowedSections[0];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Validate a single file
|
|
155
|
+
*/
|
|
156
|
+
function validateFile(filePath, content) {
|
|
157
|
+
const issues = [];
|
|
158
|
+
// Check for frontmatter
|
|
159
|
+
const frontmatter = extractFrontmatter(content);
|
|
160
|
+
if (!frontmatter) {
|
|
161
|
+
issues.push({
|
|
162
|
+
path: filePath,
|
|
163
|
+
severity: "error",
|
|
164
|
+
message: "Missing YAML frontmatter",
|
|
165
|
+
suggestion: "Add frontmatter with: type, section, key, name, status",
|
|
166
|
+
});
|
|
167
|
+
return issues;
|
|
168
|
+
}
|
|
169
|
+
// Check required frontmatter fields
|
|
170
|
+
const requiredFields = ["type", "section", "key", "name", "status"];
|
|
171
|
+
for (const field of requiredFields) {
|
|
172
|
+
if (!frontmatter[field]) {
|
|
173
|
+
issues.push({
|
|
174
|
+
path: filePath,
|
|
175
|
+
severity: "error",
|
|
176
|
+
message: `Missing required frontmatter field: ${field}`,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// If missing type or section, can't do further validation
|
|
181
|
+
if (!frontmatter.type || !frontmatter.section) {
|
|
182
|
+
return issues;
|
|
183
|
+
}
|
|
184
|
+
// Check if block type is known
|
|
185
|
+
const blockType = frontmatter.type;
|
|
186
|
+
if (!BLOCK_TYPE_RULES[blockType]) {
|
|
187
|
+
issues.push({
|
|
188
|
+
path: filePath,
|
|
189
|
+
severity: "warning",
|
|
190
|
+
message: `Unknown block type: "${blockType}"`,
|
|
191
|
+
suggestion: "Check CONTEXT/AI-GUIDE.md for valid block types",
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// Check section validity
|
|
195
|
+
const declaredSection = frontmatter.section;
|
|
196
|
+
const fileSection = getSectionFromPath(filePath);
|
|
197
|
+
if (fileSection && !VALID_SECTIONS.includes(fileSection)) {
|
|
198
|
+
issues.push({
|
|
199
|
+
path: filePath,
|
|
200
|
+
severity: "warning",
|
|
201
|
+
message: `File is in non-standard folder: "${fileSection}"`,
|
|
202
|
+
suggestion: `Valid sections: ${VALID_SECTIONS.join(", ")}`,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
// Check section mismatch between frontmatter and file location
|
|
206
|
+
if (fileSection && normalizeSection(declaredSection) !== normalizeSection(fileSection)) {
|
|
207
|
+
issues.push({
|
|
208
|
+
path: filePath,
|
|
209
|
+
severity: "error",
|
|
210
|
+
message: `Section mismatch: frontmatter says "${declaredSection}" but file is in "${fileSection}"`,
|
|
211
|
+
suggestion: `Update frontmatter to: section: ${fileSection}`,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
// Check if block type is allowed in section (the key validation)
|
|
215
|
+
if (fileSection && !isBlockTypeAllowedInSection(blockType, fileSection)) {
|
|
216
|
+
const suggestedSection = getSuggestedSection(blockType);
|
|
217
|
+
issues.push({
|
|
218
|
+
path: filePath,
|
|
219
|
+
severity: "error",
|
|
220
|
+
message: `Block type "${blockType}" is not allowed in "${fileSection}" section`,
|
|
221
|
+
suggestion: suggestedSection
|
|
222
|
+
? `Move file to: ${suggestedSection}/${path.basename(filePath)}`
|
|
223
|
+
: `Check CONTEXT/AI-GUIDE.md for where "${blockType}" blocks should go`,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
// Check status value
|
|
227
|
+
// Base statuses are draft, complete, empty (documentation completeness)
|
|
228
|
+
// Some block types have extended workflow statuses in their schema
|
|
229
|
+
if (frontmatter.status) {
|
|
230
|
+
const baseStatuses = ["draft", "complete", "empty"];
|
|
231
|
+
// Extended statuses for workflow-oriented block types
|
|
232
|
+
const extendedStatuses = {
|
|
233
|
+
task: ["planned", "todo", "in_progress", "in_review", "done", "abandoned"],
|
|
234
|
+
user_story: ["todo", "in_progress", "in_review", "done"],
|
|
235
|
+
epic: ["draft", "ready", "in_progress", "done"],
|
|
236
|
+
};
|
|
237
|
+
const blockTypeStatuses = extendedStatuses[blockType] || [];
|
|
238
|
+
const validStatuses = [...baseStatuses, ...blockTypeStatuses];
|
|
239
|
+
if (!validStatuses.includes(frontmatter.status)) {
|
|
240
|
+
const suggestion = blockTypeStatuses.length > 0
|
|
241
|
+
? `Valid statuses for ${blockType}: ${validStatuses.join(", ")}`
|
|
242
|
+
: `Valid statuses: ${baseStatuses.join(", ")}`;
|
|
243
|
+
issues.push({
|
|
244
|
+
path: filePath,
|
|
245
|
+
severity: "warning",
|
|
246
|
+
message: `Invalid status: "${frontmatter.status}"`,
|
|
247
|
+
suggestion,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Check key format (should be kebab-case)
|
|
252
|
+
if (frontmatter.key) {
|
|
253
|
+
const key = frontmatter.key;
|
|
254
|
+
if (key !== key.toLowerCase() || key.includes(" ") || /[A-Z]/.test(key)) {
|
|
255
|
+
issues.push({
|
|
256
|
+
path: filePath,
|
|
257
|
+
severity: "warning",
|
|
258
|
+
message: `Key "${key}" should be kebab-case (lowercase with hyphens)`,
|
|
259
|
+
suggestion: `Use: ${key.toLowerCase().replace(/\s+/g, "-").replace(/[A-Z]/g, (c) => c.toLowerCase())}`,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return issues;
|
|
264
|
+
}
|
|
265
|
+
export async function validateCommand(options) {
|
|
266
|
+
const contextPath = getContextPath();
|
|
267
|
+
if (!contextPath) {
|
|
268
|
+
// If not linked, try to find CONTEXT folder in current directory
|
|
269
|
+
const defaultPath = path.join(process.cwd(), "CONTEXT");
|
|
270
|
+
if (!fs.existsSync(defaultPath)) {
|
|
271
|
+
console.log(chalk.red("No CONTEXT folder found."));
|
|
272
|
+
console.log(`Run ${chalk.cyan("npx @epicontext/mcp init")} to create one.`);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const folderToValidate = contextPath || path.join(process.cwd(), "CONTEXT");
|
|
277
|
+
const spinner = ora("Validating CONTEXT folder...").start();
|
|
278
|
+
try {
|
|
279
|
+
const files = readContextFolder(folderToValidate);
|
|
280
|
+
if (files.length === 0) {
|
|
281
|
+
spinner.succeed("CONTEXT folder is empty (no markdown files to validate)");
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const allIssues = [];
|
|
285
|
+
for (const file of files) {
|
|
286
|
+
const issues = validateFile(file.path, file.content);
|
|
287
|
+
allIssues.push(...issues);
|
|
288
|
+
}
|
|
289
|
+
spinner.stop();
|
|
290
|
+
// Group issues by severity
|
|
291
|
+
const errors = allIssues.filter((i) => i.severity === "error");
|
|
292
|
+
const warnings = allIssues.filter((i) => i.severity === "warning");
|
|
293
|
+
console.log("");
|
|
294
|
+
console.log(chalk.bold(`Validated ${files.length} file(s)\n`));
|
|
295
|
+
if (allIssues.length === 0) {
|
|
296
|
+
console.log(chalk.green("✓ All files are valid!\n"));
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
// Show errors
|
|
300
|
+
if (errors.length > 0) {
|
|
301
|
+
console.log(chalk.red(`✗ ${errors.length} error(s):\n`));
|
|
302
|
+
for (const issue of errors) {
|
|
303
|
+
console.log(chalk.red(` ${issue.path}`));
|
|
304
|
+
console.log(chalk.red(` ${issue.message}`));
|
|
305
|
+
if (issue.suggestion) {
|
|
306
|
+
console.log(chalk.gray(` → ${issue.suggestion}`));
|
|
307
|
+
}
|
|
308
|
+
console.log("");
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// Show warnings
|
|
312
|
+
if (warnings.length > 0) {
|
|
313
|
+
console.log(chalk.yellow(`⚠ ${warnings.length} warning(s):\n`));
|
|
314
|
+
for (const issue of warnings) {
|
|
315
|
+
console.log(chalk.yellow(` ${issue.path}`));
|
|
316
|
+
console.log(chalk.yellow(` ${issue.message}`));
|
|
317
|
+
if (issue.suggestion) {
|
|
318
|
+
console.log(chalk.gray(` → ${issue.suggestion}`));
|
|
319
|
+
}
|
|
320
|
+
console.log("");
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Summary
|
|
324
|
+
if (errors.length > 0) {
|
|
325
|
+
console.log(chalk.red(`\nValidation failed with ${errors.length} error(s) and ${warnings.length} warning(s).`));
|
|
326
|
+
console.log(chalk.gray("Fix the errors before pushing to EpicContext."));
|
|
327
|
+
process.exit(1);
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
console.log(chalk.yellow(`\nValidation passed with ${warnings.length} warning(s).`));
|
|
331
|
+
console.log(chalk.gray("You can push to EpicContext, but consider fixing the warnings."));
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
spinner.fail("Validation failed");
|
|
336
|
+
console.error(chalk.red("Error:"), error.message);
|
|
337
|
+
process.exit(1);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmCjE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,YAAiB,GACzB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAsC9D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,QAAQ,EAAE,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAyB7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmCjE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,YAAiB,GACzB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAsC9D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,QAAQ,EAAE,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAyB7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAgyE7D;AA4BD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,GAAE,MAAoB,GAAG,IAAI,CAkGrG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAO5D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOpD"}
|
package/dist/cli/files.js
CHANGED
|
@@ -1934,7 +1934,7 @@ type: task
|
|
|
1934
1934
|
section: development
|
|
1935
1935
|
key: implement-login-api
|
|
1936
1936
|
name: Implement Login API Endpoint
|
|
1937
|
-
status:
|
|
1937
|
+
status: draft
|
|
1938
1938
|
priority: high
|
|
1939
1939
|
agent_source: claude_code
|
|
1940
1940
|
story_ref: email-login
|
|
@@ -2256,33 +2256,179 @@ status: draft
|
|
|
2256
2256
|
`;
|
|
2257
2257
|
fs.writeFileSync(aiGuidePath, aiGuide, "utf-8");
|
|
2258
2258
|
}
|
|
2259
|
-
// Create README.md for each section
|
|
2259
|
+
// Create README.md for each section with detailed guidance
|
|
2260
2260
|
const sectionDescriptions = {
|
|
2261
|
-
"constitution":
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
"
|
|
2261
|
+
"constitution": {
|
|
2262
|
+
description: "Non-negotiable rules and principles that guide all work",
|
|
2263
|
+
guidance: `Use this section to document:
|
|
2264
|
+
- **AI Rules**: Guidelines that AI agents must follow when working on this project
|
|
2265
|
+
- **Context Guide**: How to navigate and use the CONTEXT folder
|
|
2266
|
+
- **Constraints**: Technical, business, or legal limitations that affect all work
|
|
2267
|
+
- **Core Principles**: Fundamental values that guide decision-making
|
|
2268
|
+
|
|
2269
|
+
This is the first section AI agents should read to understand project boundaries.`,
|
|
2270
|
+
blockTypes: ["ai_rules", "context_guide", "constraint", "implementation_log"],
|
|
2271
|
+
},
|
|
2272
|
+
"brand": {
|
|
2273
|
+
description: "Identity, voice, and visual system",
|
|
2274
|
+
guidance: `Use this section to document:
|
|
2275
|
+
- **Brand Positioning**: Golden Circle (WHY/HOW/WHAT) and positioning statement
|
|
2276
|
+
- **Color Palette**: Primary, secondary, and semantic colors with hex/RGB values
|
|
2277
|
+
- **Typography**: Font families, weights, and usage guidelines
|
|
2278
|
+
- **Iconography**: Icon library, style, and selected icons
|
|
2279
|
+
- **Tone of Voice**: Brand personality, voice archetype, vocabulary
|
|
2280
|
+
- **Messaging**: Elevator pitch, value propositions, CTAs
|
|
2281
|
+
- **Logos**: Logo variants for different backgrounds`,
|
|
2282
|
+
blockTypes: ["brand_positioning", "brand_color_palette", "brand_typography", "brand_iconography", "tone_of_voice", "messaging_framework", "logo", "brand_assets"],
|
|
2283
|
+
},
|
|
2284
|
+
"product": {
|
|
2285
|
+
description: "Vision, features, and roadmap",
|
|
2286
|
+
guidance: `Use this section to document:
|
|
2287
|
+
- **Product Overview**: Vision, mission, and product strategy
|
|
2288
|
+
- **Features**: Individual feature definitions with acceptance criteria
|
|
2289
|
+
- **SWOT Analysis**: Strengths, weaknesses, opportunities, threats
|
|
2290
|
+
- **Feature Market Analysis**: Competitive analysis for specific features`,
|
|
2291
|
+
blockTypes: ["product_overview", "feature", "swot_analysis", "feature_market_analysis"],
|
|
2292
|
+
},
|
|
2293
|
+
"business-strategy": {
|
|
2294
|
+
description: "Strategic planning frameworks and business models",
|
|
2295
|
+
guidance: `Use this section to document:
|
|
2296
|
+
- **OGSM**: Objectives, Goals, Strategies, Measures framework
|
|
2297
|
+
- **Business Model Canvas**: 9-block business model visualization
|
|
2298
|
+
- **Product Strategy Canvas**: Product-specific strategy
|
|
2299
|
+
- **Porter's Five Forces**: Competitive forces analysis
|
|
2300
|
+
- **Strategic Group Map**: Market positioning visualization
|
|
2301
|
+
- **Obeya Board**: Visual management board`,
|
|
2302
|
+
blockTypes: ["ogsm", "business_model_canvas", "product_strategy_canvas", "porters_five_forces", "strategic_group_map", "obeya_board"],
|
|
2303
|
+
},
|
|
2304
|
+
"users": {
|
|
2305
|
+
description: "Personas, jobs to be done, and user journeys",
|
|
2306
|
+
guidance: `Use this section to document:
|
|
2307
|
+
- **Personas**: Detailed user archetypes with goals, frustrations, behaviors
|
|
2308
|
+
- **Jobs to Be Done**: Functional and emotional jobs users are trying to accomplish
|
|
2309
|
+
- **Journey Maps**: Step-by-step user experiences with touchpoints and emotions
|
|
2310
|
+
|
|
2311
|
+
Organize files in subfolders:
|
|
2312
|
+
- \`personas/\` - User persona files
|
|
2313
|
+
- \`jobs/\` - JTBD files
|
|
2314
|
+
- \`journeys/\` - Journey map files`,
|
|
2315
|
+
blockTypes: ["persona", "jtbd", "journey_map"],
|
|
2316
|
+
},
|
|
2317
|
+
"research": {
|
|
2318
|
+
description: "Market and competitor analysis",
|
|
2319
|
+
guidance: `Use this section to document:
|
|
2320
|
+
- **Competitors**: Analysis of competing products/services
|
|
2321
|
+
- **Market Research**: Market size, trends, and opportunities
|
|
2322
|
+
- **User Research**: Findings from user interviews, surveys, usability tests
|
|
2323
|
+
|
|
2324
|
+
Organize competitor files in: \`competitors/\``,
|
|
2325
|
+
blockTypes: ["competitor", "market_research", "user_research"],
|
|
2326
|
+
},
|
|
2327
|
+
"technical": {
|
|
2328
|
+
description: "Stack, architecture, and constraints",
|
|
2329
|
+
guidance: `Use this section to document:
|
|
2330
|
+
- **Tech Stack**: Frontend, backend, infrastructure, and tools
|
|
2331
|
+
- **Architecture Diagrams**: C4 model diagrams (Context, Container, Component)
|
|
2332
|
+
- **Integrations**: Third-party services and APIs
|
|
2333
|
+
- **Constraints**: Technical limitations and requirements
|
|
2334
|
+
|
|
2335
|
+
Organize integration files in: \`integrations/\``,
|
|
2336
|
+
blockTypes: ["tech_stack", "architecture_diagram", "integration", "constraint"],
|
|
2337
|
+
},
|
|
2338
|
+
"design-system": {
|
|
2339
|
+
description: "Links to Storybook and Figma design resources",
|
|
2340
|
+
guidance: `Use this section to link external design resources:
|
|
2341
|
+
- **Storybook Link**: Connect to your hosted Storybook for component documentation
|
|
2342
|
+
- Supports EpicContext authentication for protected Storybooks
|
|
2343
|
+
- Use the storybook-template repo for easy setup
|
|
2344
|
+
- **Figma Embed**: Link to Figma design files
|
|
2345
|
+
|
|
2346
|
+
Note: This section is for linking external design tools, not for documenting
|
|
2347
|
+
components directly. Component documentation lives in Storybook.`,
|
|
2348
|
+
blockTypes: ["storybook_link", "figma_embed"],
|
|
2349
|
+
},
|
|
2350
|
+
"information-architecture": {
|
|
2351
|
+
description: "Site structure and taxonomies",
|
|
2352
|
+
guidance: `Use this section to document:
|
|
2353
|
+
- **IA Tree**: Visual representation of page hierarchy and navigation
|
|
2354
|
+
- Shows pages, modals, and their relationships
|
|
2355
|
+
- Documents cross-page links and user flows
|
|
2356
|
+
- Uses embedded JSON for sync compatibility
|
|
2357
|
+
- **Taxonomy**: Content classification systems
|
|
2358
|
+
- Categories, tags, and content types
|
|
2359
|
+
- Hierarchical organization of content
|
|
2360
|
+
|
|
2361
|
+
These blocks use visual editors in the EpicContext app.`,
|
|
2362
|
+
blockTypes: ["ia_tree", "taxonomy"],
|
|
2363
|
+
},
|
|
2364
|
+
"metrics": {
|
|
2365
|
+
description: "KPIs and analytics",
|
|
2366
|
+
guidance: `Use this section to document:
|
|
2367
|
+
- **North Star**: The single most important metric for the product
|
|
2368
|
+
- **KPIs**: Key Performance Indicators with targets and tracking
|
|
2369
|
+
- **Metrics**: Individual metric definitions
|
|
2370
|
+
- **Analytics Events**: Event tracking definitions for implementation`,
|
|
2371
|
+
blockTypes: ["north_star", "kpi", "metric", "analytics_event"],
|
|
2372
|
+
},
|
|
2373
|
+
"decisions": {
|
|
2374
|
+
description: "Architecture decision records",
|
|
2375
|
+
guidance: `Use this section to document:
|
|
2376
|
+
- **Decisions**: Architecture Decision Records (ADRs)
|
|
2377
|
+
- Context: What situation led to this decision?
|
|
2378
|
+
- Options: What alternatives were considered?
|
|
2379
|
+
- Decision: What was decided?
|
|
2380
|
+
- Rationale: Why this choice over alternatives?
|
|
2381
|
+
- Consequences: What are the implications?
|
|
2382
|
+
|
|
2383
|
+
Good ADRs help future team members understand why things are built this way.`,
|
|
2384
|
+
blockTypes: ["decision"],
|
|
2385
|
+
},
|
|
2386
|
+
"development": {
|
|
2387
|
+
description: "Epics, stories, tasks, and roadmaps",
|
|
2388
|
+
guidance: `Use this section to track development work:
|
|
2389
|
+
- **Epics**: Large initiatives spanning multiple sprints
|
|
2390
|
+
- **User Stories**: User-facing features with acceptance criteria
|
|
2391
|
+
- **Tasks**: Technical implementation plans (often created by AI agents)
|
|
2392
|
+
- **Roadmaps**: Timeline visualization of epics and milestones
|
|
2393
|
+
|
|
2394
|
+
Hierarchy: Epic → User Story → Task
|
|
2395
|
+
|
|
2396
|
+
Organize files in subfolders:
|
|
2397
|
+
- \`epics/\` - Epic files
|
|
2398
|
+
- \`stories/\` - User story files
|
|
2399
|
+
- \`tasks/\` - Task/implementation plan files
|
|
2400
|
+
- \`roadmaps/\` - Roadmap files`,
|
|
2401
|
+
blockTypes: ["epic", "user_story", "task", "roadmap", "release", "impact_effort_matrix"],
|
|
2402
|
+
},
|
|
2273
2403
|
};
|
|
2274
2404
|
for (const section of defaultSections) {
|
|
2275
2405
|
const sectionReadmePath = path.join(contextPath, section, "README.md");
|
|
2276
2406
|
if (!fs.existsSync(sectionReadmePath)) {
|
|
2277
|
-
const
|
|
2407
|
+
const sectionInfo = sectionDescriptions[section];
|
|
2408
|
+
const description = sectionInfo?.description || section;
|
|
2409
|
+
const guidance = sectionInfo?.guidance || "Add blocks via the EpicContext app or create markdown files with proper frontmatter.";
|
|
2410
|
+
const blockTypes = sectionInfo?.blockTypes || [];
|
|
2278
2411
|
const sectionName = section.split("-").map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
|
|
2279
2412
|
const sectionReadme = `# ${sectionName}
|
|
2280
2413
|
|
|
2281
2414
|
> ${description}
|
|
2282
2415
|
|
|
2283
|
-
|
|
2416
|
+
## When to Use This Section
|
|
2417
|
+
|
|
2418
|
+
${guidance}
|
|
2419
|
+
|
|
2420
|
+
## Block Types
|
|
2421
|
+
|
|
2422
|
+
${blockTypes.length > 0 ? blockTypes.map(t => `- \`${t}\``).join("\n") : "See AI-GUIDE.md for available block types."}
|
|
2423
|
+
|
|
2424
|
+
## Getting Started
|
|
2425
|
+
|
|
2426
|
+
1. Create a new markdown file in this folder
|
|
2427
|
+
2. Add YAML frontmatter with: type, section, key, name, status
|
|
2428
|
+
3. Write content following the block type schema
|
|
2429
|
+
4. Sync with EpicContext: \`npx @epicontext/mcp push\`
|
|
2284
2430
|
|
|
2285
|
-
See \`AI-GUIDE.md\` in the root CONTEXT folder for
|
|
2431
|
+
See \`AI-GUIDE.md\` in the root CONTEXT folder for detailed format instructions.
|
|
2286
2432
|
`;
|
|
2287
2433
|
fs.writeFileSync(sectionReadmePath, sectionReadme, "utf-8");
|
|
2288
2434
|
}
|
|
@@ -2357,14 +2503,26 @@ status: draft
|
|
|
2357
2503
|
[Content following the block type schema]
|
|
2358
2504
|
\`\`\`
|
|
2359
2505
|
|
|
2360
|
-
## Syncing
|
|
2506
|
+
## Syncing with EpicContext Cloud
|
|
2361
2507
|
|
|
2362
|
-
After creating or editing files, sync
|
|
2508
|
+
After creating or editing CONTEXT files, sync them to EpicContext:
|
|
2363
2509
|
|
|
2364
2510
|
\`\`\`bash
|
|
2511
|
+
# Check sync status
|
|
2512
|
+
npx @epiccontext/mcp status
|
|
2513
|
+
|
|
2514
|
+
# Push local changes to cloud (overwrites cloud version)
|
|
2365
2515
|
npx @epiccontext/mcp push
|
|
2516
|
+
|
|
2517
|
+
# Pull changes from cloud to local
|
|
2518
|
+
npx @epiccontext/mcp pull
|
|
2519
|
+
|
|
2520
|
+
# Push only a specific section
|
|
2521
|
+
npx @epiccontext/mcp push --section product
|
|
2366
2522
|
\`\`\`
|
|
2367
2523
|
|
|
2524
|
+
**IMPORTANT:** Always run \`npx @epiccontext/mcp push\` after creating or updating CONTEXT files to sync changes to the EpicContext cloud.
|
|
2525
|
+
|
|
2368
2526
|
For full documentation, see \`${relativeContextPath}/AI-GUIDE.md\`
|
|
2369
2527
|
`;
|
|
2370
2528
|
// CLAUDE.md - Claude Code / Anthropic Claude
|
package/dist/cli/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAiF9B,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAWzC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { pushCommand } from "./commands/push.js";
|
|
|
8
8
|
import { statusCommand } from "./commands/status.js";
|
|
9
9
|
import { watchCommand } from "./commands/watch.js";
|
|
10
10
|
import { serveCommand } from "./commands/serve.js";
|
|
11
|
+
import { validateCommand } from "./commands/validate.js";
|
|
11
12
|
const program = new Command();
|
|
12
13
|
program
|
|
13
14
|
.name("epiccontext")
|
|
@@ -45,12 +46,14 @@ program
|
|
|
45
46
|
.description("Pull changes from cloud to local")
|
|
46
47
|
.option("-s, --section <type>", "Only pull specific section")
|
|
47
48
|
.option("-f, --force", "Overwrite local changes without confirmation")
|
|
49
|
+
.option("--delete-orphans", "Delete local files that don't exist in cloud (use with caution)")
|
|
48
50
|
.action(pullCommand);
|
|
49
51
|
// Push command - push to cloud (always overwrites cloud with local)
|
|
50
52
|
program
|
|
51
53
|
.command("push")
|
|
52
54
|
.description("Push local changes to cloud (overwrites cloud version)")
|
|
53
55
|
.option("-s, --section <type>", "Only push specific section")
|
|
56
|
+
.option("-d, --dry-run", "Preview changes without applying them")
|
|
54
57
|
.action(pushCommand);
|
|
55
58
|
// Watch command - auto-push on file changes (local → cloud only)
|
|
56
59
|
program
|
|
@@ -64,6 +67,11 @@ program
|
|
|
64
67
|
.description("Start MCP server for AI tools")
|
|
65
68
|
.option("-t, --transport <type>", "Transport type: stdio", "stdio")
|
|
66
69
|
.action(serveCommand);
|
|
70
|
+
// Validate command - check CONTEXT files before pushing
|
|
71
|
+
program
|
|
72
|
+
.command("validate")
|
|
73
|
+
.description("Validate CONTEXT files for errors before pushing")
|
|
74
|
+
.action(validateCommand);
|
|
67
75
|
// Error handling
|
|
68
76
|
program.exitOverride();
|
|
69
77
|
export async function run() {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uCAAuC;AACvC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,WAAW,CAAC;KACnE,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gDAAgD;AAChD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACpC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,oCAAoC;AACpC,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,oCAAoC;AACpC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;KAC3D,MAAM,CACL,uBAAuB,EACvB,+CAA+C,EAC/C,WAAW,CACZ;KACA,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,iCAAiC;AACjC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;KACrE,MAAM,CAAC,kBAAkB,EAAE,iEAAiE,CAAC;KAC7F,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,oEAAoE;AACpE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;KAChE,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,iEAAiE;AACjE,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,mCAAmC;AACnC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,OAAO,CAAC;KAClE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,wDAAwD;AACxD,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,iBAAiB;AACjB,OAAO,CAAC,YAAY,EAAE,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAe,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC/C,qDAAqD;YACrD,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/sync/pull.d.ts
CHANGED
|
@@ -17,6 +17,9 @@ export interface PullResult {
|
|
|
17
17
|
* Pull from cloud to local CONTEXT folder
|
|
18
18
|
* By default, skips files where local version is newer than cloud version
|
|
19
19
|
* With deleteOrphans, removes local files that don't exist in cloud
|
|
20
|
+
*
|
|
21
|
+
* SAFETY: Will NOT delete orphans if cloud has 0 content blocks to prevent
|
|
22
|
+
* accidental deletion when cloud is empty or newly created.
|
|
20
23
|
*/
|
|
21
24
|
export declare function pullFromCloud(client: EpicContextClient, contextPath: string, options?: PullOptions): Promise<PullResult>;
|
|
22
25
|
//# sourceMappingURL=pull.d.ts.map
|
package/dist/sync/pull.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAqErB"}
|
package/dist/sync/pull.js
CHANGED
|
@@ -3,12 +3,16 @@ import { writeContextFolder, ensureContextFolder, deleteOrphanedLocalFiles } fro
|
|
|
3
3
|
* Pull from cloud to local CONTEXT folder
|
|
4
4
|
* By default, skips files where local version is newer than cloud version
|
|
5
5
|
* With deleteOrphans, removes local files that don't exist in cloud
|
|
6
|
+
*
|
|
7
|
+
* SAFETY: Will NOT delete orphans if cloud has 0 content blocks to prevent
|
|
8
|
+
* accidental deletion when cloud is empty or newly created.
|
|
6
9
|
*/
|
|
7
10
|
export async function pullFromCloud(client, contextPath, options = {}) {
|
|
8
11
|
// Ensure context folder exists
|
|
9
12
|
ensureContextFolder(contextPath);
|
|
10
13
|
// Export files from cloud
|
|
11
14
|
const response = await client.exportFiles();
|
|
15
|
+
// Safety check: if cloud returns no files at all, don't delete anything
|
|
12
16
|
if (!response.files || response.files.length === 0) {
|
|
13
17
|
return {
|
|
14
18
|
success: true,
|
|
@@ -29,16 +33,22 @@ export async function pullFromCloud(client, contextPath, options = {}) {
|
|
|
29
33
|
// Pass force option to allow overwriting newer local files
|
|
30
34
|
const { written, skipped, skippedPaths } = writeContextFolder(contextPath, filesToWrite, { force: options.force });
|
|
31
35
|
// Delete local files that don't exist in cloud (orphans)
|
|
32
|
-
// Default to
|
|
36
|
+
// Default to FALSE for safety - user must explicitly enable with --delete-orphans
|
|
33
37
|
let filesDeleted = 0;
|
|
34
38
|
let deletedPaths = [];
|
|
35
|
-
if (options.deleteOrphans
|
|
39
|
+
if (options.deleteOrphans === true) {
|
|
36
40
|
// Only delete orphans if we're not filtering by section
|
|
37
41
|
// (otherwise we'd delete files from other sections)
|
|
38
42
|
if (!options.section) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
// SAFETY: Only delete if cloud has meaningful content (more than just READMEs)
|
|
44
|
+
// This prevents wiping local files when cloud is empty/new
|
|
45
|
+
const contentFiles = response.files.filter(f => !f.path.toLowerCase().includes('readme.md') &&
|
|
46
|
+
!f.path.toLowerCase().includes('ai-guide.md'));
|
|
47
|
+
if (contentFiles.length > 0) {
|
|
48
|
+
const deleteResult = deleteOrphanedLocalFiles(contextPath, response.files);
|
|
49
|
+
filesDeleted = deleteResult.deleted;
|
|
50
|
+
deletedPaths = deleteResult.deletedPaths;
|
|
51
|
+
}
|
|
42
52
|
}
|
|
43
53
|
}
|
|
44
54
|
return {
|
package/dist/sync/pull.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAkBpG
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAkBpG;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAyB,EACzB,WAAmB,EACnB,UAAuB,EAAE;IAEzB,+BAA+B;IAC/B,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjC,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAE5C,wEAAwE;IACxE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,IAAI,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC;IAClC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAQ,CAAC,CACpC,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,2DAA2D;IAC3D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAC3D,WAAW,EACX,YAAY,EACZ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CACzB,CAAC;IAEF,yDAAyD;IACzD,kFAAkF;IAClF,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACnC,wDAAwD;QACxD,oDAAoD;QACpD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,+EAA+E;YAC/E,2DAA2D;YAC3D,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC3C,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC9C,CAAC;YAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3E,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;gBACpC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,UAAU,EAAE,YAAY,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC"}
|