@ghl-ai/aw 0.1.43 → 0.1.44-beta.1

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 (3) hide show
  1. package/ecc.mjs +72 -7
  2. package/mcp.mjs +1 -0
  3. package/package.json +1 -1
package/ecc.mjs CHANGED
@@ -10,9 +10,9 @@ import { homedir } from "node:os";
10
10
  import * as fmt from "./fmt.mjs";
11
11
  import { applyStoredStartupPreferences } from "./startup.mjs";
12
12
 
13
- const AW_ECC_REPO_SSH = "git@github.com:shreyansh-ghl/aw-ecc.git";
14
- const AW_ECC_REPO_HTTPS = "https://github.com/shreyansh-ghl/aw-ecc.git";
15
- export const AW_ECC_TAG = "v1.4.43";
13
+ const AW_ECC_REPO_SSH = "git@github.com:GoHighLevel/aw-ecc.git";
14
+ const AW_ECC_REPO_HTTPS = "https://github.com/GoHighLevel/aw-ecc.git";
15
+ export const AW_ECC_TAG = "v1.4.45";
16
16
 
17
17
  const MARKETPLACE_NAME = "aw-marketplace";
18
18
  const PLUGIN_KEY = `aw@${MARKETPLACE_NAME}`;
@@ -475,10 +475,75 @@ export function uninstallAwEcc({ silent = false } = {}) {
475
475
  } catch { /* best effort */ }
476
476
  }
477
477
 
478
- // Clean leftover manual plugin cache from older versions
479
- const oldCache = join(HOME, ".claude", "plugins", "cache", "aw");
480
- if (existsSync(oldCache)) {
481
- try { rmSync(oldCache, { recursive: true, force: true }); removed++; } catch { /* best effort */ }
478
+ // Clean leftover plugin cache directories (Claude Code may not fully remove these)
479
+ for (const cacheName of ["aw", "aw-marketplace"]) {
480
+ const cacheDir = join(HOME, ".claude", "plugins", "cache", cacheName);
481
+ if (existsSync(cacheDir)) {
482
+ try { rmSync(cacheDir, { recursive: true, force: true }); removed++; } catch { /* best effort */ }
483
+ }
484
+ }
485
+
486
+ // Clean rules copied by session-start hook (plugin-only users)
487
+ const pluginRulesDir = join(HOME, ".claude", "rules", "platform");
488
+ if (existsSync(pluginRulesDir)) {
489
+ try { rmSync(pluginRulesDir, { recursive: true, force: true }); removed++; } catch { /* best effort */ }
490
+ }
491
+
492
+ // Clean commands created by docsregistry sync (all IDEs)
493
+ for (const cmdDir of [
494
+ join(HOME, ".claude", "commands", "aw"),
495
+ join(HOME, ".cursor", "commands", "aw"),
496
+ ]) {
497
+ if (existsSync(cmdDir)) {
498
+ try { rmSync(cmdDir, { recursive: true, force: true }); removed++; } catch { /* best effort */ }
499
+ }
500
+ }
501
+
502
+ // Strip aw-managed content from ~/.claude/CLAUDE.md (keep user content above the marker)
503
+ const claudeMdPath = join(HOME, ".claude", "CLAUDE.md");
504
+ if (existsSync(claudeMdPath)) {
505
+ try {
506
+ const content = readFileSync(claudeMdPath, "utf8");
507
+ const marker = "<!-- aw-managed:";
508
+ const idx = content.indexOf(marker);
509
+ if (idx !== -1) {
510
+ const userContent = content.slice(0, idx).trimEnd();
511
+ if (userContent.length > 0) {
512
+ writeFileSync(claudeMdPath, userContent + "\n");
513
+ } else {
514
+ rmSync(claudeMdPath, { force: true });
515
+ }
516
+ removed++;
517
+ }
518
+ } catch { /* best effort */ }
519
+ }
520
+
521
+ // Clean Codex aw hooks
522
+ const codexHooksDir = join(HOME, ".codex", "hooks");
523
+ if (existsSync(codexHooksDir)) {
524
+ try {
525
+ for (const file of readdirSync(codexHooksDir)) {
526
+ if (file.startsWith("aw-") || file.startsWith("session-end-extract") || file.startsWith("session-stop-marker")) {
527
+ rmSync(join(codexHooksDir, file), { force: true });
528
+ removed++;
529
+ }
530
+ }
531
+ pruneEmptyParents(codexHooksDir, join(HOME, ".codex"));
532
+ } catch { /* best effort */ }
533
+ }
534
+
535
+ // Clean Codex ecc backup directories
536
+ const codexBackupsDir = join(HOME, ".codex", "backups");
537
+ if (existsSync(codexBackupsDir)) {
538
+ try {
539
+ for (const dir of readdirSync(codexBackupsDir)) {
540
+ if (dir.startsWith("ecc-")) {
541
+ rmSync(join(codexBackupsDir, dir), { recursive: true, force: true });
542
+ removed++;
543
+ }
544
+ }
545
+ pruneEmptyParents(codexBackupsDir, join(HOME, ".codex"));
546
+ } catch { /* best effort */ }
482
547
  }
483
548
 
484
549
  // Remove permanent aw-ecc repo clone — use rm -rf (more reliable than rmSync on git repos)
package/mcp.mjs CHANGED
@@ -249,6 +249,7 @@ async function resolveClickUpToken(silent = false, cwd = process.cwd()) {
249
249
  return token;
250
250
  }
251
251
 
252
+
252
253
  /**
253
254
  * Setup MCP configs globally for Claude Code and Cursor.
254
255
  * Merges ghl-ai server into existing configs without overwriting other servers.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ghl-ai/aw",
3
- "version": "0.1.43",
3
+ "version": "0.1.44-beta.1",
4
4
  "description": "Agentic Workspace CLI — pull, push & manage agents, skills and commands from the registry",
5
5
  "type": "module",
6
6
  "bin": {