@nahisaho/katashiro-orchestrator 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dialogue/dialogue-collector.d.ts +144 -0
- package/dist/dialogue/dialogue-collector.d.ts.map +1 -0
- package/dist/dialogue/dialogue-collector.js +334 -0
- package/dist/dialogue/dialogue-collector.js.map +1 -0
- package/dist/dialogue/index.d.ts +13 -0
- package/dist/dialogue/index.d.ts.map +1 -0
- package/dist/dialogue/index.js +22 -0
- package/dist/dialogue/index.js.map +1 -0
- package/dist/dialogue/intent-analyzer.d.ts +100 -0
- package/dist/dialogue/intent-analyzer.d.ts.map +1 -0
- package/dist/dialogue/intent-analyzer.js +474 -0
- package/dist/dialogue/intent-analyzer.js.map +1 -0
- package/dist/dialogue/question-generator.d.ts +61 -0
- package/dist/dialogue/question-generator.d.ts.map +1 -0
- package/dist/dialogue/question-generator.js +530 -0
- package/dist/dialogue/question-generator.js.map +1 -0
- package/dist/dialogue/types.d.ts +242 -0
- package/dist/dialogue/types.d.ts.map +1 -0
- package/dist/dialogue/types.js +21 -0
- package/dist/dialogue/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dialogue Collector
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview MUSUBIX風の対話型情報収集システム
|
|
5
|
+
* 1問1答形式でユーザーの真の意図を引き出す
|
|
6
|
+
* @module @nahisaho/katashiro-orchestrator
|
|
7
|
+
* @since 0.4.1
|
|
8
|
+
*/
|
|
9
|
+
import type { DialogueSession, DialogueQuestion, DialogueCollectorConfig, ExtractedContext, InferredIntent } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* 対話型情報収集器
|
|
12
|
+
*
|
|
13
|
+
* MUSUBIXのように、ユーザーとの対話を通じて
|
|
14
|
+
* 真の意図・目的を明らかにします
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const collector = new DialogueCollector();
|
|
19
|
+
*
|
|
20
|
+
* // セッション開始
|
|
21
|
+
* const session = collector.startSession('新しいシステムを導入したい');
|
|
22
|
+
*
|
|
23
|
+
* // 最初の質問を取得
|
|
24
|
+
* let question = collector.getNextQuestion(session.id);
|
|
25
|
+
*
|
|
26
|
+
* while (question) {
|
|
27
|
+
* console.log(question.text);
|
|
28
|
+
* const userAnswer = await getUserInput();
|
|
29
|
+
*
|
|
30
|
+
* // 回答を記録
|
|
31
|
+
* collector.recordAnswer(session.id, userAnswer);
|
|
32
|
+
*
|
|
33
|
+
* // 次の質問を取得
|
|
34
|
+
* question = collector.getNextQuestion(session.id);
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* // 最終結果を取得
|
|
38
|
+
* const result = collector.getResult(session.id);
|
|
39
|
+
* console.log('真の意図:', result.inferredIntent.trueIntent);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare class DialogueCollector {
|
|
43
|
+
private readonly config;
|
|
44
|
+
private readonly questionGenerator;
|
|
45
|
+
private readonly intentAnalyzer;
|
|
46
|
+
private readonly sessions;
|
|
47
|
+
constructor(config?: Partial<DialogueCollectorConfig>);
|
|
48
|
+
/**
|
|
49
|
+
* 新しい対話セッションを開始
|
|
50
|
+
*/
|
|
51
|
+
startSession(initialInput: string): DialogueSession;
|
|
52
|
+
/**
|
|
53
|
+
* セッションを取得
|
|
54
|
+
*/
|
|
55
|
+
getSession(sessionId: string): DialogueSession | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* 次の質問を取得
|
|
58
|
+
*/
|
|
59
|
+
getNextQuestion(sessionId: string): DialogueQuestion | null;
|
|
60
|
+
/**
|
|
61
|
+
* 回答を記録
|
|
62
|
+
*/
|
|
63
|
+
recordAnswer(sessionId: string, answerText: string, metadata?: Record<string, unknown>): void;
|
|
64
|
+
/**
|
|
65
|
+
* 質問を提示(回答待ち状態にする)
|
|
66
|
+
*/
|
|
67
|
+
presentQuestion(sessionId: string, question: DialogueQuestion): void;
|
|
68
|
+
/**
|
|
69
|
+
* セッションの結果を取得
|
|
70
|
+
*/
|
|
71
|
+
getResult(sessionId: string): {
|
|
72
|
+
session: DialogueSession;
|
|
73
|
+
context: ExtractedContext;
|
|
74
|
+
inferredIntent: InferredIntent;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* 追加の明確化質問を生成
|
|
78
|
+
*/
|
|
79
|
+
generateClarificationQuestion(sessionId: string, ambiguousPoint: string): DialogueQuestion;
|
|
80
|
+
/**
|
|
81
|
+
* セッションを完了としてマーク
|
|
82
|
+
*/
|
|
83
|
+
completeSession(sessionId: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* セッションをキャンセル
|
|
86
|
+
*/
|
|
87
|
+
cancelSession(sessionId: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* セッションを削除
|
|
90
|
+
*/
|
|
91
|
+
deleteSession(sessionId: string): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* 全セッションを取得
|
|
94
|
+
*/
|
|
95
|
+
getAllSessions(): DialogueSession[];
|
|
96
|
+
/**
|
|
97
|
+
* 対話フローを一括実行(コールバック形式)
|
|
98
|
+
*/
|
|
99
|
+
runDialogue(initialInput: string, answerCallback: (question: DialogueQuestion) => Promise<string>): Promise<{
|
|
100
|
+
context: ExtractedContext;
|
|
101
|
+
inferredIntent: InferredIntent;
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* セッションIDを生成
|
|
105
|
+
*/
|
|
106
|
+
private generateSessionId;
|
|
107
|
+
/**
|
|
108
|
+
* 交換IDを生成
|
|
109
|
+
*/
|
|
110
|
+
private generateExchangeId;
|
|
111
|
+
/**
|
|
112
|
+
* 空のコンテキストを作成
|
|
113
|
+
*/
|
|
114
|
+
private createEmptyContext;
|
|
115
|
+
/**
|
|
116
|
+
* コンテキストを更新
|
|
117
|
+
*/
|
|
118
|
+
private updateContext;
|
|
119
|
+
/**
|
|
120
|
+
* セッション状態をチェック
|
|
121
|
+
*/
|
|
122
|
+
private checkSessionState;
|
|
123
|
+
/**
|
|
124
|
+
* セッションを終了
|
|
125
|
+
*/
|
|
126
|
+
private finalizeSession;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* シンプルな対話実行ヘルパー
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* const result = await runSimpleDialogue('新製品を開発したい', async (q) => {
|
|
134
|
+
* console.log('Q:', q.text);
|
|
135
|
+
* return await getUserInput();
|
|
136
|
+
* });
|
|
137
|
+
* console.log('意図:', result.inferredIntent.trueIntent);
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare function runSimpleDialogue(initialInput: string, answerCallback: (question: DialogueQuestion) => Promise<string>, config?: Partial<DialogueCollectorConfig>): Promise<{
|
|
141
|
+
context: ExtractedContext;
|
|
142
|
+
inferredIntent: InferredIntent;
|
|
143
|
+
}>;
|
|
144
|
+
//# sourceMappingURL=dialogue-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialogue-collector.d.ts","sourceRoot":"","sources":["../../src/dialogue/dialogue-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACf,MAAM,SAAS,CAAC;AAKjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;gBAE5C,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM;IAOzD;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe;IAkBnD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IA0C3D;;OAEG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI;IA2CP;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAgBpE;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG;QAC5B,OAAO,EAAE,eAAe,CAAC;QACzB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,cAAc,EAAE,cAAc,CAAC;KAChC;IAyBD;;OAEG;IACH,6BAA6B,CAC3B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,gBAAgB;IAYnB;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASxC;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUtC;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIzC;;OAEG;IACH,cAAc,IAAI,eAAe,EAAE;IAInC;;OAEG;IACG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,GAC9D,OAAO,CAAC;QACT,OAAO,EAAE,gBAAgB,CAAC;QAC1B,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC;IAsBF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAgBxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,EAC/D,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACxC,OAAO,CAAC;IACT,OAAO,EAAE,gBAAgB,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC,CAGD"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dialogue Collector
|
|
4
|
+
*
|
|
5
|
+
* @fileoverview MUSUBIX風の対話型情報収集システム
|
|
6
|
+
* 1問1答形式でユーザーの真の意図を引き出す
|
|
7
|
+
* @module @nahisaho/katashiro-orchestrator
|
|
8
|
+
* @since 0.4.1
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.DialogueCollector = void 0;
|
|
12
|
+
exports.runSimpleDialogue = runSimpleDialogue;
|
|
13
|
+
const types_1 = require("./types");
|
|
14
|
+
const question_generator_1 = require("./question-generator");
|
|
15
|
+
const intent_analyzer_1 = require("./intent-analyzer");
|
|
16
|
+
/**
|
|
17
|
+
* 対話型情報収集器
|
|
18
|
+
*
|
|
19
|
+
* MUSUBIXのように、ユーザーとの対話を通じて
|
|
20
|
+
* 真の意図・目的を明らかにします
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const collector = new DialogueCollector();
|
|
25
|
+
*
|
|
26
|
+
* // セッション開始
|
|
27
|
+
* const session = collector.startSession('新しいシステムを導入したい');
|
|
28
|
+
*
|
|
29
|
+
* // 最初の質問を取得
|
|
30
|
+
* let question = collector.getNextQuestion(session.id);
|
|
31
|
+
*
|
|
32
|
+
* while (question) {
|
|
33
|
+
* console.log(question.text);
|
|
34
|
+
* const userAnswer = await getUserInput();
|
|
35
|
+
*
|
|
36
|
+
* // 回答を記録
|
|
37
|
+
* collector.recordAnswer(session.id, userAnswer);
|
|
38
|
+
*
|
|
39
|
+
* // 次の質問を取得
|
|
40
|
+
* question = collector.getNextQuestion(session.id);
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* // 最終結果を取得
|
|
44
|
+
* const result = collector.getResult(session.id);
|
|
45
|
+
* console.log('真の意図:', result.inferredIntent.trueIntent);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
class DialogueCollector {
|
|
49
|
+
config;
|
|
50
|
+
questionGenerator;
|
|
51
|
+
intentAnalyzer;
|
|
52
|
+
sessions;
|
|
53
|
+
constructor(config = {}) {
|
|
54
|
+
this.config = { ...types_1.DEFAULT_DIALOGUE_CONFIG, ...config };
|
|
55
|
+
this.questionGenerator = new question_generator_1.QuestionGenerator(this.config.language);
|
|
56
|
+
this.intentAnalyzer = new intent_analyzer_1.IntentAnalyzer(this.config.language);
|
|
57
|
+
this.sessions = new Map();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 新しい対話セッションを開始
|
|
61
|
+
*/
|
|
62
|
+
startSession(initialInput) {
|
|
63
|
+
const sessionId = this.generateSessionId();
|
|
64
|
+
const session = {
|
|
65
|
+
id: sessionId,
|
|
66
|
+
startTime: new Date(),
|
|
67
|
+
status: 'in_progress',
|
|
68
|
+
initialInput,
|
|
69
|
+
exchanges: [],
|
|
70
|
+
extractedContext: this.createEmptyContext(),
|
|
71
|
+
inferredIntent: null,
|
|
72
|
+
};
|
|
73
|
+
this.sessions.set(sessionId, session);
|
|
74
|
+
return session;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* セッションを取得
|
|
78
|
+
*/
|
|
79
|
+
getSession(sessionId) {
|
|
80
|
+
return this.sessions.get(sessionId);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 次の質問を取得
|
|
84
|
+
*/
|
|
85
|
+
getNextQuestion(sessionId) {
|
|
86
|
+
const session = this.sessions.get(sessionId);
|
|
87
|
+
if (!session) {
|
|
88
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
89
|
+
}
|
|
90
|
+
// セッションが終了している場合
|
|
91
|
+
if (session.status !== 'in_progress') {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
// 最大質問数に達した場合
|
|
95
|
+
if (session.exchanges.length >= this.config.maxQuestions) {
|
|
96
|
+
this.finalizeSession(session);
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
// 信頼度が閾値を超えた場合(最小質問数を満たしていれば)
|
|
100
|
+
if (session.exchanges.length >= this.config.minQuestions) {
|
|
101
|
+
const currentIntent = this.intentAnalyzer.analyzeIntent(session.initialInput, session.exchanges);
|
|
102
|
+
if (currentIntent.confidence >= this.config.confidenceThreshold) {
|
|
103
|
+
// 確認質問を生成
|
|
104
|
+
const confirmQuestion = this.questionGenerator.generateConfirmationQuestion(session.extractedContext, currentIntent);
|
|
105
|
+
return confirmQuestion;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// 通常の質問を生成
|
|
109
|
+
return this.questionGenerator.generateNextQuestion(session.extractedContext, session.exchanges, this.config.strategy);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 回答を記録
|
|
113
|
+
*/
|
|
114
|
+
recordAnswer(sessionId, answerText, metadata) {
|
|
115
|
+
const session = this.sessions.get(sessionId);
|
|
116
|
+
if (!session) {
|
|
117
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
118
|
+
}
|
|
119
|
+
// 最後の未回答の質問を探す
|
|
120
|
+
const lastExchange = session.exchanges[session.exchanges.length - 1];
|
|
121
|
+
if (lastExchange && lastExchange.answer === null) {
|
|
122
|
+
// 既存の質問に回答を追加
|
|
123
|
+
lastExchange.answer = {
|
|
124
|
+
text: answerText,
|
|
125
|
+
timestamp: new Date(),
|
|
126
|
+
confidence: 1.0,
|
|
127
|
+
metadata,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
// 新しい交換を作成(質問なしで回答のみ)
|
|
132
|
+
const newExchange = {
|
|
133
|
+
id: this.generateExchangeId(),
|
|
134
|
+
question: this.questionGenerator.generateNextQuestion(session.extractedContext, session.exchanges, this.config.strategy),
|
|
135
|
+
answer: {
|
|
136
|
+
text: answerText,
|
|
137
|
+
timestamp: new Date(),
|
|
138
|
+
confidence: 1.0,
|
|
139
|
+
metadata,
|
|
140
|
+
},
|
|
141
|
+
timestamp: new Date(),
|
|
142
|
+
};
|
|
143
|
+
session.exchanges.push(newExchange);
|
|
144
|
+
}
|
|
145
|
+
// コンテキストを更新
|
|
146
|
+
this.updateContext(session);
|
|
147
|
+
// セッション状態を確認
|
|
148
|
+
this.checkSessionState(session);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 質問を提示(回答待ち状態にする)
|
|
152
|
+
*/
|
|
153
|
+
presentQuestion(sessionId, question) {
|
|
154
|
+
const session = this.sessions.get(sessionId);
|
|
155
|
+
if (!session) {
|
|
156
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
157
|
+
}
|
|
158
|
+
const exchange = {
|
|
159
|
+
id: this.generateExchangeId(),
|
|
160
|
+
question,
|
|
161
|
+
answer: null,
|
|
162
|
+
timestamp: new Date(),
|
|
163
|
+
};
|
|
164
|
+
session.exchanges.push(exchange);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* セッションの結果を取得
|
|
168
|
+
*/
|
|
169
|
+
getResult(sessionId) {
|
|
170
|
+
const session = this.sessions.get(sessionId);
|
|
171
|
+
if (!session) {
|
|
172
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
173
|
+
}
|
|
174
|
+
// まだ意図が推測されていない場合は推測する
|
|
175
|
+
if (!session.inferredIntent) {
|
|
176
|
+
session.inferredIntent = this.intentAnalyzer.analyzeIntent(session.initialInput, session.exchanges);
|
|
177
|
+
session.extractedContext = this.intentAnalyzer.extractContext(session.initialInput, session.exchanges);
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
session,
|
|
181
|
+
context: session.extractedContext,
|
|
182
|
+
inferredIntent: session.inferredIntent,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 追加の明確化質問を生成
|
|
187
|
+
*/
|
|
188
|
+
generateClarificationQuestion(sessionId, ambiguousPoint) {
|
|
189
|
+
const session = this.sessions.get(sessionId);
|
|
190
|
+
if (!session) {
|
|
191
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
192
|
+
}
|
|
193
|
+
return this.questionGenerator.generateClarificationQuestion(ambiguousPoint, session.extractedContext);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* セッションを完了としてマーク
|
|
197
|
+
*/
|
|
198
|
+
completeSession(sessionId) {
|
|
199
|
+
const session = this.sessions.get(sessionId);
|
|
200
|
+
if (!session) {
|
|
201
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
202
|
+
}
|
|
203
|
+
this.finalizeSession(session);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* セッションをキャンセル
|
|
207
|
+
*/
|
|
208
|
+
cancelSession(sessionId) {
|
|
209
|
+
const session = this.sessions.get(sessionId);
|
|
210
|
+
if (!session) {
|
|
211
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
212
|
+
}
|
|
213
|
+
session.status = 'cancelled';
|
|
214
|
+
session.endTime = new Date();
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* セッションを削除
|
|
218
|
+
*/
|
|
219
|
+
deleteSession(sessionId) {
|
|
220
|
+
return this.sessions.delete(sessionId);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* 全セッションを取得
|
|
224
|
+
*/
|
|
225
|
+
getAllSessions() {
|
|
226
|
+
return Array.from(this.sessions.values());
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* 対話フローを一括実行(コールバック形式)
|
|
230
|
+
*/
|
|
231
|
+
async runDialogue(initialInput, answerCallback) {
|
|
232
|
+
const session = this.startSession(initialInput);
|
|
233
|
+
let question = this.getNextQuestion(session.id);
|
|
234
|
+
while (question) {
|
|
235
|
+
// 質問を提示
|
|
236
|
+
this.presentQuestion(session.id, question);
|
|
237
|
+
// ユーザーからの回答を待つ
|
|
238
|
+
const answer = await answerCallback(question);
|
|
239
|
+
// 回答を記録
|
|
240
|
+
this.recordAnswer(session.id, answer);
|
|
241
|
+
// 次の質問を取得
|
|
242
|
+
question = this.getNextQuestion(session.id);
|
|
243
|
+
}
|
|
244
|
+
return this.getResult(session.id);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* セッションIDを生成
|
|
248
|
+
*/
|
|
249
|
+
generateSessionId() {
|
|
250
|
+
return `dlg-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* 交換IDを生成
|
|
254
|
+
*/
|
|
255
|
+
generateExchangeId() {
|
|
256
|
+
return `exc-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* 空のコンテキストを作成
|
|
260
|
+
*/
|
|
261
|
+
createEmptyContext() {
|
|
262
|
+
return {
|
|
263
|
+
explicitPurpose: null,
|
|
264
|
+
implicitPurpose: null,
|
|
265
|
+
background: {
|
|
266
|
+
reason: null,
|
|
267
|
+
currentState: null,
|
|
268
|
+
desiredState: null,
|
|
269
|
+
attemptedSolutions: [],
|
|
270
|
+
},
|
|
271
|
+
constraints: [],
|
|
272
|
+
stakeholders: [],
|
|
273
|
+
successCriteria: [],
|
|
274
|
+
priorities: [],
|
|
275
|
+
risks: [],
|
|
276
|
+
keywords: [],
|
|
277
|
+
domain: null,
|
|
278
|
+
urgency: 'medium',
|
|
279
|
+
complexity: 'moderate',
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* コンテキストを更新
|
|
284
|
+
*/
|
|
285
|
+
updateContext(session) {
|
|
286
|
+
session.extractedContext = this.intentAnalyzer.extractContext(session.initialInput, session.exchanges);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* セッション状態をチェック
|
|
290
|
+
*/
|
|
291
|
+
checkSessionState(session) {
|
|
292
|
+
// 確認質問への回答を確認
|
|
293
|
+
const lastExchange = session.exchanges[session.exchanges.length - 1];
|
|
294
|
+
if (lastExchange?.question.type === 'confirmation' &&
|
|
295
|
+
lastExchange.answer) {
|
|
296
|
+
const answer = lastExchange.answer.text.toLowerCase();
|
|
297
|
+
const positivePatterns = this.config.language === 'ja'
|
|
298
|
+
? /はい|そうです|その通り|ok|yes/
|
|
299
|
+
: /yes|correct|right|exactly|confirm/;
|
|
300
|
+
if (positivePatterns.test(answer)) {
|
|
301
|
+
this.finalizeSession(session);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* セッションを終了
|
|
307
|
+
*/
|
|
308
|
+
finalizeSession(session) {
|
|
309
|
+
session.status = 'completed';
|
|
310
|
+
session.endTime = new Date();
|
|
311
|
+
// 最終的な意図を推測
|
|
312
|
+
session.inferredIntent = this.intentAnalyzer.analyzeIntent(session.initialInput, session.exchanges);
|
|
313
|
+
// コンテキストを最終更新
|
|
314
|
+
session.extractedContext = this.intentAnalyzer.extractContext(session.initialInput, session.exchanges);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
exports.DialogueCollector = DialogueCollector;
|
|
318
|
+
/**
|
|
319
|
+
* シンプルな対話実行ヘルパー
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* ```typescript
|
|
323
|
+
* const result = await runSimpleDialogue('新製品を開発したい', async (q) => {
|
|
324
|
+
* console.log('Q:', q.text);
|
|
325
|
+
* return await getUserInput();
|
|
326
|
+
* });
|
|
327
|
+
* console.log('意図:', result.inferredIntent.trueIntent);
|
|
328
|
+
* ```
|
|
329
|
+
*/
|
|
330
|
+
async function runSimpleDialogue(initialInput, answerCallback, config) {
|
|
331
|
+
const collector = new DialogueCollector(config);
|
|
332
|
+
return collector.runDialogue(initialInput, answerCallback);
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=dialogue-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialogue-collector.js","sourceRoot":"","sources":["../../src/dialogue/dialogue-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dialogue Module Exports
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview MUSUBIX風対話型情報収集システム
|
|
5
|
+
* @module @nahisaho/katashiro-orchestrator/dialogue
|
|
6
|
+
* @since 0.4.1
|
|
7
|
+
*/
|
|
8
|
+
export type { DialogueSession, DialogueExchange, DialogueQuestion, DialogueAnswer, DialogueStatus, QuestionType, QuestionCategory, ExtractedContext, BackgroundInfo, Constraint, Stakeholder, SuccessCriterion, Priority, Risk, InferredIntent, AlternativeInterpretation, DialogueCollectorConfig, QuestionStrategy, } from './types';
|
|
9
|
+
export { DEFAULT_DIALOGUE_CONFIG } from './types';
|
|
10
|
+
export { QuestionGenerator } from './question-generator';
|
|
11
|
+
export { IntentAnalyzer } from './intent-analyzer';
|
|
12
|
+
export { DialogueCollector, runSimpleDialogue } from './dialogue-collector';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dialogue/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dialogue Module Exports
|
|
4
|
+
*
|
|
5
|
+
* @fileoverview MUSUBIX風対話型情報収集システム
|
|
6
|
+
* @module @nahisaho/katashiro-orchestrator/dialogue
|
|
7
|
+
* @since 0.4.1
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.runSimpleDialogue = exports.DialogueCollector = exports.IntentAnalyzer = exports.QuestionGenerator = exports.DEFAULT_DIALOGUE_CONFIG = void 0;
|
|
11
|
+
// Constants
|
|
12
|
+
var types_1 = require("./types");
|
|
13
|
+
Object.defineProperty(exports, "DEFAULT_DIALOGUE_CONFIG", { enumerable: true, get: function () { return types_1.DEFAULT_DIALOGUE_CONFIG; } });
|
|
14
|
+
// Classes
|
|
15
|
+
var question_generator_1 = require("./question-generator");
|
|
16
|
+
Object.defineProperty(exports, "QuestionGenerator", { enumerable: true, get: function () { return question_generator_1.QuestionGenerator; } });
|
|
17
|
+
var intent_analyzer_1 = require("./intent-analyzer");
|
|
18
|
+
Object.defineProperty(exports, "IntentAnalyzer", { enumerable: true, get: function () { return intent_analyzer_1.IntentAnalyzer; } });
|
|
19
|
+
var dialogue_collector_1 = require("./dialogue-collector");
|
|
20
|
+
Object.defineProperty(exports, "DialogueCollector", { enumerable: true, get: function () { return dialogue_collector_1.DialogueCollector; } });
|
|
21
|
+
Object.defineProperty(exports, "runSimpleDialogue", { enumerable: true, get: function () { return dialogue_collector_1.runSimpleDialogue; } });
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dialogue/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAwBH,YAAY;AACZ,iCAAkD;AAAzC,gHAAA,uBAAuB,OAAA;AAEhC,UAAU;AACV,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,2DAA4E;AAAnE,uHAAA,iBAAiB,OAAA;AAAE,uHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Analyzer
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview ユーザーの回答から真の意図を分析
|
|
5
|
+
* @module @nahisaho/katashiro-orchestrator
|
|
6
|
+
* @since 0.4.1
|
|
7
|
+
*/
|
|
8
|
+
import type { DialogueExchange, ExtractedContext, InferredIntent } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* 意図分析器
|
|
11
|
+
*/
|
|
12
|
+
export declare class IntentAnalyzer {
|
|
13
|
+
private readonly language;
|
|
14
|
+
constructor(language?: 'ja' | 'en');
|
|
15
|
+
/**
|
|
16
|
+
* 対話から意図を分析
|
|
17
|
+
*/
|
|
18
|
+
analyzeIntent(initialInput: string, exchanges: DialogueExchange[]): InferredIntent;
|
|
19
|
+
/**
|
|
20
|
+
* コンテキストを抽出
|
|
21
|
+
*/
|
|
22
|
+
extractContext(initialInput: string, exchanges: DialogueExchange[]): ExtractedContext;
|
|
23
|
+
/**
|
|
24
|
+
* 明示的な目的を抽出
|
|
25
|
+
*/
|
|
26
|
+
private extractPurpose;
|
|
27
|
+
/**
|
|
28
|
+
* 暗黙的な目的を推測
|
|
29
|
+
*/
|
|
30
|
+
private inferImplicitPurpose;
|
|
31
|
+
/**
|
|
32
|
+
* 背景情報を抽出
|
|
33
|
+
*/
|
|
34
|
+
private extractBackground;
|
|
35
|
+
/**
|
|
36
|
+
* 制約条件を抽出
|
|
37
|
+
*/
|
|
38
|
+
private extractConstraints;
|
|
39
|
+
/**
|
|
40
|
+
* 関係者を抽出
|
|
41
|
+
*/
|
|
42
|
+
private extractStakeholders;
|
|
43
|
+
/**
|
|
44
|
+
* 成功基準を抽出
|
|
45
|
+
*/
|
|
46
|
+
private extractSuccessCriteria;
|
|
47
|
+
/**
|
|
48
|
+
* 優先事項を抽出
|
|
49
|
+
*/
|
|
50
|
+
private extractPriorities;
|
|
51
|
+
/**
|
|
52
|
+
* リスクを抽出
|
|
53
|
+
*/
|
|
54
|
+
private extractRisks;
|
|
55
|
+
/**
|
|
56
|
+
* キーワードを抽出
|
|
57
|
+
*/
|
|
58
|
+
private extractKeywords;
|
|
59
|
+
/**
|
|
60
|
+
* ドメインを検出
|
|
61
|
+
*/
|
|
62
|
+
private detectDomain;
|
|
63
|
+
/**
|
|
64
|
+
* 緊急度を評価
|
|
65
|
+
*/
|
|
66
|
+
private assessUrgency;
|
|
67
|
+
/**
|
|
68
|
+
* 複雑度を評価
|
|
69
|
+
*/
|
|
70
|
+
private assessComplexity;
|
|
71
|
+
/**
|
|
72
|
+
* 表層的な意図を抽出
|
|
73
|
+
*/
|
|
74
|
+
private extractSurfaceIntent;
|
|
75
|
+
/**
|
|
76
|
+
* 真の意図を推測
|
|
77
|
+
*/
|
|
78
|
+
private inferTrueIntent;
|
|
79
|
+
/**
|
|
80
|
+
* 代替解釈を生成
|
|
81
|
+
*/
|
|
82
|
+
private generateAlternatives;
|
|
83
|
+
/**
|
|
84
|
+
* 推定根拠を生成
|
|
85
|
+
*/
|
|
86
|
+
private generateReasoning;
|
|
87
|
+
/**
|
|
88
|
+
* 不明確な点を特定
|
|
89
|
+
*/
|
|
90
|
+
private identifyUnclearPoints;
|
|
91
|
+
/**
|
|
92
|
+
* 信頼度を計算
|
|
93
|
+
*/
|
|
94
|
+
private calculateConfidence;
|
|
95
|
+
/**
|
|
96
|
+
* 推奨アプローチを決定
|
|
97
|
+
*/
|
|
98
|
+
private determineApproach;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=intent-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-analyzer.d.ts","sourceRoot":"","sources":["../../src/dialogue/intent-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EAQf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;gBAE3B,QAAQ,GAAE,IAAI,GAAG,IAAW;IAIxC;;OAEG;IACH,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,gBAAgB,EAAE,GAC5B,cAAc;IAoCjB;;OAEG;IACH,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,gBAAgB,EAAE,GAC5B,gBAAgB;IAyBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAkBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA2B1B"}
|