@kawacode/mcp 5.2.2 → 6.1.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 +11 -3
- package/README.md +54 -198
- package/build/index.js +10 -1
- package/build/index.js.map +1 -1
- package/build/kawacode-on-pre-edit.d.ts +27 -0
- package/build/kawacode-on-pre-edit.js +201 -0
- package/build/kawacode-on-pre-edit.js.map +1 -0
- package/build/kawacode-on-stop.d.ts +33 -0
- package/build/kawacode-on-stop.js +88 -0
- package/build/kawacode-on-stop.js.map +1 -0
- package/build/pre-edit/path-resolve.d.ts +32 -0
- package/build/pre-edit/path-resolve.js +52 -0
- package/build/pre-edit/path-resolve.js.map +1 -0
- package/build/pre-edit/path-resolve.test.d.ts +1 -0
- package/build/pre-edit/path-resolve.test.js +105 -0
- package/build/pre-edit/path-resolve.test.js.map +1 -0
- package/build/prompts/intent-first-workflow.js +2 -2
- package/build/services/muninn-ipc.js +11 -3
- package/build/services/muninn-ipc.js.map +1 -1
- package/build/tools/_fork-fields.d.ts +84 -0
- package/build/tools/_fork-fields.js +65 -0
- package/build/tools/_fork-fields.js.map +1 -0
- package/build/tools/activate-intent.d.ts +66 -0
- package/build/tools/activate-intent.js +59 -3
- package/build/tools/activate-intent.js.map +1 -1
- package/build/tools/check-active-intent.d.ts +64 -0
- package/build/tools/check-active-intent.js +16 -2
- package/build/tools/check-active-intent.js.map +1 -1
- package/build/tools/complete-intent.d.ts +115 -4
- package/build/tools/complete-intent.js +138 -12
- package/build/tools/complete-intent.js.map +1 -1
- package/build/tools/create-intent.d.ts +73 -1
- package/build/tools/create-intent.js +105 -7
- package/build/tools/create-intent.js.map +1 -1
- package/build/tools/detect-intent-conflicts.d.ts +52 -0
- package/build/tools/detect-intent-conflicts.js +14 -10
- package/build/tools/detect-intent-conflicts.js.map +1 -1
- package/build/tools/edit-session-decision.d.ts +76 -12
- package/build/tools/edit-session-decision.js +11 -2
- package/build/tools/edit-session-decision.js.map +1 -1
- package/build/tools/evolve-decisions.d.ts +52 -0
- package/build/tools/evolve-decisions.js +14 -15
- package/build/tools/evolve-decisions.js.map +1 -1
- package/build/tools/get-intent-changes.d.ts +52 -0
- package/build/tools/get-intent-changes.js +4 -1
- package/build/tools/get-intent-changes.js.map +1 -1
- package/build/tools/get-intents-for-file.d.ts +52 -0
- package/build/tools/get-intents-for-file.js +4 -1
- package/build/tools/get-intents-for-file.js.map +1 -1
- package/build/tools/get-intents-for-lines.d.ts +52 -0
- package/build/tools/get-intents-for-lines.js +4 -1
- package/build/tools/get-intents-for-lines.js.map +1 -1
- package/build/tools/get-project-decisions.d.ts +52 -0
- package/build/tools/get-project-decisions.js +4 -1
- package/build/tools/get-project-decisions.js.map +1 -1
- package/build/tools/get-relevant-context.d.ts +54 -0
- package/build/tools/get-relevant-context.js +19 -24
- package/build/tools/get-relevant-context.js.map +1 -1
- package/build/tools/get-session-decisions.d.ts +53 -0
- package/build/tools/get-session-decisions.js +6 -2
- package/build/tools/get-session-decisions.js.map +1 -1
- package/build/tools/index.d.ts +628 -18
- package/build/tools/index.js +12 -3
- package/build/tools/index.js.map +1 -1
- package/build/tools/infer-history.d.ts +6 -0
- package/build/tools/infer-history.js +28 -15
- package/build/tools/infer-history.js.map +1 -1
- package/build/tools/list-team-intents.d.ts +58 -6
- package/build/tools/list-team-intents.js +5 -2
- package/build/tools/list-team-intents.js.map +1 -1
- package/build/tools/log-work.d.ts +52 -0
- package/build/tools/log-work.js +4 -1
- package/build/tools/log-work.js.map +1 -1
- package/build/tools/pre-edit-acknowledge.d.ts +92 -0
- package/build/tools/pre-edit-acknowledge.js +48 -0
- package/build/tools/pre-edit-acknowledge.js.map +1 -0
- package/build/tools/pre-edit-decision-check.d.ts +141 -0
- package/build/tools/pre-edit-decision-check.js +77 -0
- package/build/tools/pre-edit-decision-check.js.map +1 -0
- package/build/tools/record-decision.d.ts +94 -12
- package/build/tools/record-decision.js +18 -1
- package/build/tools/record-decision.js.map +1 -1
- package/build/tools/update-intent.d.ts +60 -8
- package/build/tools/update-intent.js +6 -1
- package/build/tools/update-intent.js.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kawacode-on-pre-edit.js","sourceRoot":"","sources":["../src/kawacode-on-pre-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* kawacode-on-stop — Claude Code Stop hook dispatcher.
|
|
4
|
+
*
|
|
5
|
+
* Reads the Stop hook payload from stdin (session_id, transcript_path, cwd)
|
|
6
|
+
* and sends two short IPCs to Muninn:
|
|
7
|
+
*
|
|
8
|
+
* 1. capture-thoughts:capture { sessionId, transcriptPath, cwd }
|
|
9
|
+
* → Muninn reads the transcript, extracts the assistant's text
|
|
10
|
+
* content blocks (the model's visible responses), and appends them
|
|
11
|
+
* as JSONL to ~/.kawa-code/thoughts/active/session-{id}.jsonl.
|
|
12
|
+
* Thinking blocks are deliberately ignored — Claude Code redacts
|
|
13
|
+
* their plaintext on disk, so they carry no recoverable signal.
|
|
14
|
+
* 2. extractor:trigger { session_id, cwd }
|
|
15
|
+
* → Muninn wakes the (debounced) extractor service which reads the
|
|
16
|
+
* fresh JSONL and emits ephemeral decisions verbalized in the
|
|
17
|
+
* assistant's responses.
|
|
18
|
+
*
|
|
19
|
+
* Replaces the legacy kawacode-capture-thoughts (Node CLI that did the file
|
|
20
|
+
* I/O itself, never merged to main) AND kawacode-extract-trigger (separate
|
|
21
|
+
* Node CLI that did the second IPC). The whole capture pipeline now lives
|
|
22
|
+
* in Muninn — this dispatcher's only job is to fire the two pings.
|
|
23
|
+
*
|
|
24
|
+
* Failure discipline: every error path exits 0. Claude Code's Stop hook
|
|
25
|
+
* must never block the turn loop on capture failure. This is the ONLY
|
|
26
|
+
* place fail-soft is allowed under the no-Muninn-independence rule —
|
|
27
|
+
* because the hook script is the boundary between the harness (which
|
|
28
|
+
* can't recover) and Muninn (which can re-derive missing captures from
|
|
29
|
+
* the transcript on the next Stop).
|
|
30
|
+
*
|
|
31
|
+
* Opt out with KAWA_THOUGHT_CAPTURE=off.
|
|
32
|
+
*/
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* kawacode-on-stop — Claude Code Stop hook dispatcher.
|
|
4
|
+
*
|
|
5
|
+
* Reads the Stop hook payload from stdin (session_id, transcript_path, cwd)
|
|
6
|
+
* and sends two short IPCs to Muninn:
|
|
7
|
+
*
|
|
8
|
+
* 1. capture-thoughts:capture { sessionId, transcriptPath, cwd }
|
|
9
|
+
* → Muninn reads the transcript, extracts the assistant's text
|
|
10
|
+
* content blocks (the model's visible responses), and appends them
|
|
11
|
+
* as JSONL to ~/.kawa-code/thoughts/active/session-{id}.jsonl.
|
|
12
|
+
* Thinking blocks are deliberately ignored — Claude Code redacts
|
|
13
|
+
* their plaintext on disk, so they carry no recoverable signal.
|
|
14
|
+
* 2. extractor:trigger { session_id, cwd }
|
|
15
|
+
* → Muninn wakes the (debounced) extractor service which reads the
|
|
16
|
+
* fresh JSONL and emits ephemeral decisions verbalized in the
|
|
17
|
+
* assistant's responses.
|
|
18
|
+
*
|
|
19
|
+
* Replaces the legacy kawacode-capture-thoughts (Node CLI that did the file
|
|
20
|
+
* I/O itself, never merged to main) AND kawacode-extract-trigger (separate
|
|
21
|
+
* Node CLI that did the second IPC). The whole capture pipeline now lives
|
|
22
|
+
* in Muninn — this dispatcher's only job is to fire the two pings.
|
|
23
|
+
*
|
|
24
|
+
* Failure discipline: every error path exits 0. Claude Code's Stop hook
|
|
25
|
+
* must never block the turn loop on capture failure. This is the ONLY
|
|
26
|
+
* place fail-soft is allowed under the no-Muninn-independence rule —
|
|
27
|
+
* because the hook script is the boundary between the harness (which
|
|
28
|
+
* can't recover) and Muninn (which can re-derive missing captures from
|
|
29
|
+
* the transcript on the next Stop).
|
|
30
|
+
*
|
|
31
|
+
* Opt out with KAWA_THOUGHT_CAPTURE=off.
|
|
32
|
+
*/
|
|
33
|
+
import { readFileSync } from 'node:fs';
|
|
34
|
+
import { connectToMuninn, request, disconnect } from './services/muninn-ipc.js';
|
|
35
|
+
function readStdin() {
|
|
36
|
+
try {
|
|
37
|
+
return readFileSync(0, 'utf8');
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return '';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function main() {
|
|
44
|
+
if (process.env.KAWA_THOUGHT_CAPTURE === 'off') {
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
const raw = readStdin();
|
|
48
|
+
if (!raw)
|
|
49
|
+
process.exit(0);
|
|
50
|
+
let payload;
|
|
51
|
+
try {
|
|
52
|
+
payload = JSON.parse(raw);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
process.exit(0);
|
|
56
|
+
}
|
|
57
|
+
const sessionId = payload.session_id;
|
|
58
|
+
const transcriptPath = payload.transcript_path;
|
|
59
|
+
const cwd = payload.cwd;
|
|
60
|
+
if (!sessionId || !transcriptPath)
|
|
61
|
+
process.exit(0);
|
|
62
|
+
try {
|
|
63
|
+
await connectToMuninn();
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Muninn down. Capture happens whenever Muninn is next up — the
|
|
67
|
+
// extractor's checkpoint advances on the next successful capture.
|
|
68
|
+
process.exit(0);
|
|
69
|
+
}
|
|
70
|
+
// Fire both IPCs in parallel; each is independent and tolerant of the
|
|
71
|
+
// other's failure. allSettled because we never want one to short-circuit
|
|
72
|
+
// the other on transient failure.
|
|
73
|
+
await Promise.allSettled([
|
|
74
|
+
request('capture-thoughts', 'capture', {
|
|
75
|
+
sessionId,
|
|
76
|
+
transcriptPath,
|
|
77
|
+
cwd: cwd ?? null,
|
|
78
|
+
}),
|
|
79
|
+
request('extractor', 'trigger', {
|
|
80
|
+
session_id: sessionId,
|
|
81
|
+
cwd: cwd ?? '',
|
|
82
|
+
}),
|
|
83
|
+
]);
|
|
84
|
+
disconnect();
|
|
85
|
+
process.exit(0);
|
|
86
|
+
}
|
|
87
|
+
main().catch(() => process.exit(0));
|
|
88
|
+
//# sourceMappingURL=kawacode-on-stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kawacode-on-stop.js","sourceRoot":"","sources":["../src/kawacode-on-stop.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAS/E,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,SAAS,EAAE,CAAA;IACvB,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEzB,IAAI,OAAoB,CAAA;IACxB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAA;IACpC,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAA;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;IACvB,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAElD,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;QAChE,kEAAkE;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,sEAAsE;IACtE,yEAAyE;IACzE,kCAAkC;IAClC,MAAM,OAAO,CAAC,UAAU,CAAC;QACvB,OAAO,CAAC,kBAAkB,EAAE,SAAS,EAAE;YACrC,SAAS;YACT,cAAc;YACd,GAAG,EAAE,GAAG,IAAI,IAAI;SACjB,CAAC;QACF,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE;YAC9B,UAAU,EAAE,SAAS;YACrB,GAAG,EAAE,GAAG,IAAI,EAAE;SACf,CAAC;KACH,CAAC,CAAA;IAEF,UAAU,EAAE,CAAA;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform path resolution for the PreToolUse dispatcher.
|
|
3
|
+
*
|
|
4
|
+
* The legacy `pre-edit-decision-check-hook.ts` and the Phase 3 thin
|
|
5
|
+
* `kawacode-on-pre-edit.ts` dispatcher both inherited a Unix-only heuristic:
|
|
6
|
+
* `if (filePath.startsWith('/')) ... else \`${cwd}/${filePath}\``
|
|
7
|
+
* which silently breaks on Windows where absolute paths look like
|
|
8
|
+
* `C:\Users\…\file.ts` or `C:/Users/…/file.ts` and `path.sep` is `\`.
|
|
9
|
+
*
|
|
10
|
+
* This module re-does that resolution properly using Node's `path` module
|
|
11
|
+
* and exposes it as a pure function so it can be tested against both
|
|
12
|
+
* `path.posix` and `path.win32` from any host OS.
|
|
13
|
+
*/
|
|
14
|
+
import * as nodePath from 'node:path';
|
|
15
|
+
export interface ResolvedPaths {
|
|
16
|
+
/** Absolute path for `readFileSync` etc. Native to the calling platform. */
|
|
17
|
+
absolutePath: string;
|
|
18
|
+
/** Repo-relative path with forward-slash separators (the form decisions store). */
|
|
19
|
+
relativePath: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a Claude-Code-supplied `filePath` to absolute and repo-relative
|
|
23
|
+
* forms. Returns `null` when the file is outside the repo — in that case the
|
|
24
|
+
* dispatcher should skip the pre-edit check (no in-repo decisions could
|
|
25
|
+
* apply).
|
|
26
|
+
*
|
|
27
|
+
* `pathImpl` is injected for testability: pass `nodePath.posix` to verify
|
|
28
|
+
* Unix-style inputs and `nodePath.win32` for Windows-style inputs from a
|
|
29
|
+
* single test run on any OS. Defaults to the host's `node:path` module so
|
|
30
|
+
* production callers don't have to pick.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolvePaths(cwd: string, filePath: string, pathImpl?: typeof nodePath): ResolvedPaths | null;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform path resolution for the PreToolUse dispatcher.
|
|
3
|
+
*
|
|
4
|
+
* The legacy `pre-edit-decision-check-hook.ts` and the Phase 3 thin
|
|
5
|
+
* `kawacode-on-pre-edit.ts` dispatcher both inherited a Unix-only heuristic:
|
|
6
|
+
* `if (filePath.startsWith('/')) ... else \`${cwd}/${filePath}\``
|
|
7
|
+
* which silently breaks on Windows where absolute paths look like
|
|
8
|
+
* `C:\Users\…\file.ts` or `C:/Users/…/file.ts` and `path.sep` is `\`.
|
|
9
|
+
*
|
|
10
|
+
* This module re-does that resolution properly using Node's `path` module
|
|
11
|
+
* and exposes it as a pure function so it can be tested against both
|
|
12
|
+
* `path.posix` and `path.win32` from any host OS.
|
|
13
|
+
*/
|
|
14
|
+
import * as nodePath from 'node:path';
|
|
15
|
+
/**
|
|
16
|
+
* Resolve a Claude-Code-supplied `filePath` to absolute and repo-relative
|
|
17
|
+
* forms. Returns `null` when the file is outside the repo — in that case the
|
|
18
|
+
* dispatcher should skip the pre-edit check (no in-repo decisions could
|
|
19
|
+
* apply).
|
|
20
|
+
*
|
|
21
|
+
* `pathImpl` is injected for testability: pass `nodePath.posix` to verify
|
|
22
|
+
* Unix-style inputs and `nodePath.win32` for Windows-style inputs from a
|
|
23
|
+
* single test run on any OS. Defaults to the host's `node:path` module so
|
|
24
|
+
* production callers don't have to pick.
|
|
25
|
+
*/
|
|
26
|
+
export function resolvePaths(cwd, filePath, pathImpl = nodePath) {
|
|
27
|
+
if (!cwd || !filePath)
|
|
28
|
+
return null;
|
|
29
|
+
if (pathImpl.isAbsolute(filePath)) {
|
|
30
|
+
const rel = pathImpl.relative(cwd, filePath);
|
|
31
|
+
// Three out-of-repo cases the pre-edit check has nothing to match:
|
|
32
|
+
// • empty — filePath equals cwd
|
|
33
|
+
// • starts with ".." — directory-traversal upward
|
|
34
|
+
// • is itself absolute — Windows cross-drive case (path.win32.relative
|
|
35
|
+
// returns the target's absolute path verbatim when there's no
|
|
36
|
+
// relative representation across drives, e.g. C:\repo → D:\other)
|
|
37
|
+
if (rel === '' || rel.startsWith('..') || pathImpl.isAbsolute(rel))
|
|
38
|
+
return null;
|
|
39
|
+
return {
|
|
40
|
+
absolutePath: filePath,
|
|
41
|
+
relativePath: rel.split(pathImpl.sep).join('/'),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Relative input — assumed to be relative to cwd. Resolve to absolute via
|
|
45
|
+
// pathImpl.resolve and normalize the relative form to forward slashes
|
|
46
|
+
// (Claude Code may send a backslash-relative path on Windows).
|
|
47
|
+
return {
|
|
48
|
+
absolutePath: pathImpl.resolve(cwd, filePath),
|
|
49
|
+
relativePath: filePath.split(pathImpl.sep).join('/'),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=path-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolve.js","sourceRoot":"","sources":["../../src/pre-edit/path-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AASrC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,QAAgB,EAChB,WAA4B,QAAQ;IAEpC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAElC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC5C,mEAAmE;QACnE,kCAAkC;QAClC,oDAAoD;QACpD,yEAAyE;QACzE,kEAAkE;QAClE,sEAAsE;QACtE,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QAC/E,OAAO;YACL,YAAY,EAAE,QAAQ;YACtB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAChD,CAAA;IACH,CAAC;IAED,0EAA0E;IAC1E,sEAAsE;IACtE,+DAA+D;IAC/D,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC7C,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACrD,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { test, describe } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import * as nodePath from 'node:path';
|
|
4
|
+
import { resolvePaths } from './path-resolve.js';
|
|
5
|
+
const posix = nodePath.posix;
|
|
6
|
+
const win32 = nodePath.win32;
|
|
7
|
+
describe('resolvePaths — empty inputs', () => {
|
|
8
|
+
test('null when cwd is empty', () => {
|
|
9
|
+
assert.equal(resolvePaths('', '/foo/bar.ts'), null);
|
|
10
|
+
});
|
|
11
|
+
test('null when filePath is empty', () => {
|
|
12
|
+
assert.equal(resolvePaths('/repo', ''), null);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe('resolvePaths — POSIX (Unix/macOS)', () => {
|
|
16
|
+
test('absolute path under cwd → repo-relative + absolute preserved', () => {
|
|
17
|
+
const r = resolvePaths('/repo', '/repo/src/foo.ts', posix);
|
|
18
|
+
assert.deepEqual(r, {
|
|
19
|
+
absolutePath: '/repo/src/foo.ts',
|
|
20
|
+
relativePath: 'src/foo.ts',
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
test('absolute path equal to cwd → null (empty relative)', () => {
|
|
24
|
+
const r = resolvePaths('/repo', '/repo', posix);
|
|
25
|
+
assert.equal(r, null);
|
|
26
|
+
});
|
|
27
|
+
test('absolute path outside cwd → null', () => {
|
|
28
|
+
const r = resolvePaths('/repo', '/etc/hosts', posix);
|
|
29
|
+
assert.equal(r, null);
|
|
30
|
+
});
|
|
31
|
+
test('relative path → cwd-resolved absolute + relative preserved', () => {
|
|
32
|
+
const r = resolvePaths('/repo', 'src/foo.ts', posix);
|
|
33
|
+
assert.deepEqual(r, {
|
|
34
|
+
absolutePath: '/repo/src/foo.ts',
|
|
35
|
+
relativePath: 'src/foo.ts',
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
test('nested relative path', () => {
|
|
39
|
+
const r = resolvePaths('/repo', 'src/a/b/c.ts', posix);
|
|
40
|
+
assert.deepEqual(r, {
|
|
41
|
+
absolutePath: '/repo/src/a/b/c.ts',
|
|
42
|
+
relativePath: 'src/a/b/c.ts',
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('resolvePaths — Windows', () => {
|
|
47
|
+
test('absolute backslash path under cwd → forward-slash relative', () => {
|
|
48
|
+
const r = resolvePaths('C:\\repo', 'C:\\repo\\src\\foo.ts', win32);
|
|
49
|
+
assert.deepEqual(r, {
|
|
50
|
+
absolutePath: 'C:\\repo\\src\\foo.ts',
|
|
51
|
+
relativePath: 'src/foo.ts',
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
test('absolute forward-slash path under cwd (Git Bash / mixed style) → forward-slash relative', () => {
|
|
55
|
+
// Both inputs use forward slashes — common when Claude Code runs under
|
|
56
|
+
// Git Bash or when tools normalize paths to forward slashes. path.win32
|
|
57
|
+
// treats `C:/repo` as absolute and computes relative correctly.
|
|
58
|
+
const r = resolvePaths('C:/repo', 'C:/repo/src/foo.ts', win32);
|
|
59
|
+
// path.win32.relative on forward-slash inputs returns backslashes; the
|
|
60
|
+
// normalize step collapses to forward slashes either way.
|
|
61
|
+
assert.equal(r?.relativePath, 'src/foo.ts');
|
|
62
|
+
});
|
|
63
|
+
test('mixed-separator cwd vs filePath both normalize correctly', () => {
|
|
64
|
+
// Realistic: cwd from process.cwd() uses backslashes; filePath from
|
|
65
|
+
// Claude Code may use forward slashes.
|
|
66
|
+
const r = resolvePaths('C:\\repo', 'C:/repo/src/foo.ts', win32);
|
|
67
|
+
assert.equal(r?.relativePath, 'src/foo.ts');
|
|
68
|
+
assert.equal(r?.absolutePath, 'C:/repo/src/foo.ts');
|
|
69
|
+
});
|
|
70
|
+
test('absolute path outside cwd → null', () => {
|
|
71
|
+
const r = resolvePaths('C:\\repo', 'C:\\Users\\alice\\Documents\\notes.txt', win32);
|
|
72
|
+
assert.equal(r, null);
|
|
73
|
+
});
|
|
74
|
+
test('absolute path on different drive → null', () => {
|
|
75
|
+
const r = resolvePaths('C:\\repo', 'D:\\other\\file.ts', win32);
|
|
76
|
+
assert.equal(r, null);
|
|
77
|
+
});
|
|
78
|
+
test('relative path with backslashes → forward-slash normalized', () => {
|
|
79
|
+
const r = resolvePaths('C:\\repo', 'src\\foo.ts', win32);
|
|
80
|
+
assert.deepEqual(r, {
|
|
81
|
+
absolutePath: 'C:\\repo\\src\\foo.ts',
|
|
82
|
+
relativePath: 'src/foo.ts',
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
test('relative path with forward slashes → unchanged', () => {
|
|
86
|
+
const r = resolvePaths('C:\\repo', 'src/foo.ts', win32);
|
|
87
|
+
assert.equal(r?.relativePath, 'src/foo.ts');
|
|
88
|
+
});
|
|
89
|
+
test('UNC path under cwd → forward-slash relative', () => {
|
|
90
|
+
const r = resolvePaths('\\\\server\\share\\repo', '\\\\server\\share\\repo\\src\\foo.ts', win32);
|
|
91
|
+
assert.equal(r?.relativePath, 'src/foo.ts');
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('resolvePaths — regression guard: the legacy bug', () => {
|
|
95
|
+
test('Windows absolute path no longer gets concat-with-cwd as relative', () => {
|
|
96
|
+
// The legacy code did `if (filePath.startsWith('/'))` which is false for
|
|
97
|
+
// `C:\…`, then `absolutePath = \`${cwd}/${filePath}\`` producing
|
|
98
|
+
// `C:\repo/C:\Users\…\file.ts`. The fix detects the absolute path
|
|
99
|
+
// properly and never produces that garbage.
|
|
100
|
+
const r = resolvePaths('C:\\repo', 'C:\\repo\\src\\foo.ts', win32);
|
|
101
|
+
assert.notEqual(r?.absolutePath, 'C:\\repo/C:\\repo\\src\\foo.ts');
|
|
102
|
+
assert.equal(r?.absolutePath, 'C:\\repo\\src\\foo.ts');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=path-resolve.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolve.test.js","sourceRoot":"","sources":["../../src/pre-edit/path-resolve.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ Before using MCP tools, assess the task complexity. Match your workflow to the t
|
|
|
37
37
|
| **Before coding** | Check/create intent | \`check_active_intent\`, \`create_and_activate_intent\` |
|
|
38
38
|
| **On "done"/"commit"/"worked"/etc.** | Verify diff → Git commit → Complete | \`get_intent_changes\`, \`complete_intent\` |
|
|
39
39
|
|
|
40
|
-
> **Note**: Code blocks are attached to the intent automatically when you call \`complete_intent\` with a commit SHA.
|
|
40
|
+
> **Note**: Code blocks are attached to the intent automatically when you call \`complete_intent\` with a commit SHA. There is no manual "assign blocks" step.
|
|
41
41
|
|
|
42
42
|
**Trigger phrases for commit flow**: "this worked", "let's commit", "done", "close this", "ship it", "looks good"
|
|
43
43
|
|
|
@@ -124,7 +124,7 @@ When the user chooses to commit (or explicitly requests it):
|
|
|
124
124
|
Intent-ID: <intent-id>
|
|
125
125
|
Co-Authored-By: Claude <noreply@anthropic.com>"
|
|
126
126
|
\`\`\`
|
|
127
|
-
6. **Complete intent**: Call \`complete_intent\` with the commit SHA and status='committed'.
|
|
127
|
+
6. **Complete intent**: Call \`complete_intent\` with the commit SHA and status='committed'. The modified code blocks are auto-captured and attached to the intent as part of the same call.
|
|
128
128
|
7. **Report**: Tell the user the commit SHA and that the intent is complete
|
|
129
129
|
|
|
130
130
|
- If user had a new request that triggered the commit, proceed to create a new intent for it
|
|
@@ -214,9 +214,17 @@ function routeResponse(msg) {
|
|
|
214
214
|
}
|
|
215
215
|
const data = msg.data || {};
|
|
216
216
|
if (data.success === false) {
|
|
217
|
-
//
|
|
218
|
-
//
|
|
219
|
-
|
|
217
|
+
// Some handlers return structured failure shapes the calling tool is
|
|
218
|
+
// designed to interpret and present — these are data, not dispatch
|
|
219
|
+
// failures, so resolve (don't reject) and let the tool layer handle them:
|
|
220
|
+
// - create_and_activate_intent similarity conflicts: { conflict: true, conflicts: [...] }
|
|
221
|
+
// - complete_intent distillation conflicts: { reason: "conflicts", conflicts: [...] }
|
|
222
|
+
// - complete_intent transient failures: { reason: "transient-failure", error, failedStage }
|
|
223
|
+
// Without this, complete_intent's conflict shape (no `conflict` flag, no
|
|
224
|
+
// `error` field) fell through to the generic reject below and surfaced as
|
|
225
|
+
// the opaque "no error message" — bypassing complete-intent.ts's
|
|
226
|
+
// conflict-surfacing logic entirely.
|
|
227
|
+
if (data.conflict === true || typeof data.reason === 'string' || Array.isArray(data.conflicts)) {
|
|
220
228
|
pending.resolve(data);
|
|
221
229
|
return;
|
|
222
230
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muninn-ipc.js","sourceRoot":"","sources":["../../src/services/muninn-ipc.ts"],"names":[],"mappings":"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
|
|
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,2FAA2F;AAC3F,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;AACxE,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,KAAK,CAAC,+CAA+C,UAAU,KAAK,CAAC,CAAA;QAE7E,MAAM,WAAW,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;YACxD,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE;oBACJ,UAAU,EAAE,WAAW;oBACvB,WAAW,EAAE,YAAY;oBACzB,OAAO,EAAE,iBAAiB;iBAC3B;aACF,CAAC,CAAA;YACF,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QAEF,IAAI,iBAAiB,GAAG,KAAK,CAAA;QAC7B,IAAI,oBAAoB,GAAG,KAAK,CAAA,CAAE,kDAAkD;QACpF,IAAI,MAAM,GAAG,EAAE,CAAA;QAEf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAChC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;YAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAQ;gBAE1B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBAE5B,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAChF,iBAAiB,GAAG,IAAI,CAAA;wBACxB,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAA;wBAE3B,MAAM,QAAQ,GAAuB,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAA;wBAEvD,IAAI,QAAQ,EAAE,CAAC;4BACb,qEAAqE;4BACrE,yEAAyE;4BACzE,oBAAoB,GAAG,IAAI,CAAA;4BAC3B,OAAO,CAAC,KAAK,CAAC,uCAAuC,KAAK,oBAAoB,QAAQ,EAAE,CAAC,CAAA;4BACzF,WAAW,CAAC,OAAO,EAAE,CAAA;4BACrB,0EAA0E;4BAC1E,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;wBACpE,CAAC;6BAAM,CAAC;4BACN,6DAA6D;4BAC7D,MAAM,GAAG,WAAW,CAAA;4BACpB,SAAS,GAAG,IAAI,CAAA;4BAChB,OAAO,CAAC,KAAK,CAAC,uCAAuC,KAAK,GAAG,CAAC,CAAA;4BAC9D,OAAO,EAAE,CAAA;wBACX,CAAC;wBACD,SAAQ;oBACV,CAAC;oBAED,iDAAiD;oBACjD,aAAa,CAAC,GAAG,CAAC,CAAA;gBACpB,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YACjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,KAAK,CACd,qDAAqD;oBACrD,yBAAyB,UAAU,KAAK,GAAG,CAAC,OAAO,GAAG,CACvD,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,oBAAoB;gBAAE,OAAO,EAAE,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,+EAA+E;YAC/E,gFAAgF;YAChF,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;gBAC1C,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,oBAAoB;QACpB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,WAAW,CAAC,OAAO,EAAE,CAAA;gBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAA;YACzE,CAAC;QACH,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,QAAgB,EAChB,OAAmB,EACnB,MAA4B;IAE5B,OAAO,CAAC,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAA;IAEnE,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,UAAU,CAAA;QACnB,SAAS,GAAG,IAAI,CAAA;QAChB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAClD,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;IAEF,IAAI,MAAM,GAAG,EAAE,CAAA;IAEf,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACrC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;QAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAQ;YAC1B,IAAI,CAAC;gBAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QACpC,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,aAAa,CAAC,GAAQ;IAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAA;IACxB,IAAI,KAAK,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;QAC3C,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7B,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAClC,OAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QAC3B,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3B,qEAAqE;YACrE,mEAAmE;YACnE,0EAA0E;YAC1E,4FAA4F;YAC5F,iGAAiG;YACjG,2GAA2G;YAC3G,yEAAyE;YACzE,0EAA0E;YAC1E,iEAAiE;YACjE,qCAAqC;YACrC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/F,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACrB,OAAM;YACR,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBACtE,CAAC,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,8DAA8D,CAAA;YAClE,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;YACnC,OAAM;QACR,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAc,EACd,MAAc,EACd,OAAY,EAAE,EACd,YAAoB,0BAA0B;IAE9C,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,MAAM,eAAe,EAAE,CAAA;IACzB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;IAE1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,SAAS,GAAG,IAAI,OAAO,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC,CAAA;QACzF,CAAC,EAAE,SAAS,CAAC,CAAA;QAEb,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,EAAE,KAAK;YACX,MAAM;YACN,MAAM;YACN,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE;YACvC,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QAEF,MAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3F,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,EAAE,CAAA;IAClB,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,OAAO;IACd,SAAS,GAAG,KAAK,CAAA;IACjB,MAAM,GAAG,IAAI,CAAA;IACb,iBAAiB,GAAG,IAAI,CAAA;IAExB,8BAA8B;IAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;QAC5C,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;IACvD,CAAC;IACD,eAAe,CAAC,KAAK,EAAE,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Zod schema fragment for the forkAuthor + workspaceId attribution
|
|
3
|
+
* fields added in REPO_FORKS_IMPLEMENTATION_PLAN_PHASE_1.md §5.
|
|
4
|
+
*
|
|
5
|
+
* Every MCP tool that accepts `repoOrigin` spreads `forkFieldsExtensions`
|
|
6
|
+
* into its Zod input schema and forwards `extractForkFields(input)` to the
|
|
7
|
+
* IPC payload. Both fields are OPTIONAL — Muninn resolves them
|
|
8
|
+
* automatically from `repoPath` (fork detection + workspace registry, §4.2 +
|
|
9
|
+
* §4.3). Callers only need to pass them in advanced override / testing
|
|
10
|
+
* scenarios where the desktop app's auto-resolution should be bypassed.
|
|
11
|
+
*
|
|
12
|
+
* Keep the field shape in lockstep with:
|
|
13
|
+
* - kawa.api/src/models/intents.model.ts / decisions.model.ts
|
|
14
|
+
* - kawa.muninn/src-tauri/src/gardener/handlers/intent.rs (OutboundIdentity)
|
|
15
|
+
*
|
|
16
|
+
* Drift across repos will cause silent rejection (Yup validators strip
|
|
17
|
+
* unknown fields on the API side) or runtime errors on the Muninn side.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
/**
|
|
21
|
+
* Fork attribution payload. Optional in its entirety; when present, all
|
|
22
|
+
* three subfields are required (so the API can persist a coherent record).
|
|
23
|
+
*/
|
|
24
|
+
export declare const forkAuthorSchema: z.ZodObject<{
|
|
25
|
+
platform: z.ZodEnum<["github", "gitlab"]>;
|
|
26
|
+
user: z.ZodString;
|
|
27
|
+
forkOrigin: z.ZodString;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
platform: "github" | "gitlab";
|
|
30
|
+
user: string;
|
|
31
|
+
forkOrigin: string;
|
|
32
|
+
}, {
|
|
33
|
+
platform: "github" | "gitlab";
|
|
34
|
+
user: string;
|
|
35
|
+
forkOrigin: string;
|
|
36
|
+
}>;
|
|
37
|
+
export type ForkAuthor = z.infer<typeof forkAuthorSchema>;
|
|
38
|
+
/**
|
|
39
|
+
* Spread into each tool's Zod input schema. The two fields are independent —
|
|
40
|
+
* a tool can accept `workspaceId` alone (override for the override target)
|
|
41
|
+
* without `forkAuthor` (canonical clone) and vice versa.
|
|
42
|
+
*/
|
|
43
|
+
export declare const forkFieldsExtensions: {
|
|
44
|
+
forkAuthor: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
platform: z.ZodEnum<["github", "gitlab"]>;
|
|
46
|
+
user: z.ZodString;
|
|
47
|
+
forkOrigin: z.ZodString;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
platform: "github" | "gitlab";
|
|
50
|
+
user: string;
|
|
51
|
+
forkOrigin: string;
|
|
52
|
+
}, {
|
|
53
|
+
platform: "github" | "gitlab";
|
|
54
|
+
user: string;
|
|
55
|
+
forkOrigin: string;
|
|
56
|
+
}>>;
|
|
57
|
+
workspaceId: z.ZodOptional<z.ZodString>;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Subset of a tool input shape carrying just the §5 fields.
|
|
61
|
+
*
|
|
62
|
+
* Tools have many other fields; this is the narrow type the
|
|
63
|
+
* `extractForkFields` helper accepts so it stays usable across all 20 tools
|
|
64
|
+
* without each one importing a full input type.
|
|
65
|
+
*/
|
|
66
|
+
export interface ForkFieldsInput {
|
|
67
|
+
forkAuthor?: ForkAuthor;
|
|
68
|
+
workspaceId?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Pluck the §5 fields off a tool input for IPC payload forwarding.
|
|
72
|
+
*
|
|
73
|
+
* Returns an object suitable for spreading into the `request(...)` call:
|
|
74
|
+
*
|
|
75
|
+
* await request('intent', 'create', {
|
|
76
|
+
* repoOrigin: actualOrigin,
|
|
77
|
+
* ...extractForkFields(input),
|
|
78
|
+
* ...
|
|
79
|
+
* })
|
|
80
|
+
*
|
|
81
|
+
* Fields are only included when defined, so canonical-clone callers don't
|
|
82
|
+
* spam Muninn with explicit nulls.
|
|
83
|
+
*/
|
|
84
|
+
export declare function extractForkFields(input: ForkFieldsInput): ForkFieldsInput;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Zod schema fragment for the forkAuthor + workspaceId attribution
|
|
3
|
+
* fields added in REPO_FORKS_IMPLEMENTATION_PLAN_PHASE_1.md §5.
|
|
4
|
+
*
|
|
5
|
+
* Every MCP tool that accepts `repoOrigin` spreads `forkFieldsExtensions`
|
|
6
|
+
* into its Zod input schema and forwards `extractForkFields(input)` to the
|
|
7
|
+
* IPC payload. Both fields are OPTIONAL — Muninn resolves them
|
|
8
|
+
* automatically from `repoPath` (fork detection + workspace registry, §4.2 +
|
|
9
|
+
* §4.3). Callers only need to pass them in advanced override / testing
|
|
10
|
+
* scenarios where the desktop app's auto-resolution should be bypassed.
|
|
11
|
+
*
|
|
12
|
+
* Keep the field shape in lockstep with:
|
|
13
|
+
* - kawa.api/src/models/intents.model.ts / decisions.model.ts
|
|
14
|
+
* - kawa.muninn/src-tauri/src/gardener/handlers/intent.rs (OutboundIdentity)
|
|
15
|
+
*
|
|
16
|
+
* Drift across repos will cause silent rejection (Yup validators strip
|
|
17
|
+
* unknown fields on the API side) or runtime errors on the Muninn side.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
/**
|
|
21
|
+
* Fork attribution payload. Optional in its entirety; when present, all
|
|
22
|
+
* three subfields are required (so the API can persist a coherent record).
|
|
23
|
+
*/
|
|
24
|
+
export const forkAuthorSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
platform: z.enum(['github', 'gitlab']),
|
|
27
|
+
user: z.string(),
|
|
28
|
+
forkOrigin: z.string(),
|
|
29
|
+
})
|
|
30
|
+
.describe('Fork attribution; usually resolved by Muninn automatically — pass only for override / testing.');
|
|
31
|
+
/**
|
|
32
|
+
* Spread into each tool's Zod input schema. The two fields are independent —
|
|
33
|
+
* a tool can accept `workspaceId` alone (override for the override target)
|
|
34
|
+
* without `forkAuthor` (canonical clone) and vice versa.
|
|
35
|
+
*/
|
|
36
|
+
export const forkFieldsExtensions = {
|
|
37
|
+
forkAuthor: forkAuthorSchema.optional(),
|
|
38
|
+
workspaceId: z
|
|
39
|
+
.string()
|
|
40
|
+
.optional()
|
|
41
|
+
.describe('Workspace identifier; usually resolved by Muninn automatically — pass only for override / testing.'),
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Pluck the §5 fields off a tool input for IPC payload forwarding.
|
|
45
|
+
*
|
|
46
|
+
* Returns an object suitable for spreading into the `request(...)` call:
|
|
47
|
+
*
|
|
48
|
+
* await request('intent', 'create', {
|
|
49
|
+
* repoOrigin: actualOrigin,
|
|
50
|
+
* ...extractForkFields(input),
|
|
51
|
+
* ...
|
|
52
|
+
* })
|
|
53
|
+
*
|
|
54
|
+
* Fields are only included when defined, so canonical-clone callers don't
|
|
55
|
+
* spam Muninn with explicit nulls.
|
|
56
|
+
*/
|
|
57
|
+
export function extractForkFields(input) {
|
|
58
|
+
const out = {};
|
|
59
|
+
if (input.forkAuthor !== undefined)
|
|
60
|
+
out.forkAuthor = input.forkAuthor;
|
|
61
|
+
if (input.workspaceId !== undefined)
|
|
62
|
+
out.workspaceId = input.workspaceId;
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=_fork-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_fork-fields.js","sourceRoot":"","sources":["../../src/tools/_fork-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC;KACD,QAAQ,CACP,gGAAgG,CACjG,CAAA;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oGAAoG,CACrG;CACJ,CAAA;AAcD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAsB;IACtD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IACrE,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IACxE,OAAO,GAAG,CAAA;AACZ,CAAC"}
|