@tienne/gestalt 0.84.1 → 0.85.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/CLAUDE.md +4 -4
- package/README.ko.md +72 -22
- package/README.md +73 -23
- package/dist/benchmarks/runners/passthrough-benchmark-runner.d.ts.map +1 -1
- package/dist/benchmarks/runners/passthrough-benchmark-runner.js +8 -7
- package/dist/benchmarks/runners/passthrough-benchmark-runner.js.map +1 -1
- package/dist/bin/gestalt.js +2 -2
- package/dist/package.json +1 -1
- package/dist/plugin/skills/dispatch/SKILL.md +14 -2
- package/dist/plugin/skills/execute/SKILL.md +219 -52
- package/dist/plugin/skills/interview/SKILL.md +15 -2
- package/dist/plugin/skills/review/SKILL.md +29 -5
- package/dist/plugin/skills/solve/SKILL.md +20 -5
- package/dist/plugin/skills/spec/SKILL.md +2 -0
- package/dist/src/cli/commands/interview.d.ts.map +1 -1
- package/dist/src/cli/commands/interview.js +16 -4
- package/dist/src/cli/commands/interview.js.map +1 -1
- package/dist/src/cli/commands/memory-merge.d.ts +2 -0
- package/dist/src/cli/commands/memory-merge.d.ts.map +1 -0
- package/dist/src/cli/commands/memory-merge.js +13 -0
- package/dist/src/cli/commands/memory-merge.js.map +1 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +7 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/constants.d.ts +4 -0
- package/dist/src/core/constants.d.ts.map +1 -1
- package/dist/src/core/constants.js +8 -0
- package/dist/src/core/constants.js.map +1 -1
- package/dist/src/core/errors.d.ts +3 -0
- package/dist/src/core/errors.d.ts.map +1 -1
- package/dist/src/core/errors.js +7 -0
- package/dist/src/core/errors.js.map +1 -1
- package/dist/src/core/file-lock.d.ts +37 -0
- package/dist/src/core/file-lock.d.ts.map +1 -0
- package/dist/src/core/file-lock.js +143 -0
- package/dist/src/core/file-lock.js.map +1 -0
- package/dist/src/core/json-file.d.ts +40 -0
- package/dist/src/core/json-file.d.ts.map +1 -0
- package/dist/src/core/json-file.js +82 -0
- package/dist/src/core/json-file.js.map +1 -0
- package/dist/src/core/types.d.ts +86 -9
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/events/store.d.ts +6 -0
- package/dist/src/events/store.d.ts.map +1 -1
- package/dist/src/events/store.js +12 -0
- package/dist/src/events/store.js.map +1 -1
- package/dist/src/events/types.d.ts +7 -0
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/events/types.js +7 -0
- package/dist/src/events/types.js.map +1 -1
- package/dist/src/execute/artifact-verifier.d.ts +12 -0
- package/dist/src/execute/artifact-verifier.d.ts.map +1 -0
- package/dist/src/execute/artifact-verifier.js +211 -0
- package/dist/src/execute/artifact-verifier.js.map +1 -0
- package/dist/src/execute/drift-detector.d.ts +2 -0
- package/dist/src/execute/drift-detector.d.ts.map +1 -1
- package/dist/src/execute/drift-detector.js +9 -13
- package/dist/src/execute/drift-detector.js.map +1 -1
- package/dist/src/execute/orchestrators/evaluation.d.ts +5 -1
- package/dist/src/execute/orchestrators/evaluation.d.ts.map +1 -1
- package/dist/src/execute/orchestrators/evaluation.js +48 -41
- package/dist/src/execute/orchestrators/evaluation.js.map +1 -1
- package/dist/src/execute/orchestrators/evolution.d.ts +17 -3
- package/dist/src/execute/orchestrators/evolution.d.ts.map +1 -1
- package/dist/src/execute/orchestrators/evolution.js +102 -53
- package/dist/src/execute/orchestrators/evolution.js.map +1 -1
- package/dist/src/execute/orchestrators/execution.d.ts +17 -2
- package/dist/src/execute/orchestrators/execution.d.ts.map +1 -1
- package/dist/src/execute/orchestrators/execution.js +99 -3
- package/dist/src/execute/orchestrators/execution.js.map +1 -1
- package/dist/src/execute/orchestrators/planning.d.ts +18 -4
- package/dist/src/execute/orchestrators/planning.d.ts.map +1 -1
- package/dist/src/execute/orchestrators/planning.js +62 -21
- package/dist/src/execute/orchestrators/planning.js.map +1 -1
- package/dist/src/execute/orchestrators/types.d.ts +12 -1
- package/dist/src/execute/orchestrators/types.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.d.ts +12 -5
- package/dist/src/execute/passthrough-engine.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.js +10 -4
- package/dist/src/execute/passthrough-engine.js.map +1 -1
- package/dist/src/execute/repository.d.ts +11 -1
- package/dist/src/execute/repository.d.ts.map +1 -1
- package/dist/src/execute/repository.js +138 -19
- package/dist/src/execute/repository.js.map +1 -1
- package/dist/src/execute/session.d.ts +26 -4
- package/dist/src/execute/session.d.ts.map +1 -1
- package/dist/src/execute/session.js +165 -48
- package/dist/src/execute/session.js.map +1 -1
- package/dist/src/execute/structural-commands.d.ts +23 -0
- package/dist/src/execute/structural-commands.d.ts.map +1 -0
- package/dist/src/execute/structural-commands.js +139 -0
- package/dist/src/execute/structural-commands.js.map +1 -0
- package/dist/src/interview/engine.d.ts +1 -1
- package/dist/src/interview/engine.d.ts.map +1 -1
- package/dist/src/interview/engine.js +3 -3
- package/dist/src/interview/engine.js.map +1 -1
- package/dist/src/interview/passthrough-engine.d.ts +1 -1
- package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
- package/dist/src/interview/passthrough-engine.js +20 -3
- package/dist/src/interview/passthrough-engine.js.map +1 -1
- package/dist/src/interview/repository.d.ts +8 -0
- package/dist/src/interview/repository.d.ts.map +1 -1
- package/dist/src/interview/repository.js +16 -1
- package/dist/src/interview/repository.js.map +1 -1
- package/dist/src/interview/session.d.ts +15 -2
- package/dist/src/interview/session.d.ts.map +1 -1
- package/dist/src/interview/session.js +67 -23
- package/dist/src/interview/session.js.map +1 -1
- package/dist/src/knowledge-base/embedding.d.ts +6 -1
- package/dist/src/knowledge-base/embedding.d.ts.map +1 -1
- package/dist/src/knowledge-base/embedding.js +19 -6
- package/dist/src/knowledge-base/embedding.js.map +1 -1
- package/dist/src/local-pr/registry.d.ts +1 -21
- package/dist/src/local-pr/registry.d.ts.map +1 -1
- package/dist/src/local-pr/registry.js +7 -113
- package/dist/src/local-pr/registry.js.map +1 -1
- package/dist/src/mcp/input-guard.d.ts +17 -0
- package/dist/src/mcp/input-guard.d.ts.map +1 -1
- package/dist/src/mcp/input-guard.js +1 -1
- package/dist/src/mcp/input-guard.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +62 -7
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +28 -1
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +26 -40
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/execute/evaluate.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/evaluate.js +15 -9
- package/dist/src/mcp/tools/execute/evaluate.js.map +1 -1
- package/dist/src/mcp/tools/execute/evolve.d.ts +1 -0
- package/dist/src/mcp/tools/execute/evolve.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/evolve.js +102 -37
- package/dist/src/mcp/tools/execute/evolve.js.map +1 -1
- package/dist/src/mcp/tools/execute/execution.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/execution.js +66 -7
- package/dist/src/mcp/tools/execute/execution.js.map +1 -1
- package/dist/src/mcp/tools/execute/planning.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/planning.js +34 -2
- package/dist/src/mcp/tools/execute/planning.js.map +1 -1
- package/dist/src/mcp/tools/execute/roles.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/roles.js +13 -5
- package/dist/src/mcp/tools/execute/roles.js.map +1 -1
- package/dist/src/mcp/tools/execute/utility.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/utility.js +26 -0
- package/dist/src/mcp/tools/execute/utility.js.map +1 -1
- package/dist/src/mcp/tools/execute/utils.d.ts +1 -0
- package/dist/src/mcp/tools/execute/utils.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/utils.js +15 -0
- package/dist/src/mcp/tools/execute/utils.js.map +1 -1
- package/dist/src/mcp/tools/execute-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute-passthrough.js +21 -1
- package/dist/src/mcp/tools/execute-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.d.ts +2 -1
- package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.js +4 -3
- package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/interview.d.ts.map +1 -1
- package/dist/src/mcp/tools/interview.js +2 -1
- package/dist/src/mcp/tools/interview.js.map +1 -1
- package/dist/src/mcp/tools/review-passthrough.js +15 -19
- package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/spec-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/spec-passthrough.js +16 -8
- package/dist/src/mcp/tools/spec-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/status.d.ts.map +1 -1
- package/dist/src/mcp/tools/status.js +4 -0
- package/dist/src/mcp/tools/status.js.map +1 -1
- package/dist/src/memory/memory-context-injector.d.ts +22 -8
- package/dist/src/memory/memory-context-injector.d.ts.map +1 -1
- package/dist/src/memory/memory-context-injector.js +85 -13
- package/dist/src/memory/memory-context-injector.js.map +1 -1
- package/dist/src/memory/memory-merge.d.ts +19 -0
- package/dist/src/memory/memory-merge.d.ts.map +1 -0
- package/dist/src/memory/memory-merge.js +120 -0
- package/dist/src/memory/memory-merge.js.map +1 -0
- package/dist/src/memory/project-memory-store.d.ts +15 -11
- package/dist/src/memory/project-memory-store.d.ts.map +1 -1
- package/dist/src/memory/project-memory-store.js +97 -120
- package/dist/src/memory/project-memory-store.js.map +1 -1
- package/dist/src/memory/semantic-search.d.ts +4 -1
- package/dist/src/memory/semantic-search.d.ts.map +1 -1
- package/dist/src/memory/semantic-search.js +66 -19
- package/dist/src/memory/semantic-search.js.map +1 -1
- package/dist/src/resilience/lateral.d.ts +8 -1
- package/dist/src/resilience/lateral.d.ts.map +1 -1
- package/dist/src/resilience/lateral.js +52 -4
- package/dist/src/resilience/lateral.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/skills/dispatch/SKILL.md +14 -2
- package/plugin/skills/execute/SKILL.md +219 -52
- package/plugin/skills/interview/SKILL.md +15 -2
- package/plugin/skills/review/SKILL.md +29 -5
- package/plugin/skills/solve/SKILL.md +20 -5
- package/plugin/skills/spec/SKILL.md +2 -0
- package/dist/src/interview/mini-interview-engine.d.ts +0 -33
- package/dist/src/interview/mini-interview-engine.d.ts.map +0 -1
- package/dist/src/interview/mini-interview-engine.js +0 -102
- package/dist/src/interview/mini-interview-engine.js.map +0 -1
- package/dist/src/memory/user-profile-store.d.ts +0 -13
- package/dist/src/memory/user-profile-store.d.ts.map +0 -1
- package/dist/src/memory/user-profile-store.js +0 -85
- package/dist/src/memory/user-profile-store.js.map +0 -1
|
@@ -1,25 +1,45 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { SessionNotFoundError, SessionAlreadyCompletedError } from '../core/errors.js';
|
|
3
|
-
import { DEFAULT_SESSION_TTL_MS } from '../core/constants.js';
|
|
2
|
+
import { SessionNotFoundError, SessionAlreadyCompletedError, InterviewNotReadyError, } from '../core/errors.js';
|
|
3
|
+
import { DEFAULT_SESSION_TTL_MS, RESOLUTION_THRESHOLD } from '../core/constants.js';
|
|
4
4
|
import { logger } from '../core/logger.js';
|
|
5
5
|
import { EventType } from '../events/types.js';
|
|
6
6
|
import { InterviewSessionRepository } from './repository.js';
|
|
7
|
+
/**
|
|
8
|
+
* 인터뷰 세션의 인메모리 캐시. 기준은 이벤트 스토어다.
|
|
9
|
+
*
|
|
10
|
+
* 같은 DB를 여러 MCP 프로세스(dispatch 워커 등)가 함께 쓴다. 그래서 캐시가 담은
|
|
11
|
+
* 세션마다 그때까지 반영한 이벤트 수를 들고 있다가, get()에서 스토어의 수와 다르면
|
|
12
|
+
* 다시 재구성한다. 모든 변경 메서드가 get()부터 부르므로 쓰기도 최신 상태 위에서 한다.
|
|
13
|
+
*/
|
|
7
14
|
export class SessionManager {
|
|
8
15
|
eventStore;
|
|
9
16
|
sessions = new Map();
|
|
17
|
+
eventCounts = new Map();
|
|
18
|
+
repo;
|
|
10
19
|
constructor(eventStore) {
|
|
11
20
|
this.eventStore = eventStore;
|
|
21
|
+
this.repo = new InterviewSessionRepository(eventStore);
|
|
12
22
|
}
|
|
13
23
|
/**
|
|
14
24
|
* EventStore에서 기존 세션을 복원하여 메모리 Map에 로드한다.
|
|
15
25
|
* 서버 시작 시 한 번 호출.
|
|
16
26
|
*/
|
|
17
27
|
loadFromStore() {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
for (const id of this.repo.list())
|
|
29
|
+
this.reload(id);
|
|
30
|
+
}
|
|
31
|
+
reload(sessionId) {
|
|
32
|
+
const loaded = this.repo.load(sessionId);
|
|
33
|
+
if (!loaded)
|
|
34
|
+
return null;
|
|
35
|
+
this.sessions.set(sessionId, loaded.session);
|
|
36
|
+
this.eventCounts.set(sessionId, loaded.eventCount);
|
|
37
|
+
return loaded.session;
|
|
38
|
+
}
|
|
39
|
+
record(sessionId, eventType, payload) {
|
|
40
|
+
const event = this.eventStore.append('interview', sessionId, eventType, payload);
|
|
41
|
+
this.eventCounts.set(sessionId, (this.eventCounts.get(sessionId) ?? 0) + 1);
|
|
42
|
+
return event.timestamp;
|
|
23
43
|
}
|
|
24
44
|
create(topic, projectType) {
|
|
25
45
|
const session = {
|
|
@@ -33,7 +53,7 @@ export class SessionManager {
|
|
|
33
53
|
updatedAt: new Date().toISOString(),
|
|
34
54
|
};
|
|
35
55
|
this.sessions.set(session.sessionId, session);
|
|
36
|
-
this.
|
|
56
|
+
this.record(session.sessionId, EventType.INTERVIEW_SESSION_STARTED, {
|
|
37
57
|
topic,
|
|
38
58
|
projectType,
|
|
39
59
|
});
|
|
@@ -46,7 +66,7 @@ export class SessionManager {
|
|
|
46
66
|
}
|
|
47
67
|
/**
|
|
48
68
|
* updatedAt(마지막 활동) 기준으로 ttlMs를 초과한 인메모리 세션을 제거한다.
|
|
49
|
-
* SQLite 이벤트 원장은 보존되므로
|
|
69
|
+
* SQLite 이벤트 원장은 보존되므로 지운 세션도 get()이 다시 재구성한다.
|
|
50
70
|
* @returns 제거된 세션 수
|
|
51
71
|
*/
|
|
52
72
|
cleanup(ttlMs = DEFAULT_SESSION_TTL_MS) {
|
|
@@ -55,13 +75,19 @@ export class SessionManager {
|
|
|
55
75
|
for (const [id, session] of this.sessions) {
|
|
56
76
|
if (now - new Date(session.updatedAt).getTime() > ttlMs) {
|
|
57
77
|
this.sessions.delete(id);
|
|
78
|
+
this.eventCounts.delete(id);
|
|
58
79
|
removed++;
|
|
59
80
|
}
|
|
60
81
|
}
|
|
61
82
|
return removed;
|
|
62
83
|
}
|
|
63
84
|
get(sessionId) {
|
|
64
|
-
const
|
|
85
|
+
const cached = this.sessions.get(sessionId);
|
|
86
|
+
if (cached &&
|
|
87
|
+
this.eventCounts.get(sessionId) === this.eventStore.countByAggregate('interview', sessionId)) {
|
|
88
|
+
return cached;
|
|
89
|
+
}
|
|
90
|
+
const session = this.reload(sessionId);
|
|
65
91
|
if (!session)
|
|
66
92
|
throw new SessionNotFoundError(sessionId);
|
|
67
93
|
return session;
|
|
@@ -69,7 +95,8 @@ export class SessionManager {
|
|
|
69
95
|
getLatest() {
|
|
70
96
|
let latest = null;
|
|
71
97
|
for (const session of this.sessions.values()) {
|
|
72
|
-
latest
|
|
98
|
+
if (!latest || session.updatedAt >= latest.updatedAt)
|
|
99
|
+
latest = session;
|
|
73
100
|
}
|
|
74
101
|
return latest;
|
|
75
102
|
}
|
|
@@ -78,20 +105,23 @@ export class SessionManager {
|
|
|
78
105
|
if (session.status !== 'in_progress') {
|
|
79
106
|
throw new SessionAlreadyCompletedError(sessionId);
|
|
80
107
|
}
|
|
108
|
+
const roundNumber = session.rounds.length + 1;
|
|
109
|
+
// replay는 라운드 시각을 이벤트 timestamp로 복원한다. 여기서 시각을 따로 찍으면
|
|
110
|
+
// 밀리초 경계에 걸릴 때 라이브 세션과 replay 결과가 어긋난다
|
|
111
|
+
const timestamp = this.record(sessionId, EventType.INTERVIEW_QUESTION_ASKED, {
|
|
112
|
+
roundNumber,
|
|
113
|
+
question,
|
|
114
|
+
gestaltFocus,
|
|
115
|
+
});
|
|
81
116
|
const round = {
|
|
82
|
-
roundNumber
|
|
117
|
+
roundNumber,
|
|
83
118
|
question,
|
|
84
119
|
userResponse: null,
|
|
85
120
|
gestaltFocus,
|
|
86
|
-
timestamp
|
|
121
|
+
timestamp,
|
|
87
122
|
};
|
|
88
123
|
session.rounds.push(round);
|
|
89
|
-
session.updatedAt =
|
|
90
|
-
this.eventStore.append('interview', sessionId, EventType.INTERVIEW_QUESTION_ASKED, {
|
|
91
|
-
roundNumber: round.roundNumber,
|
|
92
|
-
question,
|
|
93
|
-
gestaltFocus,
|
|
94
|
-
});
|
|
124
|
+
session.updatedAt = timestamp;
|
|
95
125
|
return round;
|
|
96
126
|
}
|
|
97
127
|
recordResponse(sessionId, response) {
|
|
@@ -104,7 +134,7 @@ export class SessionManager {
|
|
|
104
134
|
throw new SessionNotFoundError(sessionId);
|
|
105
135
|
currentRound.userResponse = response;
|
|
106
136
|
session.updatedAt = new Date().toISOString();
|
|
107
|
-
this.
|
|
137
|
+
this.record(sessionId, EventType.INTERVIEW_RESPONSE_RECORDED, {
|
|
108
138
|
roundNumber: currentRound.roundNumber,
|
|
109
139
|
response,
|
|
110
140
|
});
|
|
@@ -119,7 +149,7 @@ export class SessionManager {
|
|
|
119
149
|
if (currentRound && score.contradictions && score.contradictions.length > 0) {
|
|
120
150
|
currentRound.contradictions = score.contradictions;
|
|
121
151
|
}
|
|
122
|
-
this.
|
|
152
|
+
this.record(sessionId, EventType.INTERVIEW_RESOLUTION_SCORED, {
|
|
123
153
|
overall: score.overall,
|
|
124
154
|
isReady: score.isReady,
|
|
125
155
|
dimensions: score.dimensions,
|
|
@@ -131,20 +161,33 @@ export class SessionManager {
|
|
|
131
161
|
const session = this.get(sessionId);
|
|
132
162
|
session.compressedContext = compressedContext;
|
|
133
163
|
session.updatedAt = new Date().toISOString();
|
|
164
|
+
this.record(sessionId, EventType.INTERVIEW_CONTEXT_COMPRESSED, { compressedContext });
|
|
134
165
|
}
|
|
135
|
-
complete(sessionId) {
|
|
166
|
+
complete(sessionId, options = {}) {
|
|
136
167
|
const session = this.get(sessionId);
|
|
168
|
+
if (session.status !== 'in_progress') {
|
|
169
|
+
throw new SessionAlreadyCompletedError(sessionId);
|
|
170
|
+
}
|
|
171
|
+
const ready = session.resolutionScore?.isReady === true;
|
|
172
|
+
if (!ready && !options.force) {
|
|
173
|
+
throw new InterviewNotReadyError(session.resolutionScore?.overall ?? null, RESOLUTION_THRESHOLD);
|
|
174
|
+
}
|
|
175
|
+
const forced = !ready;
|
|
137
176
|
session.status = 'completed';
|
|
138
177
|
session.updatedAt = new Date().toISOString();
|
|
139
|
-
|
|
178
|
+
if (forced)
|
|
179
|
+
session.forcedComplete = true;
|
|
180
|
+
this.record(sessionId, EventType.INTERVIEW_SESSION_COMPLETED, {
|
|
140
181
|
totalRounds: session.rounds.length,
|
|
141
182
|
finalResolutionScore: session.resolutionScore?.overall ?? null,
|
|
183
|
+
forced,
|
|
142
184
|
});
|
|
143
185
|
logger.info('interview.completed', {
|
|
144
186
|
module: 'interview',
|
|
145
187
|
sessionId,
|
|
146
188
|
totalRounds: session.rounds.length,
|
|
147
189
|
finalResolutionScore: session.resolutionScore?.overall ?? null,
|
|
190
|
+
forced,
|
|
148
191
|
});
|
|
149
192
|
return session;
|
|
150
193
|
}
|
|
@@ -152,6 +195,7 @@ export class SessionManager {
|
|
|
152
195
|
const session = this.get(sessionId);
|
|
153
196
|
session.status = 'aborted';
|
|
154
197
|
session.updatedAt = new Date().toISOString();
|
|
198
|
+
this.record(sessionId, EventType.INTERVIEW_SESSION_ABORTED, {});
|
|
155
199
|
return session;
|
|
156
200
|
}
|
|
157
201
|
list() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/interview/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,OAAO,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/interview/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
* 모델은 첫 호출 시 lazy 로딩된다.
|
|
4
4
|
*/
|
|
5
5
|
export declare class EmbeddingService {
|
|
6
|
-
private
|
|
6
|
+
private pipelinePromise;
|
|
7
7
|
private readonly modelName;
|
|
8
8
|
private getPipeline;
|
|
9
|
+
/**
|
|
10
|
+
* 모델을 미리 올린다. 이미 올라와 있으면 바로 끝난다.
|
|
11
|
+
* 로딩 실패와 임베딩 실패를 호출부가 나눠 다룰 수 있게 따로 둔다.
|
|
12
|
+
*/
|
|
13
|
+
ensureLoaded(): Promise<void>;
|
|
9
14
|
/**
|
|
10
15
|
* 텍스트 하나를 임베딩 벡터로 변환한다.
|
|
11
16
|
* embedBatch에 위임한다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/embedding.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../../src/knowledge-base/embedding.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAGvD,OAAO,CAAC,WAAW;IAiBnB;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;OAGG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK5C;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,SAAK,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAevE"}
|
|
@@ -5,15 +5,28 @@ import { log } from '../core/log.js';
|
|
|
5
5
|
* 모델은 첫 호출 시 lazy 로딩된다.
|
|
6
6
|
*/
|
|
7
7
|
export class EmbeddingService {
|
|
8
|
-
|
|
8
|
+
pipelinePromise = null;
|
|
9
9
|
modelName = 'Xenova/all-MiniLM-L6-v2';
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
// 로딩 중인 Promise를 들고 있어야 첫 로딩이 끝나기 전에 들어온 호출이 모델을 또 받지 않는다
|
|
11
|
+
getPipeline() {
|
|
12
|
+
if (!this.pipelinePromise) {
|
|
12
13
|
log(`embedding: loading model ${this.modelName}...`);
|
|
13
|
-
this.
|
|
14
|
-
|
|
14
|
+
this.pipelinePromise = pipeline('feature-extraction', this.modelName).then((instance) => {
|
|
15
|
+
log('embedding: model loaded');
|
|
16
|
+
return instance;
|
|
17
|
+
}, (e) => {
|
|
18
|
+
this.pipelinePromise = null;
|
|
19
|
+
throw e;
|
|
20
|
+
});
|
|
15
21
|
}
|
|
16
|
-
return this.
|
|
22
|
+
return this.pipelinePromise;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 모델을 미리 올린다. 이미 올라와 있으면 바로 끝난다.
|
|
26
|
+
* 로딩 실패와 임베딩 실패를 호출부가 나눠 다룰 수 있게 따로 둔다.
|
|
27
|
+
*/
|
|
28
|
+
async ensureLoaded() {
|
|
29
|
+
await this.getPipeline();
|
|
17
30
|
}
|
|
18
31
|
/**
|
|
19
32
|
* 텍스트 하나를 임베딩 벡터로 변환한다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../src/knowledge-base/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqC,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../src/knowledge-base/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqC,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,eAAe,GAA8C,IAAI,CAAC;IACzD,SAAS,GAAG,yBAAyB,CAAC;IAEvD,0DAA0D;IAClD,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,GAAG,CAAC,4BAA4B,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CACxE,CAAC,QAAQ,EAAE,EAAE;gBACX,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBAC/B,OAAO,QAAQ,CAAC;YAClB,CAAC,EACD,CAAC,CAAU,EAAE,EAAE;gBACb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,MAAM,CAAC,CAAC;YACV,CAAC,CACF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,KAAe,EAAE,SAAS,GAAG,EAAE;QAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAW,CAAC;YACxF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAoB,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -33,27 +33,7 @@ export interface RegisteredRepo {
|
|
|
33
33
|
/** 레포를 가리키는 키. 워크트리 어디서 구해도 같은 값이 나온다 */
|
|
34
34
|
export declare function repoKey(repoRoot: string): string;
|
|
35
35
|
/**
|
|
36
|
-
* 목록을 고치는 동안 다른 프로세스를 막는다.
|
|
37
|
-
*
|
|
38
|
-
* 워크트리 여럿이 같은 목록에 동시에 손대는 게 이 레포의 기본 흐름이다. 잠금 없이
|
|
39
|
-
* 읽고 고쳐 쓰면 나중에 쓴 쪽이 먼저 쓴 쪽의 항목을 덮는다.
|
|
40
|
-
*
|
|
41
|
-
* `mkdir`는 있으면 실패하니까 그 자체가 잠금이다. 쥔 채로 죽은 프로세스가 목록을 영영
|
|
42
|
-
* 못 고치게 만들면 안 되므로 버려진 잠금은 부순다. 부수는 순간에 둘이 겹치면 둘 다
|
|
43
|
-
* `mkdir`을 시도하고 한쪽만 성공한다 — 진 쪽은 다시 기다린다.
|
|
44
|
-
*
|
|
45
|
-
* **버려졌는지는 주인의 pid로 가른다.** 예전에는 잠금 디렉토리의 mtime만 봤는데,
|
|
46
|
-
* 잠금은 잡을 때 한 번 만들어지고 쥔 동안 mtime이 안 올라간다. 그래서 `fn()`이
|
|
47
|
-
* 5초를 넘기면 살아 있는 잠금이 버려진 것으로 보였다. 남이 부수고 들어와 둘이 나란히
|
|
48
|
-
* 읽고 고쳐 써서 늦게 쓴 쪽이 상대 항목을 덮었다. 파일은 rename이라 안 깨지고 등록만
|
|
49
|
-
* 조용히 사라진다.
|
|
50
|
-
*
|
|
51
|
-
* 쥔 동안 mtime을 주기적으로 올리는 방법은 여기서 안 통한다. `fn()`이 통째로 동기라
|
|
52
|
-
* 타이머가 돌 틈이 없다 — 갱신이 필요한 바로 그 순간에 이벤트 루프가 막혀 있다.
|
|
53
|
-
* 대신 주인이 살아 있는지를 직접 묻는다.
|
|
54
|
-
*
|
|
55
|
-
* `fn`에는 `stillMine`을 준다. 부수기와 다시 잡기가 겹치는 좁은 틈이 남아 있어,
|
|
56
|
-
* 쓰기 직전에 잠금이 아직 내 것인지 다시 확인할 수 있어야 한다.
|
|
36
|
+
* 목록을 고치는 동안 다른 프로세스를 막는다. 잠금 동작은 `withFileLock` 머리말 참고.
|
|
57
37
|
*
|
|
58
38
|
* 잠금 소유권을 테스트에서 확인할 수 있게 내보낸다. 그 경로는 잠금을 오래 쥔 쪽과
|
|
59
39
|
* 부순 쪽이 겹쳐야 열리는데, `registerRepo`로는 그 상황을 만들 수 없다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/local-pr/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/local-pr/registry.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAiCD,yCAAyC;AACzC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhD;AA4BD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,OAAO,CAAA;CAAE,KAAK,CAAC,GAAG,CAAC,CAI3E;AAoED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAkB7D;AAcD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,IAAI,cAAc,EAAE,CAE5C"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { createHash
|
|
2
|
-
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync,
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
3
3
|
import { dirname, isAbsolute, join, normalize } from 'node:path';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
+
import { withFileLock } from '../core/file-lock.js';
|
|
5
6
|
import { ensureGestaltHome, gestaltPath } from '../core/home.js';
|
|
6
7
|
import { gitCommonDir } from './git.js';
|
|
7
8
|
/**
|
|
@@ -63,123 +64,16 @@ function read() {
|
|
|
63
64
|
}
|
|
64
65
|
return kept;
|
|
65
66
|
}
|
|
66
|
-
/** 주인이 안 잡히는 잠금을 부수기까지 */
|
|
67
|
-
const LOCK_STALE_MS = 5_000;
|
|
68
67
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* pid는 재활용된다. 잠금을 쥔 채 죽은 프로세스의 번호를 남이 물려받으면 살아 있다고
|
|
72
|
-
* 읽혀서 아무도 목록을 못 고치게 된다. 그 자리를 여는 마지막 문이다.
|
|
73
|
-
*/
|
|
74
|
-
const LOCK_HARD_STALE_MS = 60_000;
|
|
75
|
-
const LOCK_WAIT_MS = 2_000;
|
|
76
|
-
/** 대기 간격. 바퀴마다 배로 늘리되 이 값에서 멈춘다 */
|
|
77
|
-
const LOCK_BACKOFF_START_MS = 5;
|
|
78
|
-
const LOCK_BACKOFF_MAX_MS = 100;
|
|
79
|
-
/** 동기 대기. 이 파일의 쓰기 경로는 전부 동기라 여기서만 잠깐 멈춘다 */
|
|
80
|
-
function sleep(ms) {
|
|
81
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
82
|
-
}
|
|
83
|
-
function readOwner(ownerPath) {
|
|
84
|
-
try {
|
|
85
|
-
const parsed = JSON.parse(readFileSync(ownerPath, 'utf-8'));
|
|
86
|
-
if (typeof parsed !== 'object' || parsed === null)
|
|
87
|
-
return null;
|
|
88
|
-
const { token, pid } = parsed;
|
|
89
|
-
if (typeof token !== 'string' || typeof pid !== 'number')
|
|
90
|
-
return null;
|
|
91
|
-
return { token, pid };
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
// 아직 안 쓰였거나(mkdir 직후) 옛 버전이 쓴 모양이다. 주인을 모르는 것으로 친다
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/** 그 프로세스가 아직 도는가. 신호 0은 아무것도 안 보내고 존재만 묻는다 */
|
|
99
|
-
function alivePid(pid) {
|
|
100
|
-
try {
|
|
101
|
-
process.kill(pid, 0);
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
catch (e) {
|
|
105
|
-
// EPERM은 남의 것이라 못 건드리는 것뿐이다. 그래도 살아는 있다
|
|
106
|
-
return e.code === 'EPERM';
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* 목록을 고치는 동안 다른 프로세스를 막는다.
|
|
111
|
-
*
|
|
112
|
-
* 워크트리 여럿이 같은 목록에 동시에 손대는 게 이 레포의 기본 흐름이다. 잠금 없이
|
|
113
|
-
* 읽고 고쳐 쓰면 나중에 쓴 쪽이 먼저 쓴 쪽의 항목을 덮는다.
|
|
114
|
-
*
|
|
115
|
-
* `mkdir`는 있으면 실패하니까 그 자체가 잠금이다. 쥔 채로 죽은 프로세스가 목록을 영영
|
|
116
|
-
* 못 고치게 만들면 안 되므로 버려진 잠금은 부순다. 부수는 순간에 둘이 겹치면 둘 다
|
|
117
|
-
* `mkdir`을 시도하고 한쪽만 성공한다 — 진 쪽은 다시 기다린다.
|
|
118
|
-
*
|
|
119
|
-
* **버려졌는지는 주인의 pid로 가른다.** 예전에는 잠금 디렉토리의 mtime만 봤는데,
|
|
120
|
-
* 잠금은 잡을 때 한 번 만들어지고 쥔 동안 mtime이 안 올라간다. 그래서 `fn()`이
|
|
121
|
-
* 5초를 넘기면 살아 있는 잠금이 버려진 것으로 보였다. 남이 부수고 들어와 둘이 나란히
|
|
122
|
-
* 읽고 고쳐 써서 늦게 쓴 쪽이 상대 항목을 덮었다. 파일은 rename이라 안 깨지고 등록만
|
|
123
|
-
* 조용히 사라진다.
|
|
124
|
-
*
|
|
125
|
-
* 쥔 동안 mtime을 주기적으로 올리는 방법은 여기서 안 통한다. `fn()`이 통째로 동기라
|
|
126
|
-
* 타이머가 돌 틈이 없다 — 갱신이 필요한 바로 그 순간에 이벤트 루프가 막혀 있다.
|
|
127
|
-
* 대신 주인이 살아 있는지를 직접 묻는다.
|
|
128
|
-
*
|
|
129
|
-
* `fn`에는 `stillMine`을 준다. 부수기와 다시 잡기가 겹치는 좁은 틈이 남아 있어,
|
|
130
|
-
* 쓰기 직전에 잠금이 아직 내 것인지 다시 확인할 수 있어야 한다.
|
|
68
|
+
* 목록을 고치는 동안 다른 프로세스를 막는다. 잠금 동작은 `withFileLock` 머리말 참고.
|
|
131
69
|
*
|
|
132
70
|
* 잠금 소유권을 테스트에서 확인할 수 있게 내보낸다. 그 경로는 잠금을 오래 쥔 쪽과
|
|
133
71
|
* 부순 쪽이 겹쳐야 열리는데, `registerRepo`로는 그 상황을 만들 수 없다.
|
|
134
72
|
*/
|
|
135
73
|
export function withLock(fn) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const ownerPath = join(lock, 'owner');
|
|
140
|
-
const token = randomUUID();
|
|
141
|
-
const start = Date.now();
|
|
142
|
-
let waitMs = LOCK_BACKOFF_START_MS;
|
|
143
|
-
for (;;) {
|
|
144
|
-
try {
|
|
145
|
-
mkdirSync(lock);
|
|
146
|
-
writeFileSync(ownerPath, JSON.stringify({ token, pid: process.pid }), 'utf-8');
|
|
147
|
-
break;
|
|
148
|
-
}
|
|
149
|
-
catch (e) {
|
|
150
|
-
if (e.code !== 'EEXIST')
|
|
151
|
-
throw e;
|
|
152
|
-
let heldFor;
|
|
153
|
-
try {
|
|
154
|
-
heldFor = Date.now() - statSync(lock).mtimeMs;
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
// 그 사이에 풀렸다. 다음 바퀴에서 잡는다
|
|
158
|
-
heldFor = 0;
|
|
159
|
-
}
|
|
160
|
-
const owner = readOwner(ownerPath);
|
|
161
|
-
const holderAlive = owner !== null && alivePid(owner.pid);
|
|
162
|
-
const abandoned = heldFor > LOCK_HARD_STALE_MS || (!holderAlive && heldFor > LOCK_STALE_MS);
|
|
163
|
-
if (abandoned) {
|
|
164
|
-
rmSync(lock, { recursive: true, force: true });
|
|
165
|
-
continue;
|
|
166
|
-
}
|
|
167
|
-
if (Date.now() - start > LOCK_WAIT_MS) {
|
|
168
|
-
throw new Error('레포 목록이 잠겨 있어서 못 고쳤어요', { cause: e });
|
|
169
|
-
}
|
|
170
|
-
// 바퀴마다 mkdir 실패와 stat이 붙는다. 간격을 배로 늘려 바퀴 수를 줄인다
|
|
171
|
-
sleep(waitMs);
|
|
172
|
-
waitMs = Math.min(waitMs * 2, LOCK_BACKOFF_MAX_MS);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
const stillMine = () => readOwner(ownerPath)?.token === token;
|
|
176
|
-
try {
|
|
177
|
-
return fn({ stillMine });
|
|
178
|
-
}
|
|
179
|
-
finally {
|
|
180
|
-
if (stillMine())
|
|
181
|
-
rmSync(lock, { recursive: true, force: true });
|
|
182
|
-
}
|
|
74
|
+
return withFileLock(join(ensureGestaltHome(), 'repos.json.lock'), fn, {
|
|
75
|
+
busyMessage: '레포 목록이 잠겨 있어서 못 고쳤어요',
|
|
76
|
+
});
|
|
183
77
|
}
|
|
184
78
|
/**
|
|
185
79
|
* 목록을 통째로 바꿔 쓴다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/local-pr/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/local-pr/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAoCxC;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;IACtC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SACvD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACnF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,yCAAyC;AACzC,SAAS,YAAY;IACnB,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,yCAAyC;AACzC,SAAS,KAAK,CAAC,IAAoB;IACjC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,OAAO,CAAC,QAAgB;IACtC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACH,SAAS,IAAI;IACX,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAI,EAA4C;IACtE,OAAO,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE;QACpE,WAAW,EAAE,sBAAsB;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,SAAS,CAAC,KAAuB;IACxC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,aAAa,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IACvD,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC;YACH,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QACxE,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAmB;QAC5B,GAAG;QACH,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;QACpD,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAC;IAEF,OAAO,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;QAChC,8CAA8C;QAC9C,+CAA+C;QAC/C,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,SAAwB;IAC1C,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChD,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -26,6 +26,23 @@
|
|
|
26
26
|
* 잎을 심어 순회가 그 잎에 닿는지 본다. zod 버전을 올리면 그 테스트를 반드시 다시 돌린다.
|
|
27
27
|
*/
|
|
28
28
|
import { z } from 'zod';
|
|
29
|
+
/**
|
|
30
|
+
* 토큰을 가린다. 접두어는 남겨 무엇이 가려졌는지는 읽히게 한다.
|
|
31
|
+
*
|
|
32
|
+
* **모든 패턴이 접두어를 그룹 1 로 캡처한다.** 그룹이 없는 패턴을 섞으면
|
|
33
|
+
* `String.replace` 가 두 번째 인자로 매치 오프셋(숫자)을 넘겨, 접두어가 숫자로 바뀌고
|
|
34
|
+
* 치환 길이가 무너진다. 그 계약은 `tests/unit/mcp/input-guard.test.ts` 가 패턴 배열을
|
|
35
|
+
* 돌며 단언한다.
|
|
36
|
+
*
|
|
37
|
+
* **잘라낸 조각에 따로 걸지 않는다.** 접두어와 몸통이 서로 다른 조각에 놓이면 어느 쪽도
|
|
38
|
+
* 패턴에 안 걸려 토큰이 통째로 남는다. 부르는 쪽은 언제나 원본 전체를 넘긴다.
|
|
39
|
+
*
|
|
40
|
+
* `preserveLength` 는 `snippetAround` 만 쓴다. 자리가 밀리면 깨진 지점을 못 짚기 때문이다.
|
|
41
|
+
* 나머지 자리는 고정 길이로 덮어 별표 개수가 원문 길이를 드러내지 않게 한다.
|
|
42
|
+
*/
|
|
43
|
+
export declare function redactSecrets(text: string, options?: {
|
|
44
|
+
preserveLength?: boolean;
|
|
45
|
+
}): string;
|
|
29
46
|
/** 규칙 표를 테스트가 확인할 수 있게 내보낸다. 런타임 경로는 이 함수를 안 쓴다. */
|
|
30
47
|
export declare function tokenRulesForTest(): ReadonlyArray<readonly [string, number]>;
|
|
31
48
|
/** 패턴 계약을 테스트가 확인할 수 있게 내보낸다. 런타임 경로는 이 함수를 안 쓴다. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-guard.d.ts","sourceRoot":"","sources":["../../../src/mcp/input-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"input-guard.d.ts","sourceRoot":"","sources":["../../../src/mcp/input-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6IxB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAW9F;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE5E;AAED,qDAAqD;AACrD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AA8CD,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAarD;AAUD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAiB,GAAG,MAAM,CAQ7F;AAED,8CAA8C;AAC9C,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAe3F;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,WA0B/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACnD,MAAM,EAAE,CAAC,EACT,IAAI,GAAE,OAAO,CAAC,MAAM,CAAiB,GACpC,CAAC,CA4EH;AAiDD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,CAwCjG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAM/D;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAElE"}
|
|
@@ -170,7 +170,7 @@ const SECRET_PATTERNS = [PEM_PATTERN, ...tokenPatterns()];
|
|
|
170
170
|
* `preserveLength` 는 `snippetAround` 만 쓴다. 자리가 밀리면 깨진 지점을 못 짚기 때문이다.
|
|
171
171
|
* 나머지 자리는 고정 길이로 덮어 별표 개수가 원문 길이를 드러내지 않게 한다.
|
|
172
172
|
*/
|
|
173
|
-
function redactSecrets(text, options = {}) {
|
|
173
|
+
export function redactSecrets(text, options = {}) {
|
|
174
174
|
return SECRET_PATTERNS.reduce((acc, pattern) => acc.replace(pattern, (match, group) => {
|
|
175
175
|
const prefix = typeof group === 'string' ? group : '';
|
|
176
176
|
if (!options.preserveLength)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-guard.js","sourceRoot":"","sources":["../../../src/mcp/input-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-guard.js","sourceRoot":"","sources":["../../../src/mcp/input-guard.ts"],"names":[],"mappings":"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"}
|