@clawstore/clawstore 1.0.0 → 1.0.2
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/clawstore-clawstore-1.0.2.tgz +0 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/src/__tests__/cli-sim.test.d.ts +9 -0
- package/dist/src/__tests__/cli-sim.test.d.ts.map +1 -0
- package/dist/src/__tests__/cli-sim.test.js +275 -0
- package/dist/src/__tests__/cli-sim.test.js.map +1 -0
- package/dist/src/__tests__/e2e.test.d.ts +10 -0
- package/dist/src/__tests__/e2e.test.d.ts.map +1 -0
- package/dist/src/__tests__/e2e.test.js +159 -0
- package/dist/src/__tests__/e2e.test.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +470 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands.d.ts +10 -0
- package/dist/src/commands.d.ts.map +1 -0
- package/dist/src/commands.js +208 -0
- package/dist/src/commands.js.map +1 -0
- package/dist/src/constants.d.ts +28 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +65 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/core/agent-manager.d.ts +34 -0
- package/dist/src/core/agent-manager.d.ts.map +1 -0
- package/dist/src/core/agent-manager.js +268 -0
- package/dist/src/core/agent-manager.js.map +1 -0
- package/dist/src/core/package-installer.d.ts +30 -0
- package/dist/src/core/package-installer.d.ts.map +1 -0
- package/dist/src/core/package-installer.js +308 -0
- package/dist/src/core/package-installer.js.map +1 -0
- package/dist/src/core/packager.d.ts +20 -0
- package/dist/src/core/packager.d.ts.map +1 -0
- package/dist/src/core/packager.js +178 -0
- package/dist/src/core/packager.js.map +1 -0
- package/dist/src/core/skill-installer.d.ts +33 -0
- package/dist/src/core/skill-installer.d.ts.map +1 -0
- package/dist/src/core/skill-installer.js +179 -0
- package/dist/src/core/skill-installer.js.map +1 -0
- package/dist/src/core/store-client.d.ts +47 -0
- package/dist/src/core/store-client.d.ts.map +1 -0
- package/dist/src/core/store-client.js +111 -0
- package/dist/src/core/store-client.js.map +1 -0
- package/dist/src/core/workspace.d.ts +29 -0
- package/dist/src/core/workspace.d.ts.map +1 -0
- package/dist/src/core/workspace.js +242 -0
- package/dist/src/core/workspace.js.map +1 -0
- package/dist/src/types.d.ts +114 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/checksum.d.ts +4 -0
- package/dist/src/utils/checksum.d.ts.map +1 -0
- package/dist/src/utils/checksum.js +15 -0
- package/dist/src/utils/checksum.js.map +1 -0
- package/dist/src/utils/output.d.ts +13 -0
- package/dist/src/utils/output.d.ts.map +1 -0
- package/dist/src/utils/output.js +70 -0
- package/dist/src/utils/output.js.map +1 -0
- package/dist/src/utils/zip.d.ts +13 -0
- package/dist/src/utils/zip.d.ts.map +1 -0
- package/dist/src/utils/zip.js +50 -0
- package/dist/src/utils/zip.js.map +1 -0
- package/package.json +4 -2
- package/src/cli.ts +29 -11
- package/src/commands.ts +33 -3
- package/src/constants.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-manager.js","sourceRoot":"","sources":["../../../src/core/agent-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AgentManifest, InstallState, PackageValidationResult } from "../types.js";
|
|
2
|
+
export declare function loadManifest(packagePath: string): Promise<AgentManifest>;
|
|
3
|
+
export declare function validatePackage(packagePath: string): Promise<PackageValidationResult>;
|
|
4
|
+
export declare function resolvePackagePath(pathStr: string): Promise<string>;
|
|
5
|
+
export declare function downloadPackage(url: string, personaId: string): Promise<string>;
|
|
6
|
+
export interface InstallOptions {
|
|
7
|
+
packagePath: string;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
skipSkills?: boolean;
|
|
10
|
+
/** OpenClaw agent to install into (default "main") */
|
|
11
|
+
agent?: string;
|
|
12
|
+
log: (msg: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function installAgent(opts: InstallOptions): Promise<{
|
|
15
|
+
state: InstallState;
|
|
16
|
+
agentId?: string;
|
|
17
|
+
error?: string;
|
|
18
|
+
}>;
|
|
19
|
+
export interface UpdateOptions {
|
|
20
|
+
agentId: string;
|
|
21
|
+
packagePath: string;
|
|
22
|
+
/** OpenClaw agent to update within (default "main") */
|
|
23
|
+
agent?: string;
|
|
24
|
+
log: (msg: string) => void;
|
|
25
|
+
}
|
|
26
|
+
export declare function updateAgent(opts: UpdateOptions): Promise<{
|
|
27
|
+
state: InstallState;
|
|
28
|
+
error?: string;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=package-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-installer.d.ts","sourceRoot":"","sources":["../../../src/core/package-installer.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EACZ,uBAAuB,EAExB,MAAM,aAAa,CAAC;AA0BrB,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAO9E;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA8B3F;AAID,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYzE;AAID,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrF;AAID,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;IAChE,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA+ID;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IAC9D,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAmGD"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { readFile, access, cp, mkdir, readdir, stat } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { MANIFEST_FILE, REQUIRED_FILES, OPTIONAL_FILES, MANIFEST_REQUIRED_FIELDS, INSTALL_TOTAL_STEPS, UPDATE_TOTAL_STEPS, DOWNLOADS_DIR, DEFAULT_AGENT, } from "../constants.js";
|
|
4
|
+
import { ensureDirs, loadRegistry, registerAgent, backupCurrentWorkspace, restoreFromBackup, updateAgentRecord, } from "./agent-manager.js";
|
|
5
|
+
import { installRequiredSkills } from "./skill-installer.js";
|
|
6
|
+
import { resolveWorkspace } from "./workspace.js";
|
|
7
|
+
import { extractZip } from "../utils/zip.js";
|
|
8
|
+
import { stepLine } from "../utils/output.js";
|
|
9
|
+
async function exists(p) {
|
|
10
|
+
try {
|
|
11
|
+
await access(p);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// ─── Manifest loading & validation ──────────────────────────────────
|
|
19
|
+
export async function loadManifest(packagePath) {
|
|
20
|
+
const manifestPath = join(packagePath, MANIFEST_FILE);
|
|
21
|
+
if (!(await exists(manifestPath))) {
|
|
22
|
+
throw new Error(`${MANIFEST_FILE} not found in ${packagePath}`);
|
|
23
|
+
}
|
|
24
|
+
const raw = await readFile(manifestPath, "utf-8");
|
|
25
|
+
return JSON.parse(raw);
|
|
26
|
+
}
|
|
27
|
+
export async function validatePackage(packagePath) {
|
|
28
|
+
const errors = [];
|
|
29
|
+
let manifest = null;
|
|
30
|
+
try {
|
|
31
|
+
manifest = await loadManifest(packagePath);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
errors.push({ field: "agent.json", message: err.message });
|
|
35
|
+
return { valid: false, errors, manifest: null };
|
|
36
|
+
}
|
|
37
|
+
for (const f of REQUIRED_FILES) {
|
|
38
|
+
if (!(await exists(join(packagePath, f)))) {
|
|
39
|
+
errors.push({ field: f, message: `Missing required file: ${f}` });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const field of MANIFEST_REQUIRED_FIELDS) {
|
|
43
|
+
if (!manifest[field]) {
|
|
44
|
+
errors.push({ field: `agent.json.${field}`, message: `Missing required field: ${field}` });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
for (const ef of manifest.entry_files ?? []) {
|
|
48
|
+
if (!(await exists(join(packagePath, ef)))) {
|
|
49
|
+
errors.push({ field: `entry_files`, message: `entry_files references missing file: ${ef}` });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return { valid: errors.length === 0, errors, manifest };
|
|
53
|
+
}
|
|
54
|
+
// ─── Resolve package path (dir or ZIP) ──────────────────────────────
|
|
55
|
+
export async function resolvePackagePath(pathStr) {
|
|
56
|
+
const p = join(pathStr);
|
|
57
|
+
const st = await stat(p);
|
|
58
|
+
if (st.isFile() && p.endsWith(".zip")) {
|
|
59
|
+
return extractZip(p);
|
|
60
|
+
}
|
|
61
|
+
if (st.isDirectory()) {
|
|
62
|
+
return p;
|
|
63
|
+
}
|
|
64
|
+
throw new Error(`${pathStr} is not a valid directory or ZIP file`);
|
|
65
|
+
}
|
|
66
|
+
// ─── Download package from store ────────────────────────────────────
|
|
67
|
+
export async function downloadPackage(url, personaId) {
|
|
68
|
+
await mkdir(DOWNLOADS_DIR, { recursive: true });
|
|
69
|
+
const destZip = join(DOWNLOADS_DIR, `${personaId}.zip`);
|
|
70
|
+
const res = await fetch(url);
|
|
71
|
+
if (!res.ok)
|
|
72
|
+
throw new Error(`Download failed: HTTP ${res.status}`);
|
|
73
|
+
const buf = Buffer.from(await res.arrayBuffer());
|
|
74
|
+
const { writeFile } = await import("node:fs/promises");
|
|
75
|
+
await writeFile(destZip, buf);
|
|
76
|
+
return extractZip(destZip);
|
|
77
|
+
}
|
|
78
|
+
export async function installAgent(opts) {
|
|
79
|
+
const { log } = opts;
|
|
80
|
+
const agent = opts.agent ?? DEFAULT_AGENT;
|
|
81
|
+
let state = "idle";
|
|
82
|
+
try {
|
|
83
|
+
await ensureDirs(agent);
|
|
84
|
+
const workspace = await resolveWorkspace(agent);
|
|
85
|
+
// [1/7] Resolve and load manifest
|
|
86
|
+
state = "fetching_manifest";
|
|
87
|
+
log(stepLine(1, INSTALL_TOTAL_STEPS, "Loading manifest", ""));
|
|
88
|
+
const packagePath = await resolvePackagePath(opts.packagePath);
|
|
89
|
+
const manifest = await loadManifest(packagePath);
|
|
90
|
+
const personaId = manifest.id;
|
|
91
|
+
log(stepLine(1, INSTALL_TOTAL_STEPS, "Loading manifest", "OK"));
|
|
92
|
+
log(`\n Installing: ${manifest.name} (${personaId})`);
|
|
93
|
+
log(` Version: ${manifest.version}`);
|
|
94
|
+
log(` Category: ${manifest.category ?? "N/A"}`);
|
|
95
|
+
if (agent !== DEFAULT_AGENT)
|
|
96
|
+
log(` Agent: ${agent}`);
|
|
97
|
+
log("");
|
|
98
|
+
// [2/7] Validate package
|
|
99
|
+
state = "verifying_package";
|
|
100
|
+
log(stepLine(2, INSTALL_TOTAL_STEPS, "Validating package", ""));
|
|
101
|
+
const validation = await validatePackage(packagePath);
|
|
102
|
+
if (!validation.valid) {
|
|
103
|
+
const reasons = validation.errors.map((e) => ` - ${e.message}`).join("\n");
|
|
104
|
+
log(stepLine(2, INSTALL_TOTAL_STEPS, "Validating package", "FAILED"));
|
|
105
|
+
log(reasons);
|
|
106
|
+
return { state: "failed", agentId: personaId, error: `Validation failed:\n${reasons}` };
|
|
107
|
+
}
|
|
108
|
+
log(stepLine(2, INSTALL_TOTAL_STEPS, "Validating package", "OK"));
|
|
109
|
+
// [3/7] Check existing installation
|
|
110
|
+
state = "checking_compatibility";
|
|
111
|
+
log(stepLine(3, INSTALL_TOTAL_STEPS, "Checking existing installation", ""));
|
|
112
|
+
const registry = await loadRegistry(agent);
|
|
113
|
+
if (registry.agents[personaId] && !opts.force) {
|
|
114
|
+
const existing = registry.agents[personaId];
|
|
115
|
+
log(stepLine(3, INSTALL_TOTAL_STEPS, "Checking existing installation", `FOUND (v${existing.version})`));
|
|
116
|
+
log(`\n Agent '${personaId}' is already installed.`);
|
|
117
|
+
log(` Use 'openclaw clawstore update ${personaId}' to update,`);
|
|
118
|
+
log(` or add --force to reinstall.`);
|
|
119
|
+
return { state: "failed", agentId: personaId, error: "already installed" };
|
|
120
|
+
}
|
|
121
|
+
log(stepLine(3, INSTALL_TOTAL_STEPS, "Checking existing installation", registry.agents[personaId] ? "FOUND (--force set, reinstalling)" : "OK (fresh install)"));
|
|
122
|
+
// [4/7] Backup existing workspace files
|
|
123
|
+
log(stepLine(4, INSTALL_TOTAL_STEPS, "Backing up existing files", ""));
|
|
124
|
+
const backupPath = await backupCurrentWorkspace(personaId, "install", agent);
|
|
125
|
+
log(stepLine(4, INSTALL_TOTAL_STEPS, "Backing up existing files", "OK"));
|
|
126
|
+
// [5/7] Install required skills
|
|
127
|
+
state = "installing_skills";
|
|
128
|
+
const skills = manifest.skills ?? [];
|
|
129
|
+
const requiredSkills = skills.filter((s) => s.required);
|
|
130
|
+
if (opts.skipSkills) {
|
|
131
|
+
log(stepLine(5, INSTALL_TOTAL_STEPS, "Checking skill dependencies", "SKIPPED (--skip-skills)"));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
log(stepLine(5, INSTALL_TOTAL_STEPS, "Checking skill dependencies", requiredSkills.length > 0 ? `${requiredSkills.length} required` : "OK (no dependencies)"));
|
|
135
|
+
if (requiredSkills.length > 0) {
|
|
136
|
+
const skillResult = await installRequiredSkills(skills, log, packagePath, agent);
|
|
137
|
+
if (!skillResult.allOk) {
|
|
138
|
+
log(`\n Skill installation failed. Rolling back...`);
|
|
139
|
+
state = "rolling_back";
|
|
140
|
+
await restoreFromBackup(backupPath, agent);
|
|
141
|
+
return { state: "failed", agentId: personaId, error: "required skill installation failed" };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// [6/7] Copy files to workspace
|
|
146
|
+
state = "installing_agent";
|
|
147
|
+
log(stepLine(6, INSTALL_TOTAL_STEPS, "Installing agent files", ""));
|
|
148
|
+
const installedFiles = [];
|
|
149
|
+
for (const f of [...REQUIRED_FILES, ...OPTIONAL_FILES]) {
|
|
150
|
+
const src = join(packagePath, f);
|
|
151
|
+
if (await exists(src)) {
|
|
152
|
+
await cp(src, join(workspace, f), { force: true });
|
|
153
|
+
installedFiles.push(f);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const skillsSrc = join(packagePath, "skills");
|
|
157
|
+
if (await exists(skillsSrc)) {
|
|
158
|
+
const skillsDest = join(workspace, "skills");
|
|
159
|
+
await mkdir(skillsDest, { recursive: true });
|
|
160
|
+
const entries = await readdir(skillsSrc, { withFileTypes: true });
|
|
161
|
+
for (const entry of entries) {
|
|
162
|
+
const srcPath = join(skillsSrc, entry.name);
|
|
163
|
+
const destPath = join(skillsDest, entry.name);
|
|
164
|
+
if (entry.isDirectory()) {
|
|
165
|
+
await cp(srcPath, destPath, { recursive: true, force: true });
|
|
166
|
+
installedFiles.push(`skills/${entry.name}/`);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
await cp(srcPath, destPath, { force: true });
|
|
170
|
+
installedFiles.push(`skills/${entry.name}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
log(stepLine(6, INSTALL_TOTAL_STEPS, "Installing agent files", `OK (${installedFiles.length} files)`));
|
|
175
|
+
// [7/7] Register
|
|
176
|
+
state = "registering_agent";
|
|
177
|
+
log(stepLine(7, INSTALL_TOTAL_STEPS, "Registering agent", ""));
|
|
178
|
+
const record = {
|
|
179
|
+
id: personaId,
|
|
180
|
+
name: manifest.name,
|
|
181
|
+
version: manifest.version,
|
|
182
|
+
category: manifest.category ?? "",
|
|
183
|
+
author: manifest.author ?? "",
|
|
184
|
+
enabled: true,
|
|
185
|
+
installed_at: new Date().toISOString(),
|
|
186
|
+
updated_at: new Date().toISOString(),
|
|
187
|
+
source: packagePath,
|
|
188
|
+
install_path: workspace,
|
|
189
|
+
backup_path: backupPath,
|
|
190
|
+
files: installedFiles,
|
|
191
|
+
skills: skills.map((s) => s.id),
|
|
192
|
+
};
|
|
193
|
+
await registerAgent(record, agent);
|
|
194
|
+
log(stepLine(7, INSTALL_TOTAL_STEPS, "Registering agent", "OK"));
|
|
195
|
+
// Summary
|
|
196
|
+
state = "success";
|
|
197
|
+
log(`\n Installed: ${manifest.name}@${manifest.version}`);
|
|
198
|
+
if (installedFiles.length > 0) {
|
|
199
|
+
const shown = installedFiles.slice(0, 5).join(", ");
|
|
200
|
+
const extra = installedFiles.length > 5 ? ` +${installedFiles.length - 5} more` : "";
|
|
201
|
+
log(` Files: ${shown}${extra}`);
|
|
202
|
+
}
|
|
203
|
+
log(` Status: enabled`);
|
|
204
|
+
if (agent !== DEFAULT_AGENT)
|
|
205
|
+
log(` Agent: ${agent}`);
|
|
206
|
+
log(` Backup: ${backupPath}`);
|
|
207
|
+
log(`\n Next: start a new chat in OpenClaw to activate the new persona\n`);
|
|
208
|
+
return { state: "success", agentId: personaId };
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
return { state: "failed", error: err.message };
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
export async function updateAgent(opts) {
|
|
215
|
+
const { agentId: personaId, log } = opts;
|
|
216
|
+
const agent = opts.agent ?? DEFAULT_AGENT;
|
|
217
|
+
try {
|
|
218
|
+
await ensureDirs(agent);
|
|
219
|
+
const workspace = await resolveWorkspace(agent);
|
|
220
|
+
const registry = await loadRegistry(agent);
|
|
221
|
+
const current = registry.agents[personaId];
|
|
222
|
+
if (!current) {
|
|
223
|
+
log(`\n Agent '${personaId}' is not installed.\n`);
|
|
224
|
+
return { state: "failed", error: "not installed" };
|
|
225
|
+
}
|
|
226
|
+
const packagePath = await resolvePackagePath(opts.packagePath);
|
|
227
|
+
const manifest = await loadManifest(packagePath);
|
|
228
|
+
log(`\n Updating: ${manifest.name}`);
|
|
229
|
+
log(` Current version: ${current.version}`);
|
|
230
|
+
log(` New version: ${manifest.version}`);
|
|
231
|
+
if (agent !== DEFAULT_AGENT)
|
|
232
|
+
log(` Agent: ${agent}`);
|
|
233
|
+
log("");
|
|
234
|
+
// [1/5] Validate
|
|
235
|
+
log(stepLine(1, UPDATE_TOTAL_STEPS, "Validating new package", ""));
|
|
236
|
+
const validation = await validatePackage(packagePath);
|
|
237
|
+
if (!validation.valid) {
|
|
238
|
+
log(stepLine(1, UPDATE_TOTAL_STEPS, "Validating new package", "FAILED"));
|
|
239
|
+
return { state: "failed", error: "validation failed" };
|
|
240
|
+
}
|
|
241
|
+
log(stepLine(1, UPDATE_TOTAL_STEPS, "Validating new package", "OK"));
|
|
242
|
+
// [2/5] Check new skills
|
|
243
|
+
log(stepLine(2, UPDATE_TOTAL_STEPS, "Checking new skill dependencies", ""));
|
|
244
|
+
const oldSkills = new Set(current.skills ?? []);
|
|
245
|
+
const newSkills = new Set((manifest.skills ?? []).map((s) => s.id));
|
|
246
|
+
const addedSkills = [...newSkills].filter((s) => !oldSkills.has(s));
|
|
247
|
+
if (addedSkills.length > 0) {
|
|
248
|
+
log(stepLine(2, UPDATE_TOTAL_STEPS, "Checking new skill dependencies", `${addedSkills.length} new`));
|
|
249
|
+
for (const sid of addedSkills)
|
|
250
|
+
log(` + ${sid}`);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
log(stepLine(2, UPDATE_TOTAL_STEPS, "Checking new skill dependencies", "OK (no new)"));
|
|
254
|
+
}
|
|
255
|
+
// [3/5] Backup
|
|
256
|
+
log(stepLine(3, UPDATE_TOTAL_STEPS, "Backing up current version", ""));
|
|
257
|
+
const backupPath = await backupCurrentWorkspace(personaId, "update", agent);
|
|
258
|
+
log(stepLine(3, UPDATE_TOTAL_STEPS, "Backing up current version", "OK"));
|
|
259
|
+
// [4/5] Install new files
|
|
260
|
+
log(stepLine(4, UPDATE_TOTAL_STEPS, "Installing updated files", ""));
|
|
261
|
+
const installedFiles = [];
|
|
262
|
+
for (const f of [...REQUIRED_FILES, ...OPTIONAL_FILES]) {
|
|
263
|
+
const src = join(packagePath, f);
|
|
264
|
+
if (await exists(src)) {
|
|
265
|
+
await cp(src, join(workspace, f), { force: true });
|
|
266
|
+
installedFiles.push(f);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const skillsSrc = join(packagePath, "skills");
|
|
270
|
+
if (await exists(skillsSrc)) {
|
|
271
|
+
const skillsDest = join(workspace, "skills");
|
|
272
|
+
await mkdir(skillsDest, { recursive: true });
|
|
273
|
+
const entries = await readdir(skillsSrc, { withFileTypes: true });
|
|
274
|
+
for (const entry of entries) {
|
|
275
|
+
const srcPath = join(skillsSrc, entry.name);
|
|
276
|
+
const destPath = join(skillsDest, entry.name);
|
|
277
|
+
if (entry.isDirectory()) {
|
|
278
|
+
await cp(srcPath, destPath, { recursive: true, force: true });
|
|
279
|
+
installedFiles.push(`skills/${entry.name}/`);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
await cp(srcPath, destPath, { force: true });
|
|
283
|
+
installedFiles.push(`skills/${entry.name}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
log(stepLine(4, UPDATE_TOTAL_STEPS, "Installing updated files", `OK (${installedFiles.length} files)`));
|
|
288
|
+
// [5/5] Update registry
|
|
289
|
+
log(stepLine(5, UPDATE_TOTAL_STEPS, "Updating registry", ""));
|
|
290
|
+
await updateAgentRecord(personaId, {
|
|
291
|
+
version: manifest.version,
|
|
292
|
+
updated_at: new Date().toISOString(),
|
|
293
|
+
source: packagePath,
|
|
294
|
+
backup_path: backupPath,
|
|
295
|
+
files: installedFiles,
|
|
296
|
+
skills: [...newSkills],
|
|
297
|
+
}, agent);
|
|
298
|
+
log(stepLine(5, UPDATE_TOTAL_STEPS, "Updating registry", "OK"));
|
|
299
|
+
log(`\n Updated: ${manifest.name} ${current.version} -> ${manifest.version}`);
|
|
300
|
+
log(` Backup of previous version: ${backupPath}`);
|
|
301
|
+
log(`\n Next: restart your OpenClaw session to load the updated persona\n`);
|
|
302
|
+
return { state: "success" };
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
return { state: "failed", error: err.message };
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=package-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-installer.js","sourceRoot":"","sources":["../../../src/core/package-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AgentManifest } from "../types.js";
|
|
2
|
+
export interface PackOptions {
|
|
3
|
+
packagePath: string;
|
|
4
|
+
outputDir?: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
category?: string;
|
|
7
|
+
log: (msg: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function packAgent(opts: PackOptions): Promise<{
|
|
10
|
+
zipPath: string;
|
|
11
|
+
sizeKb: number;
|
|
12
|
+
manifest: AgentManifest;
|
|
13
|
+
} | null>;
|
|
14
|
+
export declare function packCurrentAgent(opts: {
|
|
15
|
+
name?: string;
|
|
16
|
+
category?: string;
|
|
17
|
+
outputDir?: string;
|
|
18
|
+
log: (msg: string) => void;
|
|
19
|
+
}): Promise<ReturnType<typeof packAgent>>;
|
|
20
|
+
//# sourceMappingURL=packager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../../../src/core/packager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAmFlE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;CACzB,GAAG,IAAI,CAAC,CA0GR;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CASxC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { readFile, readdir, access, writeFile, mkdir } from "node:fs/promises";
|
|
2
|
+
import { join, basename } from "node:path";
|
|
3
|
+
import { MANIFEST_FILE, REQUIRED_FILES, OPTIONAL_FILES, PACK_TOTAL_STEPS, PLUGIN_VERSION, } from "../constants.js";
|
|
4
|
+
import { resolveWorkspace } from "./workspace.js";
|
|
5
|
+
import { createZip } from "../utils/zip.js";
|
|
6
|
+
import { computeSha256 } from "../utils/checksum.js";
|
|
7
|
+
import { stepLine } from "../utils/output.js";
|
|
8
|
+
async function exists(p) {
|
|
9
|
+
try {
|
|
10
|
+
await access(p);
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Detect skills from the package directory or current workspace.
|
|
19
|
+
*
|
|
20
|
+
* High confidence: skills listed in agent.json, or present in skills/ directory.
|
|
21
|
+
* Low confidence: skill-like references in AGENTS.md / SOUL.md.
|
|
22
|
+
*/
|
|
23
|
+
async function detectSkills(packagePath) {
|
|
24
|
+
const detected = [];
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
// From agent.json
|
|
27
|
+
const manifestPath = join(packagePath, MANIFEST_FILE);
|
|
28
|
+
if (await exists(manifestPath)) {
|
|
29
|
+
try {
|
|
30
|
+
const manifest = JSON.parse(await readFile(manifestPath, "utf-8"));
|
|
31
|
+
for (const s of manifest.skills ?? []) {
|
|
32
|
+
if (!seen.has(s.id)) {
|
|
33
|
+
detected.push({ id: s.id, confidence: "high", source: "agent.json" });
|
|
34
|
+
seen.add(s.id);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch { /* ignore */ }
|
|
39
|
+
}
|
|
40
|
+
// From skills/ directory
|
|
41
|
+
const skillsDir = join(packagePath, "skills");
|
|
42
|
+
if (await exists(skillsDir)) {
|
|
43
|
+
const entries = await readdir(skillsDir, { withFileTypes: true });
|
|
44
|
+
for (const entry of entries) {
|
|
45
|
+
const skillId = entry.name.replace(/\.md$/i, "");
|
|
46
|
+
if (!seen.has(skillId)) {
|
|
47
|
+
detected.push({ id: skillId, confidence: "high", source: "skills/ directory" });
|
|
48
|
+
seen.add(skillId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Heuristic: scan AGENTS.md / SOUL.md for skill-like references
|
|
53
|
+
for (const mdFile of ["AGENTS.md", "SOUL.md"]) {
|
|
54
|
+
const fp = join(packagePath, mdFile);
|
|
55
|
+
if (await exists(fp)) {
|
|
56
|
+
const content = await readFile(fp, "utf-8");
|
|
57
|
+
const skillRefs = content.match(/(?:skill|能力|技能)[::]\s*([a-z0-9-]+)/gi);
|
|
58
|
+
if (skillRefs) {
|
|
59
|
+
for (const ref of skillRefs) {
|
|
60
|
+
const match = ref.match(/([a-z0-9-]+)$/i);
|
|
61
|
+
if (match && !seen.has(match[1])) {
|
|
62
|
+
detected.push({ id: match[1], confidence: "low", source: mdFile });
|
|
63
|
+
seen.add(match[1]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return detected;
|
|
70
|
+
}
|
|
71
|
+
export async function packAgent(opts) {
|
|
72
|
+
const { packagePath, log } = opts;
|
|
73
|
+
// [1/3] Validate
|
|
74
|
+
log(stepLine(1, PACK_TOTAL_STEPS, "Validating package", ""));
|
|
75
|
+
let manifest;
|
|
76
|
+
const manifestPath = join(packagePath, MANIFEST_FILE);
|
|
77
|
+
if (await exists(manifestPath)) {
|
|
78
|
+
manifest = JSON.parse(await readFile(manifestPath, "utf-8"));
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
log(` No ${MANIFEST_FILE} found. Generating from directory contents...`);
|
|
82
|
+
const dirName = basename(packagePath);
|
|
83
|
+
manifest = {
|
|
84
|
+
id: dirName.toLowerCase().replace(/[^a-z0-9-]/g, "-"),
|
|
85
|
+
slug: dirName.toLowerCase().replace(/[^a-z0-9-]/g, "-"),
|
|
86
|
+
name: opts.name ?? dirName,
|
|
87
|
+
subtitle: "",
|
|
88
|
+
description: "",
|
|
89
|
+
version: "1.0.0",
|
|
90
|
+
author: "",
|
|
91
|
+
license: "Commercial",
|
|
92
|
+
price: 0,
|
|
93
|
+
currency: "USD",
|
|
94
|
+
category: opts.category ?? "general",
|
|
95
|
+
tags: [],
|
|
96
|
+
openclaw_version: ">=0.8.0",
|
|
97
|
+
entry_files: [],
|
|
98
|
+
skills: [],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// Validate required files
|
|
102
|
+
const missingRequired = [];
|
|
103
|
+
for (const f of REQUIRED_FILES) {
|
|
104
|
+
if (!(await exists(join(packagePath, f)))) {
|
|
105
|
+
missingRequired.push(f);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (missingRequired.length > 0) {
|
|
109
|
+
log(stepLine(1, PACK_TOTAL_STEPS, "Validating package", "FAILED"));
|
|
110
|
+
for (const f of missingRequired)
|
|
111
|
+
log(` - Missing: ${f}`);
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
log(stepLine(1, PACK_TOTAL_STEPS, "Validating package", "OK"));
|
|
115
|
+
// [2/3] Detect skills and compute checksums
|
|
116
|
+
log(stepLine(2, PACK_TOTAL_STEPS, "Detecting skills & checksums", ""));
|
|
117
|
+
const detectedSkills = await detectSkills(packagePath);
|
|
118
|
+
const highConfidence = detectedSkills.filter((s) => s.confidence === "high");
|
|
119
|
+
const lowConfidence = detectedSkills.filter((s) => s.confidence === "low");
|
|
120
|
+
if (highConfidence.length > 0) {
|
|
121
|
+
log(` Detected Skills: ${highConfidence.map((s) => s.id).join(", ")}`);
|
|
122
|
+
}
|
|
123
|
+
if (lowConfidence.length > 0) {
|
|
124
|
+
log(` Suggested Skills: ${lowConfidence.map((s) => s.id).join(", ")}`);
|
|
125
|
+
}
|
|
126
|
+
// Update manifest skills from detection if empty
|
|
127
|
+
if (manifest.skills.length === 0 && highConfidence.length > 0) {
|
|
128
|
+
manifest.skills = highConfidence.map((s) => ({
|
|
129
|
+
id: s.id,
|
|
130
|
+
version: "^1.0.0",
|
|
131
|
+
required: true,
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
// Update entry_files from actual files
|
|
135
|
+
const actualEntryFiles = [];
|
|
136
|
+
for (const f of [...REQUIRED_FILES, ...OPTIONAL_FILES]) {
|
|
137
|
+
if (await exists(join(packagePath, f))) {
|
|
138
|
+
actualEntryFiles.push(f);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
manifest.entry_files = actualEntryFiles;
|
|
142
|
+
// Set pack metadata
|
|
143
|
+
manifest.packed_at = new Date().toISOString();
|
|
144
|
+
manifest.packaged_by = `clawstore-plugin@${PLUGIN_VERSION}`;
|
|
145
|
+
// Compute checksum for SOUL.md
|
|
146
|
+
const soulPath = join(packagePath, "SOUL.md");
|
|
147
|
+
if (await exists(soulPath)) {
|
|
148
|
+
manifest.checksum = await computeSha256(soulPath);
|
|
149
|
+
}
|
|
150
|
+
// Write updated manifest back
|
|
151
|
+
await writeFile(manifestPath, JSON.stringify(manifest, null, 2), "utf-8");
|
|
152
|
+
log(stepLine(2, PACK_TOTAL_STEPS, "Detecting skills & checksums", "OK"));
|
|
153
|
+
// [3/3] Create ZIP
|
|
154
|
+
const outputDir = opts.outputDir ?? join(packagePath, "..");
|
|
155
|
+
await mkdir(outputDir, { recursive: true });
|
|
156
|
+
const zipName = `${manifest.id}-v${manifest.version}.zip`;
|
|
157
|
+
const zipPath = join(outputDir, zipName);
|
|
158
|
+
log(stepLine(3, PACK_TOTAL_STEPS, `Creating ZIP: ${zipName}`, ""));
|
|
159
|
+
const result = await createZip(packagePath, zipPath);
|
|
160
|
+
const sizeKb = result.sizeBytes / 1024;
|
|
161
|
+
log(stepLine(3, PACK_TOTAL_STEPS, `Creating ZIP: ${zipName}`, "OK"));
|
|
162
|
+
log(`\n Package: ${zipPath}`);
|
|
163
|
+
log(` Size: ${sizeKb.toFixed(1)} KB`);
|
|
164
|
+
log(`\n Ready to upload to Clawstore or distribute as ZIP.\n`);
|
|
165
|
+
return { zipPath, sizeKb, manifest };
|
|
166
|
+
}
|
|
167
|
+
// ─── Pack from current workspace ────────────────────────────────────
|
|
168
|
+
export async function packCurrentAgent(opts) {
|
|
169
|
+
const workspace = await resolveWorkspace();
|
|
170
|
+
return packAgent({
|
|
171
|
+
packagePath: workspace,
|
|
172
|
+
outputDir: opts.outputDir,
|
|
173
|
+
name: opts.name,
|
|
174
|
+
category: opts.category,
|
|
175
|
+
log: opts.log,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=packager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packager.js","sourceRoot":"","sources":["../../../src/core/packager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { SkillDependency } from "../types.js";
|
|
2
|
+
export interface SkillCheckResult {
|
|
3
|
+
skillId: string;
|
|
4
|
+
required: boolean;
|
|
5
|
+
requiredVersion: string;
|
|
6
|
+
installedVersion: string | null;
|
|
7
|
+
action: "skip" | "install" | "upgrade";
|
|
8
|
+
}
|
|
9
|
+
export declare function checkSkillDependencies(skills: SkillDependency[]): SkillCheckResult[];
|
|
10
|
+
/**
|
|
11
|
+
* Install or upgrade a single skill.
|
|
12
|
+
*
|
|
13
|
+
* Strategy:
|
|
14
|
+
* 1. Try bundled skills/ in the package directory first
|
|
15
|
+
* 2. Fall back to `openclaw plugins install <skill-id>` (npm registry)
|
|
16
|
+
*/
|
|
17
|
+
export declare function installSkill(skillId: string, version: string, packagePath?: string, agent?: string): Promise<{
|
|
18
|
+
ok: boolean;
|
|
19
|
+
message: string;
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Install all required skills for an agent.
|
|
23
|
+
*/
|
|
24
|
+
export declare function installRequiredSkills(skills: SkillDependency[], log?: (msg: string) => void, packagePath?: string, agent?: string): Promise<{
|
|
25
|
+
allOk: boolean;
|
|
26
|
+
results: Array<SkillCheckResult & {
|
|
27
|
+
installResult?: {
|
|
28
|
+
ok: boolean;
|
|
29
|
+
message: string;
|
|
30
|
+
};
|
|
31
|
+
}>;
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=skill-installer.d.ts.map
|