@kawacode/mcp 8.0.1 → 8.1.0
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/build/index.js +62 -1
- package/build/index.js.map +1 -1
- package/build/kawacode-on-stop.js +53 -0
- package/build/kawacode-on-stop.js.map +1 -1
- package/build/stop/referenced-ids.d.ts +49 -0
- package/build/stop/referenced-ids.js +161 -0
- package/build/stop/referenced-ids.js.map +1 -0
- package/build/stop/referenced-ids.test.d.ts +1 -0
- package/build/stop/referenced-ids.test.js +149 -0
- package/build/stop/referenced-ids.test.js.map +1 -0
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
-
import { connectToMuninn, ensureRepo } from './services/muninn-ipc.js';
|
|
5
|
+
import { connectToMuninn, disconnect, ensureRepo } from './services/muninn-ipc.js';
|
|
6
6
|
import { resolveMangledArgs, describeChainedArgs } from './tools/_mangled-args.js';
|
|
7
7
|
import { allTools, getRelevantContext, checkActiveIntent, createAndActivateIntent, activateIntent, resumeIntent, getIntentsForFile, listTeamIntents, completeIntent, updateIntent, logWork, recordDecision, getSessionDecisions, getProjectDecisions, getDecisionDetail, editSessionDecision, detectIntentConflicts, inferHistory, getResolutionContext, arbiterResolve, arbiterApply } from './tools/index.js';
|
|
8
8
|
import { prompts } from './prompts/intent-first-workflow.js';
|
|
@@ -265,6 +265,39 @@ function isRequired(zodType) {
|
|
|
265
265
|
const typeName = zodType._def?.typeName;
|
|
266
266
|
return typeName !== 'ZodOptional' && typeName !== 'ZodDefault';
|
|
267
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Terminate the server process, closing the Muninn socket on the way out.
|
|
270
|
+
*
|
|
271
|
+
* Until this existed the process had NO self-exit path at all. The SDK's
|
|
272
|
+
* `StdioServerTransport.close()` only calls `_stdin.pause()` and fires
|
|
273
|
+
* `onclose?.()` — it never exits — and the Muninn socket is a live handle that
|
|
274
|
+
* pins libuv's event loop indefinitely, so nothing ended the process except the
|
|
275
|
+
* parent killing it. A parent that dies without getting to that (SIGKILL,
|
|
276
|
+
* crash, force-quit) left the server running until reboot.
|
|
277
|
+
*
|
|
278
|
+
* That is worse than a stray process: the leaked server keeps its Muninn socket
|
|
279
|
+
* CONNECTED, so Muninn never observes a disconnect. The referenced-entities
|
|
280
|
+
* surface (DECISION_LINKING §6.8D) evicts a session's group on socket loss, and
|
|
281
|
+
* a leak defeats that in exactly the case eviction exists for.
|
|
282
|
+
*
|
|
283
|
+
* Idempotent: `onclose` and a signal can both fire for one shutdown.
|
|
284
|
+
*/
|
|
285
|
+
let shuttingDown = false;
|
|
286
|
+
function shutdown(reason) {
|
|
287
|
+
if (shuttingDown)
|
|
288
|
+
return;
|
|
289
|
+
shuttingDown = true;
|
|
290
|
+
console.error(`Kawa Intents MCP Server shutting down (${reason})`);
|
|
291
|
+
try {
|
|
292
|
+
// Closes the socket so Muninn sees the disconnect promptly, and rejects any
|
|
293
|
+
// in-flight requests rather than leaving their promises dangling.
|
|
294
|
+
disconnect();
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
console.error(`Shutdown teardown failed: ${err.message}`);
|
|
298
|
+
}
|
|
299
|
+
process.exit(0);
|
|
300
|
+
}
|
|
268
301
|
// Main entry point
|
|
269
302
|
async function main() {
|
|
270
303
|
// Log to stderr (stdout is reserved for MCP protocol)
|
|
@@ -281,6 +314,34 @@ async function main() {
|
|
|
281
314
|
// Start the stdio transport
|
|
282
315
|
const transport = new StdioServerTransport();
|
|
283
316
|
await server.connect(transport);
|
|
317
|
+
// The MCP stdio contract's shutdown signal is the client closing our stdin.
|
|
318
|
+
//
|
|
319
|
+
// ⚠️ `StdioServerTransport` does NOT implement it. Read its `start()`: it
|
|
320
|
+
// registers `data` and `error` on stdin and nothing else — no `end`, no
|
|
321
|
+
// `close`. So `transport.close()` is never called on EOF, `onclose` never
|
|
322
|
+
// fires, and a server that waits for it waits forever. Verified against
|
|
323
|
+
// @modelcontextprotocol/sdk's `server/stdio.js` after `server.onclose` alone
|
|
324
|
+
// failed to exit in testing. Every stdio server on this SDK has to wire EOF
|
|
325
|
+
// itself; there is no built-in path.
|
|
326
|
+
//
|
|
327
|
+
// This also covers an abruptly-killed parent: the kernel closes the dead
|
|
328
|
+
// parent's write end of the stdin pipe and the read end EOFs. Verified on the
|
|
329
|
+
// real `parent -> npm exec -> node` topology with SIGKILL, through the npm
|
|
330
|
+
// wrapper layer — which is why no `ppid` watchdog is needed.
|
|
331
|
+
process.stdin.on('end', () => shutdown('stdin closed'));
|
|
332
|
+
process.stdin.on('close', () => shutdown('stdin closed'));
|
|
333
|
+
// Distinct trigger, same action: something closed the transport
|
|
334
|
+
// programmatically. `Protocol.connect()` wraps `transport.onclose` and
|
|
335
|
+
// forwards here after its own cleanup, so this is the supported attachment
|
|
336
|
+
// point — assigning `transport.onclose` post-connect would clobber that
|
|
337
|
+
// wrapper. This is not a fallback for the EOF path above; it is a different
|
|
338
|
+
// event that also means "stop serving".
|
|
339
|
+
server.onclose = () => shutdown('stdio transport closed');
|
|
340
|
+
// Not needed to *terminate* — default disposition already does that — but it
|
|
341
|
+
// closes the Muninn socket cleanly instead of leaving Muninn to notice a
|
|
342
|
+
// half-open connection.
|
|
343
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
344
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
284
345
|
console.error('Kawa Intents MCP Server running');
|
|
285
346
|
}
|
|
286
347
|
main().catch((error) => {
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,SAAS,EACT,QAAQ,EACT,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,7 @@ import { readFileSync } from 'node:fs';
|
|
|
64
64
|
import { execSync } from 'node:child_process';
|
|
65
65
|
import { resolve as resolvePath } from 'node:path';
|
|
66
66
|
import { connectToMuninn, request, disconnect, setQuiet } from './services/muninn-ipc.js';
|
|
67
|
+
import { harvestReferences } from './stop/referenced-ids.js';
|
|
67
68
|
import { resolveOrigin } from './tools/resolve-origin.js';
|
|
68
69
|
import { lastUnfinalizedCommit, nagAlreadyInTranscript, extractCommitPath, detectGateSave } from './stop/uncompleted-commit.js';
|
|
69
70
|
import { emitInjection, emitActedOn, emitTurnEnd, estimateTokens } from './telemetry.js';
|
|
@@ -302,6 +303,57 @@ async function emitGateSaveSignal(payload) {
|
|
|
302
303
|
}
|
|
303
304
|
catch { /* fire-and-forget */ }
|
|
304
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* Job 4 — report the entity references this turn's answer named
|
|
308
|
+
* (DECISION_LINKING §6.8). Fire-and-forget: it produces no hook output and
|
|
309
|
+
* never influences whether the turn ends.
|
|
310
|
+
*
|
|
311
|
+
* FAILS CLOSED on a missing `CLAUDE_CODE_SESSION_ID` (§6.8E1). This hook is a
|
|
312
|
+
* DIFFERENT PROCESS from the MCP server, and each derives its session id from
|
|
313
|
+
* that variable independently — when it is set they agree by construction; when
|
|
314
|
+
* it is absent each falls back to its own random id, and the record would be
|
|
315
|
+
* filed under a session that owns nothing. A missing group is honest; a phantom
|
|
316
|
+
* one is not, and it fails silently.
|
|
317
|
+
*/
|
|
318
|
+
async function reportReferencedEntities(payload) {
|
|
319
|
+
if (process.env.KAWA_REFERENCED_ENTITIES === 'off')
|
|
320
|
+
return;
|
|
321
|
+
const cwd = payload.cwd;
|
|
322
|
+
const transcriptPath = payload.transcript_path;
|
|
323
|
+
if (!cwd || !transcriptPath)
|
|
324
|
+
return;
|
|
325
|
+
const sessionId = process.env.CLAUDE_CODE_SESSION_ID;
|
|
326
|
+
if (!sessionId)
|
|
327
|
+
return; // see the fail-closed note above
|
|
328
|
+
let transcript;
|
|
329
|
+
try {
|
|
330
|
+
transcript = readFileSync(transcriptPath, 'utf8');
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const { candidates, knownFull, firstRequest } = harvestReferences(transcript);
|
|
336
|
+
if (candidates.length === 0)
|
|
337
|
+
return;
|
|
338
|
+
let repoOrigin;
|
|
339
|
+
try {
|
|
340
|
+
repoOrigin = resolveOrigin(undefined, cwd);
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
if (!repoOrigin)
|
|
346
|
+
return;
|
|
347
|
+
// Tokens, never prose. Muninn resolves ids to labels and decides which of
|
|
348
|
+
// them name anything — the hook stays a lexer.
|
|
349
|
+
await request('session', 'referenced-entities', {
|
|
350
|
+
repoOrigin,
|
|
351
|
+
sessionId,
|
|
352
|
+
candidates,
|
|
353
|
+
knownFull,
|
|
354
|
+
label: firstRequest,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
305
357
|
async function main() {
|
|
306
358
|
const captureOff = process.env.KAWA_THOUGHT_CAPTURE === 'off';
|
|
307
359
|
const collisionOff = process.env.KAWA_STOP_COLLISION_CHECK === 'off';
|
|
@@ -335,6 +387,7 @@ async function main() {
|
|
|
335
387
|
// signal (VALUE_METRICS Phase 2).
|
|
336
388
|
const captureTasks = [];
|
|
337
389
|
captureTasks.push(emitGateSaveSignal(payload));
|
|
390
|
+
captureTasks.push(reportReferencedEntities(payload).catch(() => { }));
|
|
338
391
|
if (!captureOff && sessionId && transcriptPath) {
|
|
339
392
|
captureTasks.push(request('capture-thoughts', 'capture', {
|
|
340
393
|
sessionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kawacode-on-stop.js","sourceRoot":"","sources":["../src/kawacode-on-stop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kawacode-on-stop.js","sourceRoot":"","sources":["../src/kawacode-on-stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harvest entity references out of the session transcript (DECISION_LINKING §6.8A).
|
|
3
|
+
*
|
|
4
|
+
* Two sets, both from one read of the file:
|
|
5
|
+
*
|
|
6
|
+
* - `candidates` — hex tokens the agent WROTE in this turn's prose. Typically
|
|
7
|
+
* 8-char decision prefixes and full 24-char intent ids.
|
|
8
|
+
* - `knownFull` — full-form ids appearing in kawa TOOL RESULTS anywhere in the
|
|
9
|
+
* session. The entities this session has demonstrably handled.
|
|
10
|
+
*
|
|
11
|
+
* `knownFull` is a prefix→full-id disambiguator, not a source of labels; Muninn
|
|
12
|
+
* resolves labels from its own memo. Sending tokens rather than prose also keeps
|
|
13
|
+
* the payload tiny and avoids shipping the assistant's output over IPC.
|
|
14
|
+
*
|
|
15
|
+
* # Why "this turn", not "the last assistant message"
|
|
16
|
+
*
|
|
17
|
+
* The design said to read the last assistant message. Verified against a real
|
|
18
|
+
* transcript, that is wrong: ONE turn produces many `type: "assistant"` lines —
|
|
19
|
+
* one per tool call — so the final line usually holds a single trailing
|
|
20
|
+
* sentence. In a 415-assistant-line transcript only 79 lines carried text at
|
|
21
|
+
* all. Reading just the last one would silently miss most of what the agent
|
|
22
|
+
* wrote, and the failure would look like an under-populated panel rather than a
|
|
23
|
+
* bug.
|
|
24
|
+
*
|
|
25
|
+
* A turn is therefore delimited by the last REAL user message — one the human
|
|
26
|
+
* typed, not the synthetic `user` messages that carry `tool_result` blocks back
|
|
27
|
+
* to the model.
|
|
28
|
+
*
|
|
29
|
+
* # Git short SHAs
|
|
30
|
+
*
|
|
31
|
+
* Not filtered, because they cannot be: a short SHA and a truncated decision id
|
|
32
|
+
* are the same shape. They are eliminated downstream by resolution — a SHA names
|
|
33
|
+
* no decision, so it resolves to nothing and never reaches the panel.
|
|
34
|
+
*/
|
|
35
|
+
export interface Harvest {
|
|
36
|
+
/** Hex tokens the agent wrote this turn. */
|
|
37
|
+
candidates: string[];
|
|
38
|
+
/** Full-form ids seen in kawa tool results, this session. */
|
|
39
|
+
knownFull: string[];
|
|
40
|
+
/** The session's first user request, used as a group label when the session
|
|
41
|
+
* has no intent — the only label some repos will ever show. */
|
|
42
|
+
firstRequest: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Scan a transcript once and return both sets plus the session's opening ask.
|
|
46
|
+
*/
|
|
47
|
+
export declare function harvestReferences(transcriptText: string): Harvest;
|
|
48
|
+
/** A full id: canonical UUID (decision) or 24 hex characters (intent ObjectId). */
|
|
49
|
+
export declare function isFullId(token: string): boolean;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harvest entity references out of the session transcript (DECISION_LINKING §6.8A).
|
|
3
|
+
*
|
|
4
|
+
* Two sets, both from one read of the file:
|
|
5
|
+
*
|
|
6
|
+
* - `candidates` — hex tokens the agent WROTE in this turn's prose. Typically
|
|
7
|
+
* 8-char decision prefixes and full 24-char intent ids.
|
|
8
|
+
* - `knownFull` — full-form ids appearing in kawa TOOL RESULTS anywhere in the
|
|
9
|
+
* session. The entities this session has demonstrably handled.
|
|
10
|
+
*
|
|
11
|
+
* `knownFull` is a prefix→full-id disambiguator, not a source of labels; Muninn
|
|
12
|
+
* resolves labels from its own memo. Sending tokens rather than prose also keeps
|
|
13
|
+
* the payload tiny and avoids shipping the assistant's output over IPC.
|
|
14
|
+
*
|
|
15
|
+
* # Why "this turn", not "the last assistant message"
|
|
16
|
+
*
|
|
17
|
+
* The design said to read the last assistant message. Verified against a real
|
|
18
|
+
* transcript, that is wrong: ONE turn produces many `type: "assistant"` lines —
|
|
19
|
+
* one per tool call — so the final line usually holds a single trailing
|
|
20
|
+
* sentence. In a 415-assistant-line transcript only 79 lines carried text at
|
|
21
|
+
* all. Reading just the last one would silently miss most of what the agent
|
|
22
|
+
* wrote, and the failure would look like an under-populated panel rather than a
|
|
23
|
+
* bug.
|
|
24
|
+
*
|
|
25
|
+
* A turn is therefore delimited by the last REAL user message — one the human
|
|
26
|
+
* typed, not the synthetic `user` messages that carry `tool_result` blocks back
|
|
27
|
+
* to the model.
|
|
28
|
+
*
|
|
29
|
+
* # Git short SHAs
|
|
30
|
+
*
|
|
31
|
+
* Not filtered, because they cannot be: a short SHA and a truncated decision id
|
|
32
|
+
* are the same shape. They are eliminated downstream by resolution — a SHA names
|
|
33
|
+
* no decision, so it resolves to nothing and never reaches the panel.
|
|
34
|
+
*/
|
|
35
|
+
/** Full UUID, or any hex run of 8+ characters (covers 24-char ObjectIds and
|
|
36
|
+
* 8-char prefixes alike). UUID first: alternation order decides which wins. */
|
|
37
|
+
const ID_LIKE = /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b|\b[0-9a-f]{8,}\b/gi;
|
|
38
|
+
/** A tool whose results are worth harvesting full ids from. */
|
|
39
|
+
function isKawaTool(name) {
|
|
40
|
+
return /kawa/i.test(name);
|
|
41
|
+
}
|
|
42
|
+
/** Flatten a content item's text payload to a plain string. */
|
|
43
|
+
function itemText(item) {
|
|
44
|
+
if (typeof item?.text === 'string')
|
|
45
|
+
return item.text;
|
|
46
|
+
const c = item?.content;
|
|
47
|
+
if (typeof c === 'string')
|
|
48
|
+
return c;
|
|
49
|
+
if (Array.isArray(c)) {
|
|
50
|
+
return c.map((p) => (typeof p?.text === 'string' ? p.text : '')).join('\n');
|
|
51
|
+
}
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* True for a message that represents the human speaking.
|
|
56
|
+
*
|
|
57
|
+
* `tool_result` blocks come back as `user` messages too, so role alone cannot
|
|
58
|
+
* delimit a turn. A real prompt carries a string content, or an array with a
|
|
59
|
+
* `text` block in it.
|
|
60
|
+
*/
|
|
61
|
+
function isRealUserMessage(obj) {
|
|
62
|
+
if (obj?.type !== 'user')
|
|
63
|
+
return false;
|
|
64
|
+
const content = obj?.message?.content;
|
|
65
|
+
if (typeof content === 'string')
|
|
66
|
+
return content.trim().length > 0;
|
|
67
|
+
if (!Array.isArray(content))
|
|
68
|
+
return false;
|
|
69
|
+
return content.some((it) => it?.type === 'text' && typeof it.text === 'string');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Scan a transcript once and return both sets plus the session's opening ask.
|
|
73
|
+
*/
|
|
74
|
+
export function harvestReferences(transcriptText) {
|
|
75
|
+
const lines = transcriptText.split('\n');
|
|
76
|
+
// Pass 1 — locate this turn, remember tool names, and collect tool results.
|
|
77
|
+
let turnStart = 0;
|
|
78
|
+
let firstRequest = '';
|
|
79
|
+
const kawaToolUseIds = new Set();
|
|
80
|
+
const resultsByToolUseId = new Map();
|
|
81
|
+
for (let i = 0; i < lines.length; i++) {
|
|
82
|
+
const ln = lines[i].trim();
|
|
83
|
+
if (!ln)
|
|
84
|
+
continue;
|
|
85
|
+
let obj;
|
|
86
|
+
try {
|
|
87
|
+
obj = JSON.parse(ln);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (isRealUserMessage(obj)) {
|
|
93
|
+
turnStart = i;
|
|
94
|
+
if (!firstRequest) {
|
|
95
|
+
const content = obj.message.content;
|
|
96
|
+
const text = typeof content === 'string'
|
|
97
|
+
? content
|
|
98
|
+
: content.find((it) => it?.type === 'text')?.text || '';
|
|
99
|
+
firstRequest = text.replace(/\s+/g, ' ').trim().slice(0, 120);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const content = obj?.message?.content;
|
|
103
|
+
if (!Array.isArray(content))
|
|
104
|
+
continue;
|
|
105
|
+
for (const item of content) {
|
|
106
|
+
if (item?.type === 'tool_use' && item.id && isKawaTool(item.name || '')) {
|
|
107
|
+
kawaToolUseIds.add(item.id);
|
|
108
|
+
}
|
|
109
|
+
else if (item?.type === 'tool_result' && item.tool_use_id) {
|
|
110
|
+
resultsByToolUseId.set(item.tool_use_id, itemText(item));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Pass 2 — the current turn's assistant prose. `thinking` blocks are excluded
|
|
115
|
+
// deliberately: the panel reflects what the agent SAID, and the user never saw
|
|
116
|
+
// the reasoning trace as an answer.
|
|
117
|
+
const written = [];
|
|
118
|
+
for (let i = turnStart; i < lines.length; i++) {
|
|
119
|
+
const ln = lines[i].trim();
|
|
120
|
+
if (!ln)
|
|
121
|
+
continue;
|
|
122
|
+
let obj;
|
|
123
|
+
try {
|
|
124
|
+
obj = JSON.parse(ln);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (obj?.type !== 'assistant')
|
|
130
|
+
continue;
|
|
131
|
+
const content = obj?.message?.content;
|
|
132
|
+
if (!Array.isArray(content))
|
|
133
|
+
continue;
|
|
134
|
+
for (const item of content) {
|
|
135
|
+
if (item?.type === 'text' && typeof item.text === 'string')
|
|
136
|
+
written.push(item.text);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const candidates = dedupe(matchIds(written.join('\n')));
|
|
140
|
+
// Full ids from kawa tool results only. A full id is one that needs no
|
|
141
|
+
// disambiguation, so prefixes found here are of no use and are dropped.
|
|
142
|
+
const knownFull = dedupe([...kawaToolUseIds]
|
|
143
|
+
.map((id) => resultsByToolUseId.get(id) || '')
|
|
144
|
+
.flatMap((text) => matchIds(text))
|
|
145
|
+
.filter(isFullId));
|
|
146
|
+
return { candidates, knownFull, firstRequest };
|
|
147
|
+
}
|
|
148
|
+
function matchIds(text) {
|
|
149
|
+
if (!text)
|
|
150
|
+
return [];
|
|
151
|
+
return (text.match(ID_LIKE) || []).map((s) => s.toLowerCase());
|
|
152
|
+
}
|
|
153
|
+
/** A full id: canonical UUID (decision) or 24 hex characters (intent ObjectId). */
|
|
154
|
+
export function isFullId(token) {
|
|
155
|
+
return (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(token) ||
|
|
156
|
+
/^[0-9a-f]{24}$/.test(token));
|
|
157
|
+
}
|
|
158
|
+
function dedupe(values) {
|
|
159
|
+
return [...new Set(values)];
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=referenced-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenced-ids.js","sourceRoot":"","sources":["../../src/stop/referenced-ids.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { test } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { harvestReferences, isFullId } from './referenced-ids.js';
|
|
4
|
+
const DECISION = 'c48374ea-15c7-4564-96a7-6a71d439ebc8';
|
|
5
|
+
const INTENT = '6a80150aa0c97eed460f45d6';
|
|
6
|
+
// ---- transcript line builders (Claude Code JSONL shape, verified against a
|
|
7
|
+
// real transcript: `type` at top level, role on `message`, content is an array
|
|
8
|
+
// of {text|tool_use|tool_result|thinking} items) ----
|
|
9
|
+
function userPrompt(text) {
|
|
10
|
+
return JSON.stringify({ type: 'user', message: { role: 'user', content: [{ type: 'text', text }] } });
|
|
11
|
+
}
|
|
12
|
+
function assistantText(text) {
|
|
13
|
+
return JSON.stringify({
|
|
14
|
+
type: 'assistant',
|
|
15
|
+
message: { role: 'assistant', content: [{ type: 'text', text }] },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function assistantThinking(text) {
|
|
19
|
+
return JSON.stringify({
|
|
20
|
+
type: 'assistant',
|
|
21
|
+
message: { role: 'assistant', content: [{ type: 'thinking', thinking: text, text }] },
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function toolUse(name, id) {
|
|
25
|
+
return JSON.stringify({
|
|
26
|
+
type: 'assistant',
|
|
27
|
+
message: { role: 'assistant', content: [{ type: 'tool_use', name, id, input: {} }] },
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/** Tool results come back as `user` messages — which is exactly why role alone
|
|
31
|
+
* cannot delimit a turn. */
|
|
32
|
+
function toolResult(toolUseId, text) {
|
|
33
|
+
return JSON.stringify({
|
|
34
|
+
type: 'user',
|
|
35
|
+
message: { role: 'user', content: [{ type: 'tool_result', tool_use_id: toolUseId, content: text }] },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
test('collects prose from the WHOLE turn, not just the last assistant line', () => {
|
|
39
|
+
// The bug this guards: one turn emits many assistant lines (one per tool
|
|
40
|
+
// call), so reading only the last would miss everything written before it.
|
|
41
|
+
const t = [
|
|
42
|
+
userPrompt('do the thing'),
|
|
43
|
+
assistantText(`Starting with ${DECISION.slice(0, 8)}`),
|
|
44
|
+
toolUse('Bash', 'tu1'),
|
|
45
|
+
toolResult('tu1', 'ok'),
|
|
46
|
+
assistantText('Done.'),
|
|
47
|
+
].join('\n');
|
|
48
|
+
const { candidates } = harvestReferences(t);
|
|
49
|
+
assert.deepEqual(candidates, ['c48374ea']);
|
|
50
|
+
});
|
|
51
|
+
test('only the CURRENT turn is harvested', () => {
|
|
52
|
+
const t = [
|
|
53
|
+
userPrompt('first ask'),
|
|
54
|
+
assistantText('mentioned aaaa1111 last turn'),
|
|
55
|
+
userPrompt('second ask'),
|
|
56
|
+
assistantText('mentioning bbbb2222 now'),
|
|
57
|
+
].join('\n');
|
|
58
|
+
const { candidates } = harvestReferences(t);
|
|
59
|
+
assert.deepEqual(candidates, ['bbbb2222']);
|
|
60
|
+
});
|
|
61
|
+
test('a tool_result does not start a new turn', () => {
|
|
62
|
+
// tool_results arrive as `user` messages; if they delimited turns, everything
|
|
63
|
+
// written before the last tool call would be dropped.
|
|
64
|
+
const t = [
|
|
65
|
+
userPrompt('do it'),
|
|
66
|
+
assistantText(`see ${DECISION}`),
|
|
67
|
+
toolUse('Bash', 'tu1'),
|
|
68
|
+
toolResult('tu1', 'output'),
|
|
69
|
+
assistantText('and done'),
|
|
70
|
+
].join('\n');
|
|
71
|
+
assert.deepEqual(harvestReferences(t).candidates, [DECISION]);
|
|
72
|
+
});
|
|
73
|
+
test('thinking blocks are excluded — the panel reflects what was SAID', () => {
|
|
74
|
+
const t = [
|
|
75
|
+
userPrompt('go'),
|
|
76
|
+
assistantThinking(`privately considering ${DECISION}`),
|
|
77
|
+
assistantText('publicly saying nothing'),
|
|
78
|
+
].join('\n');
|
|
79
|
+
assert.deepEqual(harvestReferences(t).candidates, []);
|
|
80
|
+
});
|
|
81
|
+
test('full ids are harvested from kawa tool results only', () => {
|
|
82
|
+
const t = [
|
|
83
|
+
userPrompt('go'),
|
|
84
|
+
toolUse('mcp__kawa-intents__get_relevant_context', 'tu1'),
|
|
85
|
+
toolResult('tu1', `{"decisionId":"${DECISION}","intentId":"${INTENT}"}`),
|
|
86
|
+
toolUse('Bash', 'tu2'),
|
|
87
|
+
toolResult('tu2', 'commit aaaa1111-2222-4333-8444-555555555555'),
|
|
88
|
+
assistantText('done'),
|
|
89
|
+
].join('\n');
|
|
90
|
+
const { knownFull } = harvestReferences(t);
|
|
91
|
+
assert.deepEqual(knownFull.sort(), [DECISION, INTENT].sort());
|
|
92
|
+
});
|
|
93
|
+
test('knownFull keeps only FULL ids — a prefix there disambiguates nothing', () => {
|
|
94
|
+
const t = [
|
|
95
|
+
userPrompt('go'),
|
|
96
|
+
toolUse('mcp__kawa-intents__get_decision_detail', 'tu1'),
|
|
97
|
+
toolResult('tu1', `supersedes: 1d562397 and ${DECISION}`),
|
|
98
|
+
assistantText('done'),
|
|
99
|
+
].join('\n');
|
|
100
|
+
assert.deepEqual(harvestReferences(t).knownFull, [DECISION]);
|
|
101
|
+
});
|
|
102
|
+
test('a git short SHA is harvested as a candidate — it cannot be told apart here', () => {
|
|
103
|
+
// Deliberate: the SHA and a truncated decision id are the same shape. It is
|
|
104
|
+
// excluded downstream by resolution, not by pattern.
|
|
105
|
+
const t = [userPrompt('go'), assistantText('committed as 2035539f')].join('\n');
|
|
106
|
+
assert.deepEqual(harvestReferences(t).candidates, ['2035539f']);
|
|
107
|
+
});
|
|
108
|
+
test('tokens shorter than 8 hex characters are ignored', () => {
|
|
109
|
+
const t = [userPrompt('go'), assistantText('see 2035539 and abc')].join('\n');
|
|
110
|
+
assert.deepEqual(harvestReferences(t).candidates, []);
|
|
111
|
+
});
|
|
112
|
+
test('a full UUID is captured whole rather than as its leading 8 chars', () => {
|
|
113
|
+
const t = [userPrompt('go'), assistantText(`"Summary" (${DECISION})`)].join('\n');
|
|
114
|
+
assert.deepEqual(harvestReferences(t).candidates, [DECISION]);
|
|
115
|
+
});
|
|
116
|
+
test('repeats within one turn collapse', () => {
|
|
117
|
+
const t = [
|
|
118
|
+
userPrompt('go'),
|
|
119
|
+
assistantText('c48374ea here'),
|
|
120
|
+
assistantText('and c48374ea again'),
|
|
121
|
+
].join('\n');
|
|
122
|
+
assert.deepEqual(harvestReferences(t).candidates, ['c48374ea']);
|
|
123
|
+
});
|
|
124
|
+
test('case is normalized', () => {
|
|
125
|
+
const t = [userPrompt('go'), assistantText('C48374EA')].join('\n');
|
|
126
|
+
assert.deepEqual(harvestReferences(t).candidates, ['c48374ea']);
|
|
127
|
+
});
|
|
128
|
+
test("the session's first request is captured as a fallback label", () => {
|
|
129
|
+
const t = [
|
|
130
|
+
userPrompt('read DECISION_LINKING.md and tell me if W3c is ready'),
|
|
131
|
+
assistantText('sure'),
|
|
132
|
+
userPrompt('now do it'),
|
|
133
|
+
assistantText('ok'),
|
|
134
|
+
].join('\n');
|
|
135
|
+
// FIRST, not latest: the label names the session, and repos that create no
|
|
136
|
+
// intents (kawa.dev-doc) will never show anything else.
|
|
137
|
+
assert.equal(harvestReferences(t).firstRequest, 'read DECISION_LINKING.md and tell me if W3c is ready');
|
|
138
|
+
});
|
|
139
|
+
test('malformed lines and an empty transcript are survivable', () => {
|
|
140
|
+
assert.deepEqual(harvestReferences('').candidates, []);
|
|
141
|
+
assert.deepEqual(harvestReferences('not json\n{"broken":\n').candidates, []);
|
|
142
|
+
});
|
|
143
|
+
test('isFullId accepts UUIDs and ObjectIds, rejects prefixes', () => {
|
|
144
|
+
assert.ok(isFullId(DECISION));
|
|
145
|
+
assert.ok(isFullId(INTENT));
|
|
146
|
+
assert.ok(!isFullId('c48374ea'));
|
|
147
|
+
assert.ok(!isFullId(''));
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=referenced-ids.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenced-ids.test.js","sourceRoot":"","sources":["../../src/stop/referenced-ids.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kawacode/mcp",
|
|
3
|
-
"version": "8.0
|
|
3
|
+
"version": "8.1.0",
|
|
4
4
|
"description": "Team-aware memory for Claude Code, Cursor, and other AI coding assistants — intent tracking, decision history, real-time team conflict detection.",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"bin": {
|