@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 +4 -0
- package/commands/nuke.mjs +5 -1
- package/commands/push.mjs +30 -1
- package/constants.mjs +1 -1
- package/package.json +1 -1
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
|
|
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
|
|
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 = '
|
|
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';
|