@ghl-ai/aw 0.1.35-beta.19 → 0.1.35-beta.20
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/ecc.mjs +3 -39
- package/integrate.mjs +2 -2
- package/link.mjs +1 -1
- package/package.json +1 -1
package/ecc.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
2
|
import {
|
|
3
|
-
existsSync, readFileSync, readdirSync,
|
|
3
|
+
existsSync, readFileSync, readdirSync,
|
|
4
4
|
mkdirSync, rmSync, writeFileSync,
|
|
5
5
|
} from "node:fs";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
@@ -57,41 +57,6 @@ function uninstallClaudePlugin() {
|
|
|
57
57
|
try { run(`claude plugin marketplace remove ${MARKETPLACE_NAME}`); } catch { /* not registered */ }
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
function namespaceCommands(target) {
|
|
61
|
-
const HOME = homedir();
|
|
62
|
-
const cfg = TARGET_STATE[target];
|
|
63
|
-
if (!cfg) return;
|
|
64
|
-
|
|
65
|
-
const statePath = join(HOME, cfg.state);
|
|
66
|
-
if (!existsSync(statePath)) return;
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
const state = JSON.parse(readFileSync(statePath, "utf8"));
|
|
70
|
-
let moved = false;
|
|
71
|
-
|
|
72
|
-
for (const op of state.operations) {
|
|
73
|
-
const dest = op.destinationPath;
|
|
74
|
-
if (dest.includes(".opencode/")) continue;
|
|
75
|
-
const match = dest.match(/^(.+\/commands)\/([^/]+\.md)$/);
|
|
76
|
-
if (!match) continue;
|
|
77
|
-
if (match[1].endsWith("/aw")) continue;
|
|
78
|
-
|
|
79
|
-
const cmdDir = match[1];
|
|
80
|
-
const filename = match[2];
|
|
81
|
-
const awDir = join(cmdDir, "aw");
|
|
82
|
-
const newDest = join(awDir, filename);
|
|
83
|
-
|
|
84
|
-
if (!existsSync(dest)) continue;
|
|
85
|
-
mkdirSync(awDir, { recursive: true });
|
|
86
|
-
renameSync(dest, newDest);
|
|
87
|
-
op.destinationPath = newDest;
|
|
88
|
-
moved = true;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (moved) writeFileSync(statePath, JSON.stringify(state, null, 2));
|
|
92
|
-
} catch { /* best effort */ }
|
|
93
|
-
}
|
|
94
|
-
|
|
95
60
|
export async function installAwEcc(
|
|
96
61
|
cwd,
|
|
97
62
|
{ targets = ["cursor", "claude", "codex"], silent = false } = {},
|
|
@@ -103,7 +68,7 @@ export async function installAwEcc(
|
|
|
103
68
|
try {
|
|
104
69
|
cloneOrUpdate(AW_ECC_TAG, repoDir);
|
|
105
70
|
|
|
106
|
-
// Claude Code:
|
|
71
|
+
// Claude Code: plugin install via marketplace CLI (proper agent dispatch)
|
|
107
72
|
if (targets.includes("claude")) {
|
|
108
73
|
try {
|
|
109
74
|
installClaudePlugin(repoDir);
|
|
@@ -112,7 +77,7 @@ export async function installAwEcc(
|
|
|
112
77
|
}
|
|
113
78
|
}
|
|
114
79
|
|
|
115
|
-
// Cursor + Codex: file-copy via install-apply.js
|
|
80
|
+
// Cursor + Codex: file-copy via install-apply.js
|
|
116
81
|
const fileCopyTargets = targets.filter((t) => FILE_COPY_TARGETS.includes(t));
|
|
117
82
|
if (fileCopyTargets.length > 0) {
|
|
118
83
|
run("npm install --no-audit --no-fund --ignore-scripts --loglevel=error", {
|
|
@@ -124,7 +89,6 @@ export async function installAwEcc(
|
|
|
124
89
|
`node ${join(repoDir, "scripts/install-apply.js")} --target ${target} --profile full`,
|
|
125
90
|
{ cwd },
|
|
126
91
|
);
|
|
127
|
-
namespaceCommands(target);
|
|
128
92
|
} catch { /* target not supported — skip */ }
|
|
129
93
|
}
|
|
130
94
|
}
|
package/integrate.mjs
CHANGED
|
@@ -136,7 +136,7 @@ Team: ${team} | Local-first orchestration via \`.aw_docs/\` | MCPs: \`memory/*\`
|
|
|
136
136
|
└── tasks/BOARD.md # Task board
|
|
137
137
|
\`\`\`
|
|
138
138
|
|
|
139
|
-
Symlinked to \`.claude/{agents,skills,commands/
|
|
139
|
+
Symlinked to \`.claude/{agents,skills,commands/ghl,evals}\`.
|
|
140
140
|
|
|
141
141
|
## Local-First Operations
|
|
142
142
|
|
|
@@ -172,7 +172,7 @@ stitch/* → External design generation
|
|
|
172
172
|
All symlinks are prefixed with their namespace (\`platform-\` or \`${team}-\`):
|
|
173
173
|
- \`.aw_registry/platform/review/agents/security-reviewer.md\` → \`.claude/agents/platform-review-security-reviewer.md\`
|
|
174
174
|
- \`.aw_registry/${team}/frontend/agents/frontend-developer.md\` → \`.claude/agents/${team}-frontend-developer.md\`
|
|
175
|
-
- \`.aw_registry/${team}/commands/ship.md\` → \`.claude/commands/
|
|
175
|
+
- \`.aw_registry/${team}/commands/ship.md\` → \`.claude/commands/ghl/${team}-ship.md\`
|
|
176
176
|
|
|
177
177
|
## Dependency Rule
|
|
178
178
|
|
package/link.mjs
CHANGED
|
@@ -217,7 +217,7 @@ export function linkWorkspace(cwd) {
|
|
|
217
217
|
const cmdFileName = [ns, ...segments, file].join('-');
|
|
218
218
|
|
|
219
219
|
for (const ide of IDE_DIRS) {
|
|
220
|
-
const linkDir = join(cwd, ide, 'commands', '
|
|
220
|
+
const linkDir = join(cwd, ide, 'commands', 'ghl');
|
|
221
221
|
mkdirSync(linkDir, { recursive: true });
|
|
222
222
|
const linkPath = join(linkDir, cmdFileName);
|
|
223
223
|
const targetPath = join(commandsDir, file);
|