cc-claw 0.20.1 → 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +71 -6
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -33,7 +33,7 @@ var VERSION;
|
|
|
33
33
|
var init_version = __esm({
|
|
34
34
|
"src/version.ts"() {
|
|
35
35
|
"use strict";
|
|
36
|
-
VERSION = true ? "0.20.
|
|
36
|
+
VERSION = true ? "0.20.2" : (() => {
|
|
37
37
|
try {
|
|
38
38
|
return JSON.parse(readFileSync(join(process.cwd(), "package.json"), "utf-8")).version ?? "unknown";
|
|
39
39
|
} catch {
|
|
@@ -18567,6 +18567,13 @@ Use /skills <page> to navigate (e.g. /skills 2)` : "";
|
|
|
18567
18567
|
if (safePage < totalPages) navRow.push({ label: `Page ${safePage + 1} \u2192`, data: `skills:page:${safePage + 1}` });
|
|
18568
18568
|
buttons.push(navRow);
|
|
18569
18569
|
}
|
|
18570
|
+
const { getSkillSuggestionsEnabled: getSkillSuggestionsEnabled2 } = await Promise.resolve().then(() => (init_store5(), store_exports5));
|
|
18571
|
+
const extractEnabled = getSkillSuggestionsEnabled2(chatId);
|
|
18572
|
+
buttons.push([{
|
|
18573
|
+
label: `${extractEnabled ? "\u2713" : "\u25CB"} Auto-Extract Skills`,
|
|
18574
|
+
data: "skills:toggle-extract",
|
|
18575
|
+
...extractEnabled ? { style: "primary" } : {}
|
|
18576
|
+
}]);
|
|
18570
18577
|
const header2 = totalPages > 1 ? `${skills2.length} skills (page ${safePage}/${totalPages}). Select one to invoke:` : `${skills2.length} skills available. Select one to invoke:`;
|
|
18571
18578
|
await sendOrEditKeyboard(chatId, channel, messageId, header2, buttons);
|
|
18572
18579
|
}
|
|
@@ -23690,6 +23697,12 @@ Salience: ${memory2.salience.toFixed(2)} | Created: ${memory2.created_at.slice(0
|
|
|
23690
23697
|
Example: /limits ${bid} daily 500000`, { parseMode: "plain" });
|
|
23691
23698
|
}
|
|
23692
23699
|
return;
|
|
23700
|
+
} else if (data === "skills:toggle-extract") {
|
|
23701
|
+
const { getSkillSuggestionsEnabled: getSkillSuggestionsEnabled2, setSkillSuggestionsEnabled: setSkillSuggestionsEnabled2 } = await Promise.resolve().then(() => (init_store5(), store_exports5));
|
|
23702
|
+
const current = getSkillSuggestionsEnabled2(chatId);
|
|
23703
|
+
setSkillSuggestionsEnabled2(chatId, !current);
|
|
23704
|
+
const skills2 = await discoverAllSkills();
|
|
23705
|
+
await sendSkillsPage(chatId, channel, skills2, 1, messageId);
|
|
23693
23706
|
} else if (data.startsWith("skills:page:")) {
|
|
23694
23707
|
const page = parseInt(data.slice(12), 10);
|
|
23695
23708
|
const skills2 = await discoverAllSkills();
|
|
@@ -23713,12 +23726,42 @@ Example: /limits ${bid} daily 500000`, { parseMode: "plain" });
|
|
|
23713
23726
|
});
|
|
23714
23727
|
const parsed = parseExtractedSkill2(extractionResponse.text);
|
|
23715
23728
|
if (parsed) {
|
|
23716
|
-
const {
|
|
23717
|
-
|
|
23718
|
-
|
|
23719
|
-
|
|
23729
|
+
const { storePendingDraft: updateDraft } = await Promise.resolve().then(() => (init_auto_create(), auto_create_exports));
|
|
23730
|
+
updateDraft(chatId, { ...draft, name: parsed.name, content: parsed.content });
|
|
23731
|
+
const escaped = parsed.content.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
23732
|
+
const header2 = `\u{1F4CB} <b>Skill Preview: "${parsed.name}"</b>
|
|
23720
23733
|
|
|
23721
|
-
|
|
23734
|
+
`;
|
|
23735
|
+
const MAX_PREVIEW = 3500 - header2.length;
|
|
23736
|
+
if (typeof channel.sendKeyboard === "function") {
|
|
23737
|
+
if (escaped.length > MAX_PREVIEW) {
|
|
23738
|
+
await channel.sendText(chatId, `${header2}<pre>${escaped.slice(0, 3500)}</pre>
|
|
23739
|
+
|
|
23740
|
+
\u2026(truncated \u2014 full skill will be saved)`, { parseMode: "html" });
|
|
23741
|
+
await channel.sendKeyboard(
|
|
23742
|
+
chatId,
|
|
23743
|
+
`Save "${parsed.name}" as a reusable skill?`,
|
|
23744
|
+
[[
|
|
23745
|
+
{ label: "\u2705 Save Skill", data: "skill:confirm-save", style: "success" },
|
|
23746
|
+
{ label: "\u2715 Discard", data: "skill:discard" }
|
|
23747
|
+
]]
|
|
23748
|
+
);
|
|
23749
|
+
} else {
|
|
23750
|
+
await channel.sendKeyboard(
|
|
23751
|
+
chatId,
|
|
23752
|
+
`${header2}<pre>${escaped}</pre>`,
|
|
23753
|
+
[[
|
|
23754
|
+
{ label: "\u2705 Save Skill", data: "skill:confirm-save", style: "success" },
|
|
23755
|
+
{ label: "\u2715 Discard", data: "skill:discard" }
|
|
23756
|
+
]]
|
|
23757
|
+
);
|
|
23758
|
+
}
|
|
23759
|
+
} else {
|
|
23760
|
+
const { path } = await saveSkill2(parsed.name, parsed.content);
|
|
23761
|
+
clearPendingDraft2(chatId);
|
|
23762
|
+
await channel.sendText(chatId, `\u2705 Skill "${parsed.name}" saved.
|
|
23763
|
+
Path: ${path}`, { parseMode: "plain" });
|
|
23764
|
+
}
|
|
23722
23765
|
} else {
|
|
23723
23766
|
clearPendingDraft2(chatId);
|
|
23724
23767
|
await channel.sendText(chatId, "Could not extract a well-formed skill from this conversation. Try /remember to save key steps manually.", { parseMode: "plain" });
|
|
@@ -23728,6 +23771,28 @@ Use /skills to see all available skills.`, { parseMode: "plain" });
|
|
|
23728
23771
|
await channel.sendText(chatId, `Skill extraction failed: ${e.message}`, { parseMode: "plain" });
|
|
23729
23772
|
}
|
|
23730
23773
|
return;
|
|
23774
|
+
} else if (data === "skill:confirm-save") {
|
|
23775
|
+
const { getPendingDraft: getPendingDraft2, clearPendingDraft: clearPendingDraft2, saveSkill: saveSkill2 } = await Promise.resolve().then(() => (init_auto_create(), auto_create_exports));
|
|
23776
|
+
const draft = getPendingDraft2(chatId);
|
|
23777
|
+
if (!draft || !draft.name || !draft.content) {
|
|
23778
|
+
await channel.sendText(chatId, "No pending skill to save.", { parseMode: "plain" });
|
|
23779
|
+
return;
|
|
23780
|
+
}
|
|
23781
|
+
try {
|
|
23782
|
+
const { path } = await saveSkill2(draft.name, draft.content);
|
|
23783
|
+
clearPendingDraft2(chatId);
|
|
23784
|
+
if (messageId) await replaceWithText(`\u2705 Skill "${draft.name}" saved.
|
|
23785
|
+
Path: ${path}
|
|
23786
|
+
|
|
23787
|
+
Use /skills to see all available skills.`);
|
|
23788
|
+
else await channel.sendText(chatId, `\u2705 Skill "${draft.name}" saved.
|
|
23789
|
+
Path: ${path}
|
|
23790
|
+
|
|
23791
|
+
Use /skills to see all available skills.`, { parseMode: "plain" });
|
|
23792
|
+
} catch (e) {
|
|
23793
|
+
await channel.sendText(chatId, `Failed to save skill: ${e.message}`, { parseMode: "plain" });
|
|
23794
|
+
}
|
|
23795
|
+
return;
|
|
23731
23796
|
} else if (data === "skill:discard") {
|
|
23732
23797
|
const { clearPendingDraft: clearPendingDraft2 } = await Promise.resolve().then(() => (init_auto_create(), auto_create_exports));
|
|
23733
23798
|
clearPendingDraft2(chatId);
|
package/package.json
CHANGED