@tienne/gestalt 0.106.0 → 0.108.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 +1 -0
- package/README.ko.md +1 -0
- package/README.md +1 -0
- package/dist/package.json +1 -1
- package/dist/plugin/role-agents/lens-context/AGENT.md +94 -0
- package/dist/plugin/role-agents/lens-link/AGENT.md +83 -0
- package/dist/plugin/role-agents/lens-reader/AGENT.md +230 -0
- package/dist/plugin/skills/_shared/proactive-routing.md +1 -0
- package/dist/plugin/skills/interview/SKILL.md +47 -8
- package/dist/plugin/skills/lens/SKILL.md +375 -0
- package/dist/plugin/skills/solve/SKILL.md +3 -3
- package/dist/plugin/skills/spec/SKILL.md +4 -4
- package/dist/schemas/gestalt.schema.json +19 -0
- package/dist/src/agent/role-consensus-engine.d.ts.map +1 -1
- package/dist/src/agent/role-consensus-engine.js +1 -1
- package/dist/src/agent/role-consensus-engine.js.map +1 -1
- package/dist/src/agent/role-prompt-generator.d.ts.map +1 -1
- package/dist/src/agent/role-prompt-generator.js +1 -2
- package/dist/src/agent/role-prompt-generator.js.map +1 -1
- package/dist/src/cli/commands/digest.d.ts +2 -0
- package/dist/src/cli/commands/digest.d.ts.map +1 -1
- package/dist/src/cli/commands/digest.js +6 -0
- package/dist/src/cli/commands/digest.js.map +1 -1
- package/dist/src/cli/commands/interview.d.ts +1 -0
- package/dist/src/cli/commands/interview.d.ts.map +1 -1
- package/dist/src/cli/commands/interview.js +5 -3
- package/dist/src/cli/commands/interview.js.map +1 -1
- package/dist/src/cli/commands/lens.d.ts +27 -0
- package/dist/src/cli/commands/lens.d.ts.map +1 -0
- package/dist/src/cli/commands/lens.js +200 -0
- package/dist/src/cli/commands/lens.js.map +1 -0
- package/dist/src/cli/commands/spec.d.ts.map +1 -1
- package/dist/src/cli/commands/spec.js +2 -2
- package/dist/src/cli/commands/spec.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +37 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/config.d.ts +19 -0
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +23 -15
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/constants.d.ts +5 -0
- package/dist/src/core/constants.d.ts.map +1 -1
- package/dist/src/core/constants.js +5 -0
- package/dist/src/core/constants.js.map +1 -1
- package/dist/src/core/errors.d.ts +3 -1
- package/dist/src/core/errors.d.ts.map +1 -1
- package/dist/src/core/errors.js +6 -2
- package/dist/src/core/errors.js.map +1 -1
- package/dist/src/core/types.d.ts +51 -2
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/digest/format.d.ts.map +1 -1
- package/dist/src/digest/format.js +1 -0
- package/dist/src/digest/format.js.map +1 -1
- package/dist/src/digest/frames.d.ts.map +1 -1
- package/dist/src/digest/frames.js +1 -1
- package/dist/src/digest/frames.js.map +1 -1
- package/dist/src/digest/ingest.d.ts +8 -1
- package/dist/src/digest/ingest.d.ts.map +1 -1
- package/dist/src/digest/ingest.js +2 -1
- package/dist/src/digest/ingest.js.map +1 -1
- package/dist/src/digest/lens-schema.d.ts +542 -0
- package/dist/src/digest/lens-schema.d.ts.map +1 -0
- package/dist/src/digest/lens-schema.js +108 -0
- package/dist/src/digest/lens-schema.js.map +1 -0
- package/dist/src/digest/lens-source.d.ts +260 -0
- package/dist/src/digest/lens-source.d.ts.map +1 -0
- package/dist/src/digest/lens-source.js +92 -0
- package/dist/src/digest/lens-source.js.map +1 -0
- package/dist/src/digest/lens-widget-schema.d.ts +1225 -0
- package/dist/src/digest/lens-widget-schema.d.ts.map +1 -0
- package/dist/src/digest/lens-widget-schema.js +80 -0
- package/dist/src/digest/lens-widget-schema.js.map +1 -0
- package/dist/src/digest/lens-widgets.d.ts +25 -0
- package/dist/src/digest/lens-widgets.d.ts.map +1 -0
- package/dist/src/digest/lens-widgets.js +225 -0
- package/dist/src/digest/lens-widgets.js.map +1 -0
- package/dist/src/digest/lint-lens-context.d.ts +102 -0
- package/dist/src/digest/lint-lens-context.d.ts.map +1 -0
- package/dist/src/digest/lint-lens-context.js +192 -0
- package/dist/src/digest/lint-lens-context.js.map +1 -0
- package/dist/src/digest/lint-lens.d.ts +17 -0
- package/dist/src/digest/lint-lens.d.ts.map +1 -0
- package/dist/src/digest/lint-lens.js +237 -0
- package/dist/src/digest/lint-lens.js.map +1 -0
- package/dist/src/digest/lint.d.ts +14 -0
- package/dist/src/digest/lint.d.ts.map +1 -1
- package/dist/src/digest/lint.js +156 -2
- package/dist/src/digest/lint.js.map +1 -1
- package/dist/src/digest/merge.d.ts.map +1 -1
- package/dist/src/digest/merge.js +11 -2
- package/dist/src/digest/merge.js.map +1 -1
- package/dist/src/digest/prose.d.ts.map +1 -1
- package/dist/src/digest/prose.js +8 -0
- package/dist/src/digest/prose.js.map +1 -1
- package/dist/src/digest/render-html.d.ts +5 -0
- package/dist/src/digest/render-html.d.ts.map +1 -1
- package/dist/src/digest/render-html.js +93 -18
- package/dist/src/digest/render-html.js.map +1 -1
- package/dist/src/digest/render-lens.d.ts +61 -0
- package/dist/src/digest/render-lens.d.ts.map +1 -0
- package/dist/src/digest/render-lens.js +273 -0
- package/dist/src/digest/render-lens.js.map +1 -0
- package/dist/src/digest/render-md.d.ts +5 -0
- package/dist/src/digest/render-md.d.ts.map +1 -1
- package/dist/src/digest/render-md.js +116 -7
- package/dist/src/digest/render-md.js.map +1 -1
- package/dist/src/digest/render-widgets.d.ts +13 -0
- package/dist/src/digest/render-widgets.d.ts.map +1 -0
- package/dist/src/digest/render-widgets.js +197 -0
- package/dist/src/digest/render-widgets.js.map +1 -0
- package/dist/src/digest/render.d.ts +2 -0
- package/dist/src/digest/render.d.ts.map +1 -1
- package/dist/src/digest/render.js +17 -3
- package/dist/src/digest/render.js.map +1 -1
- package/dist/src/digest/schema.d.ts +14683 -2022
- package/dist/src/digest/schema.d.ts.map +1 -1
- package/dist/src/digest/schema.js +67 -6
- package/dist/src/digest/schema.js.map +1 -1
- package/dist/src/digest/server.d.ts +2 -1
- package/dist/src/digest/server.d.ts.map +1 -1
- package/dist/src/digest/server.js +26 -11
- package/dist/src/digest/server.js.map +1 -1
- package/dist/src/digest/viewer-js.d.ts.map +1 -1
- package/dist/src/digest/viewer-js.js +120 -4
- package/dist/src/digest/viewer-js.js.map +1 -1
- package/dist/src/events/types.d.ts +2 -0
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/events/types.js +2 -0
- package/dist/src/events/types.js.map +1 -1
- package/dist/src/execute/orchestrators/evolution.d.ts.map +1 -1
- package/dist/src/execute/orchestrators/evolution.js +4 -0
- package/dist/src/execute/orchestrators/evolution.js.map +1 -1
- package/dist/src/execute/passthrough-engine.d.ts +6 -0
- package/dist/src/execute/passthrough-engine.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.js +10 -0
- package/dist/src/execute/passthrough-engine.js.map +1 -1
- package/dist/src/execute/termination-detector.d.ts +3 -0
- package/dist/src/execute/termination-detector.d.ts.map +1 -1
- package/dist/src/execute/termination-detector.js +2 -3
- package/dist/src/execute/termination-detector.js.map +1 -1
- package/dist/src/gestalt/analyzer.d.ts +1 -1
- package/dist/src/gestalt/analyzer.d.ts.map +1 -1
- package/dist/src/gestalt/analyzer.js +3 -2
- package/dist/src/gestalt/analyzer.js.map +1 -1
- package/dist/src/gestalt/signals.d.ts +20 -0
- package/dist/src/gestalt/signals.d.ts.map +1 -0
- package/dist/src/gestalt/signals.js +112 -0
- package/dist/src/gestalt/signals.js.map +1 -0
- package/dist/src/interview/engine.d.ts +9 -1
- package/dist/src/interview/engine.d.ts.map +1 -1
- package/dist/src/interview/engine.js +40 -11
- package/dist/src/interview/engine.js.map +1 -1
- package/dist/src/interview/passthrough-engine.d.ts +31 -7
- package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
- package/dist/src/interview/passthrough-engine.js +87 -28
- package/dist/src/interview/passthrough-engine.js.map +1 -1
- package/dist/src/interview/repository.d.ts +6 -1
- package/dist/src/interview/repository.d.ts.map +1 -1
- package/dist/src/interview/repository.js +20 -2
- package/dist/src/interview/repository.js.map +1 -1
- package/dist/src/interview/rescore.d.ts +35 -0
- package/dist/src/interview/rescore.d.ts.map +1 -0
- package/dist/src/interview/rescore.js +92 -0
- package/dist/src/interview/rescore.js.map +1 -0
- package/dist/src/interview/resolution.d.ts +5 -1
- package/dist/src/interview/resolution.d.ts.map +1 -1
- package/dist/src/interview/resolution.js +15 -4
- package/dist/src/interview/resolution.js.map +1 -1
- package/dist/src/interview/session.d.ts +12 -2
- package/dist/src/interview/session.d.ts.map +1 -1
- package/dist/src/interview/session.js +57 -5
- package/dist/src/interview/session.js.map +1 -1
- package/dist/src/lens/attach.d.ts +436 -0
- package/dist/src/lens/attach.d.ts.map +1 -0
- package/dist/src/lens/attach.js +46 -0
- package/dist/src/lens/attach.js.map +1 -0
- package/dist/src/lens/ingest.d.ts +75 -0
- package/dist/src/lens/ingest.d.ts.map +1 -0
- package/dist/src/lens/ingest.js +558 -0
- package/dist/src/lens/ingest.js.map +1 -0
- package/dist/src/lens/kind.d.ts +11 -0
- package/dist/src/lens/kind.d.ts.map +1 -0
- package/dist/src/lens/kind.js +59 -0
- package/dist/src/lens/kind.js.map +1 -0
- package/dist/src/lens/knowledge.d.ts +53 -0
- package/dist/src/lens/knowledge.d.ts.map +1 -0
- package/dist/src/lens/knowledge.js +202 -0
- package/dist/src/lens/knowledge.js.map +1 -0
- package/dist/src/lens/notes.d.ts +73 -0
- package/dist/src/lens/notes.d.ts.map +1 -0
- package/dist/src/lens/notes.js +276 -0
- package/dist/src/lens/notes.js.map +1 -0
- package/dist/src/lens/panels.d.ts +10 -0
- package/dist/src/lens/panels.d.ts.map +1 -0
- package/dist/src/lens/panels.js +25 -0
- package/dist/src/lens/panels.js.map +1 -0
- package/dist/src/lens/pdf-extract-py.d.ts +15 -0
- package/dist/src/lens/pdf-extract-py.d.ts.map +1 -0
- package/dist/src/lens/pdf-extract-py.js +414 -0
- package/dist/src/lens/pdf-extract-py.js.map +1 -0
- package/dist/src/lens/podcast.d.ts +36 -0
- package/dist/src/lens/podcast.d.ts.map +1 -0
- package/dist/src/lens/podcast.js +104 -0
- package/dist/src/lens/podcast.js.map +1 -0
- package/dist/src/lens/python.d.ts +33 -0
- package/dist/src/lens/python.d.ts.map +1 -0
- package/dist/src/lens/python.js +61 -0
- package/dist/src/lens/python.js.map +1 -0
- package/dist/src/lens/web-extract-py.d.ts +9 -0
- package/dist/src/lens/web-extract-py.d.ts.map +1 -0
- package/dist/src/lens/web-extract-py.js +114 -0
- package/dist/src/lens/web-extract-py.js.map +1 -0
- package/dist/src/llm/prompts.d.ts +8 -0
- package/dist/src/llm/prompts.d.ts.map +1 -1
- package/dist/src/llm/prompts.js +7 -0
- package/dist/src/llm/prompts.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +29 -20
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +15 -3
- 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 +11 -5
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/digest-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/digest-passthrough.js +5 -0
- package/dist/src/mcp/tools/digest-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/execute/evaluate.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute/evaluate.js +3 -3
- package/dist/src/mcp/tools/execute/evaluate.js.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.js +40 -34
- package/dist/src/mcp/tools/interview-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 +7 -0
- 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 +6 -1
- package/dist/src/mcp/tools/status.js.map +1 -1
- package/dist/src/research/schema.d.ts +3 -3
- package/dist/src/research/source-create.d.ts +6 -1
- package/dist/src/research/source-create.d.ts.map +1 -1
- package/dist/src/research/source-create.js +41 -10
- package/dist/src/research/source-create.js.map +1 -1
- package/dist/src/spec/extractor.js +1 -1
- package/dist/src/spec/extractor.js.map +1 -1
- package/dist/src/spec/generator.d.ts +3 -1
- package/dist/src/spec/generator.d.ts.map +1 -1
- package/dist/src/spec/generator.js +6 -4
- package/dist/src/spec/generator.js.map +1 -1
- package/dist/src/spec/passthrough-generator.d.ts +3 -1
- package/dist/src/spec/passthrough-generator.d.ts.map +1 -1
- package/dist/src/spec/passthrough-generator.js +6 -4
- package/dist/src/spec/passthrough-generator.js.map +1 -1
- package/dist/src/spec/schema.d.ts +5 -5
- package/dist/src/spec/schema.js +1 -1
- package/dist/src/spec/schema.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/commands/gestalt-interview.md +2 -1
- package/plugin/mcp.json +1 -1
- package/plugin/role-agents/lens-context/AGENT.md +94 -0
- package/plugin/role-agents/lens-link/AGENT.md +83 -0
- package/plugin/role-agents/lens-reader/AGENT.md +230 -0
- package/plugin/skills/_shared/proactive-routing.md +1 -0
- package/plugin/skills/interview/SKILL.md +47 -8
- package/plugin/skills/lens/SKILL.md +375 -0
- package/plugin/skills/solve/SKILL.md +3 -3
- package/plugin/skills/spec/SKILL.md +4 -4
- package/schemas/gestalt.schema.json +19 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { MAX_INTERVIEW_ROUNDS } from '../core/constants.js';
|
|
1
|
+
import { MAX_INTERVIEW_ROUNDS, RESOLUTION_THRESHOLD } from '../core/constants.js';
|
|
2
|
+
import { logger } from '../core/logger.js';
|
|
2
3
|
import { InterviewError } from '../core/errors.js';
|
|
3
4
|
import { ok, err } from '../core/result.js';
|
|
4
5
|
import { selectNextPrinciple } from '../gestalt/principles.js';
|
|
@@ -6,23 +7,28 @@ import { ResolutionScorer } from './resolution.js';
|
|
|
6
7
|
import { QuestionGenerator } from './questions.js';
|
|
7
8
|
import { SessionManager } from './session.js';
|
|
8
9
|
import { detectProjectType } from './brownfield.js';
|
|
10
|
+
import { recordScoreWithRescore, applyRescore } from './rescore.js';
|
|
9
11
|
import { EventType } from '../events/types.js';
|
|
10
12
|
export class InterviewEngine {
|
|
11
13
|
eventStore;
|
|
12
14
|
sessionManager;
|
|
13
15
|
questionGenerator;
|
|
14
16
|
resolutionScorer;
|
|
17
|
+
resolutionThreshold;
|
|
18
|
+
rescoreSetting;
|
|
15
19
|
/**
|
|
16
20
|
* @param llm 질문 생성에 쓰는 기본 어댑터
|
|
17
21
|
* @param frugalLlm 해상도 점수 산정용 저비용 어댑터. 없으면 `llm`을 그대로 쓴다.
|
|
18
22
|
* 점수 산정은 정해진 기준에 점수를 매기는 작업이라 질문 생성만큼의 모델이 필요 없다.
|
|
19
23
|
*/
|
|
20
|
-
constructor(llm, eventStore, frugalLlm) {
|
|
24
|
+
constructor(llm, eventStore, frugalLlm, options = {}) {
|
|
21
25
|
this.eventStore = eventStore;
|
|
22
|
-
this.sessionManager = new SessionManager(eventStore);
|
|
26
|
+
this.sessionManager = new SessionManager(eventStore, options);
|
|
23
27
|
this.sessionManager.loadFromStore();
|
|
24
28
|
this.questionGenerator = new QuestionGenerator(llm);
|
|
25
|
-
this.resolutionScorer = new ResolutionScorer(frugalLlm ?? llm);
|
|
29
|
+
this.resolutionScorer = new ResolutionScorer(frugalLlm ?? llm, options.resolutionThreshold);
|
|
30
|
+
this.resolutionThreshold = options.resolutionThreshold ?? RESOLUTION_THRESHOLD;
|
|
31
|
+
this.rescoreSetting = options.rescore ?? 'record';
|
|
26
32
|
}
|
|
27
33
|
async start(topic, cwd) {
|
|
28
34
|
try {
|
|
@@ -61,14 +67,15 @@ export class InterviewEngine {
|
|
|
61
67
|
}
|
|
62
68
|
// Score resolution
|
|
63
69
|
const resolutionScore = await this.resolutionScorer.score(session.topic, session.rounds, session.projectType);
|
|
64
|
-
this.
|
|
70
|
+
const afterRescore = await this.recordScore(sessionId, resolutionScore);
|
|
65
71
|
// Select next principle based on current state
|
|
66
72
|
const hasContradictions = (resolutionScore.contradictions?.length ?? 0) > 0;
|
|
67
|
-
const nextPrinciple =
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
const nextPrinciple = afterRescore ??
|
|
74
|
+
selectNextPrinciple({
|
|
75
|
+
roundNumber: session.rounds.length + 1,
|
|
76
|
+
dimensions: resolutionScore.dimensions,
|
|
77
|
+
hasContradictions,
|
|
78
|
+
});
|
|
72
79
|
this.eventStore.append('interview', sessionId, EventType.GESTALT_PRINCIPLE_APPLIED, {
|
|
73
80
|
principle: nextPrinciple,
|
|
74
81
|
roundNumber: session.rounds.length + 1,
|
|
@@ -90,13 +97,35 @@ export class InterviewEngine {
|
|
|
90
97
|
try {
|
|
91
98
|
const session = this.sessionManager.get(sessionId);
|
|
92
99
|
const resolutionScore = await this.resolutionScorer.score(session.topic, session.rounds, session.projectType);
|
|
93
|
-
this.
|
|
100
|
+
await this.recordScore(sessionId, resolutionScore);
|
|
94
101
|
return ok(resolutionScore);
|
|
95
102
|
}
|
|
96
103
|
catch (e) {
|
|
97
104
|
return err(new InterviewError(`Failed to score: ${e instanceof Error ? e.message : String(e)}`));
|
|
98
105
|
}
|
|
99
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* 채점을 기록하고 다시 채점할 차례면 같은 모델로 한 번 더 부른다.
|
|
109
|
+
* gate가 판정을 미뤘으면 다음 질문에 쓸 원칙을 돌려준다.
|
|
110
|
+
*/
|
|
111
|
+
async recordScore(sessionId, score) {
|
|
112
|
+
const request = recordScoreWithRescore(this.sessionManager, sessionId, score, this.rescoreSetting, this.resolutionThreshold);
|
|
113
|
+
if (!request)
|
|
114
|
+
return null;
|
|
115
|
+
const session = this.sessionManager.get(sessionId);
|
|
116
|
+
let second;
|
|
117
|
+
try {
|
|
118
|
+
second = await this.resolutionScorer.rescore(session.topic, session.rounds, session.projectType);
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
// 다시 채점이 실패해도 인터뷰는 이어간다. gate면 다음에 넘을 때 다시 부른다
|
|
122
|
+
const error = e instanceof Error ? e.message : String(e);
|
|
123
|
+
logger.warn('interview.rescore.failed', { sessionId, error });
|
|
124
|
+
this.sessionManager.recordRescoreFailure(sessionId, error);
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
return applyRescore(this.sessionManager, sessionId, score, second, 'isolated', this.rescoreSetting, this.resolutionThreshold).principle;
|
|
128
|
+
}
|
|
100
129
|
complete(sessionId, force = false) {
|
|
101
130
|
try {
|
|
102
131
|
return ok(this.sessionManager.complete(sessionId, { force }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/interview/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/interview/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { InterviewSession, ResolutionScore, ProjectType, GestaltPrinciple } from '../core/types.js';
|
|
1
|
+
import type { InterviewSession, ResolutionScore, ProjectType, GestaltPrinciple, RescoreMode, RescoreResult } from '../core/types.js';
|
|
2
2
|
import { InterviewError } from '../core/errors.js';
|
|
3
3
|
import { type Result } from '../core/result.js';
|
|
4
|
-
import { SessionManager } from './session.js';
|
|
4
|
+
import { SessionManager, type InterviewOptions } from './session.js';
|
|
5
5
|
import { EventStore } from '../events/store.js';
|
|
6
6
|
import type { AgentRegistry } from '../agent/registry.js';
|
|
7
7
|
export interface GestaltContext {
|
|
@@ -29,6 +29,26 @@ export interface PassthroughRespondResult {
|
|
|
29
29
|
compressionPrompt: string;
|
|
30
30
|
};
|
|
31
31
|
needsCompression?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 다시 채점하기를 요청할 차례면 붙는 프롬프트. record는 처음 기준값을 넘을 때 한 번, gate는 다시 채점을
|
|
34
|
+
* 받기 전까지 넘을 때마다 붙고 off면 안 붙는다. 이때 nextAction은 rescore다
|
|
35
|
+
*/
|
|
36
|
+
rescorePrompt?: string;
|
|
37
|
+
nextAction?: 'rescore';
|
|
38
|
+
}
|
|
39
|
+
export interface PassthroughScoreResult {
|
|
40
|
+
resolutionScore: ResolutionScore | null;
|
|
41
|
+
scoringPrompt?: string;
|
|
42
|
+
rescorePrompt?: string;
|
|
43
|
+
nextAction?: 'rescore';
|
|
44
|
+
/** rescore: true로 받은 채점의 비교 결과 */
|
|
45
|
+
rescore?: RescoreResult;
|
|
46
|
+
/** gate가 판정을 미뤘을 때 다음 질문을 만들 컨텍스트 */
|
|
47
|
+
gestaltContext?: GestaltContext;
|
|
48
|
+
}
|
|
49
|
+
export interface RescoreOptions {
|
|
50
|
+
rescore?: boolean;
|
|
51
|
+
rescoreMode?: RescoreMode;
|
|
32
52
|
}
|
|
33
53
|
export interface ExternalResolutionScore {
|
|
34
54
|
goalClarity: number;
|
|
@@ -42,18 +62,22 @@ export declare class PassthroughEngine {
|
|
|
42
62
|
private eventStore;
|
|
43
63
|
private sessionManager;
|
|
44
64
|
private agentRegistry?;
|
|
45
|
-
|
|
65
|
+
private resolutionThreshold;
|
|
66
|
+
private rescoreSetting;
|
|
67
|
+
constructor(eventStore: EventStore, agentRegistry?: AgentRegistry, options?: InterviewOptions);
|
|
46
68
|
start(topic: string, cwd?: string, memoryContextStr?: string): Result<PassthroughStartResult, InterviewError>;
|
|
47
69
|
respond(sessionId: string, response: string, generatedQuestion: string, externalScore?: ExternalResolutionScore): Result<PassthroughRespondResult, InterviewError>;
|
|
48
|
-
score(sessionId: string, externalScore?: ExternalResolutionScore): Result<
|
|
49
|
-
resolutionScore: ResolutionScore | null;
|
|
50
|
-
scoringPrompt?: string;
|
|
51
|
-
}, InterviewError>;
|
|
70
|
+
score(sessionId: string, externalScore?: ExternalResolutionScore, options?: RescoreOptions): Result<PassthroughScoreResult, InterviewError>;
|
|
52
71
|
complete(sessionId: string, force?: boolean): Result<InterviewSession, InterviewError>;
|
|
53
72
|
getSession(sessionId: string): InterviewSession;
|
|
54
73
|
getSessionManager(): SessionManager;
|
|
55
74
|
getLatestSession(): InterviewSession | null;
|
|
56
75
|
listSessions(): InterviewSession[];
|
|
76
|
+
/** 채점을 세션에 넣는다. 다시 채점하기를 요청할 차례면 rounds로 만든 프롬프트를 돌려준다 */
|
|
77
|
+
private recordScore;
|
|
78
|
+
private rescore;
|
|
79
|
+
/** 직전 respond가 이 라운드용으로 고른 원칙. 첫 라운드나 기록이 없으면 null */
|
|
80
|
+
private appliedPrinciple;
|
|
57
81
|
private buildGestaltContext;
|
|
58
82
|
}
|
|
59
83
|
//# sourceMappingURL=passthrough-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-engine.d.ts","sourceRoot":"","sources":["../../../src/interview/passthrough-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"passthrough-engine.d.ts","sourceRoot":"","sources":["../../../src/interview/passthrough-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { MAX_INTERVIEW_ROUNDS, PRINCIPLE_QUESTION_STRATEGIES } from '../core/constants.js';
|
|
1
|
+
import { MAX_INTERVIEW_ROUNDS, PRINCIPLE_QUESTION_STRATEGIES, RESOLUTION_THRESHOLD, } from '../core/constants.js';
|
|
2
2
|
import { InterviewError } from '../core/errors.js';
|
|
3
3
|
import { ok, err } from '../core/result.js';
|
|
4
4
|
import { selectNextPrinciple, getPrinciplePhaseLabel } from '../gestalt/principles.js';
|
|
5
5
|
import { computeResolutionScore } from '../gestalt/analyzer.js';
|
|
6
6
|
import { SessionManager } from './session.js';
|
|
7
7
|
import { detectProjectType } from './brownfield.js';
|
|
8
|
+
import { recordScoreWithRescore, applyRescore } from './rescore.js';
|
|
8
9
|
import { EventType } from '../events/types.js';
|
|
9
|
-
import { INTERVIEW_SYSTEM_PROMPT, buildQuestionPrompt, buildResolutionPrompt, } from '../llm/prompts.js';
|
|
10
|
+
import { INTERVIEW_SYSTEM_PROMPT, buildQuestionPrompt, buildResolutionPrompt, buildRescorePrompt, } from '../llm/prompts.js';
|
|
10
11
|
import { mergeSystemPrompt, getActiveAgentNames } from '../agent/prompt-resolver.js';
|
|
11
12
|
import { ContextCompressor } from './context-compressor.js';
|
|
12
13
|
// ─── Engine ─────────────────────────────────────────────────────
|
|
@@ -14,9 +15,13 @@ export class PassthroughEngine {
|
|
|
14
15
|
eventStore;
|
|
15
16
|
sessionManager;
|
|
16
17
|
agentRegistry;
|
|
17
|
-
|
|
18
|
+
resolutionThreshold;
|
|
19
|
+
rescoreSetting;
|
|
20
|
+
constructor(eventStore, agentRegistry, options = {}) {
|
|
18
21
|
this.eventStore = eventStore;
|
|
19
|
-
this.
|
|
22
|
+
this.resolutionThreshold = options.resolutionThreshold ?? RESOLUTION_THRESHOLD;
|
|
23
|
+
this.rescoreSetting = options.rescore ?? 'record';
|
|
24
|
+
this.sessionManager = new SessionManager(eventStore, options);
|
|
20
25
|
this.sessionManager.loadFromStore();
|
|
21
26
|
this.agentRegistry = agentRegistry;
|
|
22
27
|
}
|
|
@@ -53,10 +58,12 @@ export class PassthroughEngine {
|
|
|
53
58
|
respond(sessionId, response, generatedQuestion, externalScore) {
|
|
54
59
|
try {
|
|
55
60
|
const session = this.sessionManager.get(sessionId);
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
// 호스트는 직전 응답의 gestaltContext.currentPrinciple로 질문을 만들었다.
|
|
62
|
+
// 그 원칙을 라운드에 남겨야 어느 차원을 물었는지가 기록과 맞는다
|
|
63
|
+
const principle = this.appliedPrinciple(sessionId, session.rounds.length + 1) ??
|
|
64
|
+
(session.rounds.length > 0
|
|
65
|
+
? session.rounds[session.rounds.length - 1].gestaltFocus
|
|
66
|
+
: selectNextPrinciple({ roundNumber: 1, dimensions: [], hasContradictions: false }));
|
|
60
67
|
// If there's no pending round (no unanswered question), add one
|
|
61
68
|
const lastRound = session.rounds[session.rounds.length - 1];
|
|
62
69
|
if (!lastRound || lastRound.userResponse !== null) {
|
|
@@ -73,19 +80,16 @@ export class PassthroughEngine {
|
|
|
73
80
|
}
|
|
74
81
|
// Compute resolution score if provided externally
|
|
75
82
|
let resolutionScore = null;
|
|
83
|
+
let rescorePrompt;
|
|
76
84
|
if (externalScore) {
|
|
77
|
-
resolutionScore = computeResolutionScore(
|
|
78
|
-
goalClarity: externalScore.goalClarity,
|
|
79
|
-
constraintClarity: externalScore.constraintClarity,
|
|
80
|
-
successCriteria: externalScore.successCriteria,
|
|
81
|
-
priorityClarity: externalScore.priorityClarity,
|
|
82
|
-
contextClarity: externalScore.contextClarity,
|
|
83
|
-
contradictions: externalScore.contradictions ?? [],
|
|
84
|
-
}, session.projectType);
|
|
85
|
+
resolutionScore = computeResolutionScore(rawScore(externalScore), session.projectType, this.resolutionThreshold);
|
|
85
86
|
const rejected = rejectUnbackedReadyScore(session, resolutionScore);
|
|
86
87
|
if (rejected)
|
|
87
88
|
return err(rejected);
|
|
88
|
-
|
|
89
|
+
// 같이 온 점수는 직전 respond의 scoringPrompt로 매긴 것이라 이번 답을 못 봤다.
|
|
90
|
+
// 다시 채점도 그 범위로 물어야 흔들림에 새 답으로 늘어난 몫이 안 섞인다
|
|
91
|
+
const scored = session.rounds.slice(0, -1);
|
|
92
|
+
rescorePrompt = this.recordScore(sessionId, resolutionScore, scored.some((r) => r.userResponse) ? scored : session.rounds);
|
|
89
93
|
}
|
|
90
94
|
// Select next principle
|
|
91
95
|
const hasContradictions = (externalScore?.contradictions?.length ?? 0) > 0;
|
|
@@ -118,29 +122,32 @@ export class PassthroughEngine {
|
|
|
118
122
|
resolutionScore,
|
|
119
123
|
gestaltContext,
|
|
120
124
|
...(needsCompression ? { compressionContext, needsCompression } : {}),
|
|
125
|
+
...(rescorePrompt && { rescorePrompt, nextAction: 'rescore' }),
|
|
121
126
|
});
|
|
122
127
|
}
|
|
123
128
|
catch (e) {
|
|
124
129
|
return err(new InterviewError(`Failed to process response: ${e instanceof Error ? e.message : String(e)}`));
|
|
125
130
|
}
|
|
126
131
|
}
|
|
127
|
-
score(sessionId, externalScore) {
|
|
132
|
+
score(sessionId, externalScore, options = {}) {
|
|
128
133
|
try {
|
|
129
134
|
const session = this.sessionManager.get(sessionId);
|
|
135
|
+
if (options.rescore) {
|
|
136
|
+
if (!externalScore) {
|
|
137
|
+
return err(new InterviewError('rescore: true에는 resolutionScore가 필요합니다.'));
|
|
138
|
+
}
|
|
139
|
+
return this.rescore(sessionId, externalScore, options.rescoreMode ?? 'same-context');
|
|
140
|
+
}
|
|
130
141
|
if (externalScore) {
|
|
131
|
-
const resolutionScore = computeResolutionScore(
|
|
132
|
-
goalClarity: externalScore.goalClarity,
|
|
133
|
-
constraintClarity: externalScore.constraintClarity,
|
|
134
|
-
successCriteria: externalScore.successCriteria,
|
|
135
|
-
priorityClarity: externalScore.priorityClarity,
|
|
136
|
-
contextClarity: externalScore.contextClarity,
|
|
137
|
-
contradictions: externalScore.contradictions ?? [],
|
|
138
|
-
}, session.projectType);
|
|
142
|
+
const resolutionScore = computeResolutionScore(rawScore(externalScore), session.projectType, this.resolutionThreshold);
|
|
139
143
|
const rejected = rejectUnbackedReadyScore(session, resolutionScore);
|
|
140
144
|
if (rejected)
|
|
141
145
|
return err(rejected);
|
|
142
|
-
this.
|
|
143
|
-
return ok({
|
|
146
|
+
const rescorePrompt = this.recordScore(sessionId, resolutionScore, session.rounds);
|
|
147
|
+
return ok({
|
|
148
|
+
resolutionScore,
|
|
149
|
+
...(rescorePrompt && { rescorePrompt, nextAction: 'rescore' }),
|
|
150
|
+
});
|
|
144
151
|
}
|
|
145
152
|
// No external score — return scoring prompt for the caller
|
|
146
153
|
const rounds = session.rounds
|
|
@@ -174,6 +181,48 @@ export class PassthroughEngine {
|
|
|
174
181
|
return this.sessionManager.list();
|
|
175
182
|
}
|
|
176
183
|
// ─── Private helpers ────────────────────────────────────────────
|
|
184
|
+
/** 채점을 세션에 넣는다. 다시 채점하기를 요청할 차례면 rounds로 만든 프롬프트를 돌려준다 */
|
|
185
|
+
recordScore(sessionId, score, rounds) {
|
|
186
|
+
const request = recordScoreWithRescore(this.sessionManager, sessionId, score, this.rescoreSetting, this.resolutionThreshold);
|
|
187
|
+
if (!request)
|
|
188
|
+
return undefined;
|
|
189
|
+
const session = this.sessionManager.get(sessionId);
|
|
190
|
+
return buildRescorePrompt(session.topic, rounds.map((r) => ({ question: r.question, response: r.userResponse })), session.projectType);
|
|
191
|
+
}
|
|
192
|
+
rescore(sessionId, externalScore, mode) {
|
|
193
|
+
if (this.rescoreSetting === 'off') {
|
|
194
|
+
return err(new InterviewError('interview.rescore가 off라 다시 채점을 받지 않습니다.'));
|
|
195
|
+
}
|
|
196
|
+
const state = this.sessionManager.rescoreState(sessionId);
|
|
197
|
+
if (state === 'done') {
|
|
198
|
+
return err(new InterviewError('이미 다시 채점한 인터뷰입니다. 다시 채점하기는 인터뷰마다 한 번만 받습니다.'));
|
|
199
|
+
}
|
|
200
|
+
const session = this.sessionManager.get(sessionId);
|
|
201
|
+
const first = session.resolutionScore;
|
|
202
|
+
if (state === 'none' || !first) {
|
|
203
|
+
return err(new InterviewError(`아직 기준값(${this.resolutionThreshold})을 넘은 채점이 없습니다. 다시 채점하기는 처음 넘은 채점 뒤에 받습니다.`));
|
|
204
|
+
}
|
|
205
|
+
const second = computeResolutionScore(rawScore(externalScore), session.projectType, this.resolutionThreshold);
|
|
206
|
+
const { resolutionScore, rescore, principle, roundNumber } = applyRescore(this.sessionManager, sessionId, first, second, mode, this.rescoreSetting, this.resolutionThreshold);
|
|
207
|
+
if (!principle)
|
|
208
|
+
return ok({ resolutionScore, rescore });
|
|
209
|
+
// gate가 판정을 미뤘으면 다음 질문은 흔들린 차원부터 묻는다
|
|
210
|
+
this.eventStore.append('interview', sessionId, EventType.GESTALT_PRINCIPLE_APPLIED, {
|
|
211
|
+
principle,
|
|
212
|
+
roundNumber,
|
|
213
|
+
});
|
|
214
|
+
const gestaltContext = this.buildGestaltContext(session.topic, principle, roundNumber, session.rounds.map((r) => ({ question: r.question, response: r.userResponse })), session.projectType);
|
|
215
|
+
return ok({ resolutionScore, rescore, gestaltContext });
|
|
216
|
+
}
|
|
217
|
+
/** 직전 respond가 이 라운드용으로 고른 원칙. 첫 라운드나 기록이 없으면 null */
|
|
218
|
+
appliedPrinciple(sessionId, roundNumber) {
|
|
219
|
+
const applied = this.eventStore
|
|
220
|
+
.replay('interview', sessionId)
|
|
221
|
+
.filter((e) => e.eventType === EventType.GESTALT_PRINCIPLE_APPLIED &&
|
|
222
|
+
e.payload.roundNumber === roundNumber);
|
|
223
|
+
const last = applied[applied.length - 1];
|
|
224
|
+
return last ? last.payload.principle : null;
|
|
225
|
+
}
|
|
177
226
|
buildGestaltContext(topic, principle, roundNumber, previousRounds, projectType, includeScoringPrompt = false) {
|
|
178
227
|
const questionPrompt = buildQuestionPrompt(topic, principle, previousRounds, projectType);
|
|
179
228
|
const phase = getPrinciplePhaseLabel(roundNumber);
|
|
@@ -197,6 +246,16 @@ export class PassthroughEngine {
|
|
|
197
246
|
return context;
|
|
198
247
|
}
|
|
199
248
|
}
|
|
249
|
+
function rawScore(external) {
|
|
250
|
+
return {
|
|
251
|
+
goalClarity: external.goalClarity,
|
|
252
|
+
constraintClarity: external.constraintClarity,
|
|
253
|
+
successCriteria: external.successCriteria,
|
|
254
|
+
priorityClarity: external.priorityClarity,
|
|
255
|
+
contextClarity: external.contextClarity,
|
|
256
|
+
contradictions: external.contradictions ?? [],
|
|
257
|
+
};
|
|
258
|
+
}
|
|
200
259
|
// 답을 하나도 안 받은 세션은 근거가 없으니 임계값 이상 점수를 받지 않는다.
|
|
201
260
|
// 공백만 보낸 답은 답으로 치지 않는다.
|
|
202
261
|
// 임계값 미만은 막지 않는다 — 시작 직전 상태를 낮게 기록하는 건 정상 흐름이다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-engine.js","sourceRoot":"","sources":["../../../src/interview/passthrough-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"passthrough-engine.js","sourceRoot":"","sources":["../../../src/interview/passthrough-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,12 @@ import type { InterviewSession } from '../core/types.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare class InterviewSessionRepository {
|
|
8
8
|
private eventStore;
|
|
9
|
-
|
|
9
|
+
private resolutionThreshold;
|
|
10
|
+
/**
|
|
11
|
+
* @param resolutionThreshold isReady가 저장되지 않은 옛 ambiguity 이벤트를 읽을 때만 쓴다.
|
|
12
|
+
* 그 밖의 채점 이벤트는 저장된 isReady를 다시 계산하지 않는다
|
|
13
|
+
*/
|
|
14
|
+
constructor(eventStore: IEventStore, resolutionThreshold?: number);
|
|
10
15
|
/**
|
|
11
16
|
* 이벤트를 fold하여 InterviewSession 상태를 완전히 복원한다.
|
|
12
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/interview/repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAEV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/interview/repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAEV,gBAAgB,EAOjB,MAAM,kBAAkB,CAAC;AAI1B;;;GAGG;AACH,qBAAa,0BAA0B;IAMnC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,mBAAmB;IAN7B;;;OAGG;gBAEO,UAAU,EAAE,WAAW,EACvB,mBAAmB,GAAE,MAA6B;IAG5D;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIvD;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAOjF;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,cAAc,IAAI,gBAAgB,EAAE;IAUpC,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,UAAU;CAgGnB"}
|
|
@@ -6,8 +6,14 @@ import { RESOLUTION_THRESHOLD } from '../core/constants.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export class InterviewSessionRepository {
|
|
8
8
|
eventStore;
|
|
9
|
-
|
|
9
|
+
resolutionThreshold;
|
|
10
|
+
/**
|
|
11
|
+
* @param resolutionThreshold isReady가 저장되지 않은 옛 ambiguity 이벤트를 읽을 때만 쓴다.
|
|
12
|
+
* 그 밖의 채점 이벤트는 저장된 isReady를 다시 계산하지 않는다
|
|
13
|
+
*/
|
|
14
|
+
constructor(eventStore, resolutionThreshold = RESOLUTION_THRESHOLD) {
|
|
10
15
|
this.eventStore = eventStore;
|
|
16
|
+
this.resolutionThreshold = resolutionThreshold;
|
|
11
17
|
}
|
|
12
18
|
/**
|
|
13
19
|
* 이벤트를 fold하여 InterviewSession 상태를 완전히 복원한다.
|
|
@@ -97,6 +103,10 @@ export class InterviewSessionRepository {
|
|
|
97
103
|
isReady: payload.isReady,
|
|
98
104
|
dimensions: payload.dimensions ?? [],
|
|
99
105
|
...(contradictions.length > 0 && { contradictions }),
|
|
106
|
+
...(typeof payload.threshold === 'number' && { threshold: payload.threshold }),
|
|
107
|
+
...(payload.signals != null && {
|
|
108
|
+
signals: payload.signals,
|
|
109
|
+
}),
|
|
100
110
|
};
|
|
101
111
|
if (contradictions.length > 0) {
|
|
102
112
|
const roundNumber = payload.roundNumber;
|
|
@@ -110,6 +120,14 @@ export class InterviewSessionRepository {
|
|
|
110
120
|
}
|
|
111
121
|
break;
|
|
112
122
|
}
|
|
123
|
+
case EventType.INTERVIEW_RESOLUTION_RESCORED: {
|
|
124
|
+
const score = session.resolutionScore;
|
|
125
|
+
if (score) {
|
|
126
|
+
score.isReady = payload.isReady;
|
|
127
|
+
score.signals = payload.signals;
|
|
128
|
+
}
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
113
131
|
// Backward compatibility: old ambiguity score was inverted (low = clear)
|
|
114
132
|
// Convert to resolution score by inverting: resolution = 1 - ambiguity
|
|
115
133
|
case 'interview.ambiguity.scored': {
|
|
@@ -117,7 +135,7 @@ export class InterviewSessionRepository {
|
|
|
117
135
|
const resolution = 1 - ambiguity;
|
|
118
136
|
session.resolutionScore = {
|
|
119
137
|
overall: resolution,
|
|
120
|
-
isReady: resolution >=
|
|
138
|
+
isReady: resolution >= this.resolutionThreshold,
|
|
121
139
|
dimensions: payload.dimensions ?? [],
|
|
122
140
|
};
|
|
123
141
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/interview/repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/interview/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { GestaltPrinciple, ResolutionScore, RescoreMode, RescoreResult } from '../core/types.js';
|
|
2
|
+
import type { InterviewConfig } from '../core/config.js';
|
|
3
|
+
import type { SessionManager } from './session.js';
|
|
4
|
+
export type RescoreSetting = InterviewConfig['rescore'];
|
|
5
|
+
/** none: 기준값을 넘은 채점이 아직 없다. pending: 넘었는데 다시 채점을 안 받았다. done: 받았다 */
|
|
6
|
+
export type RescoreState = 'none' | 'pending' | 'done';
|
|
7
|
+
/** gate 모드에서 차원 하나라도 이보다 크게 흔들리면 판정을 미룬다 */
|
|
8
|
+
export declare const RESCORE_SPREAD_LIMIT = 0.2;
|
|
9
|
+
/**
|
|
10
|
+
* 이 채점 뒤에 다시 채점하기를 요청할지 정한다.
|
|
11
|
+
* record는 처음 기준값을 넘을 때 한 번만 요청한다. gate는 다시 채점을 받기 전까지
|
|
12
|
+
* 판정을 미루므로 넘을 때마다 요청한다.
|
|
13
|
+
*/
|
|
14
|
+
export declare function shouldRequestRescore(setting: RescoreSetting, state: RescoreState, score: ResolutionScore, threshold: number): boolean;
|
|
15
|
+
export declare function compareRescore(first: ResolutionScore, second: ResolutionScore, mode: RescoreMode, threshold: number): RescoreResult;
|
|
16
|
+
/** record는 다시 채점 직전 점수의 판정을 그대로 두고 gate는 낮은 overall과 흔들림으로 다시 정한다 */
|
|
17
|
+
export declare function readinessAfterRescore(setting: RescoreSetting, first: ResolutionScore, rescore: RescoreResult, threshold: number): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* gate가 판정을 미뤘을 때 다음 질문의 원칙.
|
|
20
|
+
* 흔들림이 기준을 넘었으면 가장 많이 흔들린 차원을 묻는다. 안 넘었으면 낮은 쪽 점수로 고른다.
|
|
21
|
+
*/
|
|
22
|
+
export declare function principleAfterRescore(first: ResolutionScore, second: ResolutionScore, rescore: RescoreResult, roundNumber: number): GestaltPrinciple;
|
|
23
|
+
/**
|
|
24
|
+
* 채점을 세션에 넣고 다시 채점하기를 요청할 차례인지 돌려준다.
|
|
25
|
+
* 판정이 이 순서에 달려 있어서 두 엔진이 이 함수 하나를 같이 쓴다.
|
|
26
|
+
*/
|
|
27
|
+
export declare function recordScoreWithRescore(sessions: SessionManager, sessionId: string, score: ResolutionScore, setting: RescoreSetting, threshold: number): boolean;
|
|
28
|
+
/** 다시 채점한 점수를 다시 채점 직전 점수와 비교해 남긴다. gate가 판정을 미뤘으면 다음 질문의 원칙도 돌려준다 */
|
|
29
|
+
export declare function applyRescore(sessions: SessionManager, sessionId: string, first: ResolutionScore, second: ResolutionScore, mode: RescoreMode, setting: RescoreSetting, threshold: number): {
|
|
30
|
+
resolutionScore: ResolutionScore;
|
|
31
|
+
rescore: RescoreResult;
|
|
32
|
+
principle: GestaltPrinciple | null;
|
|
33
|
+
roundNumber: number;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=rescore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rescore.d.ts","sourceRoot":"","sources":["../../../src/interview/rescore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAExD,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvD,4CAA4C;AAC5C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAIT;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,GAChB,aAAa,CAkBf;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,GAClB,gBAAgB,CAoBlB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAMT;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,GAChB;IACD,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB,CAUA"}
|