oh-my-customcode 0.79.2 → 0.79.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -2148,6 +2148,7 @@ __export(exports_registry, {
2148
2148
  registerProject: () => registerProject,
2149
2149
  readRegistry: () => readRegistry,
2150
2150
  migrateFromLockfiles: () => migrateFromLockfiles,
2151
+ cleanRegistry: () => cleanRegistry,
2151
2152
  _setRegistryDirForTesting: () => _setRegistryDirForTesting
2152
2153
  });
2153
2154
  import { mkdir, readFile, writeFile } from "node:fs/promises";
@@ -2205,6 +2206,24 @@ async function unregisterProject(projectPath) {
2205
2206
  delete registry.projects[normalizedPath];
2206
2207
  await writeRegistry(registry);
2207
2208
  }
2209
+ async function cleanRegistry() {
2210
+ const { access: fsAccess } = await import("node:fs/promises");
2211
+ const registry = await readRegistryRaw();
2212
+ const paths = Object.keys(registry.projects);
2213
+ let removed = 0;
2214
+ for (const projectPath of paths) {
2215
+ try {
2216
+ await fsAccess(projectPath);
2217
+ } catch {
2218
+ delete registry.projects[projectPath];
2219
+ removed++;
2220
+ }
2221
+ }
2222
+ if (removed > 0) {
2223
+ await writeRegistry(registry);
2224
+ }
2225
+ return removed;
2226
+ }
2208
2227
  async function parseLockFile(lockPath) {
2209
2228
  try {
2210
2229
  const content = await readFile(lockPath, "utf-8");
@@ -2282,7 +2301,7 @@ var init_package = __esm(() => {
2282
2301
  workspaces: [
2283
2302
  "packages/*"
2284
2303
  ],
2285
- version: "0.79.2",
2304
+ version: "0.79.3",
2286
2305
  description: "Batteries-included agent harness for Claude Code",
2287
2306
  type: "module",
2288
2307
  bin: {
@@ -9769,6 +9788,15 @@ async function projectsCommand(options = {}) {
9769
9788
  return { success: false, projects: [], currentVersion, errors: [migrationError] };
9770
9789
  }
9771
9790
  }
9791
+ if (options.clean) {
9792
+ const { cleanRegistry: cleanRegistry2 } = await Promise.resolve().then(() => (init_registry(), exports_registry));
9793
+ const removed = await cleanRegistry2();
9794
+ if (removed > 0) {
9795
+ console.log(` 정리 완료: ${removed}개 존재하지 않는 프로젝트가 레지스트리에서 제거되었습니다.`);
9796
+ } else {
9797
+ console.log(" 정리할 항목이 없습니다.");
9798
+ }
9799
+ }
9772
9800
  console.log(" oh-my-customcode 적용 프로젝트를 검색 중...");
9773
9801
  try {
9774
9802
  const projects = await findProjects(options);
@@ -31697,11 +31725,12 @@ function createProgram() {
31697
31725
  console.warn(i18n.t("cli.web.deprecated.serveStop"));
31698
31726
  await serveStopCommand();
31699
31727
  });
31700
- program2.command("projects").description("List all projects on this machine where oh-my-customcode is installed").option("-f, --format <format>", "Output format: table, json, or simple", "table").option("--path <dir>", "Additional search directory (can be specified multiple times)", (val, prev) => [...prev, val], []).option("--migrate", "Scan for existing projects with lock files and import them into the registry").action(async (options) => {
31728
+ program2.command("projects").description("List all projects on this machine where oh-my-customcode is installed").option("-f, --format <format>", "Output format: table, json, or simple", "table").option("--path <dir>", "Additional search directory (can be specified multiple times)", (val, prev) => [...prev, val], []).option("--migrate", "Scan for existing projects with lock files and import them into the registry").option("--clean", "Remove registry entries whose project paths no longer exist on disk").action(async (options) => {
31701
31729
  await projectsCommand({
31702
31730
  format: options.format,
31703
31731
  paths: options.path,
31704
- migrate: options.migrate
31732
+ migrate: options.migrate,
31733
+ clean: options.clean
31705
31734
  });
31706
31735
  });
31707
31736
  program2.command("unregister [path]").description("Remove a project from the local registry").action(async (projectPath) => {
package/dist/index.js CHANGED
@@ -299,6 +299,7 @@ __export(exports_registry, {
299
299
  registerProject: () => registerProject,
300
300
  readRegistry: () => readRegistry,
301
301
  migrateFromLockfiles: () => migrateFromLockfiles,
302
+ cleanRegistry: () => cleanRegistry,
302
303
  _setRegistryDirForTesting: () => _setRegistryDirForTesting
303
304
  });
304
305
  import { mkdir, readFile, writeFile } from "node:fs/promises";
@@ -356,6 +357,24 @@ async function unregisterProject(projectPath) {
356
357
  delete registry.projects[normalizedPath];
357
358
  await writeRegistry(registry);
358
359
  }
360
+ async function cleanRegistry() {
361
+ const { access: fsAccess } = await import("node:fs/promises");
362
+ const registry = await readRegistryRaw();
363
+ const paths = Object.keys(registry.projects);
364
+ let removed = 0;
365
+ for (const projectPath of paths) {
366
+ try {
367
+ await fsAccess(projectPath);
368
+ } catch {
369
+ delete registry.projects[projectPath];
370
+ removed++;
371
+ }
372
+ }
373
+ if (removed > 0) {
374
+ await writeRegistry(registry);
375
+ }
376
+ return removed;
377
+ }
359
378
  async function parseLockFile(lockPath) {
360
379
  try {
361
380
  const content = await readFile(lockPath, "utf-8");
@@ -1954,7 +1973,7 @@ var package_default = {
1954
1973
  workspaces: [
1955
1974
  "packages/*"
1956
1975
  ],
1957
- version: "0.79.2",
1976
+ version: "0.79.3",
1958
1977
  description: "Batteries-included agent harness for Claude Code",
1959
1978
  type: "module",
1960
1979
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.79.2",
6
+ "version": "0.79.3",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.79.2",
2
+ "version": "0.79.3",
3
3
  "lastUpdated": "2026-03-24T00:00:00.000Z",
4
4
  "components": [
5
5
  {