codesyncer 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.ko.md +24 -0
  2. package/README.md +24 -0
  3. package/dist/commands/update.d.ts.map +1 -1
  4. package/dist/commands/update.js +136 -0
  5. package/dist/commands/update.js.map +1 -1
  6. package/dist/templates/en/architecture.md +2 -0
  7. package/dist/templates/en/claude.md +2 -0
  8. package/dist/templates/en/comment_guide.md +2 -0
  9. package/dist/templates/en/decisions.md +2 -0
  10. package/dist/templates/en/master.md +2 -0
  11. package/dist/templates/en/root_claude.md +2 -0
  12. package/dist/templates/en/setup_guide.md +2 -0
  13. package/dist/templates/en/setup_guide_monorepo.md +2 -0
  14. package/dist/templates/en/setup_guide_single.md +2 -0
  15. package/dist/templates/ko/architecture.md +2 -0
  16. package/dist/templates/ko/claude.md +2 -0
  17. package/dist/templates/ko/comment_guide.md +2 -0
  18. package/dist/templates/ko/decisions.md +2 -0
  19. package/dist/templates/ko/master.md +2 -0
  20. package/dist/templates/ko/root_claude.md +2 -0
  21. package/dist/templates/ko/setup_guide.md +2 -0
  22. package/dist/templates/ko/setup_guide_monorepo.md +2 -0
  23. package/dist/templates/ko/setup_guide_single.md +2 -0
  24. package/dist/utils/template-upgrader.d.ts +72 -0
  25. package/dist/utils/template-upgrader.d.ts.map +1 -0
  26. package/dist/utils/template-upgrader.js +249 -0
  27. package/dist/utils/template-upgrader.js.map +1 -0
  28. package/dist/utils/template-version.d.ts +64 -0
  29. package/dist/utils/template-version.d.ts.map +1 -0
  30. package/dist/utils/template-version.js +177 -0
  31. package/dist/utils/template-version.js.map +1 -0
  32. package/package.json +1 -1
  33. package/src/templates/en/architecture.md +2 -0
  34. package/src/templates/en/claude.md +2 -0
  35. package/src/templates/en/comment_guide.md +2 -0
  36. package/src/templates/en/decisions.md +2 -0
  37. package/src/templates/en/master.md +2 -0
  38. package/src/templates/en/root_claude.md +2 -0
  39. package/src/templates/en/setup_guide.md +2 -0
  40. package/src/templates/en/setup_guide_monorepo.md +2 -0
  41. package/src/templates/en/setup_guide_single.md +2 -0
  42. package/src/templates/ko/architecture.md +2 -0
  43. package/src/templates/ko/claude.md +2 -0
  44. package/src/templates/ko/comment_guide.md +2 -0
  45. package/src/templates/ko/decisions.md +2 -0
  46. package/src/templates/ko/master.md +2 -0
  47. package/src/templates/ko/root_claude.md +2 -0
  48. package/src/templates/ko/setup_guide.md +2 -0
  49. package/src/templates/ko/setup_guide_monorepo.md +2 -0
  50. package/src/templates/ko/setup_guide_single.md +2 -0
package/README.ko.md CHANGED
@@ -237,6 +237,7 @@ codesyncer validate --verbose # 파일 경로 표시
237
237
  3. ✅ 언어 설정 자동 감지 (한국어/영어)
238
238
  4. ✅ 새 파일 생성 전 사용자 확인 요청
239
239
  5. ✅ 기존 커스터마이징 내용 보존
240
+ 6. ✅ **v3.1.0 신규**: 구버전 템플릿 감지 및 업그레이드 제안
240
241
 
241
242
  **출력 예시:**
242
243
  ```
@@ -264,6 +265,29 @@ This file allows Claude to automatically load context at session start.
264
265
  ✅ Update complete!
265
266
  ```
266
267
 
268
+ #### 템플릿 업그레이드 (v3.1.0 신규)
269
+
270
+ CodeSyncer를 새 버전으로 업데이트하면, 기존 템플릿 파일이 구버전일 수 있습니다. `update` 명령어가 이를 자동으로 감지합니다:
271
+
272
+ ```
273
+ 📦 새 버전 감지: v3.1.0
274
+
275
+ 📁 my-project/
276
+ • CLAUDE.md (v3.0.0 → v3.1.0)
277
+ • COMMENT_GUIDE.md (버전 없음 → v3.1.0)
278
+
279
+ ? 2개 템플릿을 업그레이드할까요?
280
+ > 예 - 업그레이드 (기존 파일 .backup으로 백업)
281
+ 아니오 - 건너뛰기
282
+ 미리보기 - 변경 파일만 확인
283
+ ```
284
+
285
+ **기능:**
286
+ - 🔍 버전 메타데이터를 읽어 구버전 템플릿 자동 감지
287
+ - 💾 업그레이드 전 `.backup` 파일 생성 (예: `CLAUDE.md.backup.2024-01-17`)
288
+ - 📋 업그레이드 시 프로젝트 변수 (프로젝트 이름, 기술 스택) 보존
289
+ - 👁️ 변경 사항을 미리 확인하는 미리보기 옵션
290
+
267
291
  **`codesyncer update` 실행 후:**
268
292
 
269
293
  다음 중 하나를 선택하여 변경사항을 적용하세요:
package/README.md CHANGED
@@ -237,6 +237,7 @@ Sync your project with the latest templates and features:
237
237
  3. ✅ Auto-detects your language settings (English/Korean)
238
238
  4. ✅ Prompts before creating any new files
239
239
  5. ✅ Preserves your existing customizations
240
+ 6. ✅ **NEW in v3.1.0**: Detects outdated templates and offers upgrade
240
241
 
241
242
  **Example output:**
242
243
  ```
@@ -264,6 +265,29 @@ Option 2) Apply immediately in current session
264
265
  ✅ Update complete!
265
266
  ```
266
267
 
268
+ #### Template Upgrade (NEW in v3.1.0)
269
+
270
+ When you update CodeSyncer to a new version, your existing template files may be outdated. The `update` command now automatically detects this:
271
+
272
+ ```
273
+ 📦 New Version Detected: v3.1.0
274
+
275
+ 📁 my-project/
276
+ • CLAUDE.md (v3.0.0 → v3.1.0)
277
+ • COMMENT_GUIDE.md (no version → v3.1.0)
278
+
279
+ ? Upgrade 2 template(s)?
280
+ > Yes - Upgrade (backup existing files to .backup)
281
+ No - Skip
282
+ Preview - Show files only
283
+ ```
284
+
285
+ **Features:**
286
+ - 🔍 Automatically detects outdated templates by reading version metadata
287
+ - 💾 Creates `.backup` files before upgrading (e.g., `CLAUDE.md.backup.2024-01-17`)
288
+ - 📋 Preserves project variables (project name, tech stack) during upgrade
289
+ - 👁️ Preview option to see what would change
290
+
267
291
  **After running `codesyncer update`:**
268
292
 
269
293
  Choose one of these options to apply changes:
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAInE,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAwwBzD"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAgBnE,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBA2wBzD"}
@@ -44,6 +44,8 @@ const fs = __importStar(require("fs-extra"));
44
44
  const path = __importStar(require("path"));
45
45
  const scanner_1 = require("../utils/scanner");
46
46
  const monorepo_helpers_1 = require("../utils/monorepo-helpers");
47
+ const template_version_1 = require("../utils/template-version");
48
+ const template_upgrader_1 = require("../utils/template-upgrader");
47
49
  async function updateCommand(options) {
48
50
  const isDryRun = options.dryRun || false;
49
51
  if (isDryRun) {
@@ -770,6 +772,8 @@ rm .codesyncer/UPDATE_GUIDE.md
770
772
  }
771
773
  }
772
774
  }
775
+ // Template Upgrade Check
776
+ await checkAndOfferTemplateUpgrade(currentDir, foundRepos, lang, isDryRun);
773
777
  if (isDryRun) {
774
778
  console.log(chalk_1.default.bold.yellow('\n✅ Dry run complete! No files were modified.\n'));
775
779
  console.log(chalk_1.default.gray('Run without --dry-run to apply changes.\n'));
@@ -778,4 +782,136 @@ rm .codesyncer/UPDATE_GUIDE.md
778
782
  console.log(chalk_1.default.bold.green('\n✅ Update complete!\n'));
779
783
  }
780
784
  }
785
+ /**
786
+ * Check for outdated templates and offer upgrade option
787
+ *
788
+ * @codesyncer-context Template upgrade feature - checks version metadata in files
789
+ * @codesyncer-decision [2026-01-17] Backup files before upgrade for user safety
790
+ */
791
+ async function checkAndOfferTemplateUpgrade(currentDir, repos, lang, isDryRun) {
792
+ const currentVersion = (0, template_version_1.getCurrentVersion)();
793
+ // Collect all outdated templates across all repos
794
+ const allOutdated = [];
795
+ for (const repo of repos) {
796
+ const claudeDir = path.join(repo.path, '.claude');
797
+ if (await fs.pathExists(claudeDir)) {
798
+ const outdated = await (0, template_version_1.getOutdatedTemplates)(claudeDir);
799
+ if (outdated.length > 0) {
800
+ allOutdated.push({
801
+ repo: repo.name,
802
+ claudeDir,
803
+ templates: outdated,
804
+ });
805
+ }
806
+ }
807
+ }
808
+ // Also check root .claude if it exists (for single repo setup)
809
+ const rootClaudeDir = path.join(currentDir, '.claude');
810
+ if (await fs.pathExists(rootClaudeDir)) {
811
+ const rootOutdated = await (0, template_version_1.getOutdatedTemplates)(rootClaudeDir);
812
+ if (rootOutdated.length > 0) {
813
+ // Avoid duplicates
814
+ const alreadyIncluded = allOutdated.some((o) => o.claudeDir === rootClaudeDir);
815
+ if (!alreadyIncluded) {
816
+ allOutdated.push({
817
+ repo: path.basename(currentDir),
818
+ claudeDir: rootClaudeDir,
819
+ templates: rootOutdated,
820
+ });
821
+ }
822
+ }
823
+ }
824
+ if (allOutdated.length === 0) {
825
+ return; // No outdated templates found
826
+ }
827
+ // Count total outdated files
828
+ const totalOutdated = allOutdated.reduce((sum, o) => sum + o.templates.length, 0);
829
+ // Display upgrade notification
830
+ console.log(chalk_1.default.bold.blue('\n📦 ' + (lang === 'ko' ? '새 버전 감지' : 'New Version Detected') + `: v${currentVersion}\n`));
831
+ // Show outdated files grouped by repo
832
+ allOutdated.forEach(({ repo, templates }) => {
833
+ console.log(chalk_1.default.yellow(` 📁 ${repo}/`));
834
+ templates.forEach((t) => {
835
+ const fileName = path.basename(t.file);
836
+ const versionInfo = t.currentVersion
837
+ ? `v${t.currentVersion} → v${t.latestVersion}`
838
+ : `(${lang === 'ko' ? '버전 없음' : 'no version'}) → v${t.latestVersion}`;
839
+ console.log(chalk_1.default.gray(` • ${fileName} (${versionInfo})`));
840
+ });
841
+ });
842
+ console.log();
843
+ // Prompt for upgrade
844
+ const { upgradeChoice } = await inquirer_1.default.prompt([
845
+ {
846
+ type: 'list',
847
+ name: 'upgradeChoice',
848
+ message: lang === 'ko'
849
+ ? `${totalOutdated}개 템플릿을 업그레이드할까요?`
850
+ : `Upgrade ${totalOutdated} template(s)?`,
851
+ choices: [
852
+ {
853
+ name: lang === 'ko'
854
+ ? '예 - 업그레이드 (기존 파일 .backup으로 백업)'
855
+ : 'Yes - Upgrade (backup existing files to .backup)',
856
+ value: 'yes',
857
+ },
858
+ {
859
+ name: lang === 'ko' ? '아니오 - 건너뛰기' : 'No - Skip',
860
+ value: 'no',
861
+ },
862
+ {
863
+ name: lang === 'ko' ? '미리보기 - 변경 파일만 확인' : 'Preview - Show files only',
864
+ value: 'preview',
865
+ },
866
+ ],
867
+ default: 'yes',
868
+ },
869
+ ]);
870
+ if (upgradeChoice === 'preview') {
871
+ console.log(chalk_1.default.bold('\n' + (lang === 'ko' ? '📋 업그레이드 대상 파일:' : '📋 Files to upgrade:')));
872
+ allOutdated.forEach(({ repo, templates }) => {
873
+ templates.forEach((t) => {
874
+ console.log(chalk_1.default.gray(` • ${repo}/.claude/${path.basename(t.file)}`));
875
+ });
876
+ });
877
+ console.log();
878
+ return;
879
+ }
880
+ if (upgradeChoice === 'no') {
881
+ console.log(chalk_1.default.gray(lang === 'ko' ? ' 템플릿 업그레이드 건너뜀\n' : ' Template upgrade skipped\n'));
882
+ return;
883
+ }
884
+ // Perform upgrade
885
+ if (isDryRun) {
886
+ console.log(chalk_1.default.yellow(lang === 'ko'
887
+ ? '\n [DRY RUN] 업그레이드 수행됨 (실제 파일 변경 없음)\n'
888
+ : '\n [DRY RUN] Upgrade would be performed (no actual changes)\n'));
889
+ allOutdated.forEach(({ repo, templates }) => {
890
+ templates.forEach((t) => {
891
+ console.log(chalk_1.default.gray(` • ${repo}/.claude/${path.basename(t.file)}`));
892
+ });
893
+ });
894
+ return;
895
+ }
896
+ const spinner = (0, ora_1.default)(lang === 'ko' ? '템플릿 업그레이드 중...' : 'Upgrading templates...').start();
897
+ const allResults = [];
898
+ for (const { claudeDir, templates } of allOutdated) {
899
+ const vars = await (0, template_upgrader_1.getTemplateVarsFromContext)(claudeDir, lang);
900
+ const results = await (0, template_upgrader_1.upgradeTemplates)(templates, { lang, vars, dryRun: isDryRun });
901
+ allResults.push(...results);
902
+ }
903
+ spinner.succeed(lang === 'ko' ? '템플릿 업그레이드 완료!' : 'Templates upgraded!');
904
+ // Show summary
905
+ console.log();
906
+ console.log((0, template_upgrader_1.formatUpgradeSummary)(allResults, lang));
907
+ console.log();
908
+ // Show backup notice
909
+ const successfulWithBackup = allResults.filter((r) => r.success && r.backupPath);
910
+ if (successfulWithBackup.length > 0) {
911
+ console.log(chalk_1.default.cyan(lang === 'ko'
912
+ ? '💡 백업 파일에서 커스터마이징 내용을 복사할 수 있습니다.'
913
+ : '💡 You can copy customizations from backup files.'));
914
+ console.log();
915
+ }
916
+ }
781
917
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,sCAwwBC;AAjxBD,kDAA0B;AAC1B,8CAAsB;AACtB,wDAAgC;AAChC,6CAA+B;AAC/B,2CAA6B;AAE7B,8CAA6G;AAC7G,gEAAgE;AAEzD,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IAEzC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,IAAI,CAAC,CAAC,MAAM,IAAA,wBAAc,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,4CAA4C;IAC5C,IAAI,IAAI,GAAa,IAAI,CAAC;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,6CAA6C;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QAC5C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,sBAAsB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,aAAa;YACtF,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC7B,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE;aAC7C;YACD,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;oBAChC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;iBACtC;aACF;SACF,CAAC,CAAC;QACH,IAAI,GAAG,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4DAA4D;IAC5D,IAAI,YAAY,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC3C;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,gCAAgC;wBACtC,KAAK,EAAE,QAAQ;qBAChB;oBACD;wBACE,IAAI,EAAE,4BAA4B;wBAClC,KAAK,EAAE,MAAM;qBACd;iBACF;gBACD,OAAO,EAAE,QAAQ;aAClB;SACF,CAAC,CAAC;QAEH,YAAY,GAAG,UAAU,KAAK,MAAM,CAAC;IACvC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;IAE3C,iCAAiC;IACjC,MAAM,YAAY,GAAG,MAAM,IAAA,wBAAc,EAAC,UAAU,CAAC,CAAC;IACtD,IAAI,UAA4B,CAAC;IAEjC,IAAI,YAAY,EAAE,CAAC;QACjB,+BAA+B;QAC/B,UAAU,GAAG,MAAM,IAAA,8BAAoB,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAClE,OAAO,CAAC,OAAO,CACb,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,aAAa,UAAU,CAAC,MAAM,QAAQ;YACxC,CAAC,CAAC,sBAAsB,UAAU,CAAC,MAAM,YAAY,CACxD,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CACpB,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,SAAS,IAAA,sCAAmB,EAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YACnD,CAAC,CAAC,WAAW,IAAA,sCAAmB,EAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CACxD,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,UAAU,GAAG,MAAM,IAAA,6BAAmB,EAAC,UAAU,CAAC,CAAC;QACnD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,kDAAkD;IAClD,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAC3F,MAAM,iBAAiB,GAA+C,EAAE,CAAC;IAEzE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,oCAAoC;QACpC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACrC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEjC,iCAAiC;IACjC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAE1D,qDAAqD;IACrD,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC;IAElF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACpG,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,YAAY,EAAE,CAAC;QACjB,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5G,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,iBAAiB,CAAC,MAAM,8BAA8B,CAAC,CAAC,CAAC;YAChG,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE;gBACnD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC;gBAChE,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,eAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;oBAC3C,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,8BAA8B;QAC9B,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAC5C,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAC3D,CAAC;QACF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAE9E,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACjD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,QAAQ,EAAE,CAAC;gBACb,2CAA2C;gBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;gBAE3C,IAAI,CAAC;oBACH,gBAAgB;oBAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;oBACrF,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAExD,0DAA0D;oBAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;oBAChF,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,cAAc,GAAG,eAAe,CAAC;oBAErC,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAC7D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBACnF,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;wBAEnE,IAAI,SAAS;4BAAE,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACnE,IAAI,WAAW;4BAAE,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBACnD,CAAC;oBAAC,MAAM,CAAC;wBACP,eAAe;oBACjB,CAAC;oBAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;oBACpC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAErD,uBAAuB;oBACvB,QAAQ,GAAG,QAAQ;yBAChB,OAAO,CAAC,mBAAmB,EAAE,WAAW,CAAC;yBACzC,OAAO,CAAC,sBAAsB,EAAE,cAAc,CAAC;yBAC/C,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;yBAC5B,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBAEjD,uBAAuB;oBACvB,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAEtD,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,cAAc,IAAI,CAAC,CAAC,CAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;oBAE9E,yBAAyB;oBACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;oBAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBACvD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBACzD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;oBAChD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC;IAEtE,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,kCAAkC;gBAC3C,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAEhF,IAAI,QAAQ,EAAE,CAAC;gBACb,2CAA2C;gBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,eAAe,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,iBAAiB,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;gBACvG,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACpE,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;gBAExD,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEvD,uBAAuB;oBACvB,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAC;wBAChF,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAC7D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBACnF,IAAI,SAAS;4BAAE,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrE,CAAC;oBAAC,MAAM,CAAC;wBACP,cAAc;oBAChB,CAAC;oBAED,gCAAgC;oBAChC,IAAI,WAAW,GAAG,EAAE,CAAC;oBAErB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAClB,WAAW,GAAG;;kCAEU,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB;;cAE3E,WAAW;iBACR,KAAK;iBACL,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;;;;EAIzD,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;CAgBhB,CAAC,CAAC,CAAC,EAAE;;;;EAIJ,YAAY,CAAC,CAAC,CAAC;cACH,UAAU,CAAC,MAAM;;EAE7B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BACtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;4BACrE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;4BAE/D,OAAO;SACA,IAAI,CAAC,IAAI;;EAEhB,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACvD,CAAC,CAAC,CAAC,mBAAmB;;;OAGhB,IAAI,CAAC,IAAI;;;;;;;;;;EAUd,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC1D,CAAC,CAAC,CAAC,EAAE;;;;;;CAML,CAAC;wBACF,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB,CAAC,CAAC,CAAC;;;EAGF,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;SAC3C,IAAI;;;EAGX,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;OAGjD,IAAI;;;;;;;EAOT,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;CAM5H,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB;;;;;;EAMC,YAAY,CAAC,CAAC,CAAC;;;;;;;GAOd,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;CAsBrB,CAAC,CAAC,CAAC;;;;;;;GAOD,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;KAkB/C,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;CAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CA,CAAC;oBACM,CAAC;yBAAM,CAAC;wBACN,WAAW,GAAG;;sEAE8C,YAAY,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,wBAAwB;;iBAE1H,WAAW;qBACP,KAAK;qBACL,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB;;;;EAIvE,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;CAgBhB,CAAC,CAAC,CAAC,EAAE;;;;EAIJ,YAAY,CAAC,CAAC,CAAC;sBACK,UAAU,CAAC,MAAM;;EAErC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BACtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;4BACrE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;4BAE/D,OAAO;SACA,IAAI,CAAC,IAAI;;EAEhB,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACvD,CAAC,CAAC,CAAC,gCAAgC;;;mBAGjB,IAAI,CAAC,IAAI;;;;;;;;;;EAU1B,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC1D,CAAC,CAAC,CAAC,EAAE;;;;;;CAML,CAAC;wBACF,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB,CAAC,CAAC,CAAC;;;EAGF,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;SAC3C,IAAI;;;EAGX,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;mBAGrC,IAAI;;;;;;;EAOrB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;CAMnI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;CACjB;;;;;;EAMC,YAAY,CAAC,CAAC,CAAC;;;;;;;QAOT,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;CAsB1B,CAAC,CAAC,CAAC;;;;;;;WAOO,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;;;;;;;;;;;;;;;KAkBvD,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;;;;CAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CA,CAAC;oBACM,CAAC;oBAED,kEAAkE;oBAClE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;wBACzC,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;oBACnC,CAAC;oBAED,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;oBAE1D,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,eAAe,IAAI,CAAC,CAAC,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;oBAE9D,oBAAoB;oBACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAAC,CAAC;oBAC1F,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;oBAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;oBACjD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -145,3 +145,5 @@ No API endpoints discovered.
145
145
  ---
146
146
 
147
147
  *This document is auto-generated and managed by CodeSyncer.*
148
+
149
+ <!-- codesyncer-version: 3.1.0 -->
@@ -279,3 +279,5 @@ grep -r "@codesyncer-rule" ./
279
279
  ---
280
280
 
281
281
  *This collaboration system is open source. Suggest improvements at [CodeSyncer GitHub](https://github.com/bitjaru/codesyncer)!*
282
+
283
+ <!-- codesyncer-version: 3.1.0 -->
@@ -580,3 +580,5 @@ After writing code:
580
580
  **Last Updated**: [TODAY]
581
581
 
582
582
  *Comments are the documentation. Record all context in code.*
583
+
584
+ <!-- codesyncer-version: 3.1.0 -->
@@ -225,3 +225,5 @@ grep "@codesyncer-decision" src/services/PaymentService.ts
225
225
  **Last Updated**: [TODAY]
226
226
 
227
227
  *All important decisions are permanently recorded. This is your team's knowledge asset.*
228
+
229
+ <!-- codesyncer-version: 3.1.0 -->
@@ -177,3 +177,5 @@ Both formats work identically, so use whichever you prefer!
177
177
 
178
178
  *CodeSyncer - Persistent context, controlled inference, live architecture sync for Claude Code*
179
179
  *Currently Supported: Claude Code | Coming Soon: Cursor, GitHub Copilot, Continue.dev*
180
+
181
+ <!-- codesyncer-version: 3.1.0 -->
@@ -239,3 +239,5 @@ grep -r "payment" ./*/
239
239
  ---
240
240
 
241
241
  *CodeSyncer is open source: https://github.com/bitjaru/codesyncer*
242
+
243
+ <!-- codesyncer-version: 3.1.0 -->
@@ -313,3 +313,5 @@ Setup is successful when:
313
313
  ---
314
314
 
315
315
  *This setup guide is generated by CodeSyncer CLI. For issues or improvements, visit: https://github.com/bitjaru/codesyncer*
316
+
317
+ <!-- codesyncer-version: 3.1.0 -->
@@ -330,3 +330,5 @@ Setup is successful when:
330
330
  ---
331
331
 
332
332
  *This setup guide is generated by CodeSyncer CLI. For issues or improvements, visit: https://github.com/bitjaru/codesyncer*
333
+
334
+ <!-- codesyncer-version: 3.1.0 -->
@@ -322,3 +322,5 @@ rm .claude/SETUP_GUIDE.md
322
322
  ---
323
323
 
324
324
  *This setup guide is generated by CodeSyncer CLI. For issues or improvements, visit: https://github.com/bitjaru/codesyncer*
325
+
326
+ <!-- codesyncer-version: 3.1.0 -->
@@ -145,3 +145,5 @@
145
145
  ---
146
146
 
147
147
  *이 문서는 CodeSyncer에 의해 자동 생성 및 관리됩니다.*
148
+
149
+ <!-- codesyncer-version: 3.1.0 -->
@@ -279,3 +279,5 @@ grep -r "@codesyncer-rule" ./
279
279
  ---
280
280
 
281
281
  *이 협업 시스템은 오픈소스입니다. 개선 아이디어는 [CodeSyncer GitHub](https://github.com/bitjaru/codesyncer)에서 제안해주세요!*
282
+
283
+ <!-- codesyncer-version: 3.1.0 -->
@@ -580,3 +580,5 @@ ARCHITECTURE.md에 자동 집계:
580
580
  **마지막 업데이트**: [TODAY]
581
581
 
582
582
  *주석이 곧 문서입니다. 모든 컨텍스트를 코드에 기록하세요.*
583
+
584
+ <!-- codesyncer-version: 3.1.0 -->
@@ -225,3 +225,5 @@ grep "@codesyncer-decision" src/services/PaymentService.ts
225
225
  **마지막 업데이트**: [TODAY]
226
226
 
227
227
  *모든 중요한 의사결정이 영구 기록됩니다. 팀의 지식 자산입니다.*
228
+
229
+ <!-- codesyncer-version: 3.1.0 -->
@@ -177,3 +177,5 @@ CodeSyncer는 두 가지 태그 형식을 모두 지원합니다:
177
177
 
178
178
  *CodeSyncer - 영구 컨텍스트, 추론 통제, 실시간 아키텍처 동기화 for Claude Code*
179
179
  *현재 지원: Claude Code | 향후 지원 예정: Cursor, GitHub Copilot, Continue.dev*
180
+
181
+ <!-- codesyncer-version: 3.1.0 -->
@@ -239,3 +239,5 @@ grep -r "결제" ./*/
239
239
  ---
240
240
 
241
241
  *CodeSyncer는 오픈소스입니다: https://github.com/bitjaru/codesyncer*
242
+
243
+ <!-- codesyncer-version: 3.1.0 -->
@@ -313,3 +313,5 @@ CodeSyncer 사용 준비 완료!
313
313
  ---
314
314
 
315
315
  *이 설정 가이드는 CodeSyncer CLI에 의해 생성됩니다. 문제나 개선사항은 https://github.com/bitjaru/codesyncer 방문*
316
+
317
+ <!-- codesyncer-version: 3.1.0 -->
@@ -330,3 +330,5 @@ CodeSyncer 사용 준비 완료!
330
330
  ---
331
331
 
332
332
  *이 설정 가이드는 CodeSyncer CLI에 의해 생성됩니다. 문제나 개선사항은 https://github.com/bitjaru/codesyncer 방문*
333
+
334
+ <!-- codesyncer-version: 3.1.0 -->
@@ -322,3 +322,5 @@ rm .claude/SETUP_GUIDE.md
322
322
  ---
323
323
 
324
324
  *이 설정 가이드는 CodeSyncer CLI에 의해 생성됩니다. 문제나 개선사항은 https://github.com/bitjaru/codesyncer 방문*
325
+
326
+ <!-- codesyncer-version: 3.1.0 -->
@@ -0,0 +1,72 @@
1
+ import { Language } from '../types';
2
+ import { TemplateStatus } from './template-version';
3
+ /**
4
+ * Template upgrade utilities
5
+ *
6
+ * @codesyncer-context Handles backing up existing templates and applying new versions
7
+ * @codesyncer-decision [2026-01-17] Always backup before upgrading (user data safety)
8
+ */
9
+ /**
10
+ * Result of a template upgrade operation
11
+ */
12
+ export interface UpgradeResult {
13
+ success: boolean;
14
+ file: string;
15
+ backupPath?: string;
16
+ error?: string;
17
+ }
18
+ /**
19
+ * Options for template upgrade
20
+ */
21
+ export interface UpgradeOptions {
22
+ lang: Language;
23
+ vars: Record<string, string>;
24
+ dryRun?: boolean;
25
+ }
26
+ /**
27
+ * Create a backup of a file before upgrading
28
+ *
29
+ * @param filePath - Path to the file to backup
30
+ * @returns Path to the backup file
31
+ */
32
+ export declare function backupFile(filePath: string): Promise<string>;
33
+ /**
34
+ * Upgrade a single template file
35
+ *
36
+ * @param templateStatus - Template status from version check
37
+ * @param options - Upgrade options
38
+ * @returns Promise resolving to UpgradeResult
39
+ */
40
+ export declare function upgradeTemplate(templateStatus: TemplateStatus, options: UpgradeOptions): Promise<UpgradeResult>;
41
+ /**
42
+ * Upgrade multiple templates
43
+ *
44
+ * @param templates - Array of template statuses to upgrade
45
+ * @param options - Upgrade options
46
+ * @returns Promise resolving to array of UpgradeResults
47
+ */
48
+ export declare function upgradeTemplates(templates: TemplateStatus[], options: UpgradeOptions): Promise<UpgradeResult[]>;
49
+ /**
50
+ * Extract variables from existing file for re-use during upgrade
51
+ *
52
+ * @param filePath - Path to existing file
53
+ * @returns Record of extracted variables
54
+ */
55
+ export declare function extractVarsFromFile(filePath: string): Promise<Record<string, string>>;
56
+ /**
57
+ * Get template variables from .claude directory context
58
+ *
59
+ * @param claudeDir - Path to .claude directory
60
+ * @param lang - Language to use
61
+ * @returns Record of template variables
62
+ */
63
+ export declare function getTemplateVarsFromContext(claudeDir: string, lang: Language): Promise<Record<string, string>>;
64
+ /**
65
+ * Format upgrade summary for display
66
+ *
67
+ * @param results - Array of upgrade results
68
+ * @param lang - Language for messages
69
+ * @returns Formatted summary string
70
+ */
71
+ export declare function formatUpgradeSummary(results: UpgradeResult[], lang: Language): string;
72
+ //# sourceMappingURL=template-upgrader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-upgrader.d.ts","sourceRoot":"","sources":["../../src/utils/template-upgrader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAEvE;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlE;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CAuCxB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,EAAE,CAAC,CAS1B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqC3F;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgCjC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CA+CrF"}
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.backupFile = backupFile;
37
+ exports.upgradeTemplate = upgradeTemplate;
38
+ exports.upgradeTemplates = upgradeTemplates;
39
+ exports.extractVarsFromFile = extractVarsFromFile;
40
+ exports.getTemplateVarsFromContext = getTemplateVarsFromContext;
41
+ exports.formatUpgradeSummary = formatUpgradeSummary;
42
+ const fs = __importStar(require("fs-extra"));
43
+ const path = __importStar(require("path"));
44
+ const template_loader_1 = require("./template-loader");
45
+ /**
46
+ * Create a backup of a file before upgrading
47
+ *
48
+ * @param filePath - Path to the file to backup
49
+ * @returns Path to the backup file
50
+ */
51
+ async function backupFile(filePath) {
52
+ const dir = path.dirname(filePath);
53
+ const fileName = path.basename(filePath);
54
+ const today = new Date().toISOString().split('T')[0];
55
+ const backupFileName = `${fileName}.backup.${today}`;
56
+ const backupPath = path.join(dir, backupFileName);
57
+ // If backup already exists today, add a numeric suffix
58
+ let finalBackupPath = backupPath;
59
+ let counter = 1;
60
+ while (await fs.pathExists(finalBackupPath)) {
61
+ finalBackupPath = path.join(dir, `${fileName}.backup.${today}.${counter}`);
62
+ counter++;
63
+ }
64
+ await fs.copy(filePath, finalBackupPath);
65
+ return finalBackupPath;
66
+ }
67
+ /**
68
+ * Upgrade a single template file
69
+ *
70
+ * @param templateStatus - Template status from version check
71
+ * @param options - Upgrade options
72
+ * @returns Promise resolving to UpgradeResult
73
+ */
74
+ async function upgradeTemplate(templateStatus, options) {
75
+ const { file, templateName } = templateStatus;
76
+ const { lang, vars, dryRun } = options;
77
+ try {
78
+ // Skip if dry run
79
+ if (dryRun) {
80
+ return {
81
+ success: true,
82
+ file,
83
+ backupPath: `${file}.backup.${new Date().toISOString().split('T')[0]} (dry run)`,
84
+ };
85
+ }
86
+ // Backup existing file
87
+ let backupPath;
88
+ if (await fs.pathExists(file)) {
89
+ backupPath = await backupFile(file);
90
+ }
91
+ // Load and render new template
92
+ const template = await (0, template_loader_1.loadTemplate)(templateName, lang);
93
+ const content = (0, template_loader_1.replaceTemplateVars)(template, vars);
94
+ // Write the upgraded template
95
+ await fs.writeFile(file, content, 'utf-8');
96
+ return {
97
+ success: true,
98
+ file,
99
+ backupPath,
100
+ };
101
+ }
102
+ catch (error) {
103
+ return {
104
+ success: false,
105
+ file,
106
+ error: error instanceof Error ? error.message : String(error),
107
+ };
108
+ }
109
+ }
110
+ /**
111
+ * Upgrade multiple templates
112
+ *
113
+ * @param templates - Array of template statuses to upgrade
114
+ * @param options - Upgrade options
115
+ * @returns Promise resolving to array of UpgradeResults
116
+ */
117
+ async function upgradeTemplates(templates, options) {
118
+ const results = [];
119
+ for (const template of templates) {
120
+ const result = await upgradeTemplate(template, options);
121
+ results.push(result);
122
+ }
123
+ return results;
124
+ }
125
+ /**
126
+ * Extract variables from existing file for re-use during upgrade
127
+ *
128
+ * @param filePath - Path to existing file
129
+ * @returns Record of extracted variables
130
+ */
131
+ async function extractVarsFromFile(filePath) {
132
+ const vars = {};
133
+ try {
134
+ const content = await fs.readFile(filePath, 'utf-8');
135
+ // Extract project name
136
+ const projectNameMatch = content.match(/\*\*(?:프로젝트명|Project Name)\*\*:\s*([^\n]+)/);
137
+ if (projectNameMatch) {
138
+ vars['PROJECT_NAME'] = projectNameMatch[1].trim();
139
+ vars['프로젝트명'] = projectNameMatch[1].trim();
140
+ }
141
+ // Extract tech stack
142
+ const techStackMatch = content.match(/\*\*(?:기술 스택|Tech Stack)\*\*:\s*([^\n]+)/);
143
+ if (techStackMatch) {
144
+ vars['TECH_STACK'] = techStackMatch[1].trim();
145
+ vars['기술 스택'] = techStackMatch[1].trim();
146
+ }
147
+ // Extract project type
148
+ const projectTypeMatch = content.match(/\*\*(?:프로젝트 타입|Project Type)\*\*:\s*([^\n]+)/);
149
+ if (projectTypeMatch) {
150
+ vars['PROJECT_TYPE'] = projectTypeMatch[1].trim();
151
+ vars['프로젝트 타입'] = projectTypeMatch[1].trim();
152
+ }
153
+ // Extract GitHub username
154
+ const githubMatch = content.match(/github\.com\/([^/\s]+)/i);
155
+ if (githubMatch) {
156
+ vars['GITHUB_USERNAME'] = githubMatch[1];
157
+ }
158
+ }
159
+ catch (error) {
160
+ // Ignore extraction errors
161
+ }
162
+ return vars;
163
+ }
164
+ /**
165
+ * Get template variables from .claude directory context
166
+ *
167
+ * @param claudeDir - Path to .claude directory
168
+ * @param lang - Language to use
169
+ * @returns Record of template variables
170
+ */
171
+ async function getTemplateVarsFromContext(claudeDir, lang) {
172
+ const vars = {};
173
+ // Try to extract from CLAUDE.md first
174
+ const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
175
+ if (await fs.pathExists(claudeMdPath)) {
176
+ const extracted = await extractVarsFromFile(claudeMdPath);
177
+ Object.assign(vars, extracted);
178
+ }
179
+ // Default values if not found
180
+ const projectDir = path.dirname(claudeDir);
181
+ if (!vars['PROJECT_NAME']) {
182
+ vars['PROJECT_NAME'] = path.basename(projectDir);
183
+ vars['프로젝트명'] = path.basename(projectDir);
184
+ }
185
+ if (!vars['TECH_STACK']) {
186
+ vars['TECH_STACK'] = 'TypeScript';
187
+ vars['기술 스택'] = 'TypeScript';
188
+ }
189
+ if (!vars['GITHUB_USERNAME']) {
190
+ vars['GITHUB_USERNAME'] = 'your-username';
191
+ }
192
+ // Add date
193
+ const today = new Date().toISOString().split('T')[0];
194
+ vars['TODAY'] = today;
195
+ vars['오늘 날짜'] = today;
196
+ return vars;
197
+ }
198
+ /**
199
+ * Format upgrade summary for display
200
+ *
201
+ * @param results - Array of upgrade results
202
+ * @param lang - Language for messages
203
+ * @returns Formatted summary string
204
+ */
205
+ function formatUpgradeSummary(results, lang) {
206
+ const successful = results.filter((r) => r.success);
207
+ const failed = results.filter((r) => !r.success);
208
+ const lines = [];
209
+ if (lang === 'ko') {
210
+ if (successful.length > 0) {
211
+ lines.push(`✅ ${successful.length}개 파일 업그레이드 완료:`);
212
+ successful.forEach((r) => {
213
+ const fileName = path.basename(r.file);
214
+ lines.push(` • ${fileName}`);
215
+ if (r.backupPath) {
216
+ lines.push(` 백업: ${path.basename(r.backupPath)}`);
217
+ }
218
+ });
219
+ }
220
+ if (failed.length > 0) {
221
+ lines.push(`❌ ${failed.length}개 파일 업그레이드 실패:`);
222
+ failed.forEach((r) => {
223
+ const fileName = path.basename(r.file);
224
+ lines.push(` • ${fileName}: ${r.error}`);
225
+ });
226
+ }
227
+ }
228
+ else {
229
+ if (successful.length > 0) {
230
+ lines.push(`✅ ${successful.length} file(s) upgraded:`);
231
+ successful.forEach((r) => {
232
+ const fileName = path.basename(r.file);
233
+ lines.push(` • ${fileName}`);
234
+ if (r.backupPath) {
235
+ lines.push(` Backup: ${path.basename(r.backupPath)}`);
236
+ }
237
+ });
238
+ }
239
+ if (failed.length > 0) {
240
+ lines.push(`❌ ${failed.length} file(s) failed:`);
241
+ failed.forEach((r) => {
242
+ const fileName = path.basename(r.file);
243
+ lines.push(` • ${fileName}: ${r.error}`);
244
+ });
245
+ }
246
+ }
247
+ return lines.join('\n');
248
+ }
249
+ //# sourceMappingURL=template-upgrader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-upgrader.js","sourceRoot":"","sources":["../../src/utils/template-upgrader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Mapping of .claude file names to template names
3
+ */
4
+ export declare const TEMPLATE_FILE_MAP: Record<string, string>;
5
+ /**
6
+ * Template status information for upgrade checks
7
+ */
8
+ export interface TemplateStatus {
9
+ file: string;
10
+ templateName: string;
11
+ currentVersion: string | null;
12
+ latestVersion: string;
13
+ isOutdated: boolean;
14
+ }
15
+ /**
16
+ * Extract template version from file content
17
+ *
18
+ * @param content - File content to extract version from
19
+ * @returns Version string or null if not found
20
+ */
21
+ export declare function extractTemplateVersion(content: string): string | null;
22
+ /**
23
+ * Compare two semantic versions
24
+ *
25
+ * @param v1 - First version string (e.g., "3.0.0")
26
+ * @param v2 - Second version string (e.g., "3.0.1")
27
+ * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
28
+ */
29
+ export declare function compareVersions(v1: string, v2: string): number;
30
+ /**
31
+ * Check if a file's template version is outdated compared to current package version
32
+ *
33
+ * @param filePath - Path to the file to check
34
+ * @returns Promise resolving to TemplateStatus
35
+ */
36
+ export declare function checkTemplateVersion(filePath: string): Promise<TemplateStatus>;
37
+ /**
38
+ * Scan a .claude directory for template files and check their versions
39
+ *
40
+ * @param claudeDir - Path to the .claude directory
41
+ * @returns Promise resolving to array of TemplateStatus objects
42
+ */
43
+ export declare function scanTemplateVersions(claudeDir: string): Promise<TemplateStatus[]>;
44
+ /**
45
+ * Get all outdated templates from a .claude directory
46
+ *
47
+ * @param claudeDir - Path to the .claude directory
48
+ * @returns Promise resolving to array of outdated TemplateStatus objects
49
+ */
50
+ export declare function getOutdatedTemplates(claudeDir: string): Promise<TemplateStatus[]>;
51
+ /**
52
+ * Check if any templates in a .claude directory need upgrading
53
+ *
54
+ * @param claudeDir - Path to the .claude directory
55
+ * @returns Promise resolving to boolean
56
+ */
57
+ export declare function hasOutdatedTemplates(claudeDir: string): Promise<boolean>;
58
+ /**
59
+ * Get the current package version (for display purposes)
60
+ *
61
+ * @returns Current package version string
62
+ */
63
+ export declare function getCurrentVersion(): string;
64
+ //# sourceMappingURL=template-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-version.d.ts","sourceRoot":"","sources":["../../src/utils/template-version.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKpD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAa9D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BpF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAavF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAGvF;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TEMPLATE_FILE_MAP = void 0;
37
+ exports.extractTemplateVersion = extractTemplateVersion;
38
+ exports.compareVersions = compareVersions;
39
+ exports.checkTemplateVersion = checkTemplateVersion;
40
+ exports.scanTemplateVersions = scanTemplateVersions;
41
+ exports.getOutdatedTemplates = getOutdatedTemplates;
42
+ exports.hasOutdatedTemplates = hasOutdatedTemplates;
43
+ exports.getCurrentVersion = getCurrentVersion;
44
+ const fs = __importStar(require("fs-extra"));
45
+ const path = __importStar(require("path"));
46
+ const version_1 = require("./version");
47
+ /**
48
+ * Template version extraction and comparison utilities
49
+ *
50
+ * @codesyncer-context Supports template upgrade feature in update command
51
+ * @codesyncer-decision [2026-01-17] Using HTML comment format for version metadata
52
+ */
53
+ /**
54
+ * Version metadata regex pattern
55
+ * Matches: <!-- codesyncer-version: X.Y.Z -->
56
+ */
57
+ const VERSION_PATTERN = /<!--\s*codesyncer-version:\s*([\d.]+)\s*-->/;
58
+ /**
59
+ * Mapping of .claude file names to template names
60
+ */
61
+ exports.TEMPLATE_FILE_MAP = {
62
+ 'CLAUDE.md': 'claude',
63
+ 'ARCHITECTURE.md': 'architecture',
64
+ 'COMMENT_GUIDE.md': 'comment_guide',
65
+ 'DECISIONS.md': 'decisions',
66
+ };
67
+ /**
68
+ * Extract template version from file content
69
+ *
70
+ * @param content - File content to extract version from
71
+ * @returns Version string or null if not found
72
+ */
73
+ function extractTemplateVersion(content) {
74
+ const match = content.match(VERSION_PATTERN);
75
+ return match ? match[1] : null;
76
+ }
77
+ /**
78
+ * Compare two semantic versions
79
+ *
80
+ * @param v1 - First version string (e.g., "3.0.0")
81
+ * @param v2 - Second version string (e.g., "3.0.1")
82
+ * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
83
+ */
84
+ function compareVersions(v1, v2) {
85
+ const parts1 = v1.split('.').map(Number);
86
+ const parts2 = v2.split('.').map(Number);
87
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
88
+ const p1 = parts1[i] || 0;
89
+ const p2 = parts2[i] || 0;
90
+ if (p1 < p2)
91
+ return -1;
92
+ if (p1 > p2)
93
+ return 1;
94
+ }
95
+ return 0;
96
+ }
97
+ /**
98
+ * Check if a file's template version is outdated compared to current package version
99
+ *
100
+ * @param filePath - Path to the file to check
101
+ * @returns Promise resolving to TemplateStatus
102
+ */
103
+ async function checkTemplateVersion(filePath) {
104
+ const fileName = path.basename(filePath);
105
+ const templateName = exports.TEMPLATE_FILE_MAP[fileName] || fileName.toLowerCase().replace('.md', '');
106
+ let currentVersion = null;
107
+ let isOutdated = false;
108
+ try {
109
+ const content = await fs.readFile(filePath, 'utf-8');
110
+ currentVersion = extractTemplateVersion(content);
111
+ if (currentVersion) {
112
+ isOutdated = compareVersions(currentVersion, version_1.VERSION) < 0;
113
+ }
114
+ else {
115
+ // No version found means it's from before versioning was added
116
+ // Consider it outdated
117
+ isOutdated = true;
118
+ }
119
+ }
120
+ catch (error) {
121
+ // File doesn't exist or can't be read
122
+ isOutdated = false;
123
+ }
124
+ return {
125
+ file: filePath,
126
+ templateName,
127
+ currentVersion,
128
+ latestVersion: version_1.VERSION,
129
+ isOutdated,
130
+ };
131
+ }
132
+ /**
133
+ * Scan a .claude directory for template files and check their versions
134
+ *
135
+ * @param claudeDir - Path to the .claude directory
136
+ * @returns Promise resolving to array of TemplateStatus objects
137
+ */
138
+ async function scanTemplateVersions(claudeDir) {
139
+ const results = [];
140
+ for (const fileName of Object.keys(exports.TEMPLATE_FILE_MAP)) {
141
+ const filePath = path.join(claudeDir, fileName);
142
+ if (await fs.pathExists(filePath)) {
143
+ const status = await checkTemplateVersion(filePath);
144
+ results.push(status);
145
+ }
146
+ }
147
+ return results;
148
+ }
149
+ /**
150
+ * Get all outdated templates from a .claude directory
151
+ *
152
+ * @param claudeDir - Path to the .claude directory
153
+ * @returns Promise resolving to array of outdated TemplateStatus objects
154
+ */
155
+ async function getOutdatedTemplates(claudeDir) {
156
+ const allTemplates = await scanTemplateVersions(claudeDir);
157
+ return allTemplates.filter((t) => t.isOutdated);
158
+ }
159
+ /**
160
+ * Check if any templates in a .claude directory need upgrading
161
+ *
162
+ * @param claudeDir - Path to the .claude directory
163
+ * @returns Promise resolving to boolean
164
+ */
165
+ async function hasOutdatedTemplates(claudeDir) {
166
+ const outdated = await getOutdatedTemplates(claudeDir);
167
+ return outdated.length > 0;
168
+ }
169
+ /**
170
+ * Get the current package version (for display purposes)
171
+ *
172
+ * @returns Current package version string
173
+ */
174
+ function getCurrentVersion() {
175
+ return version_1.VERSION;
176
+ }
177
+ //# sourceMappingURL=template-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-version.js","sourceRoot":"","sources":["../../src/utils/template-version.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codesyncer",
3
- "version": "3.0.1",
3
+ "version": "3.1.0",
4
4
  "description": "Claude forgets everything when the session ends. CodeSyncer makes it remember.",
5
5
  "keywords": [
6
6
  "ai-collaboration",
@@ -145,3 +145,5 @@ No API endpoints discovered.
145
145
  ---
146
146
 
147
147
  *This document is auto-generated and managed by CodeSyncer.*
148
+
149
+ <!-- codesyncer-version: 3.1.0 -->
@@ -279,3 +279,5 @@ grep -r "@codesyncer-rule" ./
279
279
  ---
280
280
 
281
281
  *This collaboration system is open source. Suggest improvements at [CodeSyncer GitHub](https://github.com/bitjaru/codesyncer)!*
282
+
283
+ <!-- codesyncer-version: 3.1.0 -->
@@ -580,3 +580,5 @@ After writing code:
580
580
  **Last Updated**: [TODAY]
581
581
 
582
582
  *Comments are the documentation. Record all context in code.*
583
+
584
+ <!-- codesyncer-version: 3.1.0 -->
@@ -225,3 +225,5 @@ grep "@codesyncer-decision" src/services/PaymentService.ts
225
225
  **Last Updated**: [TODAY]
226
226
 
227
227
  *All important decisions are permanently recorded. This is your team's knowledge asset.*
228
+
229
+ <!-- codesyncer-version: 3.1.0 -->
@@ -177,3 +177,5 @@ Both formats work identically, so use whichever you prefer!
177
177
 
178
178
  *CodeSyncer - Persistent context, controlled inference, live architecture sync for Claude Code*
179
179
  *Currently Supported: Claude Code | Coming Soon: Cursor, GitHub Copilot, Continue.dev*
180
+
181
+ <!-- codesyncer-version: 3.1.0 -->
@@ -239,3 +239,5 @@ grep -r "payment" ./*/
239
239
  ---
240
240
 
241
241
  *CodeSyncer is open source: https://github.com/bitjaru/codesyncer*
242
+
243
+ <!-- codesyncer-version: 3.1.0 -->
@@ -313,3 +313,5 @@ Setup is successful when:
313
313
  ---
314
314
 
315
315
  *This setup guide is generated by CodeSyncer CLI. For issues or improvements, visit: https://github.com/bitjaru/codesyncer*
316
+
317
+ <!-- codesyncer-version: 3.1.0 -->
@@ -330,3 +330,5 @@ Setup is successful when:
330
330
  ---
331
331
 
332
332
  *This setup guide is generated by CodeSyncer CLI. For issues or improvements, visit: https://github.com/bitjaru/codesyncer*
333
+
334
+ <!-- codesyncer-version: 3.1.0 -->
@@ -322,3 +322,5 @@ rm .claude/SETUP_GUIDE.md
322
322
  ---
323
323
 
324
324
  *This setup guide is generated by CodeSyncer CLI. For issues or improvements, visit: https://github.com/bitjaru/codesyncer*
325
+
326
+ <!-- codesyncer-version: 3.1.0 -->
@@ -145,3 +145,5 @@
145
145
  ---
146
146
 
147
147
  *이 문서는 CodeSyncer에 의해 자동 생성 및 관리됩니다.*
148
+
149
+ <!-- codesyncer-version: 3.1.0 -->
@@ -279,3 +279,5 @@ grep -r "@codesyncer-rule" ./
279
279
  ---
280
280
 
281
281
  *이 협업 시스템은 오픈소스입니다. 개선 아이디어는 [CodeSyncer GitHub](https://github.com/bitjaru/codesyncer)에서 제안해주세요!*
282
+
283
+ <!-- codesyncer-version: 3.1.0 -->
@@ -580,3 +580,5 @@ ARCHITECTURE.md에 자동 집계:
580
580
  **마지막 업데이트**: [TODAY]
581
581
 
582
582
  *주석이 곧 문서입니다. 모든 컨텍스트를 코드에 기록하세요.*
583
+
584
+ <!-- codesyncer-version: 3.1.0 -->
@@ -225,3 +225,5 @@ grep "@codesyncer-decision" src/services/PaymentService.ts
225
225
  **마지막 업데이트**: [TODAY]
226
226
 
227
227
  *모든 중요한 의사결정이 영구 기록됩니다. 팀의 지식 자산입니다.*
228
+
229
+ <!-- codesyncer-version: 3.1.0 -->
@@ -177,3 +177,5 @@ CodeSyncer는 두 가지 태그 형식을 모두 지원합니다:
177
177
 
178
178
  *CodeSyncer - 영구 컨텍스트, 추론 통제, 실시간 아키텍처 동기화 for Claude Code*
179
179
  *현재 지원: Claude Code | 향후 지원 예정: Cursor, GitHub Copilot, Continue.dev*
180
+
181
+ <!-- codesyncer-version: 3.1.0 -->
@@ -239,3 +239,5 @@ grep -r "결제" ./*/
239
239
  ---
240
240
 
241
241
  *CodeSyncer는 오픈소스입니다: https://github.com/bitjaru/codesyncer*
242
+
243
+ <!-- codesyncer-version: 3.1.0 -->
@@ -313,3 +313,5 @@ CodeSyncer 사용 준비 완료!
313
313
  ---
314
314
 
315
315
  *이 설정 가이드는 CodeSyncer CLI에 의해 생성됩니다. 문제나 개선사항은 https://github.com/bitjaru/codesyncer 방문*
316
+
317
+ <!-- codesyncer-version: 3.1.0 -->
@@ -330,3 +330,5 @@ CodeSyncer 사용 준비 완료!
330
330
  ---
331
331
 
332
332
  *이 설정 가이드는 CodeSyncer CLI에 의해 생성됩니다. 문제나 개선사항은 https://github.com/bitjaru/codesyncer 방문*
333
+
334
+ <!-- codesyncer-version: 3.1.0 -->
@@ -322,3 +322,5 @@ rm .claude/SETUP_GUIDE.md
322
322
  ---
323
323
 
324
324
  *이 설정 가이드는 CodeSyncer CLI에 의해 생성됩니다. 문제나 개선사항은 https://github.com/bitjaru/codesyncer 방문*
325
+
326
+ <!-- codesyncer-version: 3.1.0 -->