@kawacode/mcp 6.6.1 → 6.8.1
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/CLAUDE.md.example +21 -0
- package/README.md +16 -0
- package/build/kawacode-on-pre-edit.js +33 -4
- package/build/kawacode-on-pre-edit.js.map +1 -1
- package/build/kawacode-on-stop.d.ts +9 -5
- package/build/kawacode-on-stop.js +125 -26
- package/build/kawacode-on-stop.js.map +1 -1
- package/build/services/muninn-ipc.d.ts +13 -6
- package/build/services/muninn-ipc.js +35 -14
- package/build/services/muninn-ipc.js.map +1 -1
- package/build/stop/uncompleted-commit.d.ts +60 -7
- package/build/stop/uncompleted-commit.js +132 -23
- package/build/stop/uncompleted-commit.js.map +1 -1
- package/build/stop/uncompleted-commit.test.js +100 -1
- package/build/stop/uncompleted-commit.test.js.map +1 -1
- package/build/telemetry.d.ts +65 -0
- package/build/telemetry.js +99 -0
- package/build/telemetry.js.map +1 -0
- package/build/tools/check-active-intent.js +30 -16
- package/build/tools/check-active-intent.js.map +1 -1
- package/build/tools/complete-intent.d.ts +14 -10
- package/build/tools/complete-intent.js +26 -57
- package/build/tools/complete-intent.js.map +1 -1
- package/build/tools/get-relevant-context.js +14 -1
- package/build/tools/get-relevant-context.js.map +1 -1
- package/build/tools/index.d.ts +6 -0
- package/build/tools/pre-edit-acknowledge.d.ts +12 -0
- package/build/tools/pre-edit-acknowledge.js +21 -0
- package/build/tools/pre-edit-acknowledge.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muninn-ipc.js","sourceRoot":"","sources":["../../src/services/muninn-ipc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAEhC,MAAM,YAAY,GAAG,KAAK,CAAA;AAC1B,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;AAEpG;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;AAC9G,MAAM,0BAA0B,GAAG,MAAM,CAAA;AACzC,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEnC;;;GAGG;AACH,MAAM,gBAAgB,GAAG,0BAA0B,CAAA;AAQnD,IAAI,MAAM,GAAsB,IAAI,CAAA;AACpC,IAAI,SAAS,GAAG,KAAK,CAAA;AACrB,IAAI,KAAK,GAAG,EAAE,CAAA;AACd,IAAI,iBAAiB,GAAyB,IAAI,CAAA;AAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAA;AAEzD;;GAEG;AACH,SAAS,0BAA0B;IACjC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,qBAAqB,CAAA;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,2EAA2E;QAC3E,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CACnC,EAAE,CAAC,OAAO,EAAE,EACZ,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EACjD,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CACnE,CAAA;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,OAAO,mBAAmB,CAAA;QAC5B,CAAC;IACH,CAAC;IACD,oEAAoE;IACpE,0DAA0D;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAmB;IACjD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAA;IAC/C,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5D,iBAAiB,GAAG,IAAI,CAAA;IAC1B,CAAC,CAAC,CAAA;IACF,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAmB;IAC3C,MAAM,UAAU,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,0BAA0B,EAAE,CAAA;IAE1F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"muninn-ipc.js","sourceRoot":"","sources":["../../src/services/muninn-ipc.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,17 @@
|
|
|
7
7
|
* with complete_intent. We read Claude Code's own transcript (harness
|
|
8
8
|
* introspection — not Muninn's concern) and compare the position of the last
|
|
9
9
|
* SUCCESSFUL commit against the last complete_intent call.
|
|
10
|
+
*
|
|
11
|
+
* The gate consumes three additional pure signals (loop-fix, 2026-07-03):
|
|
12
|
+
* - `lastUnfinalizedCommit` — the commit's command + short sha, so the gate can
|
|
13
|
+
* attribute the commit to ITS OWN repo (`extractCommitPath`) instead of cwd's.
|
|
14
|
+
* - `nagAlreadyInTranscript` — once-per-commit nag dedup, stateless: a prior
|
|
15
|
+
* gate message after the commit means we already nagged (block once, then
|
|
16
|
+
* silence — never loop).
|
|
10
17
|
*/
|
|
18
|
+
/** Marker present in every gate nag (see kawacode-on-stop.ts buildGateReason).
|
|
19
|
+
* Matching on it is backwards-compatible: historical nags contain it too. */
|
|
20
|
+
export declare const NAG_MARKER = "Run complete_intent(intentId=";
|
|
11
21
|
/** Flatten a tool_result `content` (string | array of {type,text}) to plain text. */
|
|
12
22
|
export declare function toolResultText(content: unknown): string;
|
|
13
23
|
/** A Bash command that *invokes* `git commit` (incl. `git -C <path> commit`),
|
|
@@ -28,18 +38,61 @@ export declare function isGitCommitCommand(name: string, cmd: string): boolean;
|
|
|
28
38
|
* is far less disruptive than a false block (the printf-in-transcript bug).
|
|
29
39
|
*/
|
|
30
40
|
export declare function looksLikeCommitOutput(text: string): boolean;
|
|
41
|
+
/** A confirmed commit found in the transcript. */
|
|
42
|
+
export interface ConfirmedCommit {
|
|
43
|
+
/** Transcript line index of the commit tool_use. */
|
|
44
|
+
lineIdx: number;
|
|
45
|
+
/** The Bash command that produced the commit. */
|
|
46
|
+
cmd: string;
|
|
47
|
+
/** Short sha extracted from git's `[<ref> <shorthash>]` success line ('' if unparseable). */
|
|
48
|
+
shortSha: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The most recent CONFIRMED commit that is NOT followed by a complete_intent
|
|
52
|
+
* call — i.e. the commit the gate would nag about — or null when every commit
|
|
53
|
+
* is finalized (or there are no commits).
|
|
54
|
+
*/
|
|
55
|
+
export declare function lastUnfinalizedCommit(transcriptText: string): ConfirmedCommit | null;
|
|
31
56
|
/**
|
|
32
57
|
* True when the transcript shows a SUCCESSFUL `git commit` tool_use that lands
|
|
33
58
|
* after the most recent complete_intent tool_use (or with no complete_intent
|
|
34
59
|
* after it) — i.e. the agent committed without finalizing.
|
|
35
60
|
*
|
|
36
|
-
* A commit counts only when BOTH hold: the command invokes git commit AND its
|
|
37
|
-
* tool_result carries the commit-success signature (not is_error). Requiring
|
|
38
|
-
* the result signature is what stops a command that merely *mentions* "git
|
|
39
|
-
* commit" (e.g. a printf crafting a fixture) from being read as a real commit.
|
|
40
|
-
* A complete_intent call counts even if it later failed (conflicts): the agent
|
|
41
|
-
* tried, so we don't nag.
|
|
42
|
-
*
|
|
43
61
|
* @param transcriptText raw JSONL contents of the Claude Code transcript
|
|
44
62
|
*/
|
|
45
63
|
export declare function detectUncompletedCommit(transcriptText: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Repo attribution for a commit command (loop-fix): the directory the commit
|
|
66
|
+
* actually ran in, when the command states it.
|
|
67
|
+
*
|
|
68
|
+
* 1. `git -C <path> commit …` — the path is on the commit invocation itself
|
|
69
|
+
* (highest precedence).
|
|
70
|
+
* 2. `cd <path> && … git commit …` — the LAST `cd` before the git commit
|
|
71
|
+
* segment. Handles `;` and `&&` chains.
|
|
72
|
+
*
|
|
73
|
+
* Returns null when the command carries no path (the commit ran in the Bash
|
|
74
|
+
* session's cwd — the caller falls back to the hook payload cwd). Quoted paths
|
|
75
|
+
* are unwrapped; relative paths are returned as-is (caller resolves).
|
|
76
|
+
*/
|
|
77
|
+
export declare function extractCommitPath(cmd: string): string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Once-per-commit nag dedup (stateless): true when a prior gate nag already
|
|
80
|
+
* appears in the transcript AFTER the commit — Claude Code records both the
|
|
81
|
+
* block feedback and the degraded advisory as transcript content, so the
|
|
82
|
+
* transcript itself is the memory. Raw line matching (not JSON parsing) keeps
|
|
83
|
+
* this robust to how the harness encodes hook output.
|
|
84
|
+
*/
|
|
85
|
+
export declare function nagAlreadyInTranscript(transcriptText: string, commitLineIdx: number): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Gate-SAVE detection (VALUE_METRICS.md V8): the inverse of an uncompleted
|
|
88
|
+
* commit — a CONFIRMED `git commit` exists AND a complete_intent call lands at
|
|
89
|
+
* or after it (the commit was finalized). Used at the Stop hook to emit the
|
|
90
|
+
* acted-on signal only when a prior gate block held the turn open
|
|
91
|
+
* (`stop_hook_active`) and the agent then completed the intent — i.e. the gate
|
|
92
|
+
* preceded a completion that would otherwise have skipped distillation +
|
|
93
|
+
* block auto-capture.
|
|
94
|
+
*
|
|
95
|
+
* Correlation, not causation: this says "a completion followed a confirmed
|
|
96
|
+
* commit while the turn was held open", not "the gate caused the completion".
|
|
97
|
+
*/
|
|
98
|
+
export declare function detectGateSave(transcriptText: string): boolean;
|
|
@@ -7,7 +7,17 @@
|
|
|
7
7
|
* with complete_intent. We read Claude Code's own transcript (harness
|
|
8
8
|
* introspection — not Muninn's concern) and compare the position of the last
|
|
9
9
|
* SUCCESSFUL commit against the last complete_intent call.
|
|
10
|
+
*
|
|
11
|
+
* The gate consumes three additional pure signals (loop-fix, 2026-07-03):
|
|
12
|
+
* - `lastUnfinalizedCommit` — the commit's command + short sha, so the gate can
|
|
13
|
+
* attribute the commit to ITS OWN repo (`extractCommitPath`) instead of cwd's.
|
|
14
|
+
* - `nagAlreadyInTranscript` — once-per-commit nag dedup, stateless: a prior
|
|
15
|
+
* gate message after the commit means we already nagged (block once, then
|
|
16
|
+
* silence — never loop).
|
|
10
17
|
*/
|
|
18
|
+
/** Marker present in every gate nag (see kawacode-on-stop.ts buildGateReason).
|
|
19
|
+
* Matching on it is backwards-compatible: historical nags contain it too. */
|
|
20
|
+
export const NAG_MARKER = 'Run complete_intent(intentId=';
|
|
11
21
|
/** Flatten a tool_result `content` (string | array of {type,text}) to plain text. */
|
|
12
22
|
export function toolResultText(content) {
|
|
13
23
|
if (typeof content === 'string')
|
|
@@ -45,23 +55,20 @@ export function isGitCommitCommand(name, cmd) {
|
|
|
45
55
|
export function looksLikeCommitOutput(text) {
|
|
46
56
|
return /\[[^\]\n]*\b[0-9a-f]{7,40}\b[^\]\n]*\]/.test(text);
|
|
47
57
|
}
|
|
58
|
+
/** Extract the short sha from git's commit-success line, e.g. `[main 463f33c] msg`. */
|
|
59
|
+
function commitShaFromOutput(text) {
|
|
60
|
+
const m = /\[[^\]\n]*\b([0-9a-f]{7,40})\b[^\]\n]*\]/.exec(text);
|
|
61
|
+
return m ? m[1] : '';
|
|
62
|
+
}
|
|
48
63
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* A commit counts only when BOTH hold: the command invokes git commit AND its
|
|
54
|
-
* tool_result carries the commit-success signature (not is_error). Requiring
|
|
55
|
-
* the result signature is what stops a command that merely *mentions* "git
|
|
56
|
-
* commit" (e.g. a printf crafting a fixture) from being read as a real commit.
|
|
57
|
-
* A complete_intent call counts even if it later failed (conflicts): the agent
|
|
58
|
-
* tried, so we don't nag.
|
|
59
|
-
*
|
|
60
|
-
* @param transcriptText raw JSONL contents of the Claude Code transcript
|
|
64
|
+
* Single transcript pass shared by every detector: collects CONFIRMED commits
|
|
65
|
+
* (command + result signature, not is_error) and the last complete_intent
|
|
66
|
+
* position. A complete_intent call counts even if it later failed (conflicts):
|
|
67
|
+
* the agent tried, so we don't nag.
|
|
61
68
|
*/
|
|
62
|
-
|
|
69
|
+
function scanTranscript(transcriptText) {
|
|
63
70
|
const lines = transcriptText.split('\n');
|
|
64
|
-
const
|
|
71
|
+
const candidates = [];
|
|
65
72
|
const results = new Map();
|
|
66
73
|
let lastCompleteIdx = -1;
|
|
67
74
|
for (let i = 0; i < lines.length; i++) {
|
|
@@ -81,11 +88,12 @@ export function detectUncompletedCommit(transcriptText) {
|
|
|
81
88
|
for (const item of content) {
|
|
82
89
|
if (item?.type === 'tool_use') {
|
|
83
90
|
const name = item.name || '';
|
|
91
|
+
const cmd = item?.input?.command || '';
|
|
84
92
|
if (/complete_intent/.test(name)) {
|
|
85
93
|
lastCompleteIdx = i;
|
|
86
94
|
}
|
|
87
|
-
else if (isGitCommitCommand(name,
|
|
88
|
-
|
|
95
|
+
else if (isGitCommitCommand(name, cmd)) {
|
|
96
|
+
candidates.push({ idx: i, id: item.id, cmd });
|
|
89
97
|
}
|
|
90
98
|
}
|
|
91
99
|
else if (item?.type === 'tool_result' && item.tool_use_id) {
|
|
@@ -96,10 +104,10 @@ export function detectUncompletedCommit(transcriptText) {
|
|
|
96
104
|
}
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
|
-
//
|
|
100
|
-
// result, an errored result, or output lacking the signature does not count.
|
|
101
|
-
|
|
102
|
-
for (const c of
|
|
107
|
+
// Keep only candidates CONFIRMED by their result signature. A candidate with
|
|
108
|
+
// no result, an errored result, or output lacking the signature does not count.
|
|
109
|
+
const commits = [];
|
|
110
|
+
for (const c of candidates) {
|
|
103
111
|
if (!c.id)
|
|
104
112
|
continue;
|
|
105
113
|
const r = results.get(c.id);
|
|
@@ -107,11 +115,112 @@ export function detectUncompletedCommit(transcriptText) {
|
|
|
107
115
|
continue;
|
|
108
116
|
if (!looksLikeCommitOutput(r.text))
|
|
109
117
|
continue;
|
|
110
|
-
|
|
111
|
-
|
|
118
|
+
commits.push({ lineIdx: c.idx, cmd: c.cmd, shortSha: commitShaFromOutput(r.text) });
|
|
119
|
+
}
|
|
120
|
+
return { commits, lastCompleteIdx };
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The most recent CONFIRMED commit that is NOT followed by a complete_intent
|
|
124
|
+
* call — i.e. the commit the gate would nag about — or null when every commit
|
|
125
|
+
* is finalized (or there are no commits).
|
|
126
|
+
*/
|
|
127
|
+
export function lastUnfinalizedCommit(transcriptText) {
|
|
128
|
+
const { commits, lastCompleteIdx } = scanTranscript(transcriptText);
|
|
129
|
+
let last = null;
|
|
130
|
+
for (const c of commits) {
|
|
131
|
+
if (!last || c.lineIdx > last.lineIdx)
|
|
132
|
+
last = c;
|
|
133
|
+
}
|
|
134
|
+
if (!last)
|
|
135
|
+
return null;
|
|
136
|
+
return last.lineIdx > lastCompleteIdx ? last : null;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* True when the transcript shows a SUCCESSFUL `git commit` tool_use that lands
|
|
140
|
+
* after the most recent complete_intent tool_use (or with no complete_intent
|
|
141
|
+
* after it) — i.e. the agent committed without finalizing.
|
|
142
|
+
*
|
|
143
|
+
* @param transcriptText raw JSONL contents of the Claude Code transcript
|
|
144
|
+
*/
|
|
145
|
+
export function detectUncompletedCommit(transcriptText) {
|
|
146
|
+
return lastUnfinalizedCommit(transcriptText) !== null;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Repo attribution for a commit command (loop-fix): the directory the commit
|
|
150
|
+
* actually ran in, when the command states it.
|
|
151
|
+
*
|
|
152
|
+
* 1. `git -C <path> commit …` — the path is on the commit invocation itself
|
|
153
|
+
* (highest precedence).
|
|
154
|
+
* 2. `cd <path> && … git commit …` — the LAST `cd` before the git commit
|
|
155
|
+
* segment. Handles `;` and `&&` chains.
|
|
156
|
+
*
|
|
157
|
+
* Returns null when the command carries no path (the commit ran in the Bash
|
|
158
|
+
* session's cwd — the caller falls back to the hook payload cwd). Quoted paths
|
|
159
|
+
* are unwrapped; relative paths are returned as-is (caller resolves).
|
|
160
|
+
*/
|
|
161
|
+
export function extractCommitPath(cmd) {
|
|
162
|
+
if (!cmd)
|
|
163
|
+
return null;
|
|
164
|
+
const unquote = (s) => {
|
|
165
|
+
if ((s.startsWith('"') && s.endsWith('"')) || (s.startsWith("'") && s.endsWith("'"))) {
|
|
166
|
+
return s.slice(1, -1);
|
|
167
|
+
}
|
|
168
|
+
return s;
|
|
169
|
+
};
|
|
170
|
+
// 1. git -C <path> … commit
|
|
171
|
+
const dashC = /\bgit\s+-C\s+("[^"]+"|'[^']+'|\S+)(?=\s)[^&;|]*\bcommit\b/.exec(cmd);
|
|
172
|
+
if (dashC)
|
|
173
|
+
return unquote(dashC[1]);
|
|
174
|
+
// 2. last `cd <path>` before the git commit segment
|
|
175
|
+
const commitIdx = cmd.search(/\bgit\s+(?:-C\s+\S+\s+)?commit\b/);
|
|
176
|
+
if (commitIdx === -1)
|
|
177
|
+
return null;
|
|
178
|
+
const before = cmd.slice(0, commitIdx);
|
|
179
|
+
let lastCd = null;
|
|
180
|
+
const cdRe = /(?:^|&&|;)\s*cd\s+("[^"]+"|'[^']+'|[^\s;&|]+)/g;
|
|
181
|
+
let m;
|
|
182
|
+
while ((m = cdRe.exec(before)) !== null) {
|
|
183
|
+
lastCd = unquote(m[1]);
|
|
184
|
+
}
|
|
185
|
+
return lastCd;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Once-per-commit nag dedup (stateless): true when a prior gate nag already
|
|
189
|
+
* appears in the transcript AFTER the commit — Claude Code records both the
|
|
190
|
+
* block feedback and the degraded advisory as transcript content, so the
|
|
191
|
+
* transcript itself is the memory. Raw line matching (not JSON parsing) keeps
|
|
192
|
+
* this robust to how the harness encodes hook output.
|
|
193
|
+
*/
|
|
194
|
+
export function nagAlreadyInTranscript(transcriptText, commitLineIdx) {
|
|
195
|
+
const lines = transcriptText.split('\n');
|
|
196
|
+
for (let i = commitLineIdx + 1; i < lines.length; i++) {
|
|
197
|
+
if (lines[i].includes(NAG_MARKER))
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Gate-SAVE detection (VALUE_METRICS.md V8): the inverse of an uncompleted
|
|
204
|
+
* commit — a CONFIRMED `git commit` exists AND a complete_intent call lands at
|
|
205
|
+
* or after it (the commit was finalized). Used at the Stop hook to emit the
|
|
206
|
+
* acted-on signal only when a prior gate block held the turn open
|
|
207
|
+
* (`stop_hook_active`) and the agent then completed the intent — i.e. the gate
|
|
208
|
+
* preceded a completion that would otherwise have skipped distillation +
|
|
209
|
+
* block auto-capture.
|
|
210
|
+
*
|
|
211
|
+
* Correlation, not causation: this says "a completion followed a confirmed
|
|
212
|
+
* commit while the turn was held open", not "the gate caused the completion".
|
|
213
|
+
*/
|
|
214
|
+
export function detectGateSave(transcriptText) {
|
|
215
|
+
const { commits, lastCompleteIdx } = scanTranscript(transcriptText);
|
|
216
|
+
let lastCommitIdx = -1;
|
|
217
|
+
for (const c of commits) {
|
|
218
|
+
if (c.lineIdx > lastCommitIdx)
|
|
219
|
+
lastCommitIdx = c.lineIdx;
|
|
112
220
|
}
|
|
113
221
|
if (lastCommitIdx === -1)
|
|
114
222
|
return false;
|
|
115
|
-
|
|
223
|
+
// A complete_intent at or after the last confirmed commit = the commit is finalized.
|
|
224
|
+
return lastCompleteIdx >= lastCommitIdx;
|
|
116
225
|
}
|
|
117
226
|
//# sourceMappingURL=uncompleted-commit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uncompleted-commit.js","sourceRoot":"","sources":["../../src/stop/uncompleted-commit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"uncompleted-commit.js","sourceRoot":"","sources":["../../src/stop/uncompleted-commit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { test } from 'node:test';
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
|
-
import { detectUncompletedCommit, isGitCommitCommand, looksLikeCommitOutput, toolResultText, } from './uncompleted-commit.js';
|
|
3
|
+
import { detectGateSave, detectUncompletedCommit, extractCommitPath, isGitCommitCommand, lastUnfinalizedCommit, looksLikeCommitOutput, NAG_MARKER, nagAlreadyInTranscript, toolResultText, } from './uncompleted-commit.js';
|
|
4
4
|
/** A realistic `git commit` success result (the bracketed short-hash line). */
|
|
5
5
|
const COMMIT_OK = '[main 1a2b3c4] Add the thing\n 1 file changed, 2 insertions(+)';
|
|
6
6
|
// ---- transcript line builders (Claude Code JSONL shape) ----
|
|
@@ -102,4 +102,103 @@ test('detectUncompletedCommit', async (t) => {
|
|
|
102
102
|
assert.equal(detectUncompletedCommit(t1), true);
|
|
103
103
|
});
|
|
104
104
|
});
|
|
105
|
+
test('detectGateSave (VALUE_METRICS V8 acted-on)', async (t) => {
|
|
106
|
+
await t.test('confirmed commit then complete_intent → true (the inverse of uncompleted)', () => {
|
|
107
|
+
const t1 = [bash('git commit -m "x"', 'c1'), result('c1', { text: COMMIT_OK }), toolUse(COMPLETE, 'k1'), result('k1')].join('\n');
|
|
108
|
+
assert.equal(detectGateSave(t1), true);
|
|
109
|
+
});
|
|
110
|
+
await t.test('confirmed commit with NO completion → false (gate would still fire, not a save)', () => {
|
|
111
|
+
const t1 = [bash('git commit -m "x"', 'c1'), result('c1', { text: COMMIT_OK })].join('\n');
|
|
112
|
+
assert.equal(detectGateSave(t1), false);
|
|
113
|
+
});
|
|
114
|
+
await t.test('no commit at all → false', () => {
|
|
115
|
+
const t1 = [toolUse(COMPLETE, 'k1'), result('k1')].join('\n');
|
|
116
|
+
assert.equal(detectGateSave(t1), false);
|
|
117
|
+
});
|
|
118
|
+
await t.test('command merely MENTIONS "git commit" then complete → false (no confirmed commit)', () => {
|
|
119
|
+
const printf = bash(`printf '%s' 'git commit -m x' > /tmp/f`, 'p1');
|
|
120
|
+
const t1 = [printf, result('p1', { text: '' }), toolUse(COMPLETE, 'k1'), result('k1')].join('\n');
|
|
121
|
+
assert.equal(detectGateSave(t1), false);
|
|
122
|
+
});
|
|
123
|
+
await t.test('complete BEFORE the last confirmed commit → false (commit not finalized)', () => {
|
|
124
|
+
const t1 = [
|
|
125
|
+
toolUse(COMPLETE, 'k1'), result('k1'),
|
|
126
|
+
bash('git commit -m "later"', 'c1'), result('c1', { text: COMMIT_OK }),
|
|
127
|
+
].join('\n');
|
|
128
|
+
assert.equal(detectGateSave(t1), false);
|
|
129
|
+
});
|
|
130
|
+
await t.test('failed commit (is_error) then complete → false', () => {
|
|
131
|
+
const t1 = [bash('git commit -m "x"', 'c1'), result('c1', { isError: true, text: 'fatal' }), toolUse(COMPLETE, 'k1'), result('k1')].join('\n');
|
|
132
|
+
assert.equal(detectGateSave(t1), false);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
// ---- loop-fix additions (2026-07-03) ----
|
|
136
|
+
test('lastUnfinalizedCommit', async (t) => {
|
|
137
|
+
await t.test('returns cmd + shortSha + position of the unfinalized commit', () => {
|
|
138
|
+
const transcript = [
|
|
139
|
+
bash('cd /repos/docs && git add A.md && git commit -m "docs"', 'c1'),
|
|
140
|
+
result('c1', { text: '[main ac376bd] docs' }),
|
|
141
|
+
].join('\n');
|
|
142
|
+
const c = lastUnfinalizedCommit(transcript);
|
|
143
|
+
assert.ok(c);
|
|
144
|
+
assert.equal(c.shortSha, 'ac376bd');
|
|
145
|
+
assert.match(c.cmd, /cd \/repos\/docs/);
|
|
146
|
+
});
|
|
147
|
+
await t.test('finalized commit → null', () => {
|
|
148
|
+
const transcript = [
|
|
149
|
+
bash('git commit -m "x"', 'c1'),
|
|
150
|
+
result('c1', { text: COMMIT_OK }),
|
|
151
|
+
toolUse(COMPLETE, 'k1'),
|
|
152
|
+
].join('\n');
|
|
153
|
+
assert.equal(lastUnfinalizedCommit(transcript), null);
|
|
154
|
+
});
|
|
155
|
+
await t.test('unconfirmed commit (no success line) → null', () => {
|
|
156
|
+
const transcript = [
|
|
157
|
+
bash('git commit -m "x"', 'c1'),
|
|
158
|
+
result('c1', { text: 'nothing to commit, working tree clean' }),
|
|
159
|
+
].join('\n');
|
|
160
|
+
assert.equal(lastUnfinalizedCommit(transcript), null);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
test('extractCommitPath', async (t) => {
|
|
164
|
+
await t.test('git -C path', () => assert.equal(extractCommitPath('git -C /repos/api commit -am "x"'), '/repos/api'));
|
|
165
|
+
await t.test('leading cd && commit', () => assert.equal(extractCommitPath('cd /repos/docs && git add -A && git commit -m "x"'), '/repos/docs'));
|
|
166
|
+
await t.test('last cd before commit wins', () => assert.equal(extractCommitPath('cd /a && ls; cd /b && git commit -m "x"'), '/b'));
|
|
167
|
+
await t.test('quoted path unwrapped', () => assert.equal(extractCommitPath('cd "/repos/my docs" && git commit -m "x"'), '/repos/my docs'));
|
|
168
|
+
await t.test('git -C wins over cd', () => assert.equal(extractCommitPath('cd /a && git -C /b commit -m "x"'), '/b'));
|
|
169
|
+
await t.test('no path → null', () => assert.equal(extractCommitPath('git add -A && git commit -m "x"'), null));
|
|
170
|
+
await t.test('relative path returned as-is', () => assert.equal(extractCommitPath('cd kawa.dev-doc && git commit -m "x"'), 'kawa.dev-doc'));
|
|
171
|
+
});
|
|
172
|
+
test('nagAlreadyInTranscript', async (t) => {
|
|
173
|
+
const commitLine = bash('git commit -m "x"', 'c1');
|
|
174
|
+
const commitResult = result('c1', { text: COMMIT_OK });
|
|
175
|
+
const nagLine = JSON.stringify({
|
|
176
|
+
type: 'user',
|
|
177
|
+
message: {
|
|
178
|
+
role: 'user',
|
|
179
|
+
content: [{ type: 'text', text: `Reminder — You committed but didn't finalize it. ${NAG_MARKER}"abc", status="committed")` }],
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
await t.test('nag after the commit → true (suppress)', () => {
|
|
183
|
+
const transcript = [commitLine, commitResult, nagLine].join('\n');
|
|
184
|
+
assert.equal(nagAlreadyInTranscript(transcript, 0), true);
|
|
185
|
+
});
|
|
186
|
+
await t.test('nag BEFORE the commit (older nag for an older commit) → false', () => {
|
|
187
|
+
const transcript = [nagLine, commitLine, commitResult].join('\n');
|
|
188
|
+
assert.equal(nagAlreadyInTranscript(transcript, 1), false);
|
|
189
|
+
});
|
|
190
|
+
await t.test('no nag at all → false', () => {
|
|
191
|
+
const transcript = [commitLine, commitResult].join('\n');
|
|
192
|
+
assert.equal(nagAlreadyInTranscript(transcript, 0), false);
|
|
193
|
+
});
|
|
194
|
+
await t.test('historical nag text (pre-marker era) still matches', () => {
|
|
195
|
+
// The marker phrase has been part of the nag wording since the gate shipped.
|
|
196
|
+
const legacy = JSON.stringify({
|
|
197
|
+
type: 'user',
|
|
198
|
+
message: { role: 'user', content: [{ type: 'text', text: 'Run complete_intent(intentId="6a48", status="committed", commitSha="463f")' }] },
|
|
199
|
+
});
|
|
200
|
+
const transcript = [commitLine, commitResult, legacy].join('\n');
|
|
201
|
+
assert.equal(nagAlreadyInTranscript(transcript, 0), true);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
105
204
|
//# sourceMappingURL=uncompleted-commit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uncompleted-commit.test.js","sourceRoot":"","sources":["../../src/stop/uncompleted-commit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uncompleted-commit.test.js","sourceRoot":"","sources":["../../src/stop/uncompleted-commit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-injection telemetry (VALUE_METRICS.md Phase 2, Track B).
|
|
3
|
+
*
|
|
4
|
+
* At each of the 5 injection points where Kawa adds context to an agent's turn,
|
|
5
|
+
* we SIZE the payload we're about to inject (≈ chars/4 tokens) and emit a
|
|
6
|
+
* fire-and-forget IPC to Muninn, which forwards it to kawa.api. This is the COST
|
|
7
|
+
* side of the headline ratio ("Kawa adds ≈N tokens/turn"), paired with an
|
|
8
|
+
* "acted on" signal for the benefit side.
|
|
9
|
+
*
|
|
10
|
+
* Keep-mcp-thin: this module ONLY sizes + hashes + forwards. No storage, no API
|
|
11
|
+
* client, no business logic — Muninn owns the forward and the API owns the
|
|
12
|
+
* store. Every emit is fire-and-forget and swallows its own errors, so telemetry
|
|
13
|
+
* can never block or fail a tool call or a hook.
|
|
14
|
+
*
|
|
15
|
+
* Zero-knowledge: we emit token COUNTS, item COUNTS, and opaque decision ids
|
|
16
|
+
* only — never the strings measured. The repo origin is HASHED here before it
|
|
17
|
+
* leaves the process (`hashOrigin`, byte-identical to
|
|
18
|
+
* kawa.api/scripts/value-report.ts so `--repo` filtering matches).
|
|
19
|
+
*/
|
|
20
|
+
export type InjectionType = 'recall' | 'pre_edit' | 'stop_gate' | 'stop_collision' | 'check_active';
|
|
21
|
+
/** ≈ tokens for a string payload (chars/4, rounded up). Labelled "≈" wherever published. */
|
|
22
|
+
export declare function estimateTokens(s: string | undefined | null): number;
|
|
23
|
+
/**
|
|
24
|
+
* Hash a repo origin for the zero-knowledge aggregate. MUST stay byte-identical
|
|
25
|
+
* to `hashOrigin` in kawa.api/scripts/value-report.ts (which hashes the
|
|
26
|
+
* lowercased origin) so a `--repo <origin>` filter matches these rows. Callers
|
|
27
|
+
* pass the lowercased origin.
|
|
28
|
+
*/
|
|
29
|
+
export declare function hashOrigin(origin: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Emit one context-injection sizing. Fire-and-forget: returns a resolved
|
|
32
|
+
* promise even on failure. Callers in the long-lived server may ignore the
|
|
33
|
+
* result; hook callers should include it in their pre-disconnect await set so
|
|
34
|
+
* the socket write flushes before the process exits.
|
|
35
|
+
*/
|
|
36
|
+
export declare function emitInjection(args: {
|
|
37
|
+
type: InjectionType;
|
|
38
|
+
tokensEst: number;
|
|
39
|
+
itemCount: number;
|
|
40
|
+
/** raw repo origin — hashed here before it leaves the process */
|
|
41
|
+
repoOrigin: string;
|
|
42
|
+
/** recall only — surfaced decision ids, for the read-side recall→supersedes join */
|
|
43
|
+
decisionIds?: string[];
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Emit one "acted on" signal (R2 acted-on rate; V8 gate-saves when
|
|
47
|
+
* type='stop_gate'). Fire-and-forget.
|
|
48
|
+
*/
|
|
49
|
+
export declare function emitActedOn(args: {
|
|
50
|
+
type: InjectionType;
|
|
51
|
+
/** the surfaced id that was used (e.g. a decisionId) */
|
|
52
|
+
refId?: string;
|
|
53
|
+
repoOrigin: string;
|
|
54
|
+
}): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Close the telemetry turn for this session (Stop hook). Muninn OWNS turnSeq and
|
|
57
|
+
* stamps the real turnId on injections; this signal just tells it the turn ended
|
|
58
|
+
* so the NEXT injection opens a fresh turnId. Keep-mcp-thin: no seq/state here.
|
|
59
|
+
*
|
|
60
|
+
* MUST be sent AFTER this turn's stop_gate/stop_collision injections have flushed
|
|
61
|
+
* so they attribute to the closing turn — the Stop hook awaits those emits first.
|
|
62
|
+
* No body needed: muninn-ipc stamps `_agentId = SESSION_ID`, which Muninn resolves
|
|
63
|
+
* to the same session key the injections used. Fire-and-forget.
|
|
64
|
+
*/
|
|
65
|
+
export declare function emitTurnEnd(): Promise<void>;
|