@ghl-ai/aw 0.1.34 → 0.1.35-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.
package/commands/init.mjs CHANGED
@@ -19,6 +19,7 @@ import { generateCommands, copyInstructions, initAwDocs } from '../integrate.mjs
19
19
  import { setupMcp } from '../mcp.mjs';
20
20
  import { autoUpdate, promptUpdate } from '../update.mjs';
21
21
  import { installGlobalHooks } from '../hooks.mjs';
22
+ import { installIdeHooks } from '../ide-hooks.mjs';
22
23
 
23
24
  const __dirname = dirname(fileURLToPath(import.meta.url));
24
25
  const VERSION = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8')).version;
@@ -206,6 +207,7 @@ export async function initCommand(args) {
206
207
  setupMcp(HOME, freshCfg?.namespace || team) || [];
207
208
  if (cwd !== HOME) setupMcp(cwd, freshCfg?.namespace || team);
208
209
  installGlobalHooks();
210
+ const ideHookFiles = installIdeHooks(HOME);
209
211
 
210
212
  // Link current project if needed
211
213
  if (cwd !== HOME && !existsSync(join(cwd, '.aw_registry'))) {
@@ -286,6 +288,7 @@ export async function initCommand(args) {
286
288
  const mcpFiles = setupMcp(HOME, team) || [];
287
289
  if (cwd !== HOME) setupMcp(cwd, team);
288
290
  const hooksInstalled = installGlobalHooks();
291
+ const ideHookFilesInit = installIdeHooks(HOME);
289
292
  installIdeTasks();
290
293
 
291
294
  // Step 4: Symlink in current directory if it's a git repo
@@ -304,6 +307,7 @@ export async function initCommand(args) {
304
307
  createdFiles: [
305
308
  ...instructionFiles.map(p => p.startsWith(HOME) ? p.slice(HOME.length + 1) : p),
306
309
  ...mcpFiles.map(p => p.startsWith(HOME) ? p.slice(HOME.length + 1) : p),
310
+ ...(ideHookFilesInit || []).map(p => p.startsWith(HOME) ? p.slice(HOME.length + 1) : p),
307
311
  ],
308
312
  globalHooksDir: hooksInstalled ? join(HOME, '.aw', 'hooks') : null,
309
313
  };
package/commands/nuke.mjs CHANGED
@@ -9,6 +9,7 @@ import { execSync } from 'node:child_process';
9
9
  import * as fmt from '../fmt.mjs';
10
10
  import { chalk } from '../fmt.mjs';
11
11
  import { removeGlobalHooks } from '../hooks.mjs';
12
+ import { removeIdeHooks } from '../ide-hooks.mjs';
12
13
 
13
14
  const HOME = homedir();
14
15
  const GLOBAL_AW_DIR = join(HOME, '.aw_registry');
@@ -249,7 +250,10 @@ export function nukeCommand(args) {
249
250
  // 4. Remove git hooks (core.hooksPath + legacy template)
250
251
  removeGitHooks(manifest);
251
252
 
252
- // 5. Remove IDE auto-init tasks
253
+ // 5. Remove IDE session hooks (superpowers bootstrap)
254
+ removeIdeHooks(HOME);
255
+
256
+ // 6. Remove IDE auto-init tasks
253
257
  removeIdeTasks();
254
258
 
255
259
  // 5b. Remove upgrade lock/log (inside .aw_registry, must happen before dir removal)
package/commands/push.mjs CHANGED
@@ -73,12 +73,17 @@ function collectBatchFiles(folderAbsPath, workspaceDir) {
73
73
  }
74
74
 
75
75
  /**
76
- * Collect all modified files from manifest (for no-args push).
76
+ * Collect all modified + untracked files for no-args push.
77
+ * 1. Manifest-tracked files that are modified or template-derived (never pushed).
78
+ * 2. Filesystem files not in the manifest at all (newly added by user).
77
79
  * Returns array of { absPath, registryTarget, type, namespace, slug, isDir }.
78
80
  */
79
81
  function collectModifiedFiles(workspaceDir) {
80
82
  const manifest = loadManifest(workspaceDir);
83
+ const manifestKeys = new Set(Object.keys(manifest.files || {}));
81
84
  const files = [];
85
+
86
+ // 1. Manifest-tracked: modified or never-pushed
82
87
  for (const [key, entry] of Object.entries(manifest.files || {})) {
83
88
  const filePath = join(workspaceDir, key);
84
89
  if (!existsSync(filePath)) continue;
@@ -99,6 +104,30 @@ function collectModifiedFiles(workspaceDir) {
99
104
  }
100
105
  }
101
106
  }
107
+
108
+ // 2. Untracked: files on disk but not in manifest (e.g. manually added)
109
+ for (const name of readdirSync(workspaceDir, { withFileTypes: true })) {
110
+ if (!name.isDirectory() || name.name.startsWith('.')) continue;
111
+ const nsDir = join(workspaceDir, name.name);
112
+ const entries = walkRegistryTree(nsDir, name.name);
113
+ for (const entry of entries) {
114
+ // Build the manifest key for this file
115
+ const manifestKey = (entry.type === 'skills' || entry.type === 'evals')
116
+ ? `${entry.namespacePath}/${entry.type}/${entry.slug}/${entry.skillRelPath || entry.filename}`
117
+ : `${entry.namespacePath}/${entry.type}/${entry.filename}`;
118
+ if (manifestKeys.has(manifestKey)) continue; // Already handled above
119
+ const registryTarget = `${REGISTRY_DIR}/${manifestKey}`;
120
+ files.push({
121
+ absPath: entry.sourcePath,
122
+ registryTarget,
123
+ type: entry.type,
124
+ namespace: entry.namespacePath,
125
+ slug: entry.slug,
126
+ isDir: false,
127
+ });
128
+ }
129
+ }
130
+
102
131
  return files;
103
132
  }
104
133
 
package/constants.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  // constants.mjs — Single source of truth for registry settings.
2
2
 
3
3
  /** Base branch for PRs and sync checkout */
4
- export const REGISTRY_BASE_BRANCH = 'main';
4
+ export const REGISTRY_BASE_BRANCH = 'sync/platform-superpowers-l8ynb';
5
5
 
6
6
  /** Default registry repository */
7
7
  export const REGISTRY_REPO = 'GoHighLevel/platform-docs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ghl-ai/aw",
3
- "version": "0.1.34",
3
+ "version": "0.1.35-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": {