@mnemonik/shared 7.140.1 → 7.140.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codeScanner.d.ts +41 -1
- package/dist/codeScanner.d.ts.map +1 -1
- package/dist/codeScanner.js +90 -12
- package/dist/codeScanner.js.map +1 -1
- package/dist/hookRuntime.d.ts +9 -8
- package/dist/hookRuntime.d.ts.map +1 -1
- package/dist/hookRuntime.js +21 -10
- package/dist/hookRuntime.js.map +1 -1
- package/dist/hookTrace.d.ts +149 -0
- package/dist/hookTrace.d.ts.map +1 -0
- package/dist/hookTrace.js +483 -0
- package/dist/hookTrace.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/projectIdentityFile.d.ts +13 -0
- package/dist/projectIdentityFile.d.ts.map +1 -1
- package/dist/projectIdentityFile.js +31 -18
- package/dist/projectIdentityFile.js.map +1 -1
- package/dist/protectedPaths.d.ts +6 -0
- package/dist/protectedPaths.d.ts.map +1 -1
- package/dist/protectedPaths.js +15 -6
- package/dist/protectedPaths.js.map +1 -1
- package/dist/repositoryRoot.d.ts +20 -8
- package/dist/repositoryRoot.d.ts.map +1 -1
- package/dist/repositoryRoot.js +167 -79
- package/dist/repositoryRoot.js.map +1 -1
- package/package.json +2 -2
- package/src/codeScanner.ts +107 -9
- package/src/hookRuntime.ts +26 -14
- package/src/hookTrace.ts +588 -0
- package/src/index.ts +4 -0
- package/src/projectIdentityFile.ts +34 -20
- package/src/protectedPaths.ts +18 -7
- package/src/repositoryRoot.ts +188 -82
- package/test-fixtures/identity/runner.d.mts +1 -1
- package/test-fixtures/identity/runner.mjs +299 -25
- package/tests/hookTrace.test.ts +350 -0
- package/tests/nearestProjectIdentity.test.ts +253 -0
package/dist/hookRuntime.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { protectWindowsDirectory } from './runtimeSigners.js';
|
|
2
2
|
import { stderr, stdin } from 'node:process';
|
|
3
3
|
import { HOOK_STDIN_TIMEOUT_MS } from './hookTimeouts.js';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveNearestProjectIdentity } from './repositoryRoot.js';
|
|
5
|
+
import { noteHookTraceProject } from './hookTrace.js';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { join, resolve } from 'node:path';
|
|
8
|
+
/**
|
|
9
|
+
* A cwd the model typed, as an absolute folder: a leading `~` is the home
|
|
10
|
+
* folder, and a relative path is taken from the host's cwd.
|
|
11
|
+
*/
|
|
12
|
+
export function modelTypedCwd(hostCwd, typed) {
|
|
13
|
+
const expanded = typed === '~' ? homedir() : /^~[\\/]/.test(typed) ? join(homedir(), typed.slice(2)) : typed;
|
|
14
|
+
return resolve(hostCwd, expanded);
|
|
15
|
+
}
|
|
5
16
|
/**
|
|
6
17
|
* One resolution per directory per process. A hook process serves one event,
|
|
7
18
|
* and its handlers resolve the same cwd several times in sequence (each
|
|
@@ -15,17 +26,13 @@ const identityCache = new Map();
|
|
|
15
26
|
export function clearProjectIdentityCache() {
|
|
16
27
|
identityCache.clear();
|
|
17
28
|
}
|
|
18
|
-
export async function findProjectIdentity(startCwd
|
|
29
|
+
export async function findProjectIdentity(startCwd) {
|
|
19
30
|
if (!startCwd)
|
|
20
31
|
return null;
|
|
21
|
-
const key =
|
|
22
|
-
startCwd,
|
|
23
|
-
options.allowNestedInherit ?? null,
|
|
24
|
-
options.maxDepth ?? null,
|
|
25
|
-
]);
|
|
32
|
+
const key = startCwd;
|
|
26
33
|
let pending = identityCache.get(key);
|
|
27
34
|
if (!pending) {
|
|
28
|
-
pending = findProjectIdentityDetailed(startCwd
|
|
35
|
+
pending = findProjectIdentityDetailed(startCwd).then((result) => result.kind === 'ok'
|
|
29
36
|
? {
|
|
30
37
|
projectId: result.identity.projectId,
|
|
31
38
|
projectName: result.identity.projectName,
|
|
@@ -35,11 +42,14 @@ export async function findProjectIdentity(startCwd, options = {}) {
|
|
|
35
42
|
identityCache.set(key, pending);
|
|
36
43
|
// A failure is not an answer: the next caller resolves afresh.
|
|
37
44
|
pending.catch(() => identityCache.delete(key));
|
|
45
|
+
// The hook flight recorder notes the project this invocation resolved.
|
|
46
|
+
pending.then((found) => noteHookTraceProject(found?.projectId), () => undefined);
|
|
38
47
|
}
|
|
39
48
|
return pending;
|
|
40
49
|
}
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
/** The project a hook's working folder belongs to: the nearest `.mnemonik.json` above it. */
|
|
51
|
+
export async function findProjectIdentityDetailed(startCwd) {
|
|
52
|
+
return resolveNearestProjectIdentity(startCwd);
|
|
43
53
|
}
|
|
44
54
|
/** Largest hook payload read from stdin; a bigger one fails open. */
|
|
45
55
|
export const HOOK_STDIN_MAX_BYTES = 1_048_576;
|
|
@@ -218,4 +228,5 @@ export * from './runtimeReader.js';
|
|
|
218
228
|
export * from './runtimeSigners.js';
|
|
219
229
|
export * from './projectSetupHandoff.js';
|
|
220
230
|
export * from './hookConversation.js';
|
|
231
|
+
export * from './hookTrace.js';
|
|
221
232
|
//# sourceMappingURL=hookRuntime.js.map
|
package/dist/hookRuntime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hookRuntime.js","sourceRoot":"","sources":["../src/hookRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAgB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hookRuntime.js","sourceRoot":"","sources":["../src/hookRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
export type HookTraceHost = 'cursor' | 'claude-code' | 'codex' | 'copilot';
|
|
2
|
+
/** Past this size the file is renamed to `<host>.jsonl.1` (replacing any older one). */
|
|
3
|
+
export declare const HOOK_TRACE_MAX_BYTES: number;
|
|
4
|
+
export declare const HOOK_TRACE_ENV = "MNEMONIK_HOOK_TRACE";
|
|
5
|
+
export interface HookTraceCall {
|
|
6
|
+
/** URL path only; id-like segments become `:id`, never a query string. */
|
|
7
|
+
path: string;
|
|
8
|
+
status?: number;
|
|
9
|
+
/** `timeout`, `aborted`, a system code such as `ECONNREFUSED`, or an error name. */
|
|
10
|
+
error?: string;
|
|
11
|
+
/** Still waiting for an answer when the process exited. */
|
|
12
|
+
pending?: true;
|
|
13
|
+
ms: number;
|
|
14
|
+
}
|
|
15
|
+
export interface HookTraceOutput {
|
|
16
|
+
bytes: number;
|
|
17
|
+
/** Byte size of each output field set; nested host fields as `hookSpecificOutput.<name>`. */
|
|
18
|
+
sizes: Record<string, number>;
|
|
19
|
+
permission?: string;
|
|
20
|
+
decision?: string;
|
|
21
|
+
continue?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** Written as the recorder starts, before stdin is read. */
|
|
24
|
+
export interface HookTraceStart {
|
|
25
|
+
v: 1;
|
|
26
|
+
phase: 'start';
|
|
27
|
+
ts: string;
|
|
28
|
+
host: HookTraceHost;
|
|
29
|
+
hookVersion?: string;
|
|
30
|
+
pid: number;
|
|
31
|
+
id: string;
|
|
32
|
+
/** From process start, including Node start-up and module load. */
|
|
33
|
+
processMs: number;
|
|
34
|
+
}
|
|
35
|
+
/** Written once stdin is read and the event is known. */
|
|
36
|
+
export interface HookTraceInput {
|
|
37
|
+
v: 1;
|
|
38
|
+
phase: 'input';
|
|
39
|
+
ts: string;
|
|
40
|
+
host: HookTraceHost;
|
|
41
|
+
pid: number;
|
|
42
|
+
id: string;
|
|
43
|
+
event: string | null;
|
|
44
|
+
hostVersion?: string;
|
|
45
|
+
sessionId?: string;
|
|
46
|
+
conversationId?: string;
|
|
47
|
+
generationId?: string;
|
|
48
|
+
agentId?: string;
|
|
49
|
+
turnId?: string;
|
|
50
|
+
tool?: string;
|
|
51
|
+
cwd?: string;
|
|
52
|
+
inputBytes: number;
|
|
53
|
+
/** Byte size of each top-level input field's JSON value. Values are never recorded. */
|
|
54
|
+
fields: Record<string, number>;
|
|
55
|
+
/** Time from the recorder starting to the event being known (mostly the stdin read). */
|
|
56
|
+
readMs: number;
|
|
57
|
+
}
|
|
58
|
+
export interface HookTraceEnd {
|
|
59
|
+
v: 1;
|
|
60
|
+
phase: 'end';
|
|
61
|
+
ts: string;
|
|
62
|
+
host: HookTraceHost;
|
|
63
|
+
pid: number;
|
|
64
|
+
id: string;
|
|
65
|
+
event: string | null;
|
|
66
|
+
projectId?: string;
|
|
67
|
+
output: HookTraceOutput | null;
|
|
68
|
+
calls: HookTraceCall[];
|
|
69
|
+
/** From the recorder starting (after module load) to exit. */
|
|
70
|
+
durationMs: number;
|
|
71
|
+
/** From process start, including Node start-up and module load. */
|
|
72
|
+
processMs: number;
|
|
73
|
+
exitCode: number;
|
|
74
|
+
/** Name or system code of the error the hook failed open on. */
|
|
75
|
+
errorKind?: string;
|
|
76
|
+
/** Its message, scrubbed and cut to 80 characters. */
|
|
77
|
+
error?: string;
|
|
78
|
+
}
|
|
79
|
+
export type HookTraceRecord = HookTraceStart | HookTraceInput | HookTraceEnd;
|
|
80
|
+
export declare function hookTraceEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
81
|
+
export declare function hookTraceDirectory(stateDir?: string): string;
|
|
82
|
+
export declare function hookTraceFile(host: HookTraceHost, stateDir?: string): string;
|
|
83
|
+
/** Append one line, rotating first when the file is full. Throws; callers swallow. */
|
|
84
|
+
export declare function appendHookTraceLine(file: string, record: HookTraceRecord): void;
|
|
85
|
+
/** Field names and sizes, the decision fields' short enum values, never text. */
|
|
86
|
+
export declare function summarizeHookOutput(text: string): HookTraceOutput;
|
|
87
|
+
export declare function errorKind(error: unknown): string;
|
|
88
|
+
/** The message, whitespace folded, secrets scrubbed, cut to 80 characters. */
|
|
89
|
+
export declare function scrubHookTraceMessage(error: unknown): string;
|
|
90
|
+
export interface HookTraceCallToken {
|
|
91
|
+
input: unknown;
|
|
92
|
+
startedAt: number;
|
|
93
|
+
}
|
|
94
|
+
export interface HookTraceOptions {
|
|
95
|
+
host: HookTraceHost;
|
|
96
|
+
hookVersion?: string;
|
|
97
|
+
env?: NodeJS.ProcessEnv;
|
|
98
|
+
stateDir?: string;
|
|
99
|
+
}
|
|
100
|
+
export declare class HookTrace {
|
|
101
|
+
private readonly host;
|
|
102
|
+
private readonly file;
|
|
103
|
+
private readonly hookVersion?;
|
|
104
|
+
private readonly id;
|
|
105
|
+
private readonly startedAt;
|
|
106
|
+
private opened;
|
|
107
|
+
private started;
|
|
108
|
+
private ended;
|
|
109
|
+
private event;
|
|
110
|
+
private outputSummary;
|
|
111
|
+
private error?;
|
|
112
|
+
private errorKind?;
|
|
113
|
+
private projectId?;
|
|
114
|
+
private readonly calls;
|
|
115
|
+
private readonly inFlight;
|
|
116
|
+
constructor(host: HookTraceHost, file: string | undefined, hookVersion?: string | undefined);
|
|
117
|
+
get enabled(): boolean;
|
|
118
|
+
private write;
|
|
119
|
+
/**
|
|
120
|
+
* Write the `start` line: pid, run id and time since process start, nothing
|
|
121
|
+
* from the editor. Runs before stdin is read, so a run killed while the
|
|
122
|
+
* editor is still sending its event leaves this line.
|
|
123
|
+
*/
|
|
124
|
+
open(): void;
|
|
125
|
+
/** Write the `input` line. `input` is the parsed payload, or null when none parsed. */
|
|
126
|
+
begin(input: unknown, event?: string | null): void;
|
|
127
|
+
/** The exact text the hook wrote to stdout (or nothing). */
|
|
128
|
+
output(text: string | null | undefined): void;
|
|
129
|
+
/** The error the hook failed open on. */
|
|
130
|
+
fail(error: unknown): void;
|
|
131
|
+
project(projectId: string | undefined): void;
|
|
132
|
+
/** A call has gone out; {@link settle} records it, {@link finish} records it as pending. */
|
|
133
|
+
callStarted(input: unknown): HookTraceCallToken;
|
|
134
|
+
settle(token: HookTraceCallToken, status?: number, error?: unknown): void;
|
|
135
|
+
call(input: unknown, startedAt: number, status?: number, error?: unknown): void;
|
|
136
|
+
/** Write the `end` line once. Runs from the process `exit` event. */
|
|
137
|
+
finish(exitCode?: number): void;
|
|
138
|
+
}
|
|
139
|
+
/** Resolved project ids reach the trace from the shared identity cache. */
|
|
140
|
+
export declare function noteHookTraceProject(projectId: string | undefined): void;
|
|
141
|
+
/**
|
|
142
|
+
* Start this process's recorder: one per hook process. Writes the `start`
|
|
143
|
+
* line at once (so call it before reading stdin), times every `fetch` the
|
|
144
|
+
* process makes (path, status or error kind, duration; `pending` when still
|
|
145
|
+
* waiting at exit) and writes the `end` line from the process `exit` event,
|
|
146
|
+
* so every exit path is covered.
|
|
147
|
+
*/
|
|
148
|
+
export declare function startHookTrace(options: HookTraceOptions): HookTrace;
|
|
149
|
+
//# sourceMappingURL=hookTrace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hookTrace.d.ts","sourceRoot":"","sources":["../src/hookTrace.ts"],"names":[],"mappings":"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"}
|