@agentvault/agentvault 0.15.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_cp.d.ts +12 -0
- package/dist/_cp.d.ts.map +1 -0
- package/dist/cli.js +72035 -253
- package/dist/cli.js.map +7 -1
- package/dist/index.js +76351 -24
- package/dist/index.js.map +7 -1
- package/dist/openclaw-entry.js +1443 -1201
- package/dist/openclaw-entry.js.map +7 -1
- package/package.json +1 -1
- package/dist/__tests__/crypto-helpers.test.d.ts +0 -2
- package/dist/__tests__/crypto-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/functional.test.d.ts +0 -21
- package/dist/__tests__/functional.test.d.ts.map +0 -1
- package/dist/__tests__/install-plugin.test.d.ts +0 -2
- package/dist/__tests__/install-plugin.test.d.ts.map +0 -1
- package/dist/__tests__/multi-session.test.d.ts +0 -2
- package/dist/__tests__/multi-session.test.d.ts.map +0 -1
- package/dist/__tests__/state.test.d.ts +0 -2
- package/dist/__tests__/state.test.d.ts.map +0 -1
- package/dist/__tests__/transport.test.d.ts +0 -2
- package/dist/__tests__/transport.test.d.ts.map +0 -1
- package/dist/account-config.js +0 -60
- package/dist/account-config.js.map +0 -1
- package/dist/channel.js +0 -3411
- package/dist/channel.js.map +0 -1
- package/dist/create-agent.js +0 -314
- package/dist/create-agent.js.map +0 -1
- package/dist/crypto-helpers.js +0 -4
- package/dist/crypto-helpers.js.map +0 -1
- package/dist/doctor.js +0 -415
- package/dist/doctor.js.map +0 -1
- package/dist/fetch-interceptor.js +0 -213
- package/dist/fetch-interceptor.js.map +0 -1
- package/dist/gateway-send.js +0 -114
- package/dist/gateway-send.js.map +0 -1
- package/dist/http-handlers.js +0 -131
- package/dist/http-handlers.js.map +0 -1
- package/dist/mcp-handlers.js +0 -48
- package/dist/mcp-handlers.js.map +0 -1
- package/dist/mcp-server.js +0 -192
- package/dist/mcp-server.js.map +0 -1
- package/dist/openclaw-compat.js +0 -94
- package/dist/openclaw-compat.js.map +0 -1
- package/dist/openclaw-plugin.js +0 -297
- package/dist/openclaw-plugin.js.map +0 -1
- package/dist/openclaw-types.js +0 -13
- package/dist/openclaw-types.js.map +0 -1
- package/dist/setup.js +0 -460
- package/dist/setup.js.map +0 -1
- package/dist/skill-invoker.js +0 -100
- package/dist/skill-invoker.js.map +0 -1
- package/dist/skill-manifest.js +0 -249
- package/dist/skill-manifest.js.map +0 -1
- package/dist/skill-telemetry.js +0 -146
- package/dist/skill-telemetry.js.map +0 -1
- package/dist/skills-publish.js +0 -133
- package/dist/skills-publish.js.map +0 -1
- package/dist/state.js +0 -178
- package/dist/state.js.map +0 -1
- package/dist/transport.js +0 -43
- package/dist/transport.js.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/workspace-handlers.js +0 -177
- package/dist/workspace-handlers.js.map +0 -1
package/dist/skill-manifest.js
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill manifest loader — loads skills from SKILL.md files and backend API.
|
|
3
|
-
*
|
|
4
|
-
* SKILL.md format:
|
|
5
|
-
* ```
|
|
6
|
-
* ---
|
|
7
|
-
* name: code-review
|
|
8
|
-
* version: "1.0.0"
|
|
9
|
-
* description: Reviews code for issues
|
|
10
|
-
* tags: [code-review, typescript]
|
|
11
|
-
* sla:
|
|
12
|
-
* p95_latency_ms: 5000
|
|
13
|
-
* max_error_rate: 0.05
|
|
14
|
-
* schema:
|
|
15
|
-
* type: object
|
|
16
|
-
* properties:
|
|
17
|
-
* code:
|
|
18
|
-
* type: string
|
|
19
|
-
* description: Code to review
|
|
20
|
-
* required: [code]
|
|
21
|
-
* ---
|
|
22
|
-
* # Code Review Skill
|
|
23
|
-
*
|
|
24
|
-
* Instructions for invoking this skill...
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
import { readFileSync, existsSync, readdirSync } from "node:fs";
|
|
28
|
-
import { resolve, join } from "node:path";
|
|
29
|
-
/**
|
|
30
|
-
* Parse a SKILL.md file into a SkillDefinition.
|
|
31
|
-
*
|
|
32
|
-
* Extracts YAML frontmatter between --- delimiters.
|
|
33
|
-
* Everything after the closing --- is treated as instructions.
|
|
34
|
-
*/
|
|
35
|
-
export function parseSkillMd(content) {
|
|
36
|
-
const lines = content.split("\n");
|
|
37
|
-
// Find frontmatter delimiters
|
|
38
|
-
if (lines[0]?.trim() !== "---")
|
|
39
|
-
return null;
|
|
40
|
-
let endIdx = -1;
|
|
41
|
-
for (let i = 1; i < lines.length; i++) {
|
|
42
|
-
if (lines[i]?.trim() === "---") {
|
|
43
|
-
endIdx = i;
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (endIdx === -1)
|
|
48
|
-
return null;
|
|
49
|
-
// Parse YAML frontmatter (simple key-value parser)
|
|
50
|
-
const frontmatterLines = lines.slice(1, endIdx);
|
|
51
|
-
const frontmatter = parseSimpleYaml(frontmatterLines.join("\n"));
|
|
52
|
-
if (!frontmatter.name)
|
|
53
|
-
return null;
|
|
54
|
-
// Everything after frontmatter is instructions
|
|
55
|
-
const instructionLines = lines.slice(endIdx + 1);
|
|
56
|
-
const instructions = instructionLines.join("\n").trim();
|
|
57
|
-
return {
|
|
58
|
-
name: frontmatter.name,
|
|
59
|
-
version: frontmatter.version,
|
|
60
|
-
description: frontmatter.description,
|
|
61
|
-
tags: frontmatter.tags,
|
|
62
|
-
inputSchema: frontmatter.schema,
|
|
63
|
-
slaDefinition: frontmatter.sla,
|
|
64
|
-
instructions: instructions || undefined,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Simple YAML parser for frontmatter (handles basic key-value, arrays, nested objects).
|
|
69
|
-
* Not a full YAML parser — covers the subset used in SKILL.md files.
|
|
70
|
-
*/
|
|
71
|
-
function parseSimpleYaml(yaml) {
|
|
72
|
-
const result = {};
|
|
73
|
-
const lines = yaml.split("\n");
|
|
74
|
-
let currentKey = "";
|
|
75
|
-
let currentIndent = 0;
|
|
76
|
-
let nestedObj = null;
|
|
77
|
-
for (const line of lines) {
|
|
78
|
-
const trimmed = line.trim();
|
|
79
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
80
|
-
continue;
|
|
81
|
-
const indent = line.length - line.trimStart().length;
|
|
82
|
-
// Inline array: key: [val1, val2]
|
|
83
|
-
const inlineArrayMatch = trimmed.match(/^(\w[\w-]*)\s*:\s*\[(.+)\]$/);
|
|
84
|
-
if (inlineArrayMatch) {
|
|
85
|
-
const key = inlineArrayMatch[1];
|
|
86
|
-
const values = inlineArrayMatch[2]
|
|
87
|
-
.split(",")
|
|
88
|
-
.map((v) => v.trim().replace(/^["']|["']$/g, ""));
|
|
89
|
-
if (nestedObj && indent > currentIndent) {
|
|
90
|
-
nestedObj[key] = values;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
if (nestedObj && currentKey) {
|
|
94
|
-
result[currentKey] = nestedObj;
|
|
95
|
-
nestedObj = null;
|
|
96
|
-
}
|
|
97
|
-
result[key] = values;
|
|
98
|
-
}
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
// Key-value pair
|
|
102
|
-
const kvMatch = trimmed.match(/^(\w[\w-]*)\s*:\s*(.+)$/);
|
|
103
|
-
if (kvMatch && indent === 0) {
|
|
104
|
-
if (nestedObj && currentKey) {
|
|
105
|
-
result[currentKey] = nestedObj;
|
|
106
|
-
nestedObj = null;
|
|
107
|
-
}
|
|
108
|
-
const key = kvMatch[1];
|
|
109
|
-
const value = kvMatch[2].replace(/^["']|["']$/g, "");
|
|
110
|
-
// Try to parse numbers
|
|
111
|
-
const num = Number(value);
|
|
112
|
-
if (!isNaN(num) && value !== "") {
|
|
113
|
-
result[key] = num;
|
|
114
|
-
}
|
|
115
|
-
else if (value === "true") {
|
|
116
|
-
result[key] = true;
|
|
117
|
-
}
|
|
118
|
-
else if (value === "false") {
|
|
119
|
-
result[key] = false;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
result[key] = value;
|
|
123
|
-
}
|
|
124
|
-
continue;
|
|
125
|
-
}
|
|
126
|
-
// Nested object start (key with no value)
|
|
127
|
-
const nestedMatch = trimmed.match(/^(\w[\w-]*)\s*:$/);
|
|
128
|
-
if (nestedMatch && indent === 0) {
|
|
129
|
-
if (nestedObj && currentKey) {
|
|
130
|
-
result[currentKey] = nestedObj;
|
|
131
|
-
}
|
|
132
|
-
currentKey = nestedMatch[1];
|
|
133
|
-
currentIndent = indent;
|
|
134
|
-
nestedObj = {};
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
// Nested key-value
|
|
138
|
-
if (nestedObj && indent > 0) {
|
|
139
|
-
const nestedKv = trimmed.match(/^(\w[\w-]*)\s*:\s*(.+)$/);
|
|
140
|
-
if (nestedKv) {
|
|
141
|
-
const key = nestedKv[1];
|
|
142
|
-
const value = nestedKv[2].replace(/^["']|["']$/g, "");
|
|
143
|
-
const num = Number(value);
|
|
144
|
-
if (!isNaN(num) && value !== "") {
|
|
145
|
-
nestedObj[key] = num;
|
|
146
|
-
}
|
|
147
|
-
else if (value === "true") {
|
|
148
|
-
nestedObj[key] = true;
|
|
149
|
-
}
|
|
150
|
-
else if (value === "false") {
|
|
151
|
-
nestedObj[key] = false;
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
nestedObj[key] = value;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
// Flush any remaining nested object
|
|
160
|
-
if (nestedObj && currentKey) {
|
|
161
|
-
result[currentKey] = nestedObj;
|
|
162
|
-
}
|
|
163
|
-
return result;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Load skills from a directory by scanning for SKILL.md files.
|
|
167
|
-
*/
|
|
168
|
-
export function loadSkillsFromDirectory(dir) {
|
|
169
|
-
const skills = [];
|
|
170
|
-
const absDir = resolve(dir);
|
|
171
|
-
if (!existsSync(absDir))
|
|
172
|
-
return skills;
|
|
173
|
-
// Check for SKILL.md in the directory itself
|
|
174
|
-
const rootSkill = join(absDir, "SKILL.md");
|
|
175
|
-
if (existsSync(rootSkill)) {
|
|
176
|
-
const content = readFileSync(rootSkill, "utf-8");
|
|
177
|
-
const skill = parseSkillMd(content);
|
|
178
|
-
if (skill)
|
|
179
|
-
skills.push(skill);
|
|
180
|
-
}
|
|
181
|
-
// Check for SKILL.md in subdirectories (one level deep)
|
|
182
|
-
try {
|
|
183
|
-
const entries = readdirSync(absDir, { withFileTypes: true });
|
|
184
|
-
for (const entry of entries) {
|
|
185
|
-
if (entry.isDirectory()) {
|
|
186
|
-
const subSkill = join(absDir, entry.name, "SKILL.md");
|
|
187
|
-
if (existsSync(subSkill)) {
|
|
188
|
-
const content = readFileSync(subSkill, "utf-8");
|
|
189
|
-
const skill = parseSkillMd(content);
|
|
190
|
-
if (skill)
|
|
191
|
-
skills.push(skill);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
catch {
|
|
197
|
-
// Directory not readable, skip
|
|
198
|
-
}
|
|
199
|
-
return skills;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Load skills from backend API.
|
|
203
|
-
*/
|
|
204
|
-
export async function loadSkillsFromApi(apiUrl, apiKey, hubId) {
|
|
205
|
-
try {
|
|
206
|
-
const res = await fetch(`${apiUrl}/api/v1/hub/identities/${hubId}/skills`, {
|
|
207
|
-
headers: { Authorization: `Bearer ${apiKey}` },
|
|
208
|
-
});
|
|
209
|
-
if (!res.ok)
|
|
210
|
-
return [];
|
|
211
|
-
const data = (await res.json());
|
|
212
|
-
return data.map((cap) => ({
|
|
213
|
-
name: cap.capability_name,
|
|
214
|
-
version: cap.capability_version,
|
|
215
|
-
description: cap.description,
|
|
216
|
-
inputSchema: cap.schema_definition,
|
|
217
|
-
slaDefinition: cap.sla_definition,
|
|
218
|
-
tags: cap.tags,
|
|
219
|
-
instructions: cap.instructions,
|
|
220
|
-
}));
|
|
221
|
-
}
|
|
222
|
-
catch {
|
|
223
|
-
return [];
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Merge local and remote skills. Local definitions take precedence.
|
|
228
|
-
*/
|
|
229
|
-
export function mergeSkills(local, remote) {
|
|
230
|
-
const byName = new Map();
|
|
231
|
-
// Remote first (lower precedence)
|
|
232
|
-
for (const skill of remote) {
|
|
233
|
-
byName.set(skill.name, skill);
|
|
234
|
-
}
|
|
235
|
-
// Local overwrites (higher precedence)
|
|
236
|
-
for (const skill of local) {
|
|
237
|
-
byName.set(skill.name, skill);
|
|
238
|
-
}
|
|
239
|
-
const source = local.length > 0 && remote.length > 0
|
|
240
|
-
? "merged"
|
|
241
|
-
: local.length > 0
|
|
242
|
-
? "local"
|
|
243
|
-
: "remote";
|
|
244
|
-
return {
|
|
245
|
-
skills: Array.from(byName.values()),
|
|
246
|
-
source,
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
//# sourceMappingURL=skill-manifest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-manifest.js","sourceRoot":"","sources":["../src/skill-manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/skill-telemetry.js
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill telemetry emission — wraps skill execution with lifecycle spans.
|
|
3
|
-
*
|
|
4
|
-
* Creates start -> processing -> completion spans for each skill invocation.
|
|
5
|
-
* Auto-detects skill version from persisted manifest.
|
|
6
|
-
*/
|
|
7
|
-
import { buildSkillInvocationSpan } from "@agentvault/crypto";
|
|
8
|
-
let spanBuffer = [];
|
|
9
|
-
/**
|
|
10
|
-
* Get and clear the buffered spans (for batch reporting).
|
|
11
|
-
*/
|
|
12
|
-
export function drainSkillSpans() {
|
|
13
|
-
const spans = spanBuffer;
|
|
14
|
-
spanBuffer = [];
|
|
15
|
-
return spans;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Generate a unique invocation ID.
|
|
19
|
-
*/
|
|
20
|
-
function generateInvocationId() {
|
|
21
|
-
const bytes = new Uint8Array(16);
|
|
22
|
-
crypto.getRandomValues(bytes);
|
|
23
|
-
let hex = "";
|
|
24
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
25
|
-
hex += bytes[i].toString(16).padStart(2, "0");
|
|
26
|
-
}
|
|
27
|
-
return hex;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Wrap a skill execution with lifecycle telemetry spans.
|
|
31
|
-
*
|
|
32
|
-
* Creates two spans:
|
|
33
|
-
* 1. start — emitted immediately when invocation begins
|
|
34
|
-
* 2. completion — emitted when execution completes (success or error)
|
|
35
|
-
*
|
|
36
|
-
* @param skillName — name of the skill being executed
|
|
37
|
-
* @param version — semver version of the skill
|
|
38
|
-
* @param fn — the async function to execute
|
|
39
|
-
* @param instrument — optional InstrumentationContext for direct reporting
|
|
40
|
-
* @returns The result of fn()
|
|
41
|
-
*/
|
|
42
|
-
export async function wrapSkillExecution(skillName, version, fn, instrument) {
|
|
43
|
-
const invocationId = generateInvocationId();
|
|
44
|
-
const startTime = Date.now();
|
|
45
|
-
// Emit start span
|
|
46
|
-
const startSpan = buildSkillInvocationSpan({
|
|
47
|
-
skillName,
|
|
48
|
-
invocationId,
|
|
49
|
-
phase: "start",
|
|
50
|
-
version,
|
|
51
|
-
latencyMs: 0,
|
|
52
|
-
status: "ok",
|
|
53
|
-
});
|
|
54
|
-
if (instrument) {
|
|
55
|
-
instrument.reportSkillInvocation({
|
|
56
|
-
skillName,
|
|
57
|
-
invocationId,
|
|
58
|
-
phase: "start",
|
|
59
|
-
version,
|
|
60
|
-
latencyMs: 0,
|
|
61
|
-
status: "ok",
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
spanBuffer.push(startSpan);
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
const result = await fn();
|
|
69
|
-
const latencyMs = Date.now() - startTime;
|
|
70
|
-
// Emit completion span
|
|
71
|
-
const completionSpan = buildSkillInvocationSpan({
|
|
72
|
-
skillName,
|
|
73
|
-
invocationId,
|
|
74
|
-
phase: "completion",
|
|
75
|
-
version,
|
|
76
|
-
latencyMs,
|
|
77
|
-
status: "ok",
|
|
78
|
-
});
|
|
79
|
-
if (instrument) {
|
|
80
|
-
instrument.reportSkillInvocation({
|
|
81
|
-
skillName,
|
|
82
|
-
invocationId,
|
|
83
|
-
phase: "completion",
|
|
84
|
-
version,
|
|
85
|
-
latencyMs,
|
|
86
|
-
status: "ok",
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
spanBuffer.push(completionSpan);
|
|
91
|
-
}
|
|
92
|
-
return result;
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
const latencyMs = Date.now() - startTime;
|
|
96
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
97
|
-
// Emit error completion span
|
|
98
|
-
const errorSpan = buildSkillInvocationSpan({
|
|
99
|
-
skillName,
|
|
100
|
-
invocationId,
|
|
101
|
-
phase: "completion",
|
|
102
|
-
version,
|
|
103
|
-
latencyMs,
|
|
104
|
-
status: "error",
|
|
105
|
-
statusMessage: message,
|
|
106
|
-
});
|
|
107
|
-
if (instrument) {
|
|
108
|
-
instrument.reportSkillInvocation({
|
|
109
|
-
skillName,
|
|
110
|
-
invocationId,
|
|
111
|
-
phase: "completion",
|
|
112
|
-
version,
|
|
113
|
-
latencyMs,
|
|
114
|
-
status: "error",
|
|
115
|
-
statusMessage: message,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
spanBuffer.push(errorSpan);
|
|
120
|
-
}
|
|
121
|
-
throw err;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Report a completed skill invocation with full metadata.
|
|
126
|
-
* Used for post-hoc reporting when the caller has already collected metrics.
|
|
127
|
-
*/
|
|
128
|
-
export function reportSkillInvocation(opts) {
|
|
129
|
-
const span = buildSkillInvocationSpan({
|
|
130
|
-
skillName: opts.skillName,
|
|
131
|
-
invocationId: generateInvocationId(),
|
|
132
|
-
phase: "completion",
|
|
133
|
-
version: opts.version,
|
|
134
|
-
latencyMs: opts.latencyMs,
|
|
135
|
-
inputTokens: opts.inputTokens,
|
|
136
|
-
outputTokens: opts.outputTokens,
|
|
137
|
-
costCents: opts.costCents,
|
|
138
|
-
toolsUsed: opts.toolsUsed,
|
|
139
|
-
schemaMatch: opts.schemaMatch,
|
|
140
|
-
status: opts.success ? "ok" : "error",
|
|
141
|
-
statusMessage: opts.errorMessage,
|
|
142
|
-
});
|
|
143
|
-
spanBuffer.push(span);
|
|
144
|
-
return span;
|
|
145
|
-
}
|
|
146
|
-
//# sourceMappingURL=skill-telemetry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-telemetry.js","sourceRoot":"","sources":["../src/skill-telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/skills-publish.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { parseSkillMd } from "./skill-manifest.js";
|
|
4
|
-
export async function publishSkills(opts) {
|
|
5
|
-
if (!opts.manifest) {
|
|
6
|
-
console.error("Error: --manifest is required");
|
|
7
|
-
process.exit(1);
|
|
8
|
-
}
|
|
9
|
-
if (!opts.apiKey) {
|
|
10
|
-
console.error("Error: --api-key or AGENTVAULT_API_KEY is required");
|
|
11
|
-
process.exit(1);
|
|
12
|
-
}
|
|
13
|
-
// Read and parse manifest
|
|
14
|
-
const manifestPath = resolve(opts.manifest);
|
|
15
|
-
let raw;
|
|
16
|
-
try {
|
|
17
|
-
raw = readFileSync(manifestPath, "utf-8");
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
console.error(`Error: Cannot read manifest file: ${manifestPath}`);
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
let manifest;
|
|
24
|
-
try {
|
|
25
|
-
manifest = JSON.parse(raw);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
console.error("Error: Invalid JSON in manifest file");
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
// Validate manifest structure
|
|
32
|
-
if (!Array.isArray(manifest.skills) || manifest.skills.length === 0) {
|
|
33
|
-
console.error("Error: Manifest must contain a non-empty 'skills' array");
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
for (const skill of manifest.skills) {
|
|
37
|
-
if (!skill.name || typeof skill.name !== "string") {
|
|
38
|
-
console.error("Error: Each skill must have a 'name' string");
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
if (skill.sla?.max_error_rate !== undefined &&
|
|
42
|
-
(skill.sla.max_error_rate < 0 || skill.sla.max_error_rate > 1)) {
|
|
43
|
-
console.error(`Error: Skill "${skill.name}" max_error_rate must be 0.0-1.0`);
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
if (skill.sla?.min_uptime_pct !== undefined &&
|
|
47
|
-
(skill.sla.min_uptime_pct < 0 || skill.sla.min_uptime_pct > 100)) {
|
|
48
|
-
console.error(`Error: Skill "${skill.name}" min_uptime_pct must be 0-100`);
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// Transform to API format
|
|
53
|
-
const capabilities = manifest.skills.map((s) => {
|
|
54
|
-
// Load SKILL.md content if path specified
|
|
55
|
-
let skillContent = null;
|
|
56
|
-
let mcpMeta = s.mcp_metadata ?? null;
|
|
57
|
-
let skillTags = s.tags ?? null;
|
|
58
|
-
let skillInstructions = s.instructions ?? null;
|
|
59
|
-
let schemaDef = s.schema_definition ?? null;
|
|
60
|
-
if (s.skill_content_path) {
|
|
61
|
-
const contentPath = resolve(s.skill_content_path);
|
|
62
|
-
if (existsSync(contentPath)) {
|
|
63
|
-
skillContent = readFileSync(contentPath, "utf-8");
|
|
64
|
-
// Try to parse SKILL.md for additional metadata
|
|
65
|
-
const parsed = parseSkillMd(skillContent);
|
|
66
|
-
if (parsed) {
|
|
67
|
-
// SKILL.md metadata fills in missing manifest fields
|
|
68
|
-
if (!s.description && parsed.description)
|
|
69
|
-
s.description = parsed.description;
|
|
70
|
-
if (!s.version && parsed.version)
|
|
71
|
-
s.version = parsed.version;
|
|
72
|
-
if (!skillTags && parsed.tags)
|
|
73
|
-
skillTags = parsed.tags;
|
|
74
|
-
if (!skillInstructions && parsed.instructions)
|
|
75
|
-
skillInstructions = parsed.instructions;
|
|
76
|
-
if (!schemaDef && parsed.inputSchema)
|
|
77
|
-
schemaDef = parsed.inputSchema;
|
|
78
|
-
if (!s.sla && parsed.slaDefinition) {
|
|
79
|
-
s.sla = parsed.slaDefinition;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
console.warn(`Warning: SKILL.md not found at ${contentPath}, skipping content`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return {
|
|
88
|
-
capability_name: s.name,
|
|
89
|
-
capability_version: s.version ?? null,
|
|
90
|
-
description: s.description ?? null,
|
|
91
|
-
sla_definition: s.sla
|
|
92
|
-
? {
|
|
93
|
-
p95_latency_ms: s.sla.p95_latency_ms ?? null,
|
|
94
|
-
max_error_rate: s.sla.max_error_rate ?? null,
|
|
95
|
-
min_uptime_pct: s.sla.min_uptime_pct ?? null,
|
|
96
|
-
max_avg_tokens: s.sla.max_avg_tokens ?? null,
|
|
97
|
-
}
|
|
98
|
-
: null,
|
|
99
|
-
// New fields
|
|
100
|
-
skill_content: skillContent,
|
|
101
|
-
mcp_metadata: mcpMeta,
|
|
102
|
-
tags: skillTags,
|
|
103
|
-
changelog: s.changelog ?? null,
|
|
104
|
-
schema_definition: schemaDef,
|
|
105
|
-
instructions: skillInstructions,
|
|
106
|
-
};
|
|
107
|
-
});
|
|
108
|
-
// POST to backend
|
|
109
|
-
const url = `${opts.apiUrl}/api/v1/hub/skills/publish`;
|
|
110
|
-
const res = await fetch(url, {
|
|
111
|
-
method: "POST",
|
|
112
|
-
headers: {
|
|
113
|
-
"Content-Type": "application/json",
|
|
114
|
-
Authorization: `Bearer ${opts.apiKey}`,
|
|
115
|
-
},
|
|
116
|
-
body: JSON.stringify(capabilities),
|
|
117
|
-
});
|
|
118
|
-
if (!res.ok) {
|
|
119
|
-
const text = await res.text();
|
|
120
|
-
console.error(`Error: API returned ${res.status}: ${text}`);
|
|
121
|
-
process.exit(1);
|
|
122
|
-
}
|
|
123
|
-
const result = (await res.json());
|
|
124
|
-
console.log(`Published ${result.length} skill(s) successfully.`);
|
|
125
|
-
for (const cap of result) {
|
|
126
|
-
const status = cap.verification_status ?? "declared";
|
|
127
|
-
const sla = cap.sla_definition ? " (SLA)" : "";
|
|
128
|
-
const mcp = cap.mcp_metadata ? " (MCP)" : "";
|
|
129
|
-
const tagStr = cap.tags?.length ? ` [${cap.tags.join(", ")}]` : "";
|
|
130
|
-
console.log(` - ${cap.capability_name}${cap.capability_version ? `@${cap.capability_version}` : ""}: ${status}${sla}${mcp}${tagStr}`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=skills-publish.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills-publish.js","sourceRoot":"","sources":["../src/skills-publish.ts"],"names":[],"mappings":"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"}
|