@basestream/cli 0.2.1 → 0.2.3
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 +56 -37
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -921,30 +921,55 @@ async function login() {
|
|
|
921
921
|
var CLAUDE_DIR = path2.join(os2.homedir(), ".claude");
|
|
922
922
|
var CLAUDE_SETTINGS_PATH = path2.join(CLAUDE_DIR, "settings.json");
|
|
923
923
|
var CLAUDE_SKILLS_PATH = path2.join(CLAUDE_DIR, "skills", "bs-summarize.md");
|
|
924
|
+
var CLAUDE_MD_PATH = path2.join(CLAUDE_DIR, "CLAUDE.md");
|
|
924
925
|
var HOOK_COMMAND = "npx @basestream/cli _hook-stop";
|
|
925
926
|
var HOOK_MARKER = "_hook-stop";
|
|
927
|
+
var CLAUDE_MD_MARKER = "<!-- basestream -->";
|
|
928
|
+
var CLAUDE_MD_RULE = `${CLAUDE_MD_MARKER}
|
|
929
|
+
- Before starting any non-trivial task, if the reason or context behind the work isn't already clear, ask: "What's the context for this?" Skip this for small tasks, typo fixes, or anything self-explanatory.
|
|
930
|
+
- After completing any meaningful work (fixing a bug, implementing a feature, making a significant change), invoke /bs-summarize to keep the session summary up to date. Include the "why" if it was provided.
|
|
931
|
+
<!-- /basestream -->`;
|
|
926
932
|
var SKILL_CONTENT = `---
|
|
927
933
|
name: bs-summarize
|
|
928
934
|
description: Update the Basestream session summary with what's been accomplished so far
|
|
929
935
|
---
|
|
930
936
|
|
|
931
|
-
|
|
937
|
+
First, read the existing summary file at \`~/.basestream/sessions/\${CLAUDE_SESSION_ID}-summary.md\` if it exists \u2014 this is the running record of work done so far this session.
|
|
938
|
+
|
|
939
|
+
Then write an updated summary that aggregates the previous summary with everything that has happened since. Focus on:
|
|
940
|
+
- Why the work was done (if context was provided \u2014 skip if not known)
|
|
932
941
|
- What was built, fixed, or changed (be specific about features/bugs)
|
|
933
942
|
- Which parts of the codebase were touched
|
|
934
943
|
- Any key decisions made
|
|
935
944
|
|
|
936
|
-
|
|
945
|
+
Do not just append \u2014 synthesize everything into a single cohesive summary. Merge related work together, avoid repeating the same point twice, and drop anything superseded by later changes. Be concise \u2014 let the scope of the work determine the length. A small fix deserves one sentence; a large multi-part session can be a short paragraph. Plain prose, no bullet points.
|
|
946
|
+
|
|
947
|
+
Write the result to \`~/.basestream/sessions/\${CLAUDE_SESSION_ID}-summary.md\`, overwriting the file.
|
|
948
|
+
`;
|
|
949
|
+
function injectClaudeMdRule() {
|
|
950
|
+
let existing = "";
|
|
951
|
+
if (fs2.existsSync(CLAUDE_MD_PATH)) {
|
|
952
|
+
existing = fs2.readFileSync(CLAUDE_MD_PATH, "utf-8");
|
|
953
|
+
}
|
|
954
|
+
let updated;
|
|
955
|
+
if (existing.includes(CLAUDE_MD_MARKER)) {
|
|
956
|
+
updated = existing.replace(/<!-- basestream -->[\s\S]*?<!-- \/basestream -->/, CLAUDE_MD_RULE);
|
|
957
|
+
fs2.writeFileSync(CLAUDE_MD_PATH, updated);
|
|
958
|
+
check("Updated Basestream rules in ~/.claude/CLAUDE.md");
|
|
959
|
+
} else {
|
|
960
|
+
updated = existing ? `${existing.trimEnd()}
|
|
937
961
|
|
|
938
|
-
|
|
962
|
+
${CLAUDE_MD_RULE}
|
|
963
|
+
` : `${CLAUDE_MD_RULE}
|
|
939
964
|
`;
|
|
965
|
+
fs2.mkdirSync(CLAUDE_DIR, { recursive: true });
|
|
966
|
+
fs2.writeFileSync(CLAUDE_MD_PATH, updated);
|
|
967
|
+
check("Injected Basestream rules into ~/.claude/CLAUDE.md");
|
|
968
|
+
}
|
|
969
|
+
}
|
|
940
970
|
function installSkill() {
|
|
941
971
|
const skillsDir = path2.dirname(CLAUDE_SKILLS_PATH);
|
|
942
972
|
fs2.mkdirSync(skillsDir, { recursive: true });
|
|
943
|
-
if (fs2.existsSync(CLAUDE_SKILLS_PATH)) {
|
|
944
|
-
fs2.writeFileSync(CLAUDE_SKILLS_PATH, SKILL_CONTENT);
|
|
945
|
-
check("Updated /bs-summarize skill");
|
|
946
|
-
return;
|
|
947
|
-
}
|
|
948
973
|
fs2.writeFileSync(CLAUDE_SKILLS_PATH, SKILL_CONTENT);
|
|
949
974
|
check("Installed /bs-summarize skill into ~/.claude/skills/");
|
|
950
975
|
}
|
|
@@ -1009,6 +1034,7 @@ async function init() {
|
|
|
1009
1034
|
console.log();
|
|
1010
1035
|
injectClaudeCodeHook();
|
|
1011
1036
|
installSkill();
|
|
1037
|
+
injectClaudeMdRule();
|
|
1012
1038
|
ensureDirs();
|
|
1013
1039
|
check(`Created ~/.basestream/buffer/`);
|
|
1014
1040
|
console.log();
|
|
@@ -3756,37 +3782,30 @@ function relations(table, relations2) {
|
|
|
3756
3782
|
);
|
|
3757
3783
|
}
|
|
3758
3784
|
|
|
3759
|
-
// src/db/models/
|
|
3785
|
+
// src/db/models/enum-constants.ts
|
|
3760
3786
|
function makeEnum(values) {
|
|
3761
3787
|
return Object.fromEntries(values.map((v) => [v, v]));
|
|
3762
3788
|
}
|
|
3763
|
-
var
|
|
3764
|
-
var
|
|
3765
|
-
var
|
|
3766
|
-
var
|
|
3767
|
-
var
|
|
3768
|
-
var OrgRole = makeEnum(
|
|
3769
|
-
var
|
|
3770
|
-
var
|
|
3771
|
-
var
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
var
|
|
3775
|
-
var
|
|
3776
|
-
var
|
|
3777
|
-
var
|
|
3778
|
-
var
|
|
3779
|
-
var bsWorkOutcomeEnum = pgEnum("bs_work_outcome",
|
|
3780
|
-
var
|
|
3781
|
-
var
|
|
3782
|
-
var
|
|
3783
|
-
var Complexity = makeEnum(complexityValues);
|
|
3784
|
-
var visibilityValues = ["PRIVATE", "TEAM", "PUBLIC"];
|
|
3785
|
-
var bsVisibilityEnum = pgEnum("bs_visibility", visibilityValues);
|
|
3786
|
-
var Visibility = makeEnum(visibilityValues);
|
|
3787
|
-
var integrationTypeValues = ["GITHUB", "HUBSPOT", "JIRA", "GOOGLE_CALENDAR", "FIREFLIES", "CLAUDE_CODE", "NOTION"];
|
|
3788
|
-
var bsIntegrationTypeEnum = pgEnum("bs_integration_type", integrationTypeValues);
|
|
3789
|
-
var IntegrationType = makeEnum(integrationTypeValues);
|
|
3789
|
+
var WorkCategory = makeEnum(["FEATURE", "BUGFIX", "REFACTOR", "DOCS", "TESTING", "DEVOPS", "OTHER"]);
|
|
3790
|
+
var WorkOutcome = makeEnum(["COMPLETED", "IN_PROGRESS", "BLOCKED", "ABANDONED"]);
|
|
3791
|
+
var Complexity = makeEnum(["LOW", "MEDIUM", "HIGH"]);
|
|
3792
|
+
var Visibility = makeEnum(["PRIVATE", "TEAM", "PUBLIC"]);
|
|
3793
|
+
var Plan = makeEnum(["FREE", "TEAM", "ENTERPRISE"]);
|
|
3794
|
+
var OrgRole = makeEnum(["ADMIN", "MANAGER", "USER"]);
|
|
3795
|
+
var ArtifactStatus = makeEnum(["GENERATING", "READY", "FAILED"]);
|
|
3796
|
+
var ArtifactPeriod = makeEnum(["QUARTER", "HALF", "YEAR", "CUSTOM"]);
|
|
3797
|
+
var IntegrationType = makeEnum(["GITHUB", "HUBSPOT", "JIRA", "GOOGLE_CALENDAR", "FIREFLIES", "CLAUDE_CODE", "NOTION"]);
|
|
3798
|
+
|
|
3799
|
+
// src/db/models/enums.ts
|
|
3800
|
+
var bsPlanEnum = pgEnum("bs_plan", ["FREE", "TEAM", "ENTERPRISE"]);
|
|
3801
|
+
var bsOrgRoleEnum = pgEnum("bs_org_role", ["ADMIN", "MANAGER", "USER"]);
|
|
3802
|
+
var bsArtifactPeriodEnum = pgEnum("bs_artifact_period", ["QUARTER", "HALF", "YEAR", "CUSTOM"]);
|
|
3803
|
+
var bsArtifactStatusEnum = pgEnum("bs_artifact_status", ["GENERATING", "READY", "FAILED"]);
|
|
3804
|
+
var bsWorkCategoryEnum = pgEnum("bs_work_category", ["FEATURE", "BUGFIX", "REFACTOR", "DOCS", "TESTING", "DEVOPS", "OTHER"]);
|
|
3805
|
+
var bsWorkOutcomeEnum = pgEnum("bs_work_outcome", ["COMPLETED", "IN_PROGRESS", "BLOCKED", "ABANDONED"]);
|
|
3806
|
+
var bsComplexityEnum = pgEnum("bs_complexity", ["LOW", "MEDIUM", "HIGH"]);
|
|
3807
|
+
var bsVisibilityEnum = pgEnum("bs_visibility", ["PRIVATE", "TEAM", "PUBLIC"]);
|
|
3808
|
+
var bsIntegrationTypeEnum = pgEnum("bs_integration_type", ["GITHUB", "HUBSPOT", "JIRA", "GOOGLE_CALENDAR", "FIREFLIES", "CLAUDE_CODE", "NOTION"]);
|
|
3790
3809
|
|
|
3791
3810
|
// src/db/models/auth.ts
|
|
3792
3811
|
var import_cuid2 = __toESM(require_cuid2(), 1);
|
|
@@ -4481,7 +4500,7 @@ async function main() {
|
|
|
4481
4500
|
process.exit(0);
|
|
4482
4501
|
}
|
|
4483
4502
|
if (command === "--version" || command === "-v") {
|
|
4484
|
-
console.log(true ? "0.2.
|
|
4503
|
+
console.log(true ? "0.2.3" : "dev");
|
|
4485
4504
|
process.exit(0);
|
|
4486
4505
|
}
|
|
4487
4506
|
switch (command || "init") {
|
package/package.json
CHANGED