@tienne/gestalt 0.11.0 → 0.12.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 +12 -12
- package/README.ko.md +9 -9
- package/README.md +11 -11
- package/dist/benchmarks/runners/passthrough-benchmark-runner.js +2 -2
- package/dist/benchmarks/runners/passthrough-benchmark-runner.js.map +1 -1
- package/dist/benchmarks/types.d.ts +1 -1
- package/dist/benchmarks/types.d.ts.map +1 -1
- package/dist/package.json +3 -2
- package/dist/schemas/gestalt.schema.json +3 -3
- package/dist/skills/interview/SKILL.md +21 -21
- package/dist/skills/spec/SKILL.md +2 -2
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/interview.js +3 -3
- package/dist/src/cli/commands/interview.js.map +1 -1
- package/dist/src/cli/commands/setup.js +1 -1
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/commands/status.js +4 -4
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/index.js +1 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/config.d.ts +5 -5
- package/dist/src/core/config.js +4 -4
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/constants.d.ts +1 -1
- package/dist/src/core/constants.d.ts.map +1 -1
- package/dist/src/core/constants.js +1 -1
- package/dist/src/core/constants.js.map +1 -1
- package/dist/src/core/errors.d.ts +1 -1
- package/dist/src/core/errors.d.ts.map +1 -1
- package/dist/src/core/errors.js +3 -3
- package/dist/src/core/errors.js.map +1 -1
- package/dist/src/core/types.d.ts +5 -5
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/events/types.d.ts +1 -1
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/events/types.js +1 -1
- package/dist/src/events/types.js.map +1 -1
- package/dist/src/execute/repository.js +1 -1
- package/dist/src/execute/repository.js.map +1 -1
- package/dist/src/gestalt/analyzer.d.ts +2 -2
- package/dist/src/gestalt/analyzer.d.ts.map +1 -1
- package/dist/src/gestalt/analyzer.js +4 -4
- package/dist/src/gestalt/analyzer.js.map +1 -1
- package/dist/src/gestalt/principles.d.ts +2 -2
- package/dist/src/gestalt/principles.d.ts.map +1 -1
- package/dist/src/gestalt/principles.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/interview/engine.d.ts +4 -4
- package/dist/src/interview/engine.d.ts.map +1 -1
- package/dist/src/interview/engine.js +12 -12
- package/dist/src/interview/engine.js.map +1 -1
- package/dist/src/interview/mini-interview-engine.d.ts +3 -3
- package/dist/src/interview/mini-interview-engine.d.ts.map +1 -1
- package/dist/src/interview/mini-interview-engine.js +7 -6
- package/dist/src/interview/mini-interview-engine.js.map +1 -1
- package/dist/src/interview/passthrough-engine.d.ts +6 -6
- package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
- package/dist/src/interview/passthrough-engine.js +15 -15
- package/dist/src/interview/passthrough-engine.js.map +1 -1
- package/dist/src/interview/repository.d.ts.map +1 -1
- package/dist/src/interview/repository.js +16 -3
- package/dist/src/interview/repository.js.map +1 -1
- package/dist/src/interview/resolution.d.ts +8 -0
- package/dist/src/interview/resolution.d.ts.map +1 -0
- package/dist/src/interview/resolution.js +69 -0
- package/dist/src/interview/resolution.js.map +1 -0
- package/dist/src/interview/session.d.ts +2 -2
- package/dist/src/interview/session.d.ts.map +1 -1
- package/dist/src/interview/session.js +5 -5
- package/dist/src/interview/session.js.map +1 -1
- package/dist/src/llm/prompts.d.ts +1 -1
- package/dist/src/llm/prompts.d.ts.map +1 -1
- package/dist/src/llm/prompts.js +1 -1
- package/dist/src/llm/prompts.js.map +1 -1
- package/dist/src/mcp/schemas.d.ts +10 -10
- package/dist/src/mcp/schemas.js +3 -3
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/server.js +11 -11
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/interview-passthrough.js +18 -18
- package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/interview.js +10 -10
- package/dist/src/mcp/tools/interview.js.map +1 -1
- package/dist/src/mcp/tools/status.js +4 -4
- package/dist/src/mcp/tools/status.js.map +1 -1
- package/dist/src/recording/cast-generator.js +2 -2
- package/dist/src/recording/cast-generator.js.map +1 -1
- package/dist/src/spec/generator.d.ts +2 -2
- package/dist/src/spec/generator.d.ts.map +1 -1
- package/dist/src/spec/generator.js +7 -7
- package/dist/src/spec/generator.js.map +1 -1
- package/dist/src/spec/passthrough-generator.d.ts +2 -2
- package/dist/src/spec/passthrough-generator.d.ts.map +1 -1
- package/dist/src/spec/passthrough-generator.js +8 -8
- package/dist/src/spec/passthrough-generator.js.map +1 -1
- package/dist/src/spec/schema.d.ts +21 -6
- package/dist/src/spec/schema.d.ts.map +1 -1
- package/dist/src/spec/schema.js +12 -3
- package/dist/src/spec/schema.js.map +1 -1
- package/dist/src/tui/screens/InterviewScreen.js +4 -4
- package/dist/src/tui/screens/InterviewScreen.js.map +1 -1
- package/package.json +3 -2
- package/schemas/gestalt.schema.json +3 -3
- package/skills/interview/SKILL.md +21 -21
- package/skills/spec/SKILL.md +2 -2
|
@@ -23,10 +23,10 @@ export function handleStatus(engine, input, eventStore) {
|
|
|
23
23
|
projectType: session.projectType,
|
|
24
24
|
totalRounds: session.rounds.length,
|
|
25
25
|
answeredRounds: session.rounds.filter((r) => r.userResponse).length,
|
|
26
|
-
|
|
26
|
+
resolutionScore: session.resolutionScore
|
|
27
27
|
? {
|
|
28
|
-
overall: session.
|
|
29
|
-
isReady: session.
|
|
28
|
+
overall: session.resolutionScore.overall.toFixed(2),
|
|
29
|
+
isReady: session.resolutionScore.isReady,
|
|
30
30
|
}
|
|
31
31
|
: null,
|
|
32
32
|
createdAt: session.createdAt,
|
|
@@ -58,7 +58,7 @@ export function handleStatus(engine, input, eventStore) {
|
|
|
58
58
|
status: s.status,
|
|
59
59
|
projectType: s.projectType,
|
|
60
60
|
totalRounds: s.rounds.length,
|
|
61
|
-
|
|
61
|
+
resolutionScore: s.resolutionScore?.overall.toFixed(2) ?? 'N/A',
|
|
62
62
|
createdAt: s.createdAt,
|
|
63
63
|
}))
|
|
64
64
|
: [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/mcp/tools/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,KAAkB,EAClB,UAAuB;IAEvB,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,UAAU,EAAE;QACrB,MAAM,EAAE,YAAY,EAAE,aAAa,IAAI,IAAI;QAC3C,eAAe,EAAE,YAAY,EAAE,eAAe,IAAI,KAAK;KACxD,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;IAE/C,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,sBAAsB;YACtB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,WAAW;oBACX,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE;wBACP,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;wBAChC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;wBAClC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM;wBACnE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/mcp/tools/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,8 +56,8 @@ export class CastGenerator {
|
|
|
56
56
|
// Footer
|
|
57
57
|
events.push([t, 'o', `${BOLD}${CYAN}✅ Interview completed — ${session.rounds.length} rounds${RESET}\r\n`]);
|
|
58
58
|
t += 0.3;
|
|
59
|
-
if (session.
|
|
60
|
-
events.push([t, 'o', `${DIM}
|
|
59
|
+
if (session.resolutionScore) {
|
|
60
|
+
events.push([t, 'o', `${DIM}Resolution score: ${session.resolutionScore.overall.toFixed(2)}${RESET}\r\n`]);
|
|
61
61
|
}
|
|
62
62
|
events.push([t + 0.2, 'o', '\r\n']);
|
|
63
63
|
// Write file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cast-generator.js","sourceRoot":"","sources":["../../../src/recording/cast-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cast-generator.js","sourceRoot":"","sources":["../../../src/recording/cast-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { InterviewSession, Spec } from '../core/types.js';
|
|
2
|
-
import {
|
|
2
|
+
import { ResolutionThresholdError, SpecGenerationError } from '../core/errors.js';
|
|
3
3
|
import { type Result } from '../core/result.js';
|
|
4
4
|
import type { LLMAdapter } from '../llm/types.js';
|
|
5
5
|
import { EventStore } from '../events/store.js';
|
|
@@ -7,6 +7,6 @@ export declare class SpecGenerator {
|
|
|
7
7
|
private eventStore;
|
|
8
8
|
private extractor;
|
|
9
9
|
constructor(llm: LLMAdapter, eventStore: EventStore);
|
|
10
|
-
generate(session: InterviewSession, force?: boolean): Promise<Result<Spec, SpecGenerationError |
|
|
10
|
+
generate(session: InterviewSession, force?: boolean): Promise<Result<Spec, SpecGenerationError | ResolutionThresholdError>>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/spec/generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/spec/generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElF,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,qBAAa,aAAa;IAKtB,OAAO,CAAC,UAAU;IAJpB,OAAO,CAAC,SAAS,CAAgB;gBAG/B,GAAG,EAAE,UAAU,EACP,UAAU,EAAE,UAAU;IAK1B,QAAQ,CACZ,OAAO,EAAE,gBAAgB,EACzB,KAAK,UAAQ,GACZ,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,wBAAwB,CAAC,CAAC;CAmEzE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ResolutionThresholdError, SpecGenerationError } from '../core/errors.js';
|
|
3
|
+
import { RESOLUTION_THRESHOLD, MAX_SPEC_RETRIES } from '../core/constants.js';
|
|
4
4
|
import { ok, err } from '../core/result.js';
|
|
5
5
|
import { specSchema } from './schema.js';
|
|
6
6
|
import { SpecExtractor } from './extractor.js';
|
|
@@ -13,11 +13,11 @@ export class SpecGenerator {
|
|
|
13
13
|
this.extractor = new SpecExtractor(llm);
|
|
14
14
|
}
|
|
15
15
|
async generate(session, force = false) {
|
|
16
|
-
// Validate
|
|
16
|
+
// Validate resolution threshold
|
|
17
17
|
if (!force) {
|
|
18
|
-
const
|
|
19
|
-
if (
|
|
20
|
-
return err(new
|
|
18
|
+
const resolution = session.resolutionScore?.overall ?? 0.0;
|
|
19
|
+
if (resolution < RESOLUTION_THRESHOLD) {
|
|
20
|
+
return err(new ResolutionThresholdError(resolution, RESOLUTION_THRESHOLD));
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
if (session.status !== 'completed') {
|
|
@@ -38,7 +38,7 @@ export class SpecGenerator {
|
|
|
38
38
|
metadata: {
|
|
39
39
|
specId: randomUUID(),
|
|
40
40
|
interviewSessionId: session.sessionId,
|
|
41
|
-
|
|
41
|
+
resolutionScore: session.resolutionScore?.overall ?? 0.0,
|
|
42
42
|
generatedAt: new Date().toISOString(),
|
|
43
43
|
},
|
|
44
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/spec/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/spec/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { InterviewSession, Spec } from '../core/types.js';
|
|
2
|
-
import {
|
|
2
|
+
import { ResolutionThresholdError, SpecGenerationError } from '../core/errors.js';
|
|
3
3
|
import { type Result } from '../core/result.js';
|
|
4
4
|
import { EventStore } from '../events/store.js';
|
|
5
5
|
import type { AgentRegistry } from '../agent/registry.js';
|
|
@@ -30,7 +30,7 @@ export declare class PassthroughSpecGenerator {
|
|
|
30
30
|
private agentRegistry?;
|
|
31
31
|
constructor(eventStore: EventStore, agentRegistry?: AgentRegistry);
|
|
32
32
|
buildSpecContext(session: InterviewSession): SpecContext;
|
|
33
|
-
validateAndStore(session: InterviewSession, externalSpec: ExternalSpec, force?: boolean): Result<Spec, SpecGenerationError |
|
|
33
|
+
validateAndStore(session: InterviewSession, externalSpec: ExternalSpec, force?: boolean): Result<Spec, SpecGenerationError | ResolutionThresholdError>;
|
|
34
34
|
validateAndStoreFromText(externalSpec: ExternalSpec): Result<Spec, SpecGenerationError>;
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=passthrough-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-generator.d.ts","sourceRoot":"","sources":["../../../src/spec/passthrough-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAkB,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"passthrough-generator.d.ts","sourceRoot":"","sources":["../../../src/spec/passthrough-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAkB,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElF,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAIlD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/F,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,EAAE;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAC9D,eAAe,EAAE,OAAO,EAAE,CAAC;CAC5B;AAID,qBAAa,wBAAwB;IAGvB,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAElB,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,aAAa;IAIzE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,WAAW;IA4BxD,gBAAgB,CACd,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,YAAY,EAC1B,KAAK,UAAQ,GACZ,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;IA8D/D,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC;CAgDxF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ResolutionThresholdError, SpecGenerationError } from '../core/errors.js';
|
|
3
|
+
import { RESOLUTION_THRESHOLD } from '../core/constants.js';
|
|
4
4
|
import { ok, err } from '../core/result.js';
|
|
5
5
|
import { specSchema } from './schema.js';
|
|
6
6
|
import { EventType } from '../events/types.js';
|
|
@@ -40,11 +40,11 @@ export class PassthroughSpecGenerator {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
validateAndStore(session, externalSpec, force = false) {
|
|
43
|
-
// Validate
|
|
43
|
+
// Validate resolution threshold
|
|
44
44
|
if (!force) {
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
return err(new
|
|
45
|
+
const resolution = session.resolutionScore?.overall ?? 0.0;
|
|
46
|
+
if (resolution < RESOLUTION_THRESHOLD) {
|
|
47
|
+
return err(new ResolutionThresholdError(resolution, RESOLUTION_THRESHOLD));
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
if (session.status !== 'completed') {
|
|
@@ -61,7 +61,7 @@ export class PassthroughSpecGenerator {
|
|
|
61
61
|
metadata: {
|
|
62
62
|
specId: randomUUID(),
|
|
63
63
|
interviewSessionId: session.sessionId,
|
|
64
|
-
|
|
64
|
+
resolutionScore: session.resolutionScore?.overall ?? 0.0,
|
|
65
65
|
generatedAt: new Date().toISOString(),
|
|
66
66
|
},
|
|
67
67
|
};
|
|
@@ -95,7 +95,7 @@ export class PassthroughSpecGenerator {
|
|
|
95
95
|
metadata: {
|
|
96
96
|
specId: randomUUID(),
|
|
97
97
|
interviewSessionId: TEXT_INPUT_SESSION_ID,
|
|
98
|
-
|
|
98
|
+
resolutionScore: 1,
|
|
99
99
|
generatedAt: new Date().toISOString(),
|
|
100
100
|
},
|
|
101
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-generator.js","sourceRoot":"","sources":["../../../src/spec/passthrough-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"passthrough-generator.js","sourceRoot":"","sources":["../../../src/spec/passthrough-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,21 +68,35 @@ export declare const specSchema: z.ZodObject<{
|
|
|
68
68
|
finding: string;
|
|
69
69
|
confidence: number;
|
|
70
70
|
}>, "many">;
|
|
71
|
-
metadata: z.ZodObject<{
|
|
71
|
+
metadata: z.ZodEffects<z.ZodObject<{
|
|
72
72
|
specId: z.ZodString;
|
|
73
73
|
interviewSessionId: z.ZodString;
|
|
74
|
-
|
|
74
|
+
resolutionScore: z.ZodOptional<z.ZodNumber>;
|
|
75
|
+
ambiguityScore: z.ZodOptional<z.ZodNumber>;
|
|
75
76
|
generatedAt: z.ZodString;
|
|
76
77
|
}, "strip", z.ZodTypeAny, {
|
|
77
78
|
specId: string;
|
|
78
79
|
interviewSessionId: string;
|
|
79
|
-
ambiguityScore: number;
|
|
80
80
|
generatedAt: string;
|
|
81
|
+
resolutionScore?: number | undefined;
|
|
82
|
+
ambiguityScore?: number | undefined;
|
|
81
83
|
}, {
|
|
82
84
|
specId: string;
|
|
83
85
|
interviewSessionId: string;
|
|
84
|
-
ambiguityScore: number;
|
|
85
86
|
generatedAt: string;
|
|
87
|
+
resolutionScore?: number | undefined;
|
|
88
|
+
ambiguityScore?: number | undefined;
|
|
89
|
+
}>, {
|
|
90
|
+
specId: string;
|
|
91
|
+
interviewSessionId: string;
|
|
92
|
+
generatedAt: string;
|
|
93
|
+
resolutionScore: number;
|
|
94
|
+
}, {
|
|
95
|
+
specId: string;
|
|
96
|
+
interviewSessionId: string;
|
|
97
|
+
generatedAt: string;
|
|
98
|
+
resolutionScore?: number | undefined;
|
|
99
|
+
ambiguityScore?: number | undefined;
|
|
86
100
|
}>;
|
|
87
101
|
}, "strip", z.ZodTypeAny, {
|
|
88
102
|
goal: string;
|
|
@@ -109,8 +123,8 @@ export declare const specSchema: z.ZodObject<{
|
|
|
109
123
|
metadata: {
|
|
110
124
|
specId: string;
|
|
111
125
|
interviewSessionId: string;
|
|
112
|
-
ambiguityScore: number;
|
|
113
126
|
generatedAt: string;
|
|
127
|
+
resolutionScore: number;
|
|
114
128
|
};
|
|
115
129
|
}, {
|
|
116
130
|
goal: string;
|
|
@@ -137,8 +151,9 @@ export declare const specSchema: z.ZodObject<{
|
|
|
137
151
|
metadata: {
|
|
138
152
|
specId: string;
|
|
139
153
|
interviewSessionId: string;
|
|
140
|
-
ambiguityScore: number;
|
|
141
154
|
generatedAt: string;
|
|
155
|
+
resolutionScore?: number | undefined;
|
|
156
|
+
ambiguityScore?: number | undefined;
|
|
142
157
|
};
|
|
143
158
|
}>;
|
|
144
159
|
export type ValidatedSpec = z.infer<typeof specSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/spec/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/spec/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA0CpD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQrB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
package/dist/src/spec/schema.js
CHANGED
|
@@ -19,12 +19,21 @@ const gestaltAnalysisSchema = z.object({
|
|
|
19
19
|
finding: z.string(),
|
|
20
20
|
confidence: z.number().min(0).max(1),
|
|
21
21
|
});
|
|
22
|
-
const specMetadataSchema = z
|
|
22
|
+
const specMetadataSchema = z
|
|
23
|
+
.object({
|
|
23
24
|
specId: z.string(),
|
|
24
25
|
interviewSessionId: z.string(),
|
|
25
|
-
|
|
26
|
+
resolutionScore: z.number().min(0).max(1).optional(),
|
|
27
|
+
// Backward compatibility: old Specs stored ambiguityScore (inverted scale)
|
|
28
|
+
ambiguityScore: z.number().min(0).max(1).optional(),
|
|
26
29
|
generatedAt: z.string(),
|
|
27
|
-
})
|
|
30
|
+
})
|
|
31
|
+
.transform(data => ({
|
|
32
|
+
specId: data.specId,
|
|
33
|
+
interviewSessionId: data.interviewSessionId,
|
|
34
|
+
generatedAt: data.generatedAt,
|
|
35
|
+
resolutionScore: data.resolutionScore ?? (data.ambiguityScore != null ? 1 - data.ambiguityScore : 0),
|
|
36
|
+
}));
|
|
28
37
|
export const specSchema = z.object({
|
|
29
38
|
version: z.string(),
|
|
30
39
|
goal: z.string().min(1),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/spec/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/spec/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,2EAA2E;IAC3E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC;KACD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;IAC3C,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,eAAe,EACb,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;CACtF,CAAC,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACvC,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC/C,QAAQ,EAAE,kBAAkB;CAC7B,CAAC,CAAC"}
|
|
@@ -32,7 +32,7 @@ function parseInterviewEvents(events, sessionId) {
|
|
|
32
32
|
existing.response = response;
|
|
33
33
|
questionMap.set(roundNumber, existing);
|
|
34
34
|
}
|
|
35
|
-
if (ev.eventType === 'interview.ambiguity.scored') {
|
|
35
|
+
if (ev.eventType === 'interview.resolution.scored' || ev.eventType === 'interview.ambiguity.scored') {
|
|
36
36
|
const overall = payload.overall;
|
|
37
37
|
const roundNumber = payload.roundNumber;
|
|
38
38
|
if (overall !== undefined) {
|
|
@@ -41,7 +41,7 @@ function parseInterviewEvents(events, sessionId) {
|
|
|
41
41
|
if (roundNumber !== undefined) {
|
|
42
42
|
const existing = questionMap.get(roundNumber);
|
|
43
43
|
if (existing) {
|
|
44
|
-
existing.
|
|
44
|
+
existing.resolutionScore = overall ?? null;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -55,7 +55,7 @@ function parseInterviewEvents(events, sessionId) {
|
|
|
55
55
|
roundNumber: roundNum,
|
|
56
56
|
question: data.question ?? '',
|
|
57
57
|
response: data.response ?? '',
|
|
58
|
-
|
|
58
|
+
resolutionScore: data.resolutionScore ?? null,
|
|
59
59
|
gestaltPrinciple: data.gestaltPrinciple ?? '',
|
|
60
60
|
});
|
|
61
61
|
}
|
|
@@ -88,7 +88,7 @@ export function InterviewScreen({ events, selectedSessionId, }) {
|
|
|
88
88
|
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", minHeight: 10, children: [_jsx(Text, { bold: true, color: "yellow", children: "No interview data" }), _jsx(Text, { dimColor: true, children: "This session may not be an interview, or no Q&A rounds have been recorded." })] }));
|
|
89
89
|
}
|
|
90
90
|
const displayedRounds = data.rounds.slice(scrollOffset, scrollOffset + visibleRounds);
|
|
91
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, gap: 1, children: [_jsx(Text, { bold: true, children: "Interview" }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: "cyan", children: truncate(data.topic || selectedSessionId, 40) }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: data.status === 'completed' ? 'green' : 'cyan', children: data.status }), data.overallAmbiguity !== null && (_jsxs(React.Fragment, { children: [_jsx(Text, { dimColor: true, children: "|
|
|
91
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, gap: 1, children: [_jsx(Text, { bold: true, children: "Interview" }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: "cyan", children: truncate(data.topic || selectedSessionId, 40) }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: data.status === 'completed' ? 'green' : 'cyan', children: data.status }), data.overallAmbiguity !== null && (_jsxs(React.Fragment, { children: [_jsx(Text, { dimColor: true, children: "| resolution:" }), _jsxs(Text, { color: data.overallAmbiguity >= 0.8 ? 'green' : data.overallAmbiguity >= 0.5 ? 'yellow' : 'red', children: [(data.overallAmbiguity * 100).toFixed(0), "%"] })] }))] }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["Rounds ", scrollOffset + 1, "-", Math.min(scrollOffset + visibleRounds, data.rounds.length), " of", ' ', data.rounds.length, " | Up/Down to scroll"] }) }), displayedRounds.map((round) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { gap: 1, children: [_jsxs(Text, { bold: true, color: "white", children: ["R", round.roundNumber] }), round.gestaltPrinciple && (_jsxs(Text, { color: PRINCIPLE_COLORS[round.gestaltPrinciple] ?? 'gray', children: ["[", round.gestaltPrinciple, "]"] })), round.resolutionScore !== null && (_jsxs(Text, { dimColor: true, children: ["res: ", renderMiniBar(round.resolutionScore, 10), ' ', (round.resolutionScore * 100).toFixed(0), "%"] }))] }), _jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "Q: " }), _jsx(Text, { children: truncate(round.question, 80) })] }), round.response ? (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: "A: " }), _jsx(Text, { children: truncate(round.response, 80) })] })) : (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "A: " }), _jsx(Text, { dimColor: true, children: "(awaiting response)" })] }))] })] }, round.roundNumber)))] }));
|
|
92
92
|
}
|
|
93
93
|
function renderMiniBar(score, width) {
|
|
94
94
|
const filled = Math.round(score * width);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterviewScreen.js","sourceRoot":"","sources":["../../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAmB1C,SAAS,oBAAoB,CAC3B,MAAqB,EACrB,SAAwB;IAExB,MAAM,aAAa,GAAG,SAAS;QAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC;QACnD,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,MAAM,GAAG,SAAS,CAAC;IACvB,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;IAE/D,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAkC,CAAC;QAEtD,IAAI,EAAE,CAAC,SAAS,KAAK,2BAA2B,EAAE,CAAC;YACjD,KAAK,GAAI,OAAO,CAAC,KAAgB,IAAI,EAAE,CAAC;YACxC,MAAM,GAAG,aAAa,CAAC;QACzB,CAAC;QAED,IAAI,EAAE,CAAC,SAAS,KAAK,0BAA0B,EAAE,CAAC;YAChD,MAAM,WAAW,GAAI,OAAO,CAAC,WAAsB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAI,OAAO,CAAC,QAAmB,IAAI,EAAE,CAAC;YACpD,MAAM,SAAS,GAAI,OAAO,CAAC,YAAuB,IAAK,OAAO,CAAC,SAAoB,IAAI,EAAE,CAAC;YAC1F,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YACjE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC;YACtC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,EAAE,CAAC,SAAS,KAAK,6BAA6B,EAAE,CAAC;YACnD,MAAM,WAAW,GAAI,OAAO,CAAC,WAAsB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAI,OAAO,CAAC,QAAmB,IAAK,OAAO,CAAC,YAAuB,IAAI,EAAE,CAAC;YACxF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YACjE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,EAAE,CAAC,SAAS,KAAK,4BAA4B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"InterviewScreen.js","sourceRoot":"","sources":["../../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tienne/gestalt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -67,7 +67,8 @@
|
|
|
67
67
|
"better-sqlite3",
|
|
68
68
|
"esbuild",
|
|
69
69
|
"node-pty",
|
|
70
|
-
"onnxruntime-node"
|
|
70
|
+
"onnxruntime-node",
|
|
71
|
+
"sharp"
|
|
71
72
|
]
|
|
72
73
|
}
|
|
73
74
|
}
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
"type": "object",
|
|
29
29
|
"description": "Interview engine settings",
|
|
30
30
|
"properties": {
|
|
31
|
-
"
|
|
31
|
+
"resolutionThreshold": {
|
|
32
32
|
"type": "number",
|
|
33
33
|
"minimum": 0,
|
|
34
34
|
"maximum": 1,
|
|
35
|
-
"description": "
|
|
36
|
-
"default": 0.
|
|
35
|
+
"description": "Resolution threshold above which requirements are considered clear (env: GESTALT_RESOLUTION_THRESHOLD)",
|
|
36
|
+
"default": 0.8
|
|
37
37
|
},
|
|
38
38
|
"maxRounds": {
|
|
39
39
|
"type": "integer",
|
|
@@ -17,7 +17,7 @@ inputs:
|
|
|
17
17
|
description: "Working directory for brownfield detection"
|
|
18
18
|
outputs:
|
|
19
19
|
- session
|
|
20
|
-
-
|
|
20
|
+
- resolutionScore
|
|
21
21
|
---
|
|
22
22
|
|
|
23
23
|
# Interview Skill
|
|
@@ -28,8 +28,8 @@ This skill conducts a Gestalt psychology-driven interview to transform vague req
|
|
|
28
28
|
|
|
29
29
|
1. **Start**: Create a session, detect project type (greenfield/brownfield), ask the first question
|
|
30
30
|
2. **Iterate**: Ask questions guided by Gestalt principles (Closure → Proximity → Similarity → Figure-Ground)
|
|
31
|
-
3. **Score**: Continuously assess
|
|
32
|
-
4. **Complete**: When
|
|
31
|
+
3. **Score**: Continuously assess resolution across multiple dimensions
|
|
32
|
+
4. **Complete**: When resolution score ≥ 0.8, the interview is ready for spec generation
|
|
33
33
|
|
|
34
34
|
## Gestalt Principles Applied
|
|
35
35
|
|
|
@@ -48,26 +48,26 @@ API 키 없이 MCP 서버 실행 시 자동 활성화. LLM 작업을 caller가
|
|
|
48
48
|
| 파라미터 | 타입 | 필수 | 설명 |
|
|
49
49
|
|---------|------|------|------|
|
|
50
50
|
| `generatedQuestion` | string | respond 시 필수 | caller가 생성한 질문 텍스트 |
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
51
|
+
| `resolutionScore` | object | 선택 | caller가 산출한 해상도 점수 |
|
|
52
|
+
| `resolutionScore.goalClarity` | number (0-1) | 필수* | 목표 명확도 |
|
|
53
|
+
| `resolutionScore.constraintClarity` | number (0-1) | 필수* | 제약조건 명확도 |
|
|
54
|
+
| `resolutionScore.successCriteria` | number (0-1) | 필수* | 성공 기준 명확도 |
|
|
55
|
+
| `resolutionScore.priorityClarity` | number (0-1) | 필수* | 우선순위 명확도 |
|
|
56
|
+
| `resolutionScore.contextClarity` | number (0-1) | 선택 | 컨텍스트 명확도 |
|
|
57
|
+
| `resolutionScore.contradictions` | string[] | 선택 | 발견된 모순 목록 |
|
|
58
58
|
|
|
59
|
-
\*
|
|
59
|
+
\* resolutionScore 객체를 제공할 경우 필수
|
|
60
60
|
|
|
61
61
|
### Action별 응답 구조 (Passthrough)
|
|
62
62
|
|
|
63
63
|
**`start`** → `{ status, sessionId, projectType, detectedFiles, gestaltContext, roundNumber, message }`
|
|
64
64
|
|
|
65
|
-
**`respond`** → `{ status, sessionId, roundNumber, gestaltContext,
|
|
65
|
+
**`respond`** → `{ status, sessionId, roundNumber, gestaltContext, resolutionScore, message }`
|
|
66
66
|
|
|
67
|
-
**`score`** (점수 미제공 시) → `{ status,
|
|
68
|
-
**`score`** (점수 제공 시) → `{ status,
|
|
67
|
+
**`score`** (점수 미제공 시) → `{ status, resolutionScore, scoringPrompt, message }`
|
|
68
|
+
**`score`** (점수 제공 시) → `{ status, resolutionScore }`
|
|
69
69
|
|
|
70
|
-
**`complete`** → `{ status, sessionId, totalRounds,
|
|
70
|
+
**`complete`** → `{ status, sessionId, totalRounds, finalResolutionScore, message }`
|
|
71
71
|
|
|
72
72
|
### GestaltContext 필드
|
|
73
73
|
|
|
@@ -78,7 +78,7 @@ API 키 없이 MCP 서버 실행 시 자동 활성화. LLM 작업을 caller가
|
|
|
78
78
|
| `principleStrategy` | string | 해당 원리의 질문 전략 설명 |
|
|
79
79
|
| `phase` | string | 현재 인터뷰 단계 라벨 |
|
|
80
80
|
| `questionPrompt` | string | 다음 질문 생성용 프롬프트 |
|
|
81
|
-
| `scoringPrompt` | string? |
|
|
81
|
+
| `scoringPrompt` | string? | 해상도 점수 산출용 프롬프트 (respond 후에만 포함) |
|
|
82
82
|
| `roundNumber` | number | 현재 라운드 번호 |
|
|
83
83
|
|
|
84
84
|
---
|
|
@@ -93,20 +93,20 @@ API 키 없이 MCP 서버 실행 시 자동 활성화. LLM 작업을 caller가
|
|
|
93
93
|
|
|
94
94
|
```
|
|
95
95
|
subject: "Gestalt 인터뷰: {topic}"
|
|
96
|
-
description: "라운드 1/{maxRounds} |
|
|
96
|
+
description: "라운드 1/{maxRounds} | 해상도: 측정 전"
|
|
97
97
|
activeForm: "라운드 1 — {currentPrinciple}"
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
### 각 라운드 후 (`respond` 응답 수신 시마다)
|
|
101
101
|
|
|
102
|
-
`TaskUpdate`로 description과 activeForm을 최신 상태로 갱신한다.
|
|
102
|
+
`TaskUpdate`로 description과 activeForm을 최신 상태로 갱신한다. 해상도는 추이 형식으로 표시한다.
|
|
103
103
|
|
|
104
104
|
```
|
|
105
|
-
description: "라운드 {roundNumber}/{maxRounds} |
|
|
105
|
+
description: "라운드 {roundNumber}/{maxRounds} | 해상도: {score1} → {score2} → {latestScore}"
|
|
106
106
|
activeForm: "라운드 {roundNumber} — {currentPrinciple}"
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
resolutionScore.isReady === true 이면 description에 "✓ 준비 완료" 표시를 추가한다.
|
|
110
110
|
|
|
111
111
|
### 완료 시 (`complete` 응답 수신 후)
|
|
112
112
|
|
|
@@ -114,5 +114,5 @@ ambiguityScore.isReady === true 이면 description에 "✓ 준비 완료" 표시
|
|
|
114
114
|
|
|
115
115
|
```
|
|
116
116
|
status: "completed"
|
|
117
|
-
description: "총 {totalRounds}라운드 완료 | 최종
|
|
117
|
+
description: "총 {totalRounds}라운드 완료 | 최종 해상도: {finalResolutionScore}"
|
|
118
118
|
```
|
package/skills/spec/SKILL.md
CHANGED
|
@@ -14,7 +14,7 @@ inputs:
|
|
|
14
14
|
force:
|
|
15
15
|
type: boolean
|
|
16
16
|
required: false
|
|
17
|
-
description: "Force generation even if
|
|
17
|
+
description: "Force generation even if resolution threshold is not met"
|
|
18
18
|
outputs:
|
|
19
19
|
- spec
|
|
20
20
|
---
|
|
@@ -34,7 +34,7 @@ This skill transforms completed interview data into a structured project specifi
|
|
|
34
34
|
## Requirements
|
|
35
35
|
|
|
36
36
|
- Interview session must be in `completed` status
|
|
37
|
-
-
|
|
37
|
+
- Resolution score must be ≥ 0.8 (unless `force` is true)
|
|
38
38
|
|
|
39
39
|
## Passthrough Mode
|
|
40
40
|
|