@clawstore/clawstore 1.0.2 → 1.0.7
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/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +11 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands.d.ts.map +1 -1
- package/dist/src/commands.js +8 -1
- package/dist/src/commands.js.map +1 -1
- package/dist/src/core/agent-register.d.ts +6 -0
- package/dist/src/core/agent-register.d.ts.map +1 -0
- package/dist/src/core/agent-register.js +48 -0
- package/dist/src/core/agent-register.js.map +1 -0
- package/dist/src/core/api-health.d.ts +9 -0
- package/dist/src/core/api-health.d.ts.map +1 -0
- package/dist/src/core/api-health.js +17 -0
- package/dist/src/core/api-health.js.map +1 -0
- package/dist/src/core/diagnostics.d.ts +7 -0
- package/dist/src/core/diagnostics.d.ts.map +1 -0
- package/dist/src/core/diagnostics.js +145 -0
- package/dist/src/core/diagnostics.js.map +1 -0
- package/dist/src/core/openclaw-profile.d.ts +6 -0
- package/dist/src/core/openclaw-profile.d.ts.map +1 -0
- package/dist/src/core/openclaw-profile.js +12 -0
- package/dist/src/core/openclaw-profile.js.map +1 -0
- package/dist/src/core/workspace.d.ts +0 -9
- package/dist/src/core/workspace.d.ts.map +1 -1
- package/dist/src/core/workspace.js +7 -154
- package/dist/src/core/workspace.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +18 -3
- package/src/cli.ts +12 -1
- package/src/commands.ts +9 -1
- package/src/core/agent-register.ts +57 -0
- package/src/core/api-health.ts +17 -0
- package/src/core/diagnostics.ts +163 -0
- package/src/core/openclaw-profile.ts +10 -0
- package/src/core/workspace.ts +7 -168
- package/clawstore-clawstore-1.0.2.tgz +0 -0
- package/dist/src/__tests__/cli-sim.test.d.ts +0 -9
- package/dist/src/__tests__/cli-sim.test.d.ts.map +0 -1
- package/dist/src/__tests__/cli-sim.test.js +0 -275
- package/dist/src/__tests__/cli-sim.test.js.map +0 -1
- package/dist/src/__tests__/e2e.test.d.ts +0 -10
- package/dist/src/__tests__/e2e.test.d.ts.map +0 -1
- package/dist/src/__tests__/e2e.test.js +0 -159
- package/dist/src/__tests__/e2e.test.js.map +0 -1
- package/src/__tests__/cli-sim.test.ts +0 -303
- package/src/__tests__/e2e.test.ts +0 -186
- package/tsconfig.json +0 -23
package/src/core/workspace.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import { readFile, access, readdir
|
|
1
|
+
import { readFile, access, readdir } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import {
|
|
5
5
|
OPENCLAW_HOME,
|
|
6
6
|
CLAWSTORE_DIR,
|
|
7
7
|
DEFAULT_AGENT,
|
|
8
|
-
REQUIRED_FILES,
|
|
9
|
-
OPTIONAL_FILES,
|
|
10
8
|
agentRegistryFile,
|
|
11
|
-
agentSkillRegistryFile,
|
|
12
|
-
agentBackupDir,
|
|
13
9
|
} from "../constants.js";
|
|
14
|
-
import
|
|
10
|
+
import { readOpenclawProfileLabel } from "./openclaw-profile.js";
|
|
15
11
|
|
|
16
12
|
/**
|
|
17
13
|
* Resolve the workspace directory for a given OpenClaw agent.
|
|
@@ -40,6 +36,10 @@ export async function resolveWorkspace(agent?: string): Promise<string> {
|
|
|
40
36
|
workspace =
|
|
41
37
|
config?.agents?.[target]?.workspace ??
|
|
42
38
|
config?.agents?.entries?.[target]?.workspace;
|
|
39
|
+
if (!workspace && Array.isArray(config?.agents?.list)) {
|
|
40
|
+
const entry = config.agents.list.find((e: { id?: string }) => e?.id === target);
|
|
41
|
+
workspace = entry?.workspace;
|
|
42
|
+
}
|
|
43
43
|
} else {
|
|
44
44
|
workspace =
|
|
45
45
|
config?.agents?.defaults?.workspace ??
|
|
@@ -54,7 +54,7 @@ export async function resolveWorkspace(agent?: string): Promise<string> {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
if (target === DEFAULT_AGENT) {
|
|
57
|
-
const profile =
|
|
57
|
+
const profile = readOpenclawProfileLabel();
|
|
58
58
|
if (profile !== "default") {
|
|
59
59
|
return join(OPENCLAW_HOME, `workspace-${profile}`);
|
|
60
60
|
}
|
|
@@ -79,12 +79,10 @@ function expandHome(p: string): string {
|
|
|
79
79
|
export async function listClawstoreAgents(): Promise<string[]> {
|
|
80
80
|
const agents: string[] = [];
|
|
81
81
|
|
|
82
|
-
// "main" agent uses the root-level registry file
|
|
83
82
|
if (await exists(agentRegistryFile(DEFAULT_AGENT))) {
|
|
84
83
|
agents.push(DEFAULT_AGENT);
|
|
85
84
|
}
|
|
86
85
|
|
|
87
|
-
// Non-main agents live under clawstore/agents/<name>/
|
|
88
86
|
const agentsDir = join(CLAWSTORE_DIR, "agents");
|
|
89
87
|
if (await exists(agentsDir)) {
|
|
90
88
|
const entries = await readdir(agentsDir, { withFileTypes: true });
|
|
@@ -108,162 +106,3 @@ async function exists(p: string): Promise<boolean> {
|
|
|
108
106
|
return false;
|
|
109
107
|
}
|
|
110
108
|
}
|
|
111
|
-
|
|
112
|
-
async function dirItemCount(p: string): Promise<number> {
|
|
113
|
-
try {
|
|
114
|
-
const entries = await readdir(p);
|
|
115
|
-
return entries.length;
|
|
116
|
-
} catch {
|
|
117
|
-
return -1;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Run a full diagnostic for a specific OpenClaw agent.
|
|
123
|
-
*/
|
|
124
|
-
export async function diagnose(apiBaseUrl?: string, agent?: string): Promise<DiagnosticReport> {
|
|
125
|
-
const target = agent ?? DEFAULT_AGENT;
|
|
126
|
-
const checks: DiagnosticCheck[] = [];
|
|
127
|
-
let allOk = true;
|
|
128
|
-
const workspace = await resolveWorkspace(target);
|
|
129
|
-
const registryFile = agentRegistryFile(target);
|
|
130
|
-
const backupDir = agentBackupDir(target);
|
|
131
|
-
|
|
132
|
-
if (target !== DEFAULT_AGENT) {
|
|
133
|
-
checks.push({
|
|
134
|
-
label: "Target agent",
|
|
135
|
-
status: "ok",
|
|
136
|
-
detail: target,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// 1. OpenClaw home
|
|
141
|
-
const homeOk = await exists(OPENCLAW_HOME);
|
|
142
|
-
checks.push({
|
|
143
|
-
label: "OpenClaw home",
|
|
144
|
-
path: OPENCLAW_HOME,
|
|
145
|
-
status: homeOk ? "ok" : "fail",
|
|
146
|
-
detail: homeOk ? undefined : "NOT FOUND",
|
|
147
|
-
});
|
|
148
|
-
if (!homeOk) allOk = false;
|
|
149
|
-
|
|
150
|
-
// 2. Workspace
|
|
151
|
-
const wsOk = await exists(workspace);
|
|
152
|
-
checks.push({
|
|
153
|
-
label: "Workspace",
|
|
154
|
-
path: workspace,
|
|
155
|
-
status: wsOk ? "ok" : "fail",
|
|
156
|
-
detail: wsOk ? undefined : "NOT FOUND",
|
|
157
|
-
});
|
|
158
|
-
if (!wsOk) allOk = false;
|
|
159
|
-
|
|
160
|
-
// 3. Workspace files
|
|
161
|
-
for (const f of [...REQUIRED_FILES, ...OPTIONAL_FILES]) {
|
|
162
|
-
const fp = join(workspace, f);
|
|
163
|
-
const found = await exists(fp);
|
|
164
|
-
checks.push({
|
|
165
|
-
label: `Workspace file: ${f}`,
|
|
166
|
-
path: fp,
|
|
167
|
-
status: found ? "ok" : "warn",
|
|
168
|
-
detail: found ? "found" : "missing",
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// 4. Registry
|
|
173
|
-
const regOk = await exists(registryFile);
|
|
174
|
-
if (regOk) {
|
|
175
|
-
try {
|
|
176
|
-
const raw = await readFile(registryFile, "utf-8");
|
|
177
|
-
const reg = JSON.parse(raw);
|
|
178
|
-
const count = Object.keys(reg.agents ?? {}).length;
|
|
179
|
-
checks.push({
|
|
180
|
-
label: "Agent registry",
|
|
181
|
-
path: registryFile,
|
|
182
|
-
status: "ok",
|
|
183
|
-
detail: `${count} agent(s) registered`,
|
|
184
|
-
});
|
|
185
|
-
} catch {
|
|
186
|
-
checks.push({
|
|
187
|
-
label: "Agent registry",
|
|
188
|
-
path: registryFile,
|
|
189
|
-
status: "warn",
|
|
190
|
-
detail: "exists but cannot be parsed",
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
} else {
|
|
194
|
-
checks.push({
|
|
195
|
-
label: "Agent registry",
|
|
196
|
-
path: registryFile,
|
|
197
|
-
status: "ok",
|
|
198
|
-
detail: "not created yet (OK for first run)",
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// 5. Skills directory
|
|
203
|
-
const skillsDir = join(workspace, "skills");
|
|
204
|
-
const skillCount = await dirItemCount(skillsDir);
|
|
205
|
-
checks.push({
|
|
206
|
-
label: "Skills directory",
|
|
207
|
-
path: skillsDir,
|
|
208
|
-
status: skillCount >= 0 ? "ok" : "warn",
|
|
209
|
-
detail: skillCount >= 0 ? `${skillCount} skill(s)` : "NOT FOUND",
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
// 6. Backup directory
|
|
213
|
-
const backupCount = await dirItemCount(backupDir);
|
|
214
|
-
checks.push({
|
|
215
|
-
label: "Backup directory",
|
|
216
|
-
path: backupDir,
|
|
217
|
-
status: "ok",
|
|
218
|
-
detail: backupCount >= 0 ? `${backupCount} backup(s)` : "will be created on first install",
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
// 7. Cache directory
|
|
222
|
-
const cacheCount = await dirItemCount(join(CLAWSTORE_DIR, "cache"));
|
|
223
|
-
checks.push({
|
|
224
|
-
label: "Cache directory",
|
|
225
|
-
path: join(CLAWSTORE_DIR, "cache"),
|
|
226
|
-
status: "ok",
|
|
227
|
-
detail: cacheCount >= 0 ? `${cacheCount} item(s)` : "will be created on first install",
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
// 8. API connectivity (optional)
|
|
231
|
-
if (apiBaseUrl) {
|
|
232
|
-
try {
|
|
233
|
-
const res = await fetch(`${apiBaseUrl}/health`, { signal: AbortSignal.timeout(5000) });
|
|
234
|
-
checks.push({
|
|
235
|
-
label: "Clawstore API",
|
|
236
|
-
status: res.ok ? "ok" : "warn",
|
|
237
|
-
detail: res.ok ? "reachable" : `HTTP ${res.status}`,
|
|
238
|
-
});
|
|
239
|
-
} catch (err) {
|
|
240
|
-
checks.push({
|
|
241
|
-
label: "Clawstore API",
|
|
242
|
-
status: "warn",
|
|
243
|
-
detail: `unreachable (${(err as Error).message})`,
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
return { checks, allOk };
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Format a diagnostic report for CLI output.
|
|
253
|
-
*/
|
|
254
|
-
export function formatDiagnosticReport(report: DiagnosticReport): string {
|
|
255
|
-
const lines: string[] = ["\n Clawstore Doctor\n"];
|
|
256
|
-
for (const c of report.checks) {
|
|
257
|
-
const icon = c.status === "ok" ? "OK" : c.status === "warn" ? "WARN" : "FAIL";
|
|
258
|
-
const pathPart = c.path ? ` ${c.path}` : "";
|
|
259
|
-
const detailPart = c.detail ? ` (${c.detail})` : "";
|
|
260
|
-
lines.push(` ${c.label}:${pathPart} ... ${icon}${detailPart}`);
|
|
261
|
-
}
|
|
262
|
-
lines.push("");
|
|
263
|
-
lines.push(
|
|
264
|
-
report.allOk
|
|
265
|
-
? " All checks passed.\n"
|
|
266
|
-
: " Some issues found. Run `openclaw setup` to initialize missing directories.\n"
|
|
267
|
-
);
|
|
268
|
-
return lines.join("\n");
|
|
269
|
-
}
|
|
Binary file
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI simulation test — walks through the full lifecycle:
|
|
3
|
-
* install -> installed -> status -> disable -> enable -> pack -> doctor -> uninstall
|
|
4
|
-
*
|
|
5
|
-
* Uses the E-commerce Persona package as the test subject.
|
|
6
|
-
* Run: npx tsx src/__tests__/cli-sim.test.ts
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=cli-sim.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-sim.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/cli-sim.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI simulation test — walks through the full lifecycle:
|
|
3
|
-
* install -> installed -> status -> disable -> enable -> pack -> doctor -> uninstall
|
|
4
|
-
*
|
|
5
|
-
* Uses the E-commerce Persona package as the test subject.
|
|
6
|
-
* Run: npx tsx src/__tests__/cli-sim.test.ts
|
|
7
|
-
*/
|
|
8
|
-
import { resolve, join } from "node:path";
|
|
9
|
-
import { mkdir, rm, access } from "node:fs/promises";
|
|
10
|
-
import { tmpdir } from "node:os";
|
|
11
|
-
async function exists(p) {
|
|
12
|
-
try {
|
|
13
|
-
await access(p);
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
// ─── Capture log output ─────────────────────────────────────────────
|
|
21
|
-
function createLogger() {
|
|
22
|
-
const output = [];
|
|
23
|
-
return {
|
|
24
|
-
log: (msg) => {
|
|
25
|
-
output.push(msg);
|
|
26
|
-
console.log(msg);
|
|
27
|
-
},
|
|
28
|
-
output,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
// ─── Main test flow ─────────────────────────────────────────────────
|
|
32
|
-
async function main() {
|
|
33
|
-
const PERSONA_ROOT = resolve(import.meta.dirname ?? ".", "../../../../Persona");
|
|
34
|
-
const ECOMMERCE_PKG = join(PERSONA_ROOT, "E-commerce");
|
|
35
|
-
const DIST_DIR = join(tmpdir(), `clawstore-cli-test-${Date.now()}`);
|
|
36
|
-
console.log("╔════════════════════════════════════════════════════════════╗");
|
|
37
|
-
console.log("║ Clawstore CLI Simulation Test ║");
|
|
38
|
-
console.log("╚════════════════════════════════════════════════════════════╝");
|
|
39
|
-
console.log(`\n Persona root: ${PERSONA_ROOT}`);
|
|
40
|
-
console.log(` Test package: ${ECOMMERCE_PKG}`);
|
|
41
|
-
console.log(` Temp dist: ${DIST_DIR}\n`);
|
|
42
|
-
await mkdir(DIST_DIR, { recursive: true });
|
|
43
|
-
// Dynamic imports
|
|
44
|
-
const { installAgent } = await import("../core/package-installer.js");
|
|
45
|
-
const { listInstalledAgents, getAgentStatus, enableAgent, disableAgent } = await import("../core/agent-manager.js");
|
|
46
|
-
const { packAgent } = await import("../core/packager.js");
|
|
47
|
-
const { diagnose, formatDiagnosticReport } = await import("../core/workspace.js");
|
|
48
|
-
const { validatePackage } = await import("../core/package-installer.js");
|
|
49
|
-
let step = 0;
|
|
50
|
-
// ─────────────────────────────────────────────────────────────────
|
|
51
|
-
// Step 1: openclaw clawstore doctor
|
|
52
|
-
// ─────────────────────────────────────────────────────────────────
|
|
53
|
-
step++;
|
|
54
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
55
|
-
console.log(` Step ${step}: openclaw clawstore doctor`);
|
|
56
|
-
console.log(`${"─".repeat(60)}`);
|
|
57
|
-
const report = await diagnose();
|
|
58
|
-
console.log(formatDiagnosticReport(report));
|
|
59
|
-
// ─────────────────────────────────────────────────────────────────
|
|
60
|
-
// Step 2: openclaw clawstore install ./Persona/E-commerce
|
|
61
|
-
// ─────────────────────────────────────────────────────────────────
|
|
62
|
-
step++;
|
|
63
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
64
|
-
console.log(` Step ${step}: openclaw clawstore install ${ECOMMERCE_PKG}`);
|
|
65
|
-
console.log(`${"─".repeat(60)}`);
|
|
66
|
-
const installLogger = createLogger();
|
|
67
|
-
const installResult = await installAgent({
|
|
68
|
-
packagePath: ECOMMERCE_PKG,
|
|
69
|
-
force: true,
|
|
70
|
-
log: installLogger.log,
|
|
71
|
-
});
|
|
72
|
-
console.log(`\n >> Result state: ${installResult.state}`);
|
|
73
|
-
if (installResult.error)
|
|
74
|
-
console.log(` >> Error: ${installResult.error}`);
|
|
75
|
-
// ─────────────────────────────────────────────────────────────────
|
|
76
|
-
// Step 3: openclaw clawstore installed
|
|
77
|
-
// ─────────────────────────────────────────────────────────────────
|
|
78
|
-
step++;
|
|
79
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
80
|
-
console.log(` Step ${step}: openclaw clawstore installed`);
|
|
81
|
-
console.log(`${"─".repeat(60)}`);
|
|
82
|
-
const agents = await listInstalledAgents();
|
|
83
|
-
if (agents.length === 0) {
|
|
84
|
-
console.log("\n No agents installed.");
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
console.log(`\n Installed agents: ${agents.length}\n`);
|
|
88
|
-
agents.forEach((a, i) => {
|
|
89
|
-
const status = a.enabled ? "enabled" : "disabled";
|
|
90
|
-
console.log(` ${i + 1}. ${a.id}`);
|
|
91
|
-
console.log(` ${a.name}`);
|
|
92
|
-
console.log(` v${a.version} · ${a.category} · ${status}`);
|
|
93
|
-
console.log(` Installed: ${a.installed_at.slice(0, 10)}`);
|
|
94
|
-
console.log(` Files: ${a.files.length}`);
|
|
95
|
-
console.log(` Skills: ${a.skills.join(", ") || "none"}`);
|
|
96
|
-
console.log();
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
// ─────────────────────────────────────────────────────────────────
|
|
100
|
-
// Step 4: openclaw clawstore status sellex-ecommerce-ops
|
|
101
|
-
// ─────────────────────────────────────────────────────────────────
|
|
102
|
-
step++;
|
|
103
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
104
|
-
console.log(` Step ${step}: openclaw clawstore status sellex-ecommerce-ops`);
|
|
105
|
-
console.log(`${"─".repeat(60)}`);
|
|
106
|
-
const agentStatus = await getAgentStatus("sellex-ecommerce-ops");
|
|
107
|
-
if (agentStatus) {
|
|
108
|
-
const { agent, fileHealth, skillHealth } = agentStatus;
|
|
109
|
-
console.log(`\n Agent: ${agent.id}`);
|
|
110
|
-
console.log(` Name: ${agent.name}`);
|
|
111
|
-
console.log(` Version: ${agent.version}`);
|
|
112
|
-
console.log(` Category: ${agent.category}`);
|
|
113
|
-
console.log(` Status: ${agent.enabled ? "enabled" : "disabled"}`);
|
|
114
|
-
console.log(` Installed: ${agent.installed_at}`);
|
|
115
|
-
console.log(` Files:`);
|
|
116
|
-
for (const f of fileHealth) {
|
|
117
|
-
console.log(` - ${f.file} [${f.exists ? "OK" : "MISSING"}]`);
|
|
118
|
-
}
|
|
119
|
-
if (skillHealth.length > 0) {
|
|
120
|
-
console.log(` Skills:`);
|
|
121
|
-
for (const s of skillHealth) {
|
|
122
|
-
console.log(` - ${s.skillId} [${s.installed ? "installed" : "not installed"}]`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (agent.backup_path) {
|
|
126
|
-
console.log(` Backup: ${agent.backup_path}`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// ─────────────────────────────────────────────────────────────────
|
|
130
|
-
// Step 5: openclaw clawstore disable sellex-ecommerce-ops
|
|
131
|
-
// ─────────────────────────────────────────────────────────────────
|
|
132
|
-
step++;
|
|
133
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
134
|
-
console.log(` Step ${step}: openclaw clawstore disable sellex-ecommerce-ops`);
|
|
135
|
-
console.log(`${"─".repeat(60)}`);
|
|
136
|
-
const disabledResult = await disableAgent("sellex-ecommerce-ops");
|
|
137
|
-
if (disabledResult) {
|
|
138
|
-
console.log(`\n Disabled: ${disabledResult.agent.name} (${disabledResult.agent.id})`);
|
|
139
|
-
console.log(` Workspace files backed up and removed.`);
|
|
140
|
-
console.log(` Backup: ${disabledResult.backupPath}`);
|
|
141
|
-
}
|
|
142
|
-
// ─────────────────────────────────────────────────────────────────
|
|
143
|
-
// Step 6: openclaw clawstore enable sellex-ecommerce-ops
|
|
144
|
-
// ─────────────────────────────────────────────────────────────────
|
|
145
|
-
step++;
|
|
146
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
147
|
-
console.log(` Step ${step}: openclaw clawstore enable sellex-ecommerce-ops`);
|
|
148
|
-
console.log(`${"─".repeat(60)}`);
|
|
149
|
-
const enabledResult = await enableAgent("sellex-ecommerce-ops");
|
|
150
|
-
if (enabledResult) {
|
|
151
|
-
console.log(`\n Enabled: ${enabledResult.name} (${enabledResult.id})`);
|
|
152
|
-
}
|
|
153
|
-
// ─────────────────────────────────────────────────────────────────
|
|
154
|
-
// Step 7: openclaw clawstore pack ./Persona/E-commerce
|
|
155
|
-
// ─────────────────────────────────────────────────────────────────
|
|
156
|
-
step++;
|
|
157
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
158
|
-
console.log(` Step ${step}: openclaw clawstore pack ${ECOMMERCE_PKG} --output ${DIST_DIR}`);
|
|
159
|
-
console.log(`${"─".repeat(60)}`);
|
|
160
|
-
const packLogger = createLogger();
|
|
161
|
-
const packResult = await packAgent({
|
|
162
|
-
packagePath: ECOMMERCE_PKG,
|
|
163
|
-
outputDir: DIST_DIR,
|
|
164
|
-
log: packLogger.log,
|
|
165
|
-
});
|
|
166
|
-
if (packResult) {
|
|
167
|
-
console.log(`\n >> Pack result: ${packResult.zipPath}`);
|
|
168
|
-
console.log(` >> Size: ${packResult.sizeKb.toFixed(1)} KB`);
|
|
169
|
-
console.log(` >> Manifest ID: ${packResult.manifest.id}`);
|
|
170
|
-
console.log(` >> Skills detected: ${packResult.manifest.skills.map(s => s.id).join(", ")}`);
|
|
171
|
-
}
|
|
172
|
-
// ─────────────────────────────────────────────────────────────────
|
|
173
|
-
// Step 8: Verify the packed ZIP can be installed
|
|
174
|
-
// ─────────────────────────────────────────────────────────────────
|
|
175
|
-
if (packResult) {
|
|
176
|
-
step++;
|
|
177
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
178
|
-
console.log(` Step ${step}: openclaw clawstore install ${packResult.zipPath} (from ZIP)`);
|
|
179
|
-
console.log(`${"─".repeat(60)}`);
|
|
180
|
-
const zipLogger = createLogger();
|
|
181
|
-
const zipResult = await installAgent({
|
|
182
|
-
packagePath: packResult.zipPath,
|
|
183
|
-
force: true,
|
|
184
|
-
skipSkills: true, // ZIP re-install: skip skills since already attempted
|
|
185
|
-
log: zipLogger.log,
|
|
186
|
-
});
|
|
187
|
-
console.log(`\n >> ZIP install result: ${zipResult.state}`);
|
|
188
|
-
}
|
|
189
|
-
// ─────────────────────────────────────────────────────────────────
|
|
190
|
-
// Step 9: Install a second Persona to a DIFFERENT OpenClaw agent
|
|
191
|
-
// (multi-agent support)
|
|
192
|
-
// ─────────────────────────────────────────────────────────────────
|
|
193
|
-
step++;
|
|
194
|
-
const CROSSBORDER_PKG = join(PERSONA_ROOT, "Cross-border");
|
|
195
|
-
const SECOND_AGENT = "sales";
|
|
196
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
197
|
-
console.log(` Step ${step}: openclaw clawstore install ${CROSSBORDER_PKG} --agent ${SECOND_AGENT}`);
|
|
198
|
-
console.log(`${"─".repeat(60)}`);
|
|
199
|
-
const cb_logger = createLogger();
|
|
200
|
-
await installAgent({
|
|
201
|
-
packagePath: CROSSBORDER_PKG,
|
|
202
|
-
force: true,
|
|
203
|
-
skipSkills: true,
|
|
204
|
-
agent: SECOND_AGENT,
|
|
205
|
-
log: cb_logger.log,
|
|
206
|
-
});
|
|
207
|
-
// Show installed list per agent
|
|
208
|
-
const mainAgents = await listInstalledAgents("main");
|
|
209
|
-
const salesAgents = await listInstalledAgents(SECOND_AGENT);
|
|
210
|
-
console.log(`\n Installed on "main": ${mainAgents.length}`);
|
|
211
|
-
for (const a of mainAgents) {
|
|
212
|
-
console.log(` - ${a.id} v${a.version} (${a.enabled ? "enabled" : "disabled"})`);
|
|
213
|
-
}
|
|
214
|
-
console.log(` Installed on "${SECOND_AGENT}": ${salesAgents.length}`);
|
|
215
|
-
for (const a of salesAgents) {
|
|
216
|
-
console.log(` - ${a.id} v${a.version} (${a.enabled ? "enabled" : "disabled"})`);
|
|
217
|
-
}
|
|
218
|
-
// ─────────────────────────────────────────────────────────────────
|
|
219
|
-
// Step 10: openclaw clawstore uninstall sellex-ecommerce-ops
|
|
220
|
-
// ─────────────────────────────────────────────────────────────────
|
|
221
|
-
step++;
|
|
222
|
-
console.log(`\n${"─".repeat(60)}`);
|
|
223
|
-
console.log(` Step ${step}: openclaw clawstore uninstall sellex-ecommerce-ops`);
|
|
224
|
-
console.log(`${"─".repeat(60)}`);
|
|
225
|
-
const { unregisterAgent, backupCurrentWorkspace, removeAgentFiles, getInstalledAgent } = await import("../core/agent-manager.js");
|
|
226
|
-
const agent = await getInstalledAgent("sellex-ecommerce-ops");
|
|
227
|
-
if (agent) {
|
|
228
|
-
console.log(`\n Uninstalling: ${agent.name} (${agent.id})`);
|
|
229
|
-
console.log(` Version: ${agent.version}\n`);
|
|
230
|
-
console.log(" [1/3] Creating safety backup ...");
|
|
231
|
-
const backupPath = await backupCurrentWorkspace(agent.id, "uninstall");
|
|
232
|
-
console.log(` [1/3] Creating safety backup ... OK (${backupPath})`);
|
|
233
|
-
console.log(" [2/3] Removing agent files ...");
|
|
234
|
-
const removed = await removeAgentFiles(agent);
|
|
235
|
-
console.log(` [2/3] Removing agent files ... OK (${removed} files removed)`);
|
|
236
|
-
console.log(" [3/3] Updating registry ...");
|
|
237
|
-
await unregisterAgent(agent.id);
|
|
238
|
-
console.log(" [3/3] Updating registry ... OK");
|
|
239
|
-
console.log(`\n Uninstalled: ${agent.name}`);
|
|
240
|
-
console.log(` Backup saved: ${backupPath}`);
|
|
241
|
-
}
|
|
242
|
-
// Final state
|
|
243
|
-
const finalMainAgents = await listInstalledAgents("main");
|
|
244
|
-
const finalSalesAgents = await listInstalledAgents(SECOND_AGENT);
|
|
245
|
-
console.log(`\n Remaining on "main": ${finalMainAgents.length}`);
|
|
246
|
-
for (const a of finalMainAgents) {
|
|
247
|
-
console.log(` - ${a.id} v${a.version}`);
|
|
248
|
-
}
|
|
249
|
-
console.log(` Remaining on "${SECOND_AGENT}": ${finalSalesAgents.length}`);
|
|
250
|
-
for (const a of finalSalesAgents) {
|
|
251
|
-
console.log(` - ${a.id} v${a.version}`);
|
|
252
|
-
}
|
|
253
|
-
// ─────────────────────────────────────────────────────────────────
|
|
254
|
-
// Cleanup all agents
|
|
255
|
-
// ─────────────────────────────────────────────────────────────────
|
|
256
|
-
for (const a of finalMainAgents) {
|
|
257
|
-
await unregisterAgent(a.id, "main");
|
|
258
|
-
}
|
|
259
|
-
for (const a of finalSalesAgents) {
|
|
260
|
-
await unregisterAgent(a.id, SECOND_AGENT);
|
|
261
|
-
}
|
|
262
|
-
// Cleanup temp
|
|
263
|
-
try {
|
|
264
|
-
await rm(DIST_DIR, { recursive: true, force: true });
|
|
265
|
-
}
|
|
266
|
-
catch { }
|
|
267
|
-
console.log("\n╔════════════════════════════════════════════════════════════╗");
|
|
268
|
-
console.log("║ All CLI simulation steps completed successfully! ║");
|
|
269
|
-
console.log("╚════════════════════════════════════════════════════════════╝\n");
|
|
270
|
-
}
|
|
271
|
-
main().catch((err) => {
|
|
272
|
-
console.error("\nTest failed:", err);
|
|
273
|
-
process.exit(1);
|
|
274
|
-
});
|
|
275
|
-
//# sourceMappingURL=cli-sim.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-sim.test.js","sourceRoot":"","sources":["../../../src/__tests__/cli-sim.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* End-to-end test for the Clawstore plugin core modules.
|
|
3
|
-
*
|
|
4
|
-
* Verifies: workspace resolution, manifest validation, install/uninstall
|
|
5
|
-
* flow, pack, and diagnostic report — all against the local Persona packages.
|
|
6
|
-
*
|
|
7
|
-
* Run: npx tsx src/__tests__/e2e.test.ts
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=e2e.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"e2e.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/e2e.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|