musubix2 0.5.10 → 0.5.12
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/.claude/.musubix-managed +1 -1
- package/dist/assets/skills-manifest.json +1 -1
- package/dist/cli.js +90 -56
- package/dist/index.js +90 -56
- package/package.json +1 -1
package/.claude/.musubix-managed
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"generator":"musubix2","version":"0.5.
|
|
1
|
+
{"generator":"musubix2","version":"0.5.12","timestamp":"2026-07-09T10:58:51.392Z"}
|
package/dist/cli.js
CHANGED
|
@@ -12089,6 +12089,9 @@ var init_transport = __esm({
|
|
|
12089
12089
|
output;
|
|
12090
12090
|
handler = null;
|
|
12091
12091
|
rl = null;
|
|
12092
|
+
// Serializes request handling so stateful tools (load → mutate → save) never
|
|
12093
|
+
// interleave. Each incoming line is chained after the previous completes.
|
|
12094
|
+
queue = Promise.resolve();
|
|
12092
12095
|
constructor(input, output) {
|
|
12093
12096
|
this.input = input ?? process.stdin;
|
|
12094
12097
|
this.output = output ?? process.stdout;
|
|
@@ -12096,7 +12099,7 @@ var init_transport = __esm({
|
|
|
12096
12099
|
async start() {
|
|
12097
12100
|
this.rl = readline.createInterface({ input: this.input });
|
|
12098
12101
|
this.rl.on("line", (line) => {
|
|
12099
|
-
|
|
12102
|
+
this.queue = this.queue.then(() => this.processLine(line));
|
|
12100
12103
|
});
|
|
12101
12104
|
}
|
|
12102
12105
|
async processLine(line) {
|
|
@@ -14649,60 +14652,77 @@ function synthesisTools() {
|
|
|
14649
14652
|
})
|
|
14650
14653
|
];
|
|
14651
14654
|
}
|
|
14655
|
+
async function buildSpecFromParams(params) {
|
|
14656
|
+
const text = params["text"] ?? params["requirement"] ?? params["spec"] ?? "";
|
|
14657
|
+
let pattern = params["pattern"];
|
|
14658
|
+
if (!pattern) {
|
|
14659
|
+
try {
|
|
14660
|
+
const { createEARSValidator: createEARSValidator2 } = await Promise.resolve().then(() => (init_dist(), dist_exports));
|
|
14661
|
+
pattern = createEARSValidator2().analyze(text).pattern;
|
|
14662
|
+
} catch {
|
|
14663
|
+
pattern = "ubiquitous";
|
|
14664
|
+
}
|
|
14665
|
+
}
|
|
14666
|
+
return {
|
|
14667
|
+
id: params["id"] ?? "REQ-XXX-001",
|
|
14668
|
+
title: params["name"] ?? params["title"] ?? "requirement",
|
|
14669
|
+
text,
|
|
14670
|
+
pattern,
|
|
14671
|
+
trigger: params["trigger"],
|
|
14672
|
+
condition: params["condition"],
|
|
14673
|
+
action: params["action"] ?? text
|
|
14674
|
+
};
|
|
14675
|
+
}
|
|
14652
14676
|
function formalVerifyTools() {
|
|
14653
14677
|
return [
|
|
14654
|
-
tool("verify.ears-to-smt", "Convert EARS
|
|
14678
|
+
tool("verify.ears-to-smt", "Convert an EARS requirement to SMT-LIB2", "formal-verify", [
|
|
14679
|
+
param("text", "string", "EARS requirement text"),
|
|
14680
|
+
param("action", "string", "Requirement action clause", false)
|
|
14681
|
+
], async (params) => {
|
|
14655
14682
|
try {
|
|
14656
|
-
const
|
|
14657
|
-
|
|
14658
|
-
return ok(smt ?? { smtlib2: "", requirement: params["requirement"] });
|
|
14683
|
+
const { createEarsToSmtConverter: createEarsToSmtConverter2 } = await Promise.resolve().then(() => (init_dist16(), dist_exports16));
|
|
14684
|
+
return ok(createEarsToSmtConverter2().convert(await buildSpecFromParams(params)));
|
|
14659
14685
|
} catch {
|
|
14660
|
-
return
|
|
14686
|
+
return fail("Formal-verify package not available");
|
|
14661
14687
|
}
|
|
14662
14688
|
}),
|
|
14663
|
-
tool("verify.z3.solve", "Solve an SMT
|
|
14664
|
-
param("formula", "string", "SMT-LIB2 formula"),
|
|
14665
|
-
param("timeout", "number", "Timeout in milliseconds", false, 5e3)
|
|
14666
|
-
], async (params) => {
|
|
14689
|
+
tool("verify.z3.solve", "Solve an SMT-LIB2 script with the Z3 adapter", "formal-verify", [param("formula", "string", "SMT-LIB2 script")], async (params) => {
|
|
14667
14690
|
try {
|
|
14668
|
-
const
|
|
14669
|
-
|
|
14670
|
-
|
|
14671
|
-
|
|
14672
|
-
return ok({ satisfiable: false, model: null });
|
|
14691
|
+
const { createZ3Adapter: createZ3Adapter2 } = await Promise.resolve().then(() => (init_dist16(), dist_exports16));
|
|
14692
|
+
return ok(await createZ3Adapter2().solve(params["formula"] ?? ""));
|
|
14693
|
+
} catch (err) {
|
|
14694
|
+
return fail(`Z3 solve failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
14673
14695
|
}
|
|
14674
14696
|
}),
|
|
14675
|
-
tool("verify.lean.convert", "Convert a specification to a Lean 4 theorem", "formal-verify", [
|
|
14676
|
-
param("
|
|
14697
|
+
tool("verify.lean.convert", "Convert a requirement specification to a Lean 4 theorem", "formal-verify", [
|
|
14698
|
+
param("text", "string", "Requirement text"),
|
|
14699
|
+
param("action", "string", "Requirement action clause", false),
|
|
14677
14700
|
param("name", "string", "Theorem name", false, "spec_theorem")
|
|
14678
14701
|
], async (params) => {
|
|
14679
14702
|
try {
|
|
14680
|
-
const
|
|
14681
|
-
|
|
14682
|
-
return ok(result ?? { lean4: "", name: params["name"] ?? "spec_theorem" });
|
|
14703
|
+
const { createEarsToLeanConverter: createEarsToLeanConverter2 } = await Promise.resolve().then(() => (init_dist17(), dist_exports17));
|
|
14704
|
+
return ok(createEarsToLeanConverter2().convert(await buildSpecFromParams(params)));
|
|
14683
14705
|
} catch {
|
|
14684
|
-
return
|
|
14706
|
+
return fail("Lean package not available");
|
|
14685
14707
|
}
|
|
14686
14708
|
}),
|
|
14687
|
-
tool("verify.lean.run", "Run a Lean 4 proof", "formal-verify", [param("proof", "string", "Lean 4 proof code")], async (params) => {
|
|
14709
|
+
tool("verify.lean.run", "Run a Lean 4 proof (requires a Lean toolchain; reports availability otherwise)", "formal-verify", [param("proof", "string", "Lean 4 proof code")], async (params) => {
|
|
14688
14710
|
try {
|
|
14689
|
-
const
|
|
14690
|
-
|
|
14691
|
-
|
|
14692
|
-
|
|
14693
|
-
return ok({ verified: false, output: "" });
|
|
14711
|
+
const { createLeanProofRunner: createLeanProofRunner2 } = await Promise.resolve().then(() => (init_dist17(), dist_exports17));
|
|
14712
|
+
return ok(await createLeanProofRunner2().runProof(params["proof"] ?? ""));
|
|
14713
|
+
} catch (err) {
|
|
14714
|
+
return fail(`Lean proof run failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
14694
14715
|
}
|
|
14695
14716
|
}),
|
|
14696
|
-
tool("verify.hybrid", "Run hybrid verification
|
|
14697
|
-
param("
|
|
14698
|
-
param("
|
|
14717
|
+
tool("verify.hybrid", "Run hybrid (Z3 + Lean) verification on a requirement specification", "formal-verify", [
|
|
14718
|
+
param("text", "string", "Requirement text"),
|
|
14719
|
+
param("action", "string", "Requirement action clause", false)
|
|
14699
14720
|
], async (params) => {
|
|
14700
14721
|
try {
|
|
14701
|
-
const
|
|
14702
|
-
|
|
14703
|
-
|
|
14704
|
-
|
|
14705
|
-
return ok({ verified: false, strategy: params["strategy"] ?? "z3-first" });
|
|
14722
|
+
const { createHybridVerifier: createHybridVerifier2 } = await Promise.resolve().then(() => (init_dist17(), dist_exports17));
|
|
14723
|
+
return ok(await createHybridVerifier2().verify(await buildSpecFromParams(params)));
|
|
14724
|
+
} catch (err) {
|
|
14725
|
+
return fail(`Hybrid verification failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
14706
14726
|
}
|
|
14707
14727
|
})
|
|
14708
14728
|
];
|
|
@@ -14834,44 +14854,56 @@ function decisionsTools() {
|
|
|
14834
14854
|
})
|
|
14835
14855
|
];
|
|
14836
14856
|
}
|
|
14857
|
+
async function getSkillManager() {
|
|
14858
|
+
if (!_skillManager) {
|
|
14859
|
+
const { createSkillManager: createSkillManager2 } = await Promise.resolve().then(() => (init_dist7(), dist_exports7));
|
|
14860
|
+
_skillManager = createSkillManager2();
|
|
14861
|
+
}
|
|
14862
|
+
return _skillManager;
|
|
14863
|
+
}
|
|
14837
14864
|
function skillsTools() {
|
|
14838
14865
|
return [
|
|
14839
|
-
tool("skills.list", "List
|
|
14866
|
+
tool("skills.list", "List skills registered in the current server session", "skills", [], async () => {
|
|
14840
14867
|
try {
|
|
14841
|
-
const
|
|
14842
|
-
|
|
14843
|
-
return ok(skills ?? []);
|
|
14868
|
+
const mgr = await getSkillManager();
|
|
14869
|
+
return ok(mgr.getAvailableSkills().map((s) => ({ id: s.id, name: s.metadata.name, status: s.status })));
|
|
14844
14870
|
} catch {
|
|
14845
|
-
return
|
|
14871
|
+
return fail("Skill-manager package not available");
|
|
14846
14872
|
}
|
|
14847
14873
|
}),
|
|
14848
|
-
tool("skills.register", "Register a
|
|
14874
|
+
tool("skills.register", "Register a skill (echo-executor) for this server session", "skills", [
|
|
14849
14875
|
param("name", "string", "Skill name"),
|
|
14850
|
-
param("description", "string", "Skill description"),
|
|
14851
|
-
param("
|
|
14876
|
+
param("description", "string", "Skill description", false, ""),
|
|
14877
|
+
param("triggers", "array", "Trigger keywords", false)
|
|
14852
14878
|
], async (params) => {
|
|
14853
14879
|
try {
|
|
14854
|
-
const
|
|
14855
|
-
const
|
|
14856
|
-
|
|
14857
|
-
|
|
14858
|
-
|
|
14859
|
-
|
|
14860
|
-
|
|
14880
|
+
const mgr = await getSkillManager();
|
|
14881
|
+
const name = params["name"] ?? "skill";
|
|
14882
|
+
const skill = mgr.loadFromMetadata({
|
|
14883
|
+
name,
|
|
14884
|
+
version: "1.0.0",
|
|
14885
|
+
description: params["description"] ?? "",
|
|
14886
|
+
triggers: params["triggers"] ?? []
|
|
14887
|
+
}, async (input) => ({ skill: name, output: input }));
|
|
14888
|
+
return ok({ id: skill.id, name, registered: true });
|
|
14861
14889
|
} catch {
|
|
14862
|
-
return
|
|
14890
|
+
return fail("Skill-manager package not available");
|
|
14863
14891
|
}
|
|
14864
14892
|
}),
|
|
14865
|
-
tool("skills.execute", "Execute a
|
|
14893
|
+
tool("skills.execute", "Execute a session skill by name (must be registered in this session first)", "skills", [
|
|
14866
14894
|
param("name", "string", "Skill name to execute"),
|
|
14867
14895
|
param("input", "object", "Skill input parameters", false, {})
|
|
14868
14896
|
], async (params) => {
|
|
14869
14897
|
try {
|
|
14870
|
-
const
|
|
14871
|
-
const
|
|
14872
|
-
|
|
14898
|
+
const mgr = await getSkillManager();
|
|
14899
|
+
const name = params["name"] ?? "";
|
|
14900
|
+
const match = mgr.getAvailableSkills().find((s) => s.metadata.name === name);
|
|
14901
|
+
if (!match)
|
|
14902
|
+
return fail(`Skill not registered in this session: ${name}`);
|
|
14903
|
+
const output = await match.execute(params["input"] ?? {});
|
|
14904
|
+
return ok({ executed: true, name, output });
|
|
14873
14905
|
} catch {
|
|
14874
|
-
return
|
|
14906
|
+
return fail("Skill-manager package not available");
|
|
14875
14907
|
}
|
|
14876
14908
|
})
|
|
14877
14909
|
];
|
|
@@ -14899,9 +14931,11 @@ function registerDefaultTools(server) {
|
|
|
14899
14931
|
server.registerBatch(category.tools);
|
|
14900
14932
|
}
|
|
14901
14933
|
}
|
|
14934
|
+
var _skillManager;
|
|
14902
14935
|
var init_catalog = __esm({
|
|
14903
14936
|
"../mcp-server/dist/catalog.js"() {
|
|
14904
14937
|
"use strict";
|
|
14938
|
+
_skillManager = null;
|
|
14905
14939
|
}
|
|
14906
14940
|
});
|
|
14907
14941
|
|
package/dist/index.js
CHANGED
|
@@ -12089,6 +12089,9 @@ var init_transport = __esm({
|
|
|
12089
12089
|
output;
|
|
12090
12090
|
handler = null;
|
|
12091
12091
|
rl = null;
|
|
12092
|
+
// Serializes request handling so stateful tools (load → mutate → save) never
|
|
12093
|
+
// interleave. Each incoming line is chained after the previous completes.
|
|
12094
|
+
queue = Promise.resolve();
|
|
12092
12095
|
constructor(input, output) {
|
|
12093
12096
|
this.input = input ?? process.stdin;
|
|
12094
12097
|
this.output = output ?? process.stdout;
|
|
@@ -12096,7 +12099,7 @@ var init_transport = __esm({
|
|
|
12096
12099
|
async start() {
|
|
12097
12100
|
this.rl = readline.createInterface({ input: this.input });
|
|
12098
12101
|
this.rl.on("line", (line) => {
|
|
12099
|
-
|
|
12102
|
+
this.queue = this.queue.then(() => this.processLine(line));
|
|
12100
12103
|
});
|
|
12101
12104
|
}
|
|
12102
12105
|
async processLine(line) {
|
|
@@ -14649,60 +14652,77 @@ function synthesisTools() {
|
|
|
14649
14652
|
})
|
|
14650
14653
|
];
|
|
14651
14654
|
}
|
|
14655
|
+
async function buildSpecFromParams(params) {
|
|
14656
|
+
const text = params["text"] ?? params["requirement"] ?? params["spec"] ?? "";
|
|
14657
|
+
let pattern = params["pattern"];
|
|
14658
|
+
if (!pattern) {
|
|
14659
|
+
try {
|
|
14660
|
+
const { createEARSValidator: createEARSValidator2 } = await Promise.resolve().then(() => (init_dist(), dist_exports));
|
|
14661
|
+
pattern = createEARSValidator2().analyze(text).pattern;
|
|
14662
|
+
} catch {
|
|
14663
|
+
pattern = "ubiquitous";
|
|
14664
|
+
}
|
|
14665
|
+
}
|
|
14666
|
+
return {
|
|
14667
|
+
id: params["id"] ?? "REQ-XXX-001",
|
|
14668
|
+
title: params["name"] ?? params["title"] ?? "requirement",
|
|
14669
|
+
text,
|
|
14670
|
+
pattern,
|
|
14671
|
+
trigger: params["trigger"],
|
|
14672
|
+
condition: params["condition"],
|
|
14673
|
+
action: params["action"] ?? text
|
|
14674
|
+
};
|
|
14675
|
+
}
|
|
14652
14676
|
function formalVerifyTools() {
|
|
14653
14677
|
return [
|
|
14654
|
-
tool("verify.ears-to-smt", "Convert EARS
|
|
14678
|
+
tool("verify.ears-to-smt", "Convert an EARS requirement to SMT-LIB2", "formal-verify", [
|
|
14679
|
+
param("text", "string", "EARS requirement text"),
|
|
14680
|
+
param("action", "string", "Requirement action clause", false)
|
|
14681
|
+
], async (params) => {
|
|
14655
14682
|
try {
|
|
14656
|
-
const
|
|
14657
|
-
|
|
14658
|
-
return ok(smt ?? { smtlib2: "", requirement: params["requirement"] });
|
|
14683
|
+
const { createEarsToSmtConverter: createEarsToSmtConverter2 } = await Promise.resolve().then(() => (init_dist16(), dist_exports16));
|
|
14684
|
+
return ok(createEarsToSmtConverter2().convert(await buildSpecFromParams(params)));
|
|
14659
14685
|
} catch {
|
|
14660
|
-
return
|
|
14686
|
+
return fail("Formal-verify package not available");
|
|
14661
14687
|
}
|
|
14662
14688
|
}),
|
|
14663
|
-
tool("verify.z3.solve", "Solve an SMT
|
|
14664
|
-
param("formula", "string", "SMT-LIB2 formula"),
|
|
14665
|
-
param("timeout", "number", "Timeout in milliseconds", false, 5e3)
|
|
14666
|
-
], async (params) => {
|
|
14689
|
+
tool("verify.z3.solve", "Solve an SMT-LIB2 script with the Z3 adapter", "formal-verify", [param("formula", "string", "SMT-LIB2 script")], async (params) => {
|
|
14667
14690
|
try {
|
|
14668
|
-
const
|
|
14669
|
-
|
|
14670
|
-
|
|
14671
|
-
|
|
14672
|
-
return ok({ satisfiable: false, model: null });
|
|
14691
|
+
const { createZ3Adapter: createZ3Adapter2 } = await Promise.resolve().then(() => (init_dist16(), dist_exports16));
|
|
14692
|
+
return ok(await createZ3Adapter2().solve(params["formula"] ?? ""));
|
|
14693
|
+
} catch (err) {
|
|
14694
|
+
return fail(`Z3 solve failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
14673
14695
|
}
|
|
14674
14696
|
}),
|
|
14675
|
-
tool("verify.lean.convert", "Convert a specification to a Lean 4 theorem", "formal-verify", [
|
|
14676
|
-
param("
|
|
14697
|
+
tool("verify.lean.convert", "Convert a requirement specification to a Lean 4 theorem", "formal-verify", [
|
|
14698
|
+
param("text", "string", "Requirement text"),
|
|
14699
|
+
param("action", "string", "Requirement action clause", false),
|
|
14677
14700
|
param("name", "string", "Theorem name", false, "spec_theorem")
|
|
14678
14701
|
], async (params) => {
|
|
14679
14702
|
try {
|
|
14680
|
-
const
|
|
14681
|
-
|
|
14682
|
-
return ok(result ?? { lean4: "", name: params["name"] ?? "spec_theorem" });
|
|
14703
|
+
const { createEarsToLeanConverter: createEarsToLeanConverter2 } = await Promise.resolve().then(() => (init_dist17(), dist_exports17));
|
|
14704
|
+
return ok(createEarsToLeanConverter2().convert(await buildSpecFromParams(params)));
|
|
14683
14705
|
} catch {
|
|
14684
|
-
return
|
|
14706
|
+
return fail("Lean package not available");
|
|
14685
14707
|
}
|
|
14686
14708
|
}),
|
|
14687
|
-
tool("verify.lean.run", "Run a Lean 4 proof", "formal-verify", [param("proof", "string", "Lean 4 proof code")], async (params) => {
|
|
14709
|
+
tool("verify.lean.run", "Run a Lean 4 proof (requires a Lean toolchain; reports availability otherwise)", "formal-verify", [param("proof", "string", "Lean 4 proof code")], async (params) => {
|
|
14688
14710
|
try {
|
|
14689
|
-
const
|
|
14690
|
-
|
|
14691
|
-
|
|
14692
|
-
|
|
14693
|
-
return ok({ verified: false, output: "" });
|
|
14711
|
+
const { createLeanProofRunner: createLeanProofRunner2 } = await Promise.resolve().then(() => (init_dist17(), dist_exports17));
|
|
14712
|
+
return ok(await createLeanProofRunner2().runProof(params["proof"] ?? ""));
|
|
14713
|
+
} catch (err) {
|
|
14714
|
+
return fail(`Lean proof run failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
14694
14715
|
}
|
|
14695
14716
|
}),
|
|
14696
|
-
tool("verify.hybrid", "Run hybrid verification
|
|
14697
|
-
param("
|
|
14698
|
-
param("
|
|
14717
|
+
tool("verify.hybrid", "Run hybrid (Z3 + Lean) verification on a requirement specification", "formal-verify", [
|
|
14718
|
+
param("text", "string", "Requirement text"),
|
|
14719
|
+
param("action", "string", "Requirement action clause", false)
|
|
14699
14720
|
], async (params) => {
|
|
14700
14721
|
try {
|
|
14701
|
-
const
|
|
14702
|
-
|
|
14703
|
-
|
|
14704
|
-
|
|
14705
|
-
return ok({ verified: false, strategy: params["strategy"] ?? "z3-first" });
|
|
14722
|
+
const { createHybridVerifier: createHybridVerifier2 } = await Promise.resolve().then(() => (init_dist17(), dist_exports17));
|
|
14723
|
+
return ok(await createHybridVerifier2().verify(await buildSpecFromParams(params)));
|
|
14724
|
+
} catch (err) {
|
|
14725
|
+
return fail(`Hybrid verification failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
14706
14726
|
}
|
|
14707
14727
|
})
|
|
14708
14728
|
];
|
|
@@ -14834,44 +14854,56 @@ function decisionsTools() {
|
|
|
14834
14854
|
})
|
|
14835
14855
|
];
|
|
14836
14856
|
}
|
|
14857
|
+
async function getSkillManager() {
|
|
14858
|
+
if (!_skillManager) {
|
|
14859
|
+
const { createSkillManager: createSkillManager2 } = await Promise.resolve().then(() => (init_dist7(), dist_exports7));
|
|
14860
|
+
_skillManager = createSkillManager2();
|
|
14861
|
+
}
|
|
14862
|
+
return _skillManager;
|
|
14863
|
+
}
|
|
14837
14864
|
function skillsTools() {
|
|
14838
14865
|
return [
|
|
14839
|
-
tool("skills.list", "List
|
|
14866
|
+
tool("skills.list", "List skills registered in the current server session", "skills", [], async () => {
|
|
14840
14867
|
try {
|
|
14841
|
-
const
|
|
14842
|
-
|
|
14843
|
-
return ok(skills ?? []);
|
|
14868
|
+
const mgr = await getSkillManager();
|
|
14869
|
+
return ok(mgr.getAvailableSkills().map((s) => ({ id: s.id, name: s.metadata.name, status: s.status })));
|
|
14844
14870
|
} catch {
|
|
14845
|
-
return
|
|
14871
|
+
return fail("Skill-manager package not available");
|
|
14846
14872
|
}
|
|
14847
14873
|
}),
|
|
14848
|
-
tool("skills.register", "Register a
|
|
14874
|
+
tool("skills.register", "Register a skill (echo-executor) for this server session", "skills", [
|
|
14849
14875
|
param("name", "string", "Skill name"),
|
|
14850
|
-
param("description", "string", "Skill description"),
|
|
14851
|
-
param("
|
|
14876
|
+
param("description", "string", "Skill description", false, ""),
|
|
14877
|
+
param("triggers", "array", "Trigger keywords", false)
|
|
14852
14878
|
], async (params) => {
|
|
14853
14879
|
try {
|
|
14854
|
-
const
|
|
14855
|
-
const
|
|
14856
|
-
|
|
14857
|
-
|
|
14858
|
-
|
|
14859
|
-
|
|
14860
|
-
|
|
14880
|
+
const mgr = await getSkillManager();
|
|
14881
|
+
const name = params["name"] ?? "skill";
|
|
14882
|
+
const skill = mgr.loadFromMetadata({
|
|
14883
|
+
name,
|
|
14884
|
+
version: "1.0.0",
|
|
14885
|
+
description: params["description"] ?? "",
|
|
14886
|
+
triggers: params["triggers"] ?? []
|
|
14887
|
+
}, async (input) => ({ skill: name, output: input }));
|
|
14888
|
+
return ok({ id: skill.id, name, registered: true });
|
|
14861
14889
|
} catch {
|
|
14862
|
-
return
|
|
14890
|
+
return fail("Skill-manager package not available");
|
|
14863
14891
|
}
|
|
14864
14892
|
}),
|
|
14865
|
-
tool("skills.execute", "Execute a
|
|
14893
|
+
tool("skills.execute", "Execute a session skill by name (must be registered in this session first)", "skills", [
|
|
14866
14894
|
param("name", "string", "Skill name to execute"),
|
|
14867
14895
|
param("input", "object", "Skill input parameters", false, {})
|
|
14868
14896
|
], async (params) => {
|
|
14869
14897
|
try {
|
|
14870
|
-
const
|
|
14871
|
-
const
|
|
14872
|
-
|
|
14898
|
+
const mgr = await getSkillManager();
|
|
14899
|
+
const name = params["name"] ?? "";
|
|
14900
|
+
const match = mgr.getAvailableSkills().find((s) => s.metadata.name === name);
|
|
14901
|
+
if (!match)
|
|
14902
|
+
return fail(`Skill not registered in this session: ${name}`);
|
|
14903
|
+
const output = await match.execute(params["input"] ?? {});
|
|
14904
|
+
return ok({ executed: true, name, output });
|
|
14873
14905
|
} catch {
|
|
14874
|
-
return
|
|
14906
|
+
return fail("Skill-manager package not available");
|
|
14875
14907
|
}
|
|
14876
14908
|
})
|
|
14877
14909
|
];
|
|
@@ -14899,9 +14931,11 @@ function registerDefaultTools(server) {
|
|
|
14899
14931
|
server.registerBatch(category.tools);
|
|
14900
14932
|
}
|
|
14901
14933
|
}
|
|
14934
|
+
var _skillManager;
|
|
14902
14935
|
var init_catalog = __esm({
|
|
14903
14936
|
"../mcp-server/dist/catalog.js"() {
|
|
14904
14937
|
"use strict";
|
|
14938
|
+
_skillManager = null;
|
|
14905
14939
|
}
|
|
14906
14940
|
});
|
|
14907
14941
|
|