@memtensor/memos-local-openclaw-plugin 1.0.6-beta.9 → 1.0.6
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/openclaw.plugin.json +1 -1
- package/package.json +3 -5
- package/prebuilds/darwin-arm64/better_sqlite3.node +0 -0
- package/prebuilds/darwin-x64/better_sqlite3.node +0 -0
- package/prebuilds/linux-x64/better_sqlite3.node +0 -0
- package/prebuilds/win32-x64/better_sqlite3.node +0 -0
- package/scripts/postinstall.cjs +44 -44
- package/skill/memos-memory-guide/SKILL.md +20 -0
- package/src/update-check.ts +2 -7
- package/src/viewer/html.ts +4 -4
- package/src/viewer/server.ts +12 -2
- package/telemetry.credentials.json +5 -0
- package/dist/capture/index.d.ts +0 -26
- package/dist/capture/index.d.ts.map +0 -1
- package/dist/capture/index.js +0 -283
- package/dist/capture/index.js.map +0 -1
- package/dist/client/connector.d.ts +0 -34
- package/dist/client/connector.d.ts.map +0 -1
- package/dist/client/connector.js +0 -381
- package/dist/client/connector.js.map +0 -1
- package/dist/client/hub.d.ts +0 -61
- package/dist/client/hub.d.ts.map +0 -1
- package/dist/client/hub.js +0 -174
- package/dist/client/hub.js.map +0 -1
- package/dist/client/skill-sync.d.ts +0 -36
- package/dist/client/skill-sync.d.ts.map +0 -1
- package/dist/client/skill-sync.js +0 -226
- package/dist/client/skill-sync.js.map +0 -1
- package/dist/config.d.ts +0 -5
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -171
- package/dist/config.js.map +0 -1
- package/dist/embedding/index.d.ts +0 -14
- package/dist/embedding/index.d.ts.map +0 -1
- package/dist/embedding/index.js +0 -105
- package/dist/embedding/index.js.map +0 -1
- package/dist/embedding/local.d.ts +0 -3
- package/dist/embedding/local.d.ts.map +0 -1
- package/dist/embedding/local.js +0 -66
- package/dist/embedding/local.js.map +0 -1
- package/dist/embedding/providers/cohere.d.ts +0 -4
- package/dist/embedding/providers/cohere.d.ts.map +0 -1
- package/dist/embedding/providers/cohere.js +0 -57
- package/dist/embedding/providers/cohere.js.map +0 -1
- package/dist/embedding/providers/gemini.d.ts +0 -3
- package/dist/embedding/providers/gemini.d.ts.map +0 -1
- package/dist/embedding/providers/gemini.js +0 -31
- package/dist/embedding/providers/gemini.js.map +0 -1
- package/dist/embedding/providers/mistral.d.ts +0 -3
- package/dist/embedding/providers/mistral.d.ts.map +0 -1
- package/dist/embedding/providers/mistral.js +0 -25
- package/dist/embedding/providers/mistral.js.map +0 -1
- package/dist/embedding/providers/openai.d.ts +0 -3
- package/dist/embedding/providers/openai.d.ts.map +0 -1
- package/dist/embedding/providers/openai.js +0 -35
- package/dist/embedding/providers/openai.js.map +0 -1
- package/dist/embedding/providers/voyage.d.ts +0 -3
- package/dist/embedding/providers/voyage.d.ts.map +0 -1
- package/dist/embedding/providers/voyage.js +0 -25
- package/dist/embedding/providers/voyage.js.map +0 -1
- package/dist/hub/auth.d.ts +0 -19
- package/dist/hub/auth.d.ts.map +0 -1
- package/dist/hub/auth.js +0 -70
- package/dist/hub/auth.js.map +0 -1
- package/dist/hub/server.d.ts +0 -52
- package/dist/hub/server.d.ts.map +0 -1
- package/dist/hub/server.js +0 -1197
- package/dist/hub/server.js.map +0 -1
- package/dist/hub/user-manager.d.ts +0 -40
- package/dist/hub/user-manager.d.ts.map +0 -1
- package/dist/hub/user-manager.js +0 -153
- package/dist/hub/user-manager.js.map +0 -1
- package/dist/index.d.ts +0 -46
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -82
- package/dist/index.js.map +0 -1
- package/dist/ingest/chunker.d.ts +0 -15
- package/dist/ingest/chunker.d.ts.map +0 -1
- package/dist/ingest/chunker.js +0 -192
- package/dist/ingest/chunker.js.map +0 -1
- package/dist/ingest/dedup.d.ts +0 -19
- package/dist/ingest/dedup.d.ts.map +0 -1
- package/dist/ingest/dedup.js +0 -50
- package/dist/ingest/dedup.js.map +0 -1
- package/dist/ingest/providers/anthropic.d.ts +0 -21
- package/dist/ingest/providers/anthropic.d.ts.map +0 -1
- package/dist/ingest/providers/anthropic.js +0 -314
- package/dist/ingest/providers/anthropic.js.map +0 -1
- package/dist/ingest/providers/bedrock.d.ts +0 -21
- package/dist/ingest/providers/bedrock.d.ts.map +0 -1
- package/dist/ingest/providers/bedrock.js +0 -313
- package/dist/ingest/providers/bedrock.js.map +0 -1
- package/dist/ingest/providers/gemini.d.ts +0 -21
- package/dist/ingest/providers/gemini.d.ts.map +0 -1
- package/dist/ingest/providers/gemini.js +0 -298
- package/dist/ingest/providers/gemini.js.map +0 -1
- package/dist/ingest/providers/index.d.ts +0 -68
- package/dist/ingest/providers/index.d.ts.map +0 -1
- package/dist/ingest/providers/index.js +0 -611
- package/dist/ingest/providers/index.js.map +0 -1
- package/dist/ingest/providers/openai.d.ts +0 -30
- package/dist/ingest/providers/openai.d.ts.map +0 -1
- package/dist/ingest/providers/openai.js +0 -387
- package/dist/ingest/providers/openai.js.map +0 -1
- package/dist/ingest/task-processor.d.ts +0 -91
- package/dist/ingest/task-processor.d.ts.map +0 -1
- package/dist/ingest/task-processor.js +0 -478
- package/dist/ingest/task-processor.js.map +0 -1
- package/dist/ingest/worker.d.ts +0 -23
- package/dist/ingest/worker.d.ts.map +0 -1
- package/dist/ingest/worker.js +0 -255
- package/dist/ingest/worker.js.map +0 -1
- package/dist/openclaw-api.d.ts +0 -53
- package/dist/openclaw-api.d.ts.map +0 -1
- package/dist/openclaw-api.js +0 -189
- package/dist/openclaw-api.js.map +0 -1
- package/dist/recall/engine.d.ts +0 -28
- package/dist/recall/engine.d.ts.map +0 -1
- package/dist/recall/engine.js +0 -343
- package/dist/recall/engine.js.map +0 -1
- package/dist/recall/mmr.d.ts +0 -17
- package/dist/recall/mmr.d.ts.map +0 -1
- package/dist/recall/mmr.js +0 -53
- package/dist/recall/mmr.js.map +0 -1
- package/dist/recall/recency.d.ts +0 -20
- package/dist/recall/recency.d.ts.map +0 -1
- package/dist/recall/recency.js +0 -26
- package/dist/recall/recency.js.map +0 -1
- package/dist/recall/rrf.d.ts +0 -16
- package/dist/recall/rrf.d.ts.map +0 -1
- package/dist/recall/rrf.js +0 -15
- package/dist/recall/rrf.js.map +0 -1
- package/dist/shared/llm-call.d.ts +0 -30
- package/dist/shared/llm-call.d.ts.map +0 -1
- package/dist/shared/llm-call.js +0 -253
- package/dist/shared/llm-call.js.map +0 -1
- package/dist/sharing/types.contract.d.ts +0 -2
- package/dist/sharing/types.contract.d.ts.map +0 -1
- package/dist/sharing/types.contract.js +0 -3
- package/dist/sharing/types.contract.js.map +0 -1
- package/dist/sharing/types.d.ts +0 -80
- package/dist/sharing/types.d.ts.map +0 -1
- package/dist/sharing/types.js +0 -3
- package/dist/sharing/types.js.map +0 -1
- package/dist/skill/bundled-memory-guide.d.ts +0 -2
- package/dist/skill/bundled-memory-guide.d.ts.map +0 -1
- package/dist/skill/bundled-memory-guide.js +0 -45
- package/dist/skill/bundled-memory-guide.js.map +0 -1
- package/dist/skill/evaluator.d.ts +0 -28
- package/dist/skill/evaluator.d.ts.map +0 -1
- package/dist/skill/evaluator.js +0 -169
- package/dist/skill/evaluator.js.map +0 -1
- package/dist/skill/evolver.d.ts +0 -48
- package/dist/skill/evolver.d.ts.map +0 -1
- package/dist/skill/evolver.js +0 -406
- package/dist/skill/evolver.js.map +0 -1
- package/dist/skill/generator.d.ts +0 -26
- package/dist/skill/generator.d.ts.map +0 -1
- package/dist/skill/generator.js +0 -521
- package/dist/skill/generator.js.map +0 -1
- package/dist/skill/installer.d.ts +0 -42
- package/dist/skill/installer.d.ts.map +0 -1
- package/dist/skill/installer.js +0 -165
- package/dist/skill/installer.js.map +0 -1
- package/dist/skill/upgrader.d.ts +0 -19
- package/dist/skill/upgrader.d.ts.map +0 -1
- package/dist/skill/upgrader.js +0 -366
- package/dist/skill/upgrader.js.map +0 -1
- package/dist/skill/validator.d.ts +0 -30
- package/dist/skill/validator.d.ts.map +0 -1
- package/dist/skill/validator.js +0 -272
- package/dist/skill/validator.js.map +0 -1
- package/dist/storage/ensure-binding.d.ts +0 -12
- package/dist/storage/ensure-binding.d.ts.map +0 -1
- package/dist/storage/ensure-binding.js +0 -53
- package/dist/storage/ensure-binding.js.map +0 -1
- package/dist/storage/sqlite.d.ts +0 -649
- package/dist/storage/sqlite.d.ts.map +0 -1
- package/dist/storage/sqlite.js +0 -2657
- package/dist/storage/sqlite.js.map +0 -1
- package/dist/storage/vector.d.ts +0 -12
- package/dist/storage/vector.d.ts.map +0 -1
- package/dist/storage/vector.js +0 -34
- package/dist/storage/vector.js.map +0 -1
- package/dist/telemetry.d.ts +0 -47
- package/dist/telemetry.d.ts.map +0 -1
- package/dist/telemetry.js +0 -312
- package/dist/telemetry.js.map +0 -1
- package/dist/tools/index.d.ts +0 -5
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -12
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/memory-get.d.ts +0 -4
- package/dist/tools/memory-get.d.ts.map +0 -1
- package/dist/tools/memory-get.js +0 -64
- package/dist/tools/memory-get.js.map +0 -1
- package/dist/tools/memory-search.d.ts +0 -7
- package/dist/tools/memory-search.d.ts.map +0 -1
- package/dist/tools/memory-search.js +0 -84
- package/dist/tools/memory-search.js.map +0 -1
- package/dist/tools/memory-timeline.d.ts +0 -4
- package/dist/tools/memory-timeline.d.ts.map +0 -1
- package/dist/tools/memory-timeline.js +0 -73
- package/dist/tools/memory-timeline.js.map +0 -1
- package/dist/tools/network-memory-detail.d.ts +0 -4
- package/dist/tools/network-memory-detail.d.ts.map +0 -1
- package/dist/tools/network-memory-detail.js +0 -34
- package/dist/tools/network-memory-detail.js.map +0 -1
- package/dist/types.d.ts +0 -330
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -38
- package/dist/types.js.map +0 -1
- package/dist/update-check.d.ts +0 -21
- package/dist/update-check.d.ts.map +0 -1
- package/dist/update-check.js +0 -110
- package/dist/update-check.js.map +0 -1
- package/dist/viewer/html.d.ts +0 -2
- package/dist/viewer/html.d.ts.map +0 -1
- package/dist/viewer/html.js +0 -9168
- package/dist/viewer/html.js.map +0 -1
- package/dist/viewer/server.d.ts +0 -205
- package/dist/viewer/server.d.ts.map +0 -1
- package/dist/viewer/server.js +0 -4876
- package/dist/viewer/server.js.map +0 -1
package/dist/skill/installer.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SkillInstaller = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
class SkillInstaller {
|
|
40
|
-
store;
|
|
41
|
-
ctx;
|
|
42
|
-
workspaceSkillsDir;
|
|
43
|
-
constructor(store, ctx) {
|
|
44
|
-
this.store = store;
|
|
45
|
-
this.ctx = ctx;
|
|
46
|
-
this.workspaceSkillsDir = path.join(ctx.workspaceDir, "skills");
|
|
47
|
-
}
|
|
48
|
-
getCompanionManifest(skillId) {
|
|
49
|
-
const skill = this.store.getSkill(skillId);
|
|
50
|
-
if (!skill)
|
|
51
|
-
return null;
|
|
52
|
-
return SkillInstaller.buildManifest(skill.dirPath, !!skill.installed, skill.name, this.workspaceSkillsDir);
|
|
53
|
-
}
|
|
54
|
-
static buildManifest(dirPath, installed, skillName, workspaceSkillsDir) {
|
|
55
|
-
const files = [];
|
|
56
|
-
const scanDir = (subDir, type) => {
|
|
57
|
-
const fullDir = path.join(dirPath, subDir);
|
|
58
|
-
if (!fs.existsSync(fullDir))
|
|
59
|
-
return;
|
|
60
|
-
try {
|
|
61
|
-
for (const f of fs.readdirSync(fullDir)) {
|
|
62
|
-
const fp = path.join(fullDir, f);
|
|
63
|
-
try {
|
|
64
|
-
const stat = fs.statSync(fp);
|
|
65
|
-
if (stat.isFile()) {
|
|
66
|
-
files.push({ relativePath: `${subDir}/${f}`, size: stat.size, type });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
catch { /* best-effort */ }
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
catch { /* best-effort */ }
|
|
73
|
-
};
|
|
74
|
-
scanDir("scripts", "script");
|
|
75
|
-
scanDir("references", "reference");
|
|
76
|
-
scanDir("evals", "eval");
|
|
77
|
-
const scriptsCount = files.filter(f => f.type === "script").length;
|
|
78
|
-
const referencesCount = files.filter(f => f.type === "reference").length;
|
|
79
|
-
const evalsCount = files.filter(f => f.type === "eval").length;
|
|
80
|
-
const totalSize = files.reduce((sum, f) => sum + f.size, 0);
|
|
81
|
-
const hasCompanionFiles = files.filter(f => f.type !== "eval").length > 0;
|
|
82
|
-
let installMode = "inline";
|
|
83
|
-
if (hasCompanionFiles) {
|
|
84
|
-
const executableScripts = files.filter(f => f.type === "script");
|
|
85
|
-
const largeFiles = files.filter(f => f.size > 5000);
|
|
86
|
-
if (executableScripts.length >= 3 || largeFiles.length >= 2 || totalSize > 20000) {
|
|
87
|
-
installMode = "install_recommended";
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
installMode = "on_demand";
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const installedPath = installed && workspaceSkillsDir
|
|
94
|
-
? path.join(workspaceSkillsDir, skillName)
|
|
95
|
-
: undefined;
|
|
96
|
-
return { hasCompanionFiles, installMode, installed, installedPath, files, totalSize, scriptsCount, referencesCount, evalsCount };
|
|
97
|
-
}
|
|
98
|
-
readCompanionFile(skillId, relativePath) {
|
|
99
|
-
const skill = this.store.getSkill(skillId);
|
|
100
|
-
if (!skill)
|
|
101
|
-
return { error: "Skill not found" };
|
|
102
|
-
const normalized = relativePath.replace(/\.\./g, "");
|
|
103
|
-
const fullPath = path.join(skill.dirPath, normalized);
|
|
104
|
-
if (!fullPath.startsWith(skill.dirPath)) {
|
|
105
|
-
return { error: "Path traversal not allowed" };
|
|
106
|
-
}
|
|
107
|
-
if (!fs.existsSync(fullPath)) {
|
|
108
|
-
return { error: `File not found: ${relativePath}` };
|
|
109
|
-
}
|
|
110
|
-
try {
|
|
111
|
-
const content = fs.readFileSync(fullPath, "utf-8");
|
|
112
|
-
return { content, size: content.length };
|
|
113
|
-
}
|
|
114
|
-
catch (err) {
|
|
115
|
-
return { error: `Cannot read file: ${err}` };
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
install(skillId) {
|
|
119
|
-
const skill = this.store.getSkill(skillId);
|
|
120
|
-
if (!skill)
|
|
121
|
-
return { installed: false, path: "", message: "Skill not found" };
|
|
122
|
-
if (!fs.existsSync(skill.dirPath)) {
|
|
123
|
-
return { installed: false, path: "", message: `Skill directory not found: ${skill.dirPath}` };
|
|
124
|
-
}
|
|
125
|
-
const dstDir = path.join(this.workspaceSkillsDir, skill.name);
|
|
126
|
-
this.cleanSync(skill.dirPath, dstDir);
|
|
127
|
-
this.store.updateSkill(skillId, { installed: 1 });
|
|
128
|
-
this.ctx.log.info(`Skill installed: "${skill.name}" v${skill.version} → ${dstDir}`);
|
|
129
|
-
return {
|
|
130
|
-
installed: true,
|
|
131
|
-
path: dstDir,
|
|
132
|
-
message: `Skill "${skill.name}" v${skill.version} installed`,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
uninstall(skillId) {
|
|
136
|
-
const skill = this.store.getSkill(skillId);
|
|
137
|
-
if (!skill)
|
|
138
|
-
return;
|
|
139
|
-
const dstDir = path.join(this.workspaceSkillsDir, skill.name);
|
|
140
|
-
if (fs.existsSync(dstDir)) {
|
|
141
|
-
fs.rmSync(dstDir, { recursive: true });
|
|
142
|
-
}
|
|
143
|
-
this.store.updateSkill(skillId, { installed: 0 });
|
|
144
|
-
this.ctx.log.info(`Skill uninstalled: "${skill.name}"`);
|
|
145
|
-
}
|
|
146
|
-
syncIfInstalled(skillName) {
|
|
147
|
-
const skill = this.store.getSkillByName(skillName);
|
|
148
|
-
if (!skill || !skill.installed)
|
|
149
|
-
return;
|
|
150
|
-
const dstDir = path.join(this.workspaceSkillsDir, skill.name);
|
|
151
|
-
if (fs.existsSync(skill.dirPath)) {
|
|
152
|
-
this.cleanSync(skill.dirPath, dstDir);
|
|
153
|
-
this.ctx.log.info(`Skill synced: "${skill.name}" v${skill.version} → workspace`);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
cleanSync(srcDir, dstDir) {
|
|
157
|
-
if (fs.existsSync(dstDir)) {
|
|
158
|
-
fs.rmSync(dstDir, { recursive: true });
|
|
159
|
-
}
|
|
160
|
-
fs.mkdirSync(dstDir, { recursive: true });
|
|
161
|
-
fs.cpSync(srcDir, dstDir, { recursive: true });
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
exports.SkillInstaller = SkillInstaller;
|
|
165
|
-
//# sourceMappingURL=installer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/skill/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/skill/upgrader.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { SqliteStore } from "../storage/sqlite";
|
|
2
|
-
import type { Task, Skill, PluginContext } from "../types";
|
|
3
|
-
import type { UpgradeEvalResult } from "./evaluator";
|
|
4
|
-
export declare class SkillUpgrader {
|
|
5
|
-
private store;
|
|
6
|
-
private ctx;
|
|
7
|
-
private validator;
|
|
8
|
-
constructor(store: SqliteStore, ctx: PluginContext);
|
|
9
|
-
upgrade(task: Task, skill: Skill, evalResult: UpgradeEvalResult): Promise<{
|
|
10
|
-
upgraded: boolean;
|
|
11
|
-
qualityScore: number | null;
|
|
12
|
-
}>;
|
|
13
|
-
private readCurrentContent;
|
|
14
|
-
private callUpgradeLLM;
|
|
15
|
-
private parseDescription;
|
|
16
|
-
private rebuildCompanionFiles;
|
|
17
|
-
private parseJSONArray;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=upgrader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../src/skill/upgrader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAiErD,qBAAa,aAAa;IAItB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG;IAJb,OAAO,CAAC,SAAS,CAAiB;gBAGxB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,aAAa;IAKtB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAkFnI,OAAO,CAAC,kBAAkB;YAUZ,cAAc;IAmD5B,OAAO,CAAC,gBAAgB;YAQV,qBAAqB;IAqHnC,OAAO,CAAC,cAAc;CAQvB"}
|
package/dist/skill/upgrader.js
DELETED
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SkillUpgrader = void 0;
|
|
37
|
-
const uuid_1 = require("uuid");
|
|
38
|
-
const fs = __importStar(require("fs"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const validator_1 = require("./validator");
|
|
41
|
-
const llm_call_1 = require("../shared/llm-call");
|
|
42
|
-
const UPGRADE_PROMPT = `You are a Skill upgrade expert. You're merging new real-world execution experience into an existing Skill to make it better.
|
|
43
|
-
|
|
44
|
-
Remember: this is based on ACTUAL execution — the new task was really run, errors were really encountered and fixed. This makes the upgrade valuable.
|
|
45
|
-
|
|
46
|
-
## Core principles (follow strictly but do NOT include in output)
|
|
47
|
-
|
|
48
|
-
### Progressive disclosure
|
|
49
|
-
- Keep the frontmatter description as the primary trigger mechanism (~60-120 words, proactive — see below)
|
|
50
|
-
- SKILL.md body should stay under 400 lines total
|
|
51
|
-
- If content grows too large, consider moving deep details to references/ and just pointing to them
|
|
52
|
-
|
|
53
|
-
### Description as trigger
|
|
54
|
-
The description decides whether the agent activates this skill. Write it "proactively":
|
|
55
|
-
- Cover what it does + situations/keywords/phrasings that should trigger it
|
|
56
|
-
- Be explicit about edge cases — "even if the user doesn't say X explicitly but describes Y"
|
|
57
|
-
- If the new task reveals new trigger scenarios, ADD them to the description
|
|
58
|
-
|
|
59
|
-
### Writing style
|
|
60
|
-
- Imperative form
|
|
61
|
-
- Explain WHY for each step — reasoning beats rigid rules
|
|
62
|
-
- Avoid ALWAYS/NEVER in caps — rephrase with reasoning instead
|
|
63
|
-
- Generalize from specific tasks
|
|
64
|
-
- Keep verified commands/code/config from both old and new tasks
|
|
65
|
-
- CRITICAL: Match the language of the skill and task record. If the existing skill or the new task record is in Chinese, write ALL upgraded content in Chinese. If English, write in English. Only the "name" field stays in English kebab-case. DO NOT default to English.
|
|
66
|
-
|
|
67
|
-
## Existing skill (v{VERSION}):
|
|
68
|
-
{SKILL_CONTENT}
|
|
69
|
-
|
|
70
|
-
## Upgrade context
|
|
71
|
-
- Type: {UPGRADE_TYPE}
|
|
72
|
-
- Dimensions improved: {DIMENSIONS}
|
|
73
|
-
- Reason: {REASON}
|
|
74
|
-
- Merge strategy: {MERGE_STRATEGY}
|
|
75
|
-
|
|
76
|
-
## New task record
|
|
77
|
-
Title: {TITLE}
|
|
78
|
-
Summary:
|
|
79
|
-
{SUMMARY}
|
|
80
|
-
|
|
81
|
-
## Merge rules
|
|
82
|
-
1. Preserve all valid core content from the existing skill — upgrades should ADD value, not lose it
|
|
83
|
-
2. Merge new experience strategically:
|
|
84
|
-
- Better approach found → replace old, keep old as "Alternative approach" if it's still valid
|
|
85
|
-
- New scenario discovered → add a new section (don't replace unrelated content)
|
|
86
|
-
- Bug/error corrected → replace directly, add to "Pitfalls and solutions" section
|
|
87
|
-
- Performance improvement → update steps, note the improvement in why-reasoning
|
|
88
|
-
3. Update description if new scenarios/keywords/triggers need coverage
|
|
89
|
-
4. Update "When to use this skill" section if the new task reveals new use cases
|
|
90
|
-
5. If a "Pitfalls and solutions" section exists, append new pitfalls; if it doesn't exist, create it
|
|
91
|
-
6. Total length ≤ 400 lines — if approaching limit, move detailed configs/references to references/
|
|
92
|
-
7. Add version comment at end:
|
|
93
|
-
<!-- v{NEW_VERSION}: {one-line change note} (from task: {TASK_ID}) -->
|
|
94
|
-
|
|
95
|
-
## Output format
|
|
96
|
-
|
|
97
|
-
Output the complete upgraded SKILL.md (with full frontmatter), then on a new line write:
|
|
98
|
-
---CHANGELOG---
|
|
99
|
-
{one-line changelog title}
|
|
100
|
-
---CHANGE_SUMMARY---
|
|
101
|
-
{A 3-5 sentence summary in the same language as the skill. Cover: (1) What specifically was changed and what triggered the change, (2) What concrete new capability or improvement this version brings, (3) What real problem from the new task this solves. Write for a human reader who wants to quickly understand the value of this upgrade.}`;
|
|
102
|
-
class SkillUpgrader {
|
|
103
|
-
store;
|
|
104
|
-
ctx;
|
|
105
|
-
validator;
|
|
106
|
-
constructor(store, ctx) {
|
|
107
|
-
this.store = store;
|
|
108
|
-
this.ctx = ctx;
|
|
109
|
-
this.validator = new validator_1.SkillValidator(ctx);
|
|
110
|
-
}
|
|
111
|
-
async upgrade(task, skill, evalResult) {
|
|
112
|
-
const currentContent = this.readCurrentContent(skill);
|
|
113
|
-
if (!currentContent) {
|
|
114
|
-
this.ctx.log.warn(`SkillUpgrader: could not read content for "${skill.name}"`);
|
|
115
|
-
return { upgraded: false, qualityScore: null };
|
|
116
|
-
}
|
|
117
|
-
const { newContent, changelog, changeSummary } = await this.callUpgradeLLM(task, skill, currentContent, evalResult);
|
|
118
|
-
if (!newContent || newContent.length < 100) {
|
|
119
|
-
this.ctx.log.warn(`SkillUpgrader: generated content too short for "${skill.name}", skipping`);
|
|
120
|
-
return { upgraded: false, qualityScore: null };
|
|
121
|
-
}
|
|
122
|
-
const backupDir = skill.dirPath + ".backup-" + Date.now();
|
|
123
|
-
try {
|
|
124
|
-
fs.cpSync(skill.dirPath, backupDir, { recursive: true });
|
|
125
|
-
}
|
|
126
|
-
catch { /* best-effort */ }
|
|
127
|
-
fs.writeFileSync(path.join(skill.dirPath, "SKILL.md"), newContent, "utf-8");
|
|
128
|
-
await this.rebuildCompanionFiles(skill, newContent, task);
|
|
129
|
-
const validation = await this.validator.validate(skill.dirPath, {
|
|
130
|
-
previousContent: currentContent,
|
|
131
|
-
});
|
|
132
|
-
if (!validation.valid) {
|
|
133
|
-
this.ctx.log.warn(`SkillUpgrader: validation failed for "${skill.name}", reverting: ${validation.errors.join("; ")}`);
|
|
134
|
-
if (fs.existsSync(backupDir)) {
|
|
135
|
-
fs.rmSync(skill.dirPath, { recursive: true });
|
|
136
|
-
fs.renameSync(backupDir, skill.dirPath);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
fs.writeFileSync(path.join(skill.dirPath, "SKILL.md"), currentContent, "utf-8");
|
|
140
|
-
}
|
|
141
|
-
return { upgraded: false, qualityScore: null };
|
|
142
|
-
}
|
|
143
|
-
try {
|
|
144
|
-
if (fs.existsSync(backupDir))
|
|
145
|
-
fs.rmSync(backupDir, { recursive: true });
|
|
146
|
-
}
|
|
147
|
-
catch { /* cleanup */ }
|
|
148
|
-
const newVersion = skill.version + 1;
|
|
149
|
-
const newDescription = this.parseDescription(newContent) || skill.description;
|
|
150
|
-
const newStatus = validation.qualityScore !== null && validation.qualityScore < 6 ? "draft" : skill.status;
|
|
151
|
-
this.store.updateSkill(skill.id, {
|
|
152
|
-
description: newDescription,
|
|
153
|
-
version: newVersion,
|
|
154
|
-
status: newStatus,
|
|
155
|
-
qualityScore: validation.qualityScore,
|
|
156
|
-
updatedAt: Date.now(),
|
|
157
|
-
});
|
|
158
|
-
this.store.insertSkillVersion({
|
|
159
|
-
id: (0, uuid_1.v4)(),
|
|
160
|
-
skillId: skill.id,
|
|
161
|
-
version: newVersion,
|
|
162
|
-
content: newContent,
|
|
163
|
-
changelog: changelog || `Upgraded from task "${task.title}"`,
|
|
164
|
-
changeSummary: changeSummary || `基于任务"${task.title}"的执行记录进行了版本升级。`,
|
|
165
|
-
upgradeType: evalResult.upgradeType,
|
|
166
|
-
sourceTaskId: task.id,
|
|
167
|
-
metrics: JSON.stringify({
|
|
168
|
-
dimensions: evalResult.dimensions,
|
|
169
|
-
confidence: evalResult.confidence,
|
|
170
|
-
validation: {
|
|
171
|
-
errors: validation.errors,
|
|
172
|
-
warnings: validation.warnings,
|
|
173
|
-
suggestions: validation.suggestions,
|
|
174
|
-
},
|
|
175
|
-
}),
|
|
176
|
-
qualityScore: validation.qualityScore,
|
|
177
|
-
createdAt: Date.now(),
|
|
178
|
-
});
|
|
179
|
-
if (validation.warnings.length > 0) {
|
|
180
|
-
this.ctx.log.info(`Skill "${skill.name}" upgrade warnings: ${validation.warnings.join("; ")}`);
|
|
181
|
-
}
|
|
182
|
-
this.ctx.log.info(`Skill upgraded: "${skill.name}" v${skill.version} → v${newVersion} [${newStatus}] score=${validation.qualityScore ?? "N/A"}`);
|
|
183
|
-
return { upgraded: true, qualityScore: validation.qualityScore };
|
|
184
|
-
}
|
|
185
|
-
readCurrentContent(skill) {
|
|
186
|
-
const filePath = path.join(skill.dirPath, "SKILL.md");
|
|
187
|
-
try {
|
|
188
|
-
return fs.readFileSync(filePath, "utf-8");
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
const sv = this.store.getLatestSkillVersion(skill.id);
|
|
192
|
-
return sv?.content ?? null;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
async callUpgradeLLM(task, skill, currentContent, evalResult) {
|
|
196
|
-
const chain = (0, llm_call_1.buildSkillConfigChain)(this.ctx);
|
|
197
|
-
if (chain.length === 0)
|
|
198
|
-
throw new Error("No LLM configured for skill upgrade");
|
|
199
|
-
const newVersion = skill.version + 1;
|
|
200
|
-
const detectLang = (text) => {
|
|
201
|
-
const cjk = text.match(/[\u4e00-\u9fff\u3400-\u4dbf]/g)?.length ?? 0;
|
|
202
|
-
const total = text.replace(/\s+/g, "").length || 1;
|
|
203
|
-
return (cjk / total > 0.15) ? "Chinese (中文)" : "English";
|
|
204
|
-
};
|
|
205
|
-
const lang = detectLang(task.summary + currentContent);
|
|
206
|
-
const langInstruction = `\n\n⚠️ LANGUAGE REQUIREMENT: The content is in ${lang}. You MUST write ALL prose (description, headings, explanations, pitfalls, changelog, change summary) in ${lang}. Only the "name" field stays in English kebab-case.\n`;
|
|
207
|
-
const prompt = UPGRADE_PROMPT
|
|
208
|
-
.replace("{VERSION}", String(skill.version))
|
|
209
|
-
.replace("{SKILL_CONTENT}", currentContent.slice(0, 6000))
|
|
210
|
-
.replace("{UPGRADE_TYPE}", evalResult.upgradeType)
|
|
211
|
-
.replace("{DIMENSIONS}", evalResult.dimensions.join(", "))
|
|
212
|
-
.replace("{REASON}", evalResult.reason)
|
|
213
|
-
.replace("{MERGE_STRATEGY}", evalResult.mergeStrategy)
|
|
214
|
-
.replace("{TITLE}", task.title)
|
|
215
|
-
.replace("{SUMMARY}", task.summary.slice(0, 4000))
|
|
216
|
-
.replace("{NEW_VERSION}", String(newVersion))
|
|
217
|
-
.replace("{TASK_ID}", task.id)
|
|
218
|
-
+ langInstruction;
|
|
219
|
-
const raw = await (0, llm_call_1.callLLMWithFallback)(chain, prompt, this.ctx.log, "SkillUpgrader.upgrade", { maxTokens: 6000, temperature: 0.2, timeoutMs: 90_000, openclawAPI: this.ctx.openclawAPI });
|
|
220
|
-
const changelogSep = raw.indexOf("---CHANGELOG---");
|
|
221
|
-
if (changelogSep !== -1) {
|
|
222
|
-
const newContent = raw.slice(0, changelogSep).trim();
|
|
223
|
-
const afterChangelog = raw.slice(changelogSep + "---CHANGELOG---".length).trim();
|
|
224
|
-
const summarySep = afterChangelog.indexOf("---CHANGE_SUMMARY---");
|
|
225
|
-
if (summarySep !== -1) {
|
|
226
|
-
const changelog = afterChangelog.slice(0, summarySep).trim();
|
|
227
|
-
const changeSummary = afterChangelog.slice(summarySep + "---CHANGE_SUMMARY---".length).trim();
|
|
228
|
-
return { newContent, changelog, changeSummary };
|
|
229
|
-
}
|
|
230
|
-
return { newContent, changelog: afterChangelog, changeSummary: "" };
|
|
231
|
-
}
|
|
232
|
-
return { newContent: raw, changelog: "", changeSummary: "" };
|
|
233
|
-
}
|
|
234
|
-
parseDescription(content) {
|
|
235
|
-
const match = content.match(/description:\s*"([^"]+)"/);
|
|
236
|
-
if (match)
|
|
237
|
-
return match[1];
|
|
238
|
-
const match2 = content.match(/description:\s*'([^']+)'/);
|
|
239
|
-
if (match2)
|
|
240
|
-
return match2[1];
|
|
241
|
-
return "";
|
|
242
|
-
}
|
|
243
|
-
async rebuildCompanionFiles(skill, newContent, task) {
|
|
244
|
-
const chain = (0, llm_call_1.buildSkillConfigChain)(this.ctx);
|
|
245
|
-
if (chain.length === 0)
|
|
246
|
-
return;
|
|
247
|
-
const chunks = this.store.getChunksByTask(task.id);
|
|
248
|
-
const conversationText = chunks
|
|
249
|
-
.filter(c => c.role === "user" || c.role === "assistant" || c.role === "tool")
|
|
250
|
-
.map(c => `[${c.role === "user" ? "User" : c.role === "assistant" ? "Assistant" : "Tool"}]: ${c.content.slice(0, 500)}`)
|
|
251
|
-
.join("\n\n")
|
|
252
|
-
.slice(0, 6000);
|
|
253
|
-
const scriptsPrompt = `Based on the following upgraded SKILL.md and task record, extract reusable automation scripts.
|
|
254
|
-
Rules:
|
|
255
|
-
- Only extract if the task record contains concrete shell commands, Python scripts, or TypeScript code that form a complete, reusable automation.
|
|
256
|
-
- Each script must be self-contained and runnable.
|
|
257
|
-
- If there are no automatable scripts, return an empty array.
|
|
258
|
-
- Don't fabricate scripts — only extract what was actually used.
|
|
259
|
-
|
|
260
|
-
SKILL.md:
|
|
261
|
-
${newContent.slice(0, 4000)}
|
|
262
|
-
|
|
263
|
-
Task conversation highlights:
|
|
264
|
-
${conversationText}
|
|
265
|
-
|
|
266
|
-
Reply with a JSON array only:
|
|
267
|
-
[{"filename": "deploy.sh", "content": "#!/bin/bash\\n..."}]
|
|
268
|
-
If no scripts, reply with: []`;
|
|
269
|
-
try {
|
|
270
|
-
const raw = await (0, llm_call_1.callLLMWithFallback)(chain, scriptsPrompt, this.ctx.log, "SkillUpgrader.scripts", {
|
|
271
|
-
maxTokens: 3000, temperature: 0.1, timeoutMs: 60_000, openclawAPI: this.ctx.openclawAPI,
|
|
272
|
-
});
|
|
273
|
-
const scripts = this.parseJSONArray(raw);
|
|
274
|
-
const scriptsDir = path.join(skill.dirPath, "scripts");
|
|
275
|
-
if (fs.existsSync(scriptsDir))
|
|
276
|
-
fs.rmSync(scriptsDir, { recursive: true });
|
|
277
|
-
if (scripts.length > 0) {
|
|
278
|
-
fs.mkdirSync(scriptsDir, { recursive: true });
|
|
279
|
-
for (const s of scripts) {
|
|
280
|
-
fs.writeFileSync(path.join(scriptsDir, s.filename), s.content, "utf-8");
|
|
281
|
-
}
|
|
282
|
-
this.ctx.log.info(`SkillUpgrader: rebuilt ${scripts.length} scripts for "${skill.name}"`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
catch (err) {
|
|
286
|
-
this.ctx.log.warn(`SkillUpgrader: companion scripts rebuild failed: ${err}`);
|
|
287
|
-
}
|
|
288
|
-
try {
|
|
289
|
-
const evalsPrompt = `Based on the following skill, generate 3-4 realistic test prompts that should trigger this skill.
|
|
290
|
-
Requirements:
|
|
291
|
-
- Write test prompts that a real user would type, mix direct and indirect phrasings
|
|
292
|
-
- LANGUAGE RULE: Write in the SAME language as the skill content.
|
|
293
|
-
|
|
294
|
-
Skill:
|
|
295
|
-
${newContent.slice(0, 4000)}
|
|
296
|
-
|
|
297
|
-
Reply with a JSON array only:
|
|
298
|
-
[{"id": 1, "prompt": "A realistic user message", "expectations": ["Expected behavior 1"], "trigger_confidence": "high"}]`;
|
|
299
|
-
const raw = await (0, llm_call_1.callLLMWithFallback)(chain, evalsPrompt, this.ctx.log, "SkillUpgrader.evals", {
|
|
300
|
-
maxTokens: 2000, temperature: 0.3, timeoutMs: 60_000, openclawAPI: this.ctx.openclawAPI,
|
|
301
|
-
});
|
|
302
|
-
const evals = this.parseJSONArray(raw);
|
|
303
|
-
const evalsDir = path.join(skill.dirPath, "evals");
|
|
304
|
-
if (fs.existsSync(evalsDir))
|
|
305
|
-
fs.rmSync(evalsDir, { recursive: true });
|
|
306
|
-
if (evals.length > 0) {
|
|
307
|
-
fs.mkdirSync(evalsDir, { recursive: true });
|
|
308
|
-
fs.writeFileSync(path.join(evalsDir, "evals.json"), JSON.stringify({ skill_name: skill.name, evals }, null, 2), "utf-8");
|
|
309
|
-
this.ctx.log.info(`SkillUpgrader: rebuilt ${evals.length} evals for "${skill.name}"`);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
catch (err) {
|
|
313
|
-
this.ctx.log.warn(`SkillUpgrader: companion evals rebuild failed: ${err}`);
|
|
314
|
-
}
|
|
315
|
-
try {
|
|
316
|
-
const refsPrompt = `Based on the following upgraded SKILL.md and task record, extract reference documentation worth preserving.
|
|
317
|
-
Rules:
|
|
318
|
-
- Only extract real reference content that appeared in the task (API docs, config examples, architecture notes).
|
|
319
|
-
- Each reference should be a standalone document useful for understanding the skill's domain.
|
|
320
|
-
- If there are no meaningful references, return an empty array.
|
|
321
|
-
- Don't fabricate content — only extract what was actually discussed or used.
|
|
322
|
-
- LANGUAGE RULE: Write in the SAME language as the skill content.
|
|
323
|
-
|
|
324
|
-
SKILL.md:
|
|
325
|
-
${newContent.slice(0, 4000)}
|
|
326
|
-
|
|
327
|
-
Task conversation highlights:
|
|
328
|
-
${conversationText}
|
|
329
|
-
|
|
330
|
-
Reply with a JSON array only:
|
|
331
|
-
[{"filename": "api-notes.md", "content": "# API Reference\\n..."}]
|
|
332
|
-
If no references, reply with: []`;
|
|
333
|
-
const raw = await (0, llm_call_1.callLLMWithFallback)(chain, refsPrompt, this.ctx.log, "SkillUpgrader.references", {
|
|
334
|
-
maxTokens: 3000, temperature: 0.1, timeoutMs: 60_000, openclawAPI: this.ctx.openclawAPI,
|
|
335
|
-
});
|
|
336
|
-
const refs = this.parseJSONArray(raw);
|
|
337
|
-
const refsDir = path.join(skill.dirPath, "references");
|
|
338
|
-
if (fs.existsSync(refsDir))
|
|
339
|
-
fs.rmSync(refsDir, { recursive: true });
|
|
340
|
-
if (refs.length > 0) {
|
|
341
|
-
fs.mkdirSync(refsDir, { recursive: true });
|
|
342
|
-
for (const r of refs) {
|
|
343
|
-
fs.writeFileSync(path.join(refsDir, r.filename), r.content, "utf-8");
|
|
344
|
-
}
|
|
345
|
-
this.ctx.log.info(`SkillUpgrader: rebuilt ${refs.length} references for "${skill.name}"`);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
catch (err) {
|
|
349
|
-
this.ctx.log.warn(`SkillUpgrader: companion references rebuild failed: ${err}`);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
parseJSONArray(raw) {
|
|
353
|
-
const match = raw.match(/\[[\s\S]*\]/);
|
|
354
|
-
if (!match)
|
|
355
|
-
return [];
|
|
356
|
-
try {
|
|
357
|
-
const arr = JSON.parse(match[0]);
|
|
358
|
-
return Array.isArray(arr) ? arr : [];
|
|
359
|
-
}
|
|
360
|
-
catch {
|
|
361
|
-
return [];
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
exports.SkillUpgrader = SkillUpgrader;
|
|
366
|
-
//# sourceMappingURL=upgrader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/skill/upgrader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { PluginContext } from "../types";
|
|
2
|
-
export interface ValidationResult {
|
|
3
|
-
valid: boolean;
|
|
4
|
-
qualityScore: number | null;
|
|
5
|
-
errors: string[];
|
|
6
|
-
warnings: string[];
|
|
7
|
-
suggestions: string[];
|
|
8
|
-
}
|
|
9
|
-
export declare class SkillValidator {
|
|
10
|
-
private ctx;
|
|
11
|
-
constructor(ctx: PluginContext);
|
|
12
|
-
/**
|
|
13
|
-
* Format validation (no LLM needed) + optional LLM quality assessment.
|
|
14
|
-
* Returns combined result with score 0-10.
|
|
15
|
-
*/
|
|
16
|
-
validate(dirPath: string, opts?: {
|
|
17
|
-
skipLLM?: boolean;
|
|
18
|
-
previousContent?: string;
|
|
19
|
-
}): Promise<ValidationResult>;
|
|
20
|
-
private validateFormat;
|
|
21
|
-
/**
|
|
22
|
-
* Check that an upgrade doesn't lose significant content from the previous version.
|
|
23
|
-
*/
|
|
24
|
-
private regressionCheck;
|
|
25
|
-
private checkCompanionConsistency;
|
|
26
|
-
private static readonly SECRET_PATTERNS;
|
|
27
|
-
private scanSecrets;
|
|
28
|
-
private assessQuality;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/skill/validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEtC;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+BlH,OAAO,CAAC,cAAc;IA8DtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,yBAAyB;IA6CjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAMrC;IAEF,OAAO,CAAC,WAAW;YAuBL,aAAa;CAqC5B"}
|