claude-spp 0.1.5 → 0.1.6
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/README.md +5 -4
- package/dist/hooks/system-prompt.d.ts +3 -2
- package/dist/hooks/system-prompt.d.ts.map +1 -1
- package/dist/hooks/system-prompt.js +38 -36
- package/dist/hooks/system-prompt.js.map +1 -1
- package/dist/vcs/index.d.ts +12 -1
- package/dist/vcs/index.d.ts.map +1 -1
- package/dist/vcs/index.js +21 -0
- package/dist/vcs/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -154,11 +154,12 @@ spp init
|
|
|
154
154
|
|
|
155
155
|
### Status line (optional)
|
|
156
156
|
|
|
157
|
-
You can add SPP status to Claude Code's status line, showing how many commits
|
|
157
|
+
You can add SPP status to Claude Code's status line, showing how many more commits Claude can write before reaching the target ratio:
|
|
158
158
|
|
|
159
159
|
```
|
|
160
|
-
🟢
|
|
161
|
-
|
|
160
|
+
🟢 Claude can write 9 more commits 🤖 > 🤖 > 🐵 > 🐵 > 🤖 > 🤖 > 🤖 > 🤖 > 🐵 > 🐵 > 🐵 > 🐵 > 🐵 > 🤖 > 🐵 ...
|
|
161
|
+
|
|
162
|
+
🔴 Human needs to write 2 more commits 🤖 > 🤖 > 🤖 > 🤖 > 🤖 > 🤖 > 🤖 > 🤖 > 🐵 > 🤖 > 🐵 > 🤖 > 🤖 > 🤖 > 🐵 ...
|
|
162
163
|
```
|
|
163
164
|
|
|
164
165
|
To enable, add to `~/.claude/settings.json`:
|
|
@@ -167,7 +168,7 @@ To enable, add to `~/.claude/settings.json`:
|
|
|
167
168
|
{
|
|
168
169
|
"statusLine": {
|
|
169
170
|
"type": "command",
|
|
170
|
-
"command": "spp hook:status-line"
|
|
171
|
+
"command": "spp hook:status-line"
|
|
171
172
|
}
|
|
172
173
|
}
|
|
173
174
|
```
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
export declare function generateSystemPrompt(projectPath: string): string;
|
|
5
5
|
/**
|
|
6
6
|
* Generate a compact status line for the prompt
|
|
7
|
-
* Format: 🟢
|
|
8
|
-
*
|
|
7
|
+
* Format: 🟢 Claude can write 11 more commits (4+)
|
|
8
|
+
* ⚠️ Claude can write 3 more commits (1-3)
|
|
9
|
+
* 🔴 Human needs to write 2 more commits (0 or less)
|
|
9
10
|
*/
|
|
10
11
|
export declare function generateStatusLine(projectPath: string): string;
|
|
11
12
|
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/hooks/system-prompt.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA8DhE;
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/hooks/system-prompt.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA8DhE;AAwBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+C9D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { loadConfig, isSppInitialized } from "../config/loader.js";
|
|
2
2
|
import { calculateRatio, isRatioHealthy } from "../stats.js";
|
|
3
|
-
import { getEffectiveRatio, getCurrentMode } from "../config/schema.js";
|
|
4
|
-
import { getLineCounts } from "../vcs/index.js";
|
|
3
|
+
import { getEffectiveRatio, getCurrentMode, getStatsWindowCutoff } from "../config/schema.js";
|
|
4
|
+
import { getLineCounts, getLineCountsWithWindow, getRecentCommitsClassified } from "../vcs/index.js";
|
|
5
5
|
/**
|
|
6
6
|
* Calculate how many more commits/lines the human needs to reach the target ratio
|
|
7
7
|
*/
|
|
@@ -71,39 +71,30 @@ export function generateSystemPrompt(projectPath) {
|
|
|
71
71
|
return lines.join("\n");
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
* Calculate how many commits/lines
|
|
75
|
-
* Positive = ahead, negative = behind
|
|
74
|
+
* Calculate how many Claude commits/lines can be added before hitting the target ratio.
|
|
75
|
+
* Positive = ahead (Claude commits remaining), negative = behind (human commits needed).
|
|
76
|
+
*
|
|
77
|
+
* Formula derivation for "ahead" case:
|
|
78
|
+
* humanValue / (humanValue + claudeValue + x) = targetRatio
|
|
79
|
+
* Solving for x: x = humanValue * (1 - targetRatio) / targetRatio - claudeValue
|
|
76
80
|
*/
|
|
77
81
|
function calculateAheadBehind(humanValue, claudeValue, targetRatio) {
|
|
78
82
|
const total = humanValue + claudeValue;
|
|
79
83
|
if (total === 0)
|
|
80
84
|
return 0;
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return Math.round(humanValue - targetHumanValue);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get the current git user's name
|
|
88
|
-
*/
|
|
89
|
-
function getGitUserName(projectPath) {
|
|
90
|
-
try {
|
|
91
|
-
const { execSync } = require("node:child_process");
|
|
92
|
-
const name = execSync("git config user.name", {
|
|
93
|
-
cwd: projectPath,
|
|
94
|
-
encoding: "utf-8",
|
|
95
|
-
}).trim();
|
|
96
|
-
// Get first name only
|
|
97
|
-
return name.split(" ")[0] || "You";
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
return "You";
|
|
85
|
+
// Avoid division by zero for 100% human target
|
|
86
|
+
if (targetRatio >= 1) {
|
|
87
|
+
return -claudeValue; // Need to remove all Claude commits
|
|
101
88
|
}
|
|
89
|
+
// How many more Claude commits until we hit exactly the target ratio
|
|
90
|
+
const claudeCommitsRemaining = humanValue * (1 - targetRatio) / targetRatio - claudeValue;
|
|
91
|
+
return Math.floor(claudeCommitsRemaining);
|
|
102
92
|
}
|
|
103
93
|
/**
|
|
104
94
|
* Generate a compact status line for the prompt
|
|
105
|
-
* Format: 🟢
|
|
106
|
-
*
|
|
95
|
+
* Format: 🟢 Claude can write 11 more commits (4+)
|
|
96
|
+
* ⚠️ Claude can write 3 more commits (1-3)
|
|
97
|
+
* 🔴 Human needs to write 2 more commits (0 or less)
|
|
107
98
|
*/
|
|
108
99
|
export function generateStatusLine(projectPath) {
|
|
109
100
|
if (!isSppInitialized(projectPath)) {
|
|
@@ -113,7 +104,12 @@ export function generateStatusLine(projectPath) {
|
|
|
113
104
|
if (!config.enabled) {
|
|
114
105
|
return "";
|
|
115
106
|
}
|
|
116
|
-
const
|
|
107
|
+
const statsWindow = config.statsWindow ?? "oneWeek";
|
|
108
|
+
const statsWindowCutoff = getStatsWindowCutoff(statsWindow);
|
|
109
|
+
const lineCounts = getLineCountsWithWindow(projectPath, {
|
|
110
|
+
since: statsWindowCutoff,
|
|
111
|
+
afterCommit: config.trackingStartCommit,
|
|
112
|
+
});
|
|
117
113
|
const trackingMode = config.trackingMode ?? "commits";
|
|
118
114
|
const humanValue = trackingMode === "commits" ? lineCounts.humanCommits : lineCounts.humanLines;
|
|
119
115
|
const claudeValue = trackingMode === "commits" ? lineCounts.claudeCommits : lineCounts.claudeLines;
|
|
@@ -123,14 +119,20 @@ export function generateStatusLine(projectPath) {
|
|
|
123
119
|
if (total === 0) {
|
|
124
120
|
return "⚪ SPP: no commits yet";
|
|
125
121
|
}
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
122
|
+
const claudeRemaining = calculateAheadBehind(humanValue, claudeValue, targetRatio);
|
|
123
|
+
// Generate emoji history for recent commits (newest on left)
|
|
124
|
+
const recentCommits = getRecentCommitsClassified(projectPath, {
|
|
125
|
+
since: statsWindowCutoff,
|
|
126
|
+
afterCommit: config.trackingStartCommit,
|
|
127
|
+
limit: 15,
|
|
128
|
+
});
|
|
129
|
+
const emojiHistory = recentCommits
|
|
130
|
+
.map((c) => (c.isClaude ? "🤖" : "🐵"))
|
|
131
|
+
.join(" > ");
|
|
132
|
+
const statusEmoji = claudeRemaining <= 0 ? "🔴" : claudeRemaining < 4 ? "⚠️" : "🟢";
|
|
133
|
+
const statusText = claudeRemaining > 0
|
|
134
|
+
? `Claude can write ${claudeRemaining} more ${unit}`
|
|
135
|
+
: `Human needs to write ${Math.abs(claudeRemaining)} more ${unit}`;
|
|
136
|
+
return `${statusEmoji} ${statusText} ${emojiHistory} ...`;
|
|
135
137
|
}
|
|
136
138
|
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/hooks/system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/hooks/system-prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/vcs/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { VcsProvider, VcsType, LineCounts, CommitInfo } from "./types.js";
|
|
2
|
-
export type { VcsProvider, VcsType, LineCounts, CommitInfo } from "./types.js";
|
|
2
|
+
export type { VcsProvider, VcsType, LineCounts, CommitInfo, CommitWithParent } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Get the appropriate VCS provider
|
|
5
5
|
*
|
|
@@ -34,4 +34,15 @@ export declare function getCommitInfo(projectPath: string, commitHash: string, v
|
|
|
34
34
|
* Clear cache using specified or auto-detected VCS
|
|
35
35
|
*/
|
|
36
36
|
export declare function clearCache(projectPath: string, vcsType?: VcsType): void;
|
|
37
|
+
/**
|
|
38
|
+
* Get recent commits within window, newest first, with Claude/human classification
|
|
39
|
+
*/
|
|
40
|
+
export declare function getRecentCommitsClassified(projectPath: string, options: {
|
|
41
|
+
since: Date | null;
|
|
42
|
+
afterCommit?: string | null;
|
|
43
|
+
limit?: number;
|
|
44
|
+
}, vcsType?: VcsType): Array<{
|
|
45
|
+
hash: string;
|
|
46
|
+
isClaude: boolean;
|
|
47
|
+
}>;
|
|
37
48
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/vcs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vcs/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/E,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vcs/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/E,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAoBjG;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,WAAW,CAStF;AAID;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,CAEhF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC5D,OAAO,CAAC,EAAE,OAAO,GAChB,UAAU,CAEZ;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAElF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAE3G;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAMvE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5E,OAAO,CAAC,EAAE,OAAO,GAChB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAuB5C"}
|
package/dist/vcs/index.js
CHANGED
|
@@ -73,4 +73,25 @@ export function clearCache(projectPath, vcsType) {
|
|
|
73
73
|
// Ignore errors if VCS not detected
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Get recent commits within window, newest first, with Claude/human classification
|
|
78
|
+
*/
|
|
79
|
+
export function getRecentCommitsClassified(projectPath, options, vcsType) {
|
|
80
|
+
const provider = getProvider(projectPath, vcsType);
|
|
81
|
+
const head = provider.getHeadCommitHash(projectPath);
|
|
82
|
+
if (!head)
|
|
83
|
+
return [];
|
|
84
|
+
const commits = provider.getCommitRange(projectPath, options.afterCommit ?? null, head, options.since ?? undefined);
|
|
85
|
+
// Commits are returned oldest-first, reverse to get newest-first
|
|
86
|
+
const result = [];
|
|
87
|
+
for (let i = commits.length - 1; i >= 0; i--) {
|
|
88
|
+
const commit = commits[i];
|
|
89
|
+
const message = provider.getFullCommitMessage(projectPath, commit.hash);
|
|
90
|
+
const isClaude = /Co-Authored-By:.*Claude/i.test(message);
|
|
91
|
+
result.push({ hash: commit.hash, isClaude });
|
|
92
|
+
if (options.limit && result.length >= options.limit)
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
76
97
|
//# sourceMappingURL=index.js.map
|
package/dist/vcs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vcs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,sBAAsB;AACtB,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,IAAI,UAAU,GAAsB,IAAI,CAAC;AAEzC,SAAS,cAAc;IACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB,EAAE,UAAmB,KAAK;IACvE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,cAAc,EAAE,CAAC;QAC1B,KAAK,IAAI;YACP,OAAO,aAAa,EAAE,CAAC;QACzB;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,0DAA0D;AAE1D;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,OAAiB;IAClE,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAmB,EACnB,OAA4D,EAC5D,OAAiB;IAEjB,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,OAAiB;IACtE,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,OAAiB;IACxE,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,UAAkB,EAAE,OAAiB;IACtF,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB,EAAE,OAAiB;IAC/D,IAAI,CAAC;QACH,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vcs/index.ts"],"names":[],"mappings":"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"}
|