@dyml/skill-manager 1.0.4 → 1.0.5
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/skill-manager.mjs +30 -33
- package/package.json +1 -1
package/dist/skill-manager.mjs
CHANGED
|
@@ -26788,7 +26788,7 @@ function StatusBar({ selectedSkill, width }) {
|
|
|
26788
26788
|
// src/ui/components/ActionBar.tsx
|
|
26789
26789
|
var import_react25 = __toESM(require_react(), 1);
|
|
26790
26790
|
function ActionBar({ canUninstall, canUpdate }) {
|
|
26791
|
-
return /* @__PURE__ */ import_react25.default.createElement(Box_default, { paddingX: 1, gap: 2 }, /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "cyan" }, "[i]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u5B89\u88C5")), canUninstall && /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "red" }, "[d]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u5378\u8F7D")), canUpdate && /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "
|
|
26791
|
+
return /* @__PURE__ */ import_react25.default.createElement(Box_default, { paddingX: 1, gap: 2 }, /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "cyan" }, "[i]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u5B89\u88C5")), canUninstall && /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "red" }, "[d]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u5378\u8F7D")), canUpdate && /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "green" }, "[p]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u66F4\u65B0\u9009\u4E2D")), /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "cyan" }, "[v]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u8BE6\u60C5")), /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "cyan" }, "[s]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u641C\u7D22")), /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "cyan" }, "[r]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u5237\u65B0")), /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, { bold: true, color: "cyan" }, "[q]"), /* @__PURE__ */ import_react25.default.createElement(Text, { dimColor: true }, " \u9000\u51FA")));
|
|
26792
26792
|
}
|
|
26793
26793
|
|
|
26794
26794
|
// src/ui/components/TabBar.tsx
|
|
@@ -26982,45 +26982,34 @@ function execSafe2(command, args, cwd2, timeout) {
|
|
|
26982
26982
|
if (code === 0) {
|
|
26983
26983
|
resolve({ stdout, stderr });
|
|
26984
26984
|
} else {
|
|
26985
|
-
reject(new Error(
|
|
26985
|
+
reject(new Error(`Command failed (code ${code}): ${stderr || stdout}`));
|
|
26986
26986
|
}
|
|
26987
26987
|
});
|
|
26988
26988
|
});
|
|
26989
26989
|
}
|
|
26990
|
-
function
|
|
26991
|
-
|
|
26992
|
-
if (!path4.isAbsolute(resolved)) {
|
|
26993
|
-
return { valid: false, error: "\u9879\u76EE\u8DEF\u5F84\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84" };
|
|
26994
|
-
}
|
|
26995
|
-
if (resolved.includes("..")) {
|
|
26996
|
-
return { valid: false, error: "\u65E0\u6548\u7684\u8DEF\u5F84" };
|
|
26997
|
-
}
|
|
26998
|
-
return { valid: true };
|
|
26999
|
-
}
|
|
27000
|
-
async function updateAllSkills(projectRoot = process.cwd()) {
|
|
27001
|
-
const validation = validatePath(projectRoot);
|
|
27002
|
-
if (!validation.valid) {
|
|
26990
|
+
async function updateSkill(skill) {
|
|
26991
|
+
if (skill.location === "system") {
|
|
27003
26992
|
return {
|
|
27004
26993
|
success: false,
|
|
27005
|
-
message:
|
|
26994
|
+
message: "\u7CFB\u7EDF\u7EA7\u6280\u80FD\u65E0\u6CD5\u76F4\u63A5\u66F4\u65B0\uFF0C\u8BF7\u4F7F\u7528 add-skill \u5DE5\u5177\u66F4\u65B0"
|
|
27006
26995
|
};
|
|
27007
26996
|
}
|
|
27008
26997
|
try {
|
|
27009
|
-
logger.info(
|
|
27010
|
-
const { stdout, stderr } = await execSafe2("npx", ["
|
|
26998
|
+
logger.info(`Updating skill: ${skill.name}...`);
|
|
26999
|
+
const { stdout, stderr } = await execSafe2("npx", ["add-skill", skill.name], process.cwd(), 12e4);
|
|
27011
27000
|
if (stderr && !stderr.includes("npm warn")) {
|
|
27012
|
-
logger.warn("
|
|
27001
|
+
logger.warn("Update output:", stderr);
|
|
27013
27002
|
}
|
|
27014
27003
|
return {
|
|
27015
27004
|
success: true,
|
|
27016
|
-
message: stdout.trim() ||
|
|
27005
|
+
message: stdout.trim() || `Skill ${skill.name} updated successfully`
|
|
27017
27006
|
};
|
|
27018
27007
|
} catch (error) {
|
|
27019
27008
|
const message = error instanceof Error ? error.message : String(error);
|
|
27020
|
-
logger.error("
|
|
27009
|
+
logger.error("Update failed:", message);
|
|
27021
27010
|
return {
|
|
27022
27011
|
success: false,
|
|
27023
|
-
message:
|
|
27012
|
+
message: `Failed to update skill ${skill.name}: ${message}`
|
|
27024
27013
|
};
|
|
27025
27014
|
}
|
|
27026
27015
|
}
|
|
@@ -27186,17 +27175,25 @@ function MainScreen() {
|
|
|
27186
27175
|
} else {
|
|
27187
27176
|
setScreen("confirm-uninstall");
|
|
27188
27177
|
}
|
|
27189
|
-
} else if (input === "p") {
|
|
27190
|
-
|
|
27191
|
-
|
|
27192
|
-
|
|
27193
|
-
|
|
27194
|
-
|
|
27195
|
-
|
|
27196
|
-
}
|
|
27197
|
-
|
|
27198
|
-
|
|
27199
|
-
await
|
|
27178
|
+
} else if (input === "p" && selectedSkill) {
|
|
27179
|
+
if (selectedSkill.location === "system") {
|
|
27180
|
+
setMessage({
|
|
27181
|
+
text: "\u7CFB\u7EDF\u7EA7\u6280\u80FD\u65E0\u6CD5\u76F4\u63A5\u66F4\u65B0",
|
|
27182
|
+
type: "error"
|
|
27183
|
+
});
|
|
27184
|
+
setScreen("message");
|
|
27185
|
+
} else {
|
|
27186
|
+
setMessage({ text: `\u6B63\u5728\u66F4\u65B0 ${selectedSkill.name}...`, type: "info" });
|
|
27187
|
+
setScreen("message");
|
|
27188
|
+
const result = await updateSkill(selectedSkill);
|
|
27189
|
+
setMessage({
|
|
27190
|
+
text: result.message,
|
|
27191
|
+
type: result.success ? "success" : "error"
|
|
27192
|
+
});
|
|
27193
|
+
setScreen("message");
|
|
27194
|
+
if (result.success) {
|
|
27195
|
+
await refresh();
|
|
27196
|
+
}
|
|
27200
27197
|
}
|
|
27201
27198
|
} else if (input === "v" && selectedSkill) {
|
|
27202
27199
|
setScreen("detail");
|