@basestream/cli 0.2.9 → 0.2.11
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.mjs +40 -8
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -250,7 +250,7 @@ async function login() {
|
|
|
250
250
|
// src/cli/commands/init.ts
|
|
251
251
|
var CLAUDE_DIR = path2.join(os2.homedir(), ".claude");
|
|
252
252
|
var CLAUDE_SETTINGS_PATH = path2.join(CLAUDE_DIR, "settings.json");
|
|
253
|
-
var CLAUDE_SKILLS_PATH = path2.join(CLAUDE_DIR, "skills", "bs-summarize.md");
|
|
253
|
+
var CLAUDE_SKILLS_PATH = path2.join(CLAUDE_DIR, "skills", "bs-summarize", "SKILL.md");
|
|
254
254
|
var CLAUDE_MD_PATH = path2.join(CLAUDE_DIR, "CLAUDE.md");
|
|
255
255
|
var HOOK_COMMAND = "npx --yes @basestream/cli@latest _hook-stop";
|
|
256
256
|
var HOOK_MARKER = "_hook-stop";
|
|
@@ -604,6 +604,7 @@ function readSessionAccumulator(sessionId) {
|
|
|
604
604
|
const raw = JSON.parse(fs5.readFileSync(sessionFile, "utf-8"));
|
|
605
605
|
raw.filesWritten = new Set(raw.filesWritten || []);
|
|
606
606
|
raw.commitShas = new Set(raw.commitShas || []);
|
|
607
|
+
raw.userMessages = raw.userMessages || [];
|
|
607
608
|
return raw;
|
|
608
609
|
} catch {
|
|
609
610
|
return null;
|
|
@@ -614,7 +615,9 @@ function writeSessionAccumulator(acc) {
|
|
|
614
615
|
const serializable = {
|
|
615
616
|
...acc,
|
|
616
617
|
filesWritten: Array.from(acc.filesWritten),
|
|
617
|
-
commitShas: Array.from(acc.commitShas)
|
|
618
|
+
commitShas: Array.from(acc.commitShas),
|
|
619
|
+
userMessages: acc.userMessages.slice(0, 5)
|
|
620
|
+
// Keep at most 5
|
|
618
621
|
};
|
|
619
622
|
fs5.writeFileSync(sessionFile, JSON.stringify(serializable, null, 2));
|
|
620
623
|
}
|
|
@@ -631,6 +634,16 @@ function analyzeTranscript(transcriptPath, acc) {
|
|
|
631
634
|
}
|
|
632
635
|
const message = entry.message;
|
|
633
636
|
const contentBlocks = Array.isArray(message?.content) ? message.content : [];
|
|
637
|
+
if (entry.type === "user" && contentBlocks.length > 0) {
|
|
638
|
+
for (const block of contentBlocks) {
|
|
639
|
+
if (block.type === "text" && typeof block.text === "string") {
|
|
640
|
+
const text = block.text.trim();
|
|
641
|
+
if (text.length > 0 && acc.userMessages.length < 5) {
|
|
642
|
+
acc.userMessages.push(text.slice(0, 200));
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
}
|
|
634
647
|
if (entry.type === "assistant" && contentBlocks.length > 0) {
|
|
635
648
|
const hasText = contentBlocks.some(
|
|
636
649
|
(b) => b.type === "text" || b.type === "thinking"
|
|
@@ -684,16 +697,16 @@ function categorizeWork(acc) {
|
|
|
684
697
|
const configFiles = files.filter(
|
|
685
698
|
(f) => f.includes("Dockerfile") || f.includes(".yml") || f.includes(".yaml") || f.includes("ci")
|
|
686
699
|
);
|
|
687
|
-
if (testFiles.length
|
|
688
|
-
else if (docFiles.length
|
|
689
|
-
else if (configFiles.length
|
|
700
|
+
if (testFiles.length >= fileCount / 2) category = WorkCategory.TESTING;
|
|
701
|
+
else if (docFiles.length >= fileCount / 2) category = WorkCategory.DOCS;
|
|
702
|
+
else if (configFiles.length >= fileCount / 2) category = WorkCategory.DEVOPS;
|
|
690
703
|
else category = WorkCategory.FEATURE;
|
|
691
704
|
} else {
|
|
692
705
|
const tools = acc.toolCalls.map((t) => t.tool);
|
|
693
706
|
const readTools = tools.filter(
|
|
694
707
|
(t) => ["Read", "Grep", "Glob", "WebFetch", "WebSearch"].includes(t)
|
|
695
708
|
);
|
|
696
|
-
if (readTools.length
|
|
709
|
+
if (readTools.length >= tools.length / 2) category = WorkCategory.REFACTOR;
|
|
697
710
|
}
|
|
698
711
|
let complexity = Complexity.LOW;
|
|
699
712
|
if (fileCount >= 7 || acc.toolCalls.length >= 30) complexity = Complexity.HIGH;
|
|
@@ -744,6 +757,7 @@ function flushToBuffer(acc) {
|
|
|
744
757
|
prUrl: null,
|
|
745
758
|
ticketUrl: null,
|
|
746
759
|
commitShas: Array.from(acc.commitShas),
|
|
760
|
+
userMessages: acc.userMessages.slice(0, 5),
|
|
747
761
|
visibility: Visibility.TEAM,
|
|
748
762
|
bufferedAt: now.toISOString()
|
|
749
763
|
};
|
|
@@ -757,8 +771,23 @@ function flushToBuffer(acc) {
|
|
|
757
771
|
function buildSummary(acc, category) {
|
|
758
772
|
const fileCount = acc.filesWritten.size;
|
|
759
773
|
const commitCount = acc.commitShas.size;
|
|
760
|
-
const toolCount = acc.toolCalls.length;
|
|
761
774
|
const project = acc.projectName || "unknown project";
|
|
775
|
+
const firstMsg = acc.userMessages[0];
|
|
776
|
+
if (firstMsg) {
|
|
777
|
+
let description = firstMsg.split(/[.\n]/)[0].trim();
|
|
778
|
+
if (description.length > 120) {
|
|
779
|
+
description = description.slice(0, 120).replace(/\s+\S*$/, "") + "...";
|
|
780
|
+
}
|
|
781
|
+
const stats = [];
|
|
782
|
+
if (fileCount > 0) {
|
|
783
|
+
stats.push(`${fileCount} file${fileCount !== 1 ? "s" : ""}`);
|
|
784
|
+
}
|
|
785
|
+
if (commitCount > 0) {
|
|
786
|
+
stats.push(`${commitCount} commit${commitCount !== 1 ? "s" : ""}`);
|
|
787
|
+
}
|
|
788
|
+
const suffix = stats.length > 0 ? ` (${stats.join(", ")} in ${project})` : ` in ${project}`;
|
|
789
|
+
return description + suffix;
|
|
790
|
+
}
|
|
762
791
|
const parts = [];
|
|
763
792
|
if (category !== WorkCategory.OTHER) {
|
|
764
793
|
parts.push(category.toLowerCase());
|
|
@@ -770,6 +799,7 @@ function buildSummary(acc, category) {
|
|
|
770
799
|
parts.push(`${commitCount} commit${commitCount !== 1 ? "s" : ""}`);
|
|
771
800
|
}
|
|
772
801
|
if (fileCount === 0 && commitCount === 0) {
|
|
802
|
+
const toolCount = acc.toolCalls.length;
|
|
773
803
|
if (toolCount > 0) {
|
|
774
804
|
const uniqueTools = [...new Set(acc.toolCalls.map((t) => t.tool))];
|
|
775
805
|
parts.push(`${acc.turns} turn${acc.turns !== 1 ? "s" : ""}, ${toolCount} tool call${toolCount !== 1 ? "s" : ""} (${uniqueTools.slice(0, 3).join(", ")})`);
|
|
@@ -834,6 +864,7 @@ async function hookStop() {
|
|
|
834
864
|
toolCalls: [],
|
|
835
865
|
filesWritten: /* @__PURE__ */ new Set(),
|
|
836
866
|
commitShas: /* @__PURE__ */ new Set(),
|
|
867
|
+
userMessages: [],
|
|
837
868
|
gitBranch: gitInfo.branch,
|
|
838
869
|
gitRepo: gitInfo.repo,
|
|
839
870
|
projectName: gitInfo.projectName
|
|
@@ -842,6 +873,7 @@ async function hookStop() {
|
|
|
842
873
|
}
|
|
843
874
|
acc.turns = 0;
|
|
844
875
|
acc.toolCalls = [];
|
|
876
|
+
acc.userMessages = [];
|
|
845
877
|
if (transcript_path) {
|
|
846
878
|
acc = analyzeTranscript(transcript_path, acc);
|
|
847
879
|
}
|
|
@@ -982,7 +1014,7 @@ async function main() {
|
|
|
982
1014
|
process.exit(0);
|
|
983
1015
|
}
|
|
984
1016
|
if (command === "--version" || command === "-v") {
|
|
985
|
-
console.log(true ? "0.2.
|
|
1017
|
+
console.log(true ? "0.2.11" : "dev");
|
|
986
1018
|
process.exit(0);
|
|
987
1019
|
}
|
|
988
1020
|
switch (command || "init") {
|
package/package.json
CHANGED