@epiccontext/mcp 0.1.29 → 0.1.31

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.
@@ -1,6 +1,7 @@
1
1
  export interface PullOptions {
2
2
  section?: string;
3
3
  force?: boolean;
4
+ deleteOrphans?: boolean;
4
5
  }
5
6
  export declare function pullCommand(options: PullOptions): Promise<void>;
6
7
  //# sourceMappingURL=pull.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyErE"}
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFrE"}
@@ -36,12 +36,25 @@ export async function pullCommand(options) {
36
36
  const result = await pullFromCloud(client, contextPath, {
37
37
  section: options.section,
38
38
  force: options.force,
39
+ deleteOrphans: options.deleteOrphans,
39
40
  });
40
41
  spinner.succeed("Pull complete!");
41
42
  console.log("");
42
43
  if (result.filesWritten > 0) {
43
44
  console.log(chalk.green(` ${result.filesWritten} file(s) written`));
44
45
  }
46
+ // Show deleted files (orphans removed)
47
+ if (result.filesDeleted > 0 && result.deletedPaths.length > 0) {
48
+ console.log(chalk.red(` Deleted: ${result.filesDeleted} orphan file(s)`));
49
+ // Show a few examples
50
+ const deletedExamples = result.deletedPaths.slice(0, 5);
51
+ for (const path of deletedExamples) {
52
+ console.log(chalk.red(` - ${path}`));
53
+ }
54
+ if (result.deletedPaths.length > 5) {
55
+ console.log(chalk.red(` ... and ${result.deletedPaths.length - 5} more`));
56
+ }
57
+ }
45
58
  // Show skipped files with explanation (local files that are newer)
46
59
  if (result.filesSkipped > 0 && result.skippedPaths.length > 0) {
47
60
  console.log(chalk.gray(` Skipped: ${result.filesSkipped} file(s) - local version is newer`));
@@ -59,8 +72,8 @@ export async function pullCommand(options) {
59
72
  else if (result.filesSkipped > 0) {
60
73
  console.log(chalk.yellow(` ${result.filesSkipped} file(s) skipped`));
61
74
  }
62
- if (result.filesWritten === 0 && result.filesSkipped === 0) {
63
- console.log(chalk.gray(" No files to pull (project is empty)"));
75
+ if (result.filesWritten === 0 && result.filesSkipped === 0 && result.filesDeleted === 0) {
76
+ console.log(chalk.gray(" No changes (local folder is in sync)"));
64
77
  }
65
78
  console.log("");
66
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export interface PushOptions {
2
2
  section?: string;
3
+ dryRun?: boolean;
3
4
  }
4
5
  export declare function pushCommand(options: PushOptions): Promise<void>;
5
6
  //# sourceMappingURL=push.d.ts.map
@@ -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,CA4ErE"}
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 (!config?.project?.id || !config?.auth?.apiKey) {
9
- console.log(chalk.yellow("Not linked to an EpicContext project."));
10
- console.log(`Run ${chalk.cyan("epiccontext link")} to connect.`);
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 spinner = ora("Pushing to EpicContext...").start();
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
- spinner.succeed("Push complete!");
43
- console.log("");
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
- console.log(chalk.green(` Created: ${result.result.created} block(s)`));
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
- console.log(chalk.blue(` Updated: ${result.result.updated} block(s)`));
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
- console.log(chalk.yellow(` Deleted: ${result.result.deleted} orphan block(s)`));
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
- console.log(chalk.gray(` Skipped: ${result.result.skipped} file(s)`));
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":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface ValidateOptions {
2
+ fix?: boolean;
3
+ }
4
+ export declare function validateCommand(options: ValidateOptions): Promise<void>;
5
+ //# sourceMappingURL=validate.d.ts.map
@@ -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;AA4SD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF7E"}
@@ -0,0 +1,327 @@
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
+ if (frontmatter.status) {
228
+ const validStatuses = ["draft", "complete", "empty"];
229
+ if (!validStatuses.includes(frontmatter.status)) {
230
+ issues.push({
231
+ path: filePath,
232
+ severity: "warning",
233
+ message: `Invalid status: "${frontmatter.status}"`,
234
+ suggestion: `Valid statuses: ${validStatuses.join(", ")}`,
235
+ });
236
+ }
237
+ }
238
+ // Check key format (should be kebab-case)
239
+ if (frontmatter.key) {
240
+ const key = frontmatter.key;
241
+ if (key !== key.toLowerCase() || key.includes(" ") || /[A-Z]/.test(key)) {
242
+ issues.push({
243
+ path: filePath,
244
+ severity: "warning",
245
+ message: `Key "${key}" should be kebab-case (lowercase with hyphens)`,
246
+ suggestion: `Use: ${key.toLowerCase().replace(/\s+/g, "-").replace(/[A-Z]/g, (c) => c.toLowerCase())}`,
247
+ });
248
+ }
249
+ }
250
+ return issues;
251
+ }
252
+ export async function validateCommand(options) {
253
+ const contextPath = getContextPath();
254
+ if (!contextPath) {
255
+ // If not linked, try to find CONTEXT folder in current directory
256
+ const defaultPath = path.join(process.cwd(), "CONTEXT");
257
+ if (!fs.existsSync(defaultPath)) {
258
+ console.log(chalk.red("No CONTEXT folder found."));
259
+ console.log(`Run ${chalk.cyan("npx @epicontext/mcp init")} to create one.`);
260
+ return;
261
+ }
262
+ }
263
+ const folderToValidate = contextPath || path.join(process.cwd(), "CONTEXT");
264
+ const spinner = ora("Validating CONTEXT folder...").start();
265
+ try {
266
+ const files = readContextFolder(folderToValidate);
267
+ if (files.length === 0) {
268
+ spinner.succeed("CONTEXT folder is empty (no markdown files to validate)");
269
+ return;
270
+ }
271
+ const allIssues = [];
272
+ for (const file of files) {
273
+ const issues = validateFile(file.path, file.content);
274
+ allIssues.push(...issues);
275
+ }
276
+ spinner.stop();
277
+ // Group issues by severity
278
+ const errors = allIssues.filter((i) => i.severity === "error");
279
+ const warnings = allIssues.filter((i) => i.severity === "warning");
280
+ console.log("");
281
+ console.log(chalk.bold(`Validated ${files.length} file(s)\n`));
282
+ if (allIssues.length === 0) {
283
+ console.log(chalk.green("✓ All files are valid!\n"));
284
+ return;
285
+ }
286
+ // Show errors
287
+ if (errors.length > 0) {
288
+ console.log(chalk.red(`✗ ${errors.length} error(s):\n`));
289
+ for (const issue of errors) {
290
+ console.log(chalk.red(` ${issue.path}`));
291
+ console.log(chalk.red(` ${issue.message}`));
292
+ if (issue.suggestion) {
293
+ console.log(chalk.gray(` → ${issue.suggestion}`));
294
+ }
295
+ console.log("");
296
+ }
297
+ }
298
+ // Show warnings
299
+ if (warnings.length > 0) {
300
+ console.log(chalk.yellow(`⚠ ${warnings.length} warning(s):\n`));
301
+ for (const issue of warnings) {
302
+ console.log(chalk.yellow(` ${issue.path}`));
303
+ console.log(chalk.yellow(` ${issue.message}`));
304
+ if (issue.suggestion) {
305
+ console.log(chalk.gray(` → ${issue.suggestion}`));
306
+ }
307
+ console.log("");
308
+ }
309
+ }
310
+ // Summary
311
+ if (errors.length > 0) {
312
+ console.log(chalk.red(`\nValidation failed with ${errors.length} error(s) and ${warnings.length} warning(s).`));
313
+ console.log(chalk.gray("Fix the errors before pushing to EpicContext."));
314
+ process.exit(1);
315
+ }
316
+ else {
317
+ console.log(chalk.yellow(`\nValidation passed with ${warnings.length} warning(s).`));
318
+ console.log(chalk.gray("You can push to EpicContext, but consider fixing the warnings."));
319
+ }
320
+ }
321
+ catch (error) {
322
+ spinner.fail("Validation failed");
323
+ console.error(chalk.red("Error:"), error.message);
324
+ process.exit(1);
325
+ }
326
+ }
327
+ //# 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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"}
@@ -15,6 +15,14 @@ export declare function writeContextFolder(contextPath: string, files: FileInfo[
15
15
  skipped: number;
16
16
  skippedPaths: string[];
17
17
  };
18
+ /**
19
+ * Delete local files that don't exist in the cloud
20
+ * Used during pull to remove files that were deleted in the UI
21
+ */
22
+ export declare function deleteOrphanedLocalFiles(contextPath: string, cloudFiles: FileInfo[]): {
23
+ deleted: number;
24
+ deletedPaths: string[];
25
+ };
18
26
  /**
19
27
  * Ensure the context folder exists with basic structure
20
28
  */
@@ -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;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA6oE7D;AA4BD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,GAAE,MAAoB,GAAG,IAAI,CAsFrG;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"}
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
@@ -73,6 +73,34 @@ export function writeContextFolder(contextPath, files, options = {}) {
73
73
  }
74
74
  return { written, skipped, skippedPaths };
75
75
  }
76
+ /**
77
+ * Delete local files that don't exist in the cloud
78
+ * Used during pull to remove files that were deleted in the UI
79
+ */
80
+ export function deleteOrphanedLocalFiles(contextPath, cloudFiles) {
81
+ // Build a set of all cloud file paths (normalized)
82
+ const cloudPaths = new Set();
83
+ for (const file of cloudFiles) {
84
+ cloudPaths.add(file.path);
85
+ }
86
+ // Get all local markdown files
87
+ const localFiles = readContextFolder(contextPath);
88
+ const deleted = [];
89
+ for (const localFile of localFiles) {
90
+ // If local file doesn't exist in cloud, delete it
91
+ if (!cloudPaths.has(localFile.path)) {
92
+ const fullPath = path.join(contextPath, localFile.path);
93
+ try {
94
+ fs.unlinkSync(fullPath);
95
+ deleted.push(localFile.path);
96
+ }
97
+ catch (error) {
98
+ console.error(`Failed to delete ${localFile.path}:`, error);
99
+ }
100
+ }
101
+ }
102
+ return { deleted: deleted.length, deletedPaths: deleted };
103
+ }
76
104
  /**
77
105
  * Ensure the context folder exists with basic structure
78
106
  */
@@ -2228,33 +2256,179 @@ status: draft
2228
2256
  `;
2229
2257
  fs.writeFileSync(aiGuidePath, aiGuide, "utf-8");
2230
2258
  }
2231
- // Create README.md for each section
2259
+ // Create README.md for each section with detailed guidance
2232
2260
  const sectionDescriptions = {
2233
- "constitution": "Non-negotiable rules and principles that guide all work",
2234
- "brand": "Identity, voice, and visual system",
2235
- "product": "Vision, features, and roadmap",
2236
- "business-strategy": "Strategic planning frameworks and business models",
2237
- "users": "Personas, jobs to be done, and user journeys",
2238
- "research": "Market and competitor analysis",
2239
- "technical": "Stack, architecture, and constraints",
2240
- "design-system": "Links to Storybook and Figma design resources",
2241
- "information-architecture": "Site structure and taxonomies",
2242
- "metrics": "KPIs and analytics",
2243
- "decisions": "Architecture decision records",
2244
- "development": "Epics, stories, tasks, and roadmaps",
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
+ },
2245
2403
  };
2246
2404
  for (const section of defaultSections) {
2247
2405
  const sectionReadmePath = path.join(contextPath, section, "README.md");
2248
2406
  if (!fs.existsSync(sectionReadmePath)) {
2249
- const description = sectionDescriptions[section] || section;
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 || [];
2250
2411
  const sectionName = section.split("-").map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
2251
2412
  const sectionReadme = `# ${sectionName}
2252
2413
 
2253
2414
  > ${description}
2254
2415
 
2255
- This section is empty. Add blocks via the EpicContext app or create markdown files with proper frontmatter.
2416
+ ## When to Use This Section
2417
+
2418
+ ${guidance}
2256
2419
 
2257
- See \`AI-GUIDE.md\` in the root CONTEXT folder for file format instructions.
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\`
2430
+
2431
+ See \`AI-GUIDE.md\` in the root CONTEXT folder for detailed format instructions.
2258
2432
  `;
2259
2433
  fs.writeFileSync(sectionReadmePath, sectionReadme, "utf-8");
2260
2434
  }
@@ -2329,14 +2503,26 @@ status: draft
2329
2503
  [Content following the block type schema]
2330
2504
  \`\`\`
2331
2505
 
2332
- ## Syncing
2506
+ ## Syncing with EpicContext Cloud
2333
2507
 
2334
- After creating or editing files, sync with EpicContext:
2508
+ After creating or editing CONTEXT files, sync them to EpicContext:
2335
2509
 
2336
2510
  \`\`\`bash
2511
+ # Check sync status
2512
+ npx @epiccontext/mcp status
2513
+
2514
+ # Push local changes to cloud (overwrites cloud version)
2337
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
2338
2522
  \`\`\`
2339
2523
 
2524
+ **IMPORTANT:** Always run \`npx @epiccontext/mcp push\` after creating or updating CONTEXT files to sync changes to the EpicContext cloud.
2525
+
2340
2526
  For full documentation, see \`${relativeContextPath}/AI-GUIDE.md\`
2341
2527
  `;
2342
2528
  // CLAUDE.md - Claude Code / Anthropic Claude
@@ -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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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAghEnB,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,2DAA2D;IAC3D,MAAM,mBAAmB,GAAoF;QAC3G,cAAc,EAAE;YACd,WAAW,EAAE,yDAAyD;YACtE,QAAQ,EAAE;;;;;;kFAMkE;YAC5E,UAAU,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,CAAC;SAC9E;QACD,OAAO,EAAE;YACP,WAAW,EAAE,oCAAoC;YACjD,QAAQ,EAAE;;;;;;;qDAOqC;YAC/C,UAAU,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,CAAC;SAClK;QACD,SAAS,EAAE;YACT,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE;;;;0EAI0D;YACpE,UAAU,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,yBAAyB,CAAC;SACxF;QACD,mBAAmB,EAAE;YACnB,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE;;;;;;2CAM2B;YACrC,UAAU,EAAE,CAAC,MAAM,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,aAAa,CAAC;SACtI;QACD,OAAO,EAAE;YACP,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE;;;;;;;;oCAQoB;YAC9B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC;SAC/C;QACD,UAAU,EAAE;YACV,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE;;;;;+CAK+B;YACzC,UAAU,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,CAAC;SAC/D;QACD,WAAW,EAAE;YACX,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE;;;;;;iDAMiC;YAC3C,UAAU,EAAE,CAAC,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,YAAY,CAAC;SAChF;QACD,eAAe,EAAE;YACf,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE;;;;;;;iEAOiD;YAC3D,UAAU,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;SAC9C;QACD,0BAA0B,EAAE;YAC1B,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE;;;;;;;;;wDASwC;YAClD,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;SACpC;QACD,SAAS,EAAE;YACT,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE;;;;sEAIsD;YAChE,UAAU,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC;SAC/D;QACD,WAAW,EAAE;YACX,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE;;;;;;;;6EAQ6D;YACvE,UAAU,EAAE,CAAC,UAAU,CAAC;SACzB;QACD,aAAa,EAAE;YACb,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE;;;;;;;;;;;;gCAYgB;YAC1B,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,CAAC;SACzF;KACF,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,WAAW,EAAE,WAAW,IAAI,OAAO,CAAC;YACxD,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,sFAAsF,CAAC;YACjI,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;YACjD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElG,MAAM,aAAa,GAAG,KAAK,WAAW;;IAExC,WAAW;;;;EAIb,QAAQ;;;;EAIR,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4CAA4C;;;;;;;;;;CAUpH,CAAC;YACI,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,WAAmB,EACnB,OAAe,EACf,GAAW,EACX,IAAY,EACZ,IAAY,EACZ,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG;QAChB,IAAI;WACD,OAAO;OACX,GAAG;QACF,IAAI;;;;EAIV,OAAO,EAAE,CAAC;QACR,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAmB,EAAE,cAAsB,WAAW;IAC7F,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;IAE5F,gEAAgE;IAChE,MAAM,iBAAiB,GAAG;;;;;;QAMpB,mBAAmB;;sBAEL,mBAAmB;;;;kEAIyB,mBAAmB;;;;;;;;;oCASjD,mBAAmB;sCACjB,mBAAmB;wCACjB,mBAAmB;+BAC5B,mBAAmB;yBACzB,mBAAmB;sCACN,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsCzB,mBAAmB;CAClD,CAAC;IAEA,6CAA6C;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,2BAA2B;IAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -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;AAWpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAyE9B,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAWzC;AAED,OAAO,EAAE,OAAO,EAAE,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;AAgF9B,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")
@@ -51,6 +52,7 @@ program
51
52
  .command("push")
52
53
  .description("Push local changes to cloud (overwrites cloud version)")
53
54
  .option("-s, --section <type>", "Only push specific section")
55
+ .option("-d, --dry-run", "Preview changes without applying them")
54
56
  .action(pushCommand);
55
57
  // Watch command - auto-push on file changes (local → cloud only)
56
58
  program
@@ -64,6 +66,11 @@ program
64
66
  .description("Start MCP server for AI tools")
65
67
  .option("-t, --transport <type>", "Transport type: stdio", "stdio")
66
68
  .action(serveCommand);
69
+ // Validate command - check CONTEXT files before pushing
70
+ program
71
+ .command("validate")
72
+ .description("Validate CONTEXT files for errors before pushing")
73
+ .action(validateCommand);
67
74
  // Error handling
68
75
  program.exitOverride();
69
76
  export async function run() {
@@ -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;AAEnD,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,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,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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,21 @@ import { EpicContextClient } from "../api/client.js";
2
2
  export interface PullOptions {
3
3
  force?: boolean;
4
4
  section?: string;
5
+ deleteOrphans?: boolean;
5
6
  }
6
7
  export interface PullResult {
7
8
  success: boolean;
8
9
  filesWritten: number;
9
10
  filesSkipped: number;
11
+ filesDeleted: number;
10
12
  skippedPaths: string[];
13
+ deletedPaths: string[];
11
14
  totalFiles: number;
12
15
  }
13
16
  /**
14
17
  * Pull from cloud to local CONTEXT folder
15
18
  * By default, skips files where local version is newer than cloud version
19
+ * With deleteOrphans, removes local files that don't exist in cloud
16
20
  */
17
21
  export declare function pullFromCloud(client: EpicContextClient, contextPath: string, options?: PullOptions): Promise<PullResult>;
18
22
  //# sourceMappingURL=pull.d.ts.map
@@ -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;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAwCrB"}
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;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CA2DrB"}
package/dist/sync/pull.js CHANGED
@@ -1,7 +1,8 @@
1
- import { writeContextFolder, ensureContextFolder } from "../cli/files.js";
1
+ import { writeContextFolder, ensureContextFolder, deleteOrphanedLocalFiles } from "../cli/files.js";
2
2
  /**
3
3
  * Pull from cloud to local CONTEXT folder
4
4
  * By default, skips files where local version is newer than cloud version
5
+ * With deleteOrphans, removes local files that don't exist in cloud
5
6
  */
6
7
  export async function pullFromCloud(client, contextPath, options = {}) {
7
8
  // Ensure context folder exists
@@ -13,7 +14,9 @@ export async function pullFromCloud(client, contextPath, options = {}) {
13
14
  success: true,
14
15
  filesWritten: 0,
15
16
  filesSkipped: 0,
17
+ filesDeleted: 0,
16
18
  skippedPaths: [],
19
+ deletedPaths: [],
17
20
  totalFiles: 0,
18
21
  };
19
22
  }
@@ -25,11 +28,26 @@ export async function pullFromCloud(client, contextPath, options = {}) {
25
28
  // Write files to local folder
26
29
  // Pass force option to allow overwriting newer local files
27
30
  const { written, skipped, skippedPaths } = writeContextFolder(contextPath, filesToWrite, { force: options.force });
31
+ // Delete local files that don't exist in cloud (orphans)
32
+ // Default to true for pull - cloud is source of truth
33
+ let filesDeleted = 0;
34
+ let deletedPaths = [];
35
+ if (options.deleteOrphans !== false) {
36
+ // Only delete orphans if we're not filtering by section
37
+ // (otherwise we'd delete files from other sections)
38
+ if (!options.section) {
39
+ const deleteResult = deleteOrphanedLocalFiles(contextPath, response.files);
40
+ filesDeleted = deleteResult.deleted;
41
+ deletedPaths = deleteResult.deletedPaths;
42
+ }
43
+ }
28
44
  return {
29
45
  success: true,
30
46
  filesWritten: written,
31
47
  filesSkipped: skipped,
48
+ filesDeleted,
32
49
  skippedPaths,
50
+ deletedPaths,
33
51
  totalFiles: filesToWrite.length,
34
52
  };
35
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAe1E;;;GAGG;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,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,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,OAAO;QACL,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,YAAY;QACZ,UAAU,EAAE,YAAY,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC"}
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;;;;GAIG;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,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,sDAAsD;IACtD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,wDAAwD;QACxD,oDAAoD;QACpD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3E,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;YACpC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAC3C,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epiccontext/mcp",
3
- "version": "0.1.29",
3
+ "version": "0.1.31",
4
4
  "description": "MCP server and CLI for syncing EpicContext documentation with local codebases",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",