@nahisaho/katashiro-orchestrator 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ /**
3
+ * Intent Analyzer
4
+ *
5
+ * @fileoverview ユーザーの回答から真の意図を分析
6
+ * @module @nahisaho/katashiro-orchestrator
7
+ * @since 0.4.1
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.IntentAnalyzer = void 0;
11
+ /**
12
+ * 意図分析器
13
+ */
14
+ class IntentAnalyzer {
15
+ language;
16
+ constructor(language = 'ja') {
17
+ this.language = language;
18
+ }
19
+ /**
20
+ * 対話から意図を分析
21
+ */
22
+ analyzeIntent(initialInput, exchanges) {
23
+ // コンテキストを抽出
24
+ const context = this.extractContext(initialInput, exchanges);
25
+ // 表層的な意図を抽出
26
+ const surfaceIntent = this.extractSurfaceIntent(initialInput, context);
27
+ // 真の意図を推測
28
+ const trueIntent = this.inferTrueIntent(surfaceIntent, context, exchanges);
29
+ // 代替解釈を生成
30
+ const alternatives = this.generateAlternatives(surfaceIntent, context);
31
+ // 推定根拠を生成
32
+ const reasoning = this.generateReasoning(context, exchanges);
33
+ // 追加確認事項を特定
34
+ const needsClarification = this.identifyUnclearPoints(context);
35
+ // 信頼度を計算
36
+ const confidence = this.calculateConfidence(context, exchanges);
37
+ // 推奨アプローチを決定
38
+ const recommendedApproach = this.determineApproach(trueIntent, context);
39
+ return {
40
+ surfaceIntent,
41
+ trueIntent,
42
+ confidence,
43
+ reasoning,
44
+ alternativeInterpretations: alternatives,
45
+ recommendedApproach,
46
+ needsClarification,
47
+ };
48
+ }
49
+ /**
50
+ * コンテキストを抽出
51
+ */
52
+ extractContext(initialInput, exchanges) {
53
+ // 全回答テキストを結合
54
+ const allAnswers = exchanges
55
+ .filter((e) => e.answer !== null)
56
+ .map((e) => e.answer.text)
57
+ .join(' ');
58
+ const combinedText = `${initialInput} ${allAnswers}`;
59
+ return {
60
+ explicitPurpose: this.extractPurpose(exchanges),
61
+ implicitPurpose: this.inferImplicitPurpose(combinedText, exchanges),
62
+ background: this.extractBackground(exchanges),
63
+ constraints: this.extractConstraints(exchanges),
64
+ stakeholders: this.extractStakeholders(exchanges),
65
+ successCriteria: this.extractSuccessCriteria(exchanges),
66
+ priorities: this.extractPriorities(exchanges),
67
+ risks: this.extractRisks(exchanges),
68
+ keywords: this.extractKeywords(combinedText),
69
+ domain: this.detectDomain(combinedText),
70
+ urgency: this.assessUrgency(exchanges),
71
+ complexity: this.assessComplexity(combinedText),
72
+ };
73
+ }
74
+ /**
75
+ * 明示的な目的を抽出
76
+ */
77
+ extractPurpose(exchanges) {
78
+ const purposeExchange = exchanges.find((e) => e.question.category === 'purpose' && e.answer !== null);
79
+ return purposeExchange?.answer?.text ?? null;
80
+ }
81
+ /**
82
+ * 暗黙的な目的を推測
83
+ */
84
+ inferImplicitPurpose(text, _exchanges) {
85
+ // パターンマッチングで暗黙的な目的を推測
86
+ const patterns = this.language === 'ja'
87
+ ? [
88
+ { pattern: /売上|収益|利益/, intent: '収益向上' },
89
+ { pattern: /コスト|費用|削減/, intent: 'コスト削減' },
90
+ { pattern: /効率|生産性|時間/, intent: '業務効率化' },
91
+ { pattern: /品質|改善|向上/, intent: '品質向上' },
92
+ { pattern: /顧客|満足|体験/, intent: '顧客体験向上' },
93
+ { pattern: /リスク|安全|セキュリティ/, intent: 'リスク低減' },
94
+ { pattern: /成長|拡大|スケール/, intent: '事業成長' },
95
+ { pattern: /差別化|競争|優位/, intent: '競争優位の構築' },
96
+ { pattern: /自動化|省力化/, intent: '業務自動化' },
97
+ { pattern: /情報|データ|分析/, intent: 'データ活用・分析' },
98
+ ]
99
+ : [
100
+ { pattern: /revenue|sales|profit/, intent: 'Revenue growth' },
101
+ { pattern: /cost|expense|reduction/, intent: 'Cost reduction' },
102
+ { pattern: /efficiency|productivity|time/, intent: 'Operational efficiency' },
103
+ { pattern: /quality|improvement/, intent: 'Quality improvement' },
104
+ { pattern: /customer|satisfaction|experience/, intent: 'Customer experience' },
105
+ { pattern: /risk|safety|security/, intent: 'Risk reduction' },
106
+ { pattern: /growth|expansion|scale/, intent: 'Business growth' },
107
+ { pattern: /differentiation|competitive/, intent: 'Competitive advantage' },
108
+ { pattern: /automation/, intent: 'Process automation' },
109
+ { pattern: /data|analytics|insights/, intent: 'Data utilization' },
110
+ ];
111
+ const matchedPatterns = patterns.filter((p) => p.pattern.test(text));
112
+ if (matchedPatterns.length > 0) {
113
+ return matchedPatterns[0].intent;
114
+ }
115
+ return null;
116
+ }
117
+ /**
118
+ * 背景情報を抽出
119
+ */
120
+ extractBackground(exchanges) {
121
+ const backgroundExchange = exchanges.find((e) => e.question.category === 'background' && e.answer !== null);
122
+ return {
123
+ reason: backgroundExchange?.answer?.text ?? null,
124
+ currentState: null,
125
+ desiredState: null,
126
+ attemptedSolutions: [],
127
+ };
128
+ }
129
+ /**
130
+ * 制約条件を抽出
131
+ */
132
+ extractConstraints(exchanges) {
133
+ const constraintExchange = exchanges.find((e) => e.question.category === 'constraints' && e.answer !== null);
134
+ if (!constraintExchange?.answer) {
135
+ return [];
136
+ }
137
+ const text = constraintExchange.answer.text;
138
+ const constraints = [];
139
+ // 時間制約を検出
140
+ if (/期限|締め切り|deadline|until|by/i.test(text)) {
141
+ constraints.push({
142
+ type: 'time',
143
+ description: text,
144
+ strictness: 4,
145
+ });
146
+ }
147
+ // 予算制約を検出
148
+ if (/予算|費用|コスト|budget|cost/i.test(text)) {
149
+ constraints.push({
150
+ type: 'budget',
151
+ description: text,
152
+ strictness: 4,
153
+ });
154
+ }
155
+ // 技術制約を検出
156
+ if (/技術|システム|ツール|technical|system/i.test(text)) {
157
+ constraints.push({
158
+ type: 'technical',
159
+ description: text,
160
+ strictness: 3,
161
+ });
162
+ }
163
+ return constraints;
164
+ }
165
+ /**
166
+ * 関係者を抽出
167
+ */
168
+ extractStakeholders(exchanges) {
169
+ const stakeholderExchange = exchanges.find((e) => e.question.category === 'stakeholders' && e.answer !== null);
170
+ if (!stakeholderExchange?.answer) {
171
+ return [];
172
+ }
173
+ // 簡易実装:回答をそのまま関係者として追加
174
+ return [
175
+ {
176
+ role: stakeholderExchange.answer.text,
177
+ concerns: [],
178
+ influence: 3,
179
+ },
180
+ ];
181
+ }
182
+ /**
183
+ * 成功基準を抽出
184
+ */
185
+ extractSuccessCriteria(exchanges) {
186
+ const successExchange = exchanges.find((e) => e.question.category === 'success' && e.answer !== null);
187
+ if (!successExchange?.answer) {
188
+ return [];
189
+ }
190
+ return [
191
+ {
192
+ criterion: successExchange.answer.text,
193
+ measurable: /\d+|%|倍|半/.test(successExchange.answer.text),
194
+ importance: 5,
195
+ },
196
+ ];
197
+ }
198
+ /**
199
+ * 優先事項を抽出
200
+ */
201
+ extractPriorities(exchanges) {
202
+ const priorityExchange = exchanges.find((e) => e.question.category === 'priority' && e.answer !== null);
203
+ if (!priorityExchange?.answer) {
204
+ return [];
205
+ }
206
+ return [
207
+ {
208
+ item: priorityExchange.answer.text,
209
+ rank: 1,
210
+ },
211
+ ];
212
+ }
213
+ /**
214
+ * リスクを抽出
215
+ */
216
+ extractRisks(exchanges) {
217
+ const riskExchange = exchanges.find((e) => e.question.category === 'risks' && e.answer !== null);
218
+ if (!riskExchange?.answer) {
219
+ return [];
220
+ }
221
+ return [
222
+ {
223
+ description: riskExchange.answer.text,
224
+ probability: 3,
225
+ impact: 3,
226
+ },
227
+ ];
228
+ }
229
+ /**
230
+ * キーワードを抽出
231
+ */
232
+ extractKeywords(text) {
233
+ // 簡易実装:形態素解析なしでキーワード抽出
234
+ // 日本語の場合は名詞っぽい文字列を抽出
235
+ const keywords = [];
236
+ // 英単語を抽出
237
+ const englishWords = text.match(/[A-Za-z]{3,}/g) ?? [];
238
+ keywords.push(...englishWords.map((w) => w.toLowerCase()));
239
+ // カタカナ語を抽出
240
+ const katakana = text.match(/[ァ-ヶー]{3,}/g) ?? [];
241
+ keywords.push(...katakana);
242
+ // 重複を除去
243
+ return [...new Set(keywords)].slice(0, 20);
244
+ }
245
+ /**
246
+ * ドメインを検出
247
+ */
248
+ detectDomain(text) {
249
+ const domainPatterns = this.language === 'ja'
250
+ ? [
251
+ { pattern: /マーケティング|広告|プロモーション/, domain: 'marketing' },
252
+ { pattern: /営業|セールス|商談/, domain: 'sales' },
253
+ { pattern: /人事|採用|組織/, domain: 'hr' },
254
+ { pattern: /財務|会計|経理/, domain: 'finance' },
255
+ { pattern: /IT|システム|開発|プログラム/, domain: 'technology' },
256
+ { pattern: /製造|生産|工場/, domain: 'manufacturing' },
257
+ { pattern: /物流|配送|サプライチェーン/, domain: 'logistics' },
258
+ { pattern: /経営|戦略|事業/, domain: 'strategy' },
259
+ { pattern: /研究|開発|R&D/, domain: 'r&d' },
260
+ { pattern: /カスタマー|顧客|サポート/, domain: 'customer_service' },
261
+ ]
262
+ : [
263
+ { pattern: /marketing|advertising|promotion/, domain: 'marketing' },
264
+ { pattern: /sales|selling/, domain: 'sales' },
265
+ { pattern: /hr|hiring|organization/, domain: 'hr' },
266
+ { pattern: /finance|accounting/, domain: 'finance' },
267
+ { pattern: /it|system|development|software/, domain: 'technology' },
268
+ { pattern: /manufacturing|production/, domain: 'manufacturing' },
269
+ { pattern: /logistics|shipping|supply chain/, domain: 'logistics' },
270
+ { pattern: /strategy|business/, domain: 'strategy' },
271
+ { pattern: /research|development|r&d/, domain: 'r&d' },
272
+ { pattern: /customer|support|service/, domain: 'customer_service' },
273
+ ];
274
+ const match = domainPatterns.find((p) => p.pattern.test(text));
275
+ return match?.domain ?? null;
276
+ }
277
+ /**
278
+ * 緊急度を評価
279
+ */
280
+ assessUrgency(exchanges) {
281
+ const timelineExchange = exchanges.find((e) => e.question.category === 'timeline' && e.answer !== null);
282
+ if (!timelineExchange?.answer) {
283
+ return 'medium';
284
+ }
285
+ const text = timelineExchange.answer.text.toLowerCase();
286
+ if (/今すぐ|緊急|急|asap|urgent|immediately/i.test(text)) {
287
+ return 'critical';
288
+ }
289
+ if (/今週|1週間|week|soon/i.test(text)) {
290
+ return 'high';
291
+ }
292
+ if (/今月|1ヶ月|month/i.test(text)) {
293
+ return 'medium';
294
+ }
295
+ return 'low';
296
+ }
297
+ /**
298
+ * 複雑度を評価
299
+ */
300
+ assessComplexity(text) {
301
+ let score = 0;
302
+ // テキストの長さ
303
+ score += Math.floor(text.length / 500);
304
+ // キーワードの多様性
305
+ const keywords = this.extractKeywords(text);
306
+ score += Math.floor(keywords.length / 5);
307
+ if (score <= 3)
308
+ return 'simple';
309
+ if (score <= 7)
310
+ return 'moderate';
311
+ if (score <= 12)
312
+ return 'complex';
313
+ return 'highly_complex';
314
+ }
315
+ /**
316
+ * 表層的な意図を抽出
317
+ */
318
+ extractSurfaceIntent(initialInput, context) {
319
+ // 明示的な目的があればそれを使用
320
+ if (context.explicitPurpose) {
321
+ return context.explicitPurpose;
322
+ }
323
+ // なければ初期入力を使用
324
+ return initialInput;
325
+ }
326
+ /**
327
+ * 真の意図を推測
328
+ */
329
+ inferTrueIntent(surfaceIntent, context, _exchanges) {
330
+ // 暗黙的な目的があればそれを組み合わせる
331
+ if (context.implicitPurpose) {
332
+ const templates = this.language === 'ja'
333
+ ? `${context.implicitPurpose}を実現するために、${surfaceIntent}`
334
+ : `${surfaceIntent} to achieve ${context.implicitPurpose}`;
335
+ return templates;
336
+ }
337
+ // 背景情報があれば文脈を追加
338
+ if (context.background.reason) {
339
+ const templates = this.language === 'ja'
340
+ ? `${context.background.reason}という背景から、${surfaceIntent}`
341
+ : `${surfaceIntent}, given the context of ${context.background.reason}`;
342
+ return templates;
343
+ }
344
+ return surfaceIntent;
345
+ }
346
+ /**
347
+ * 代替解釈を生成
348
+ */
349
+ generateAlternatives(surfaceIntent, context) {
350
+ const alternatives = [];
351
+ // ドメインに基づく代替解釈
352
+ if (context.domain) {
353
+ const domainInterpretation = this.language === 'ja'
354
+ ? `${context.domain}領域における${surfaceIntent}`
355
+ : `${surfaceIntent} in the ${context.domain} domain`;
356
+ alternatives.push({
357
+ interpretation: domainInterpretation,
358
+ probability: 0.3,
359
+ reasoning: this.language === 'ja'
360
+ ? `ドメインキーワードから${context.domain}領域と推測`
361
+ : `Inferred ${context.domain} domain from keywords`,
362
+ });
363
+ }
364
+ // 暗黙的な目的に基づく代替解釈
365
+ if (context.implicitPurpose && context.implicitPurpose !== surfaceIntent) {
366
+ alternatives.push({
367
+ interpretation: context.implicitPurpose,
368
+ probability: 0.25,
369
+ reasoning: this.language === 'ja'
370
+ ? '文脈から推測される根本的な目的'
371
+ : 'Underlying purpose inferred from context',
372
+ });
373
+ }
374
+ return alternatives;
375
+ }
376
+ /**
377
+ * 推定根拠を生成
378
+ */
379
+ generateReasoning(context, _exchanges) {
380
+ const reasoning = [];
381
+ if (context.explicitPurpose) {
382
+ reasoning.push(this.language === 'ja'
383
+ ? `目的として「${context.explicitPurpose}」が明示されています`
384
+ : `"${context.explicitPurpose}" was explicitly stated as the purpose`);
385
+ }
386
+ if (context.background.reason) {
387
+ reasoning.push(this.language === 'ja'
388
+ ? `背景として「${context.background.reason}」が説明されました`
389
+ : `"${context.background.reason}" was provided as background`);
390
+ }
391
+ if (context.constraints.length > 0) {
392
+ reasoning.push(this.language === 'ja'
393
+ ? `${context.constraints.length}件の制約条件が特定されました`
394
+ : `${context.constraints.length} constraint(s) were identified`);
395
+ }
396
+ if (context.successCriteria.length > 0) {
397
+ reasoning.push(this.language === 'ja'
398
+ ? `成功基準として「${context.successCriteria[0]?.criterion}」が設定されています`
399
+ : `"${context.successCriteria[0]?.criterion}" was set as success criterion`);
400
+ }
401
+ return reasoning;
402
+ }
403
+ /**
404
+ * 不明確な点を特定
405
+ */
406
+ identifyUnclearPoints(context) {
407
+ const unclear = [];
408
+ if (!context.explicitPurpose && !context.implicitPurpose) {
409
+ unclear.push(this.language === 'ja' ? '具体的な目的' : 'Specific purpose');
410
+ }
411
+ if (context.successCriteria.length === 0) {
412
+ unclear.push(this.language === 'ja' ? '成功基準' : 'Success criteria');
413
+ }
414
+ if (context.constraints.length === 0) {
415
+ unclear.push(this.language === 'ja' ? '制約条件' : 'Constraints');
416
+ }
417
+ if (context.urgency === 'medium') {
418
+ unclear.push(this.language === 'ja' ? 'スケジュール・期限' : 'Timeline/deadline');
419
+ }
420
+ return unclear;
421
+ }
422
+ /**
423
+ * 信頼度を計算
424
+ */
425
+ calculateConfidence(context, exchanges) {
426
+ let confidence = 0.5; // ベース値
427
+ // 回答数による加点
428
+ const answeredCount = exchanges.filter((e) => e.answer !== null).length;
429
+ confidence += Math.min(answeredCount * 0.05, 0.25);
430
+ // 明示的な目的がある場合
431
+ if (context.explicitPurpose) {
432
+ confidence += 0.1;
433
+ }
434
+ // 成功基準がある場合
435
+ if (context.successCriteria.length > 0) {
436
+ confidence += 0.05;
437
+ }
438
+ // 制約がある場合
439
+ if (context.constraints.length > 0) {
440
+ confidence += 0.05;
441
+ }
442
+ // キーワードが多い場合
443
+ if (context.keywords.length >= 5) {
444
+ confidence += 0.05;
445
+ }
446
+ return Math.min(confidence, 1.0);
447
+ }
448
+ /**
449
+ * 推奨アプローチを決定
450
+ */
451
+ determineApproach(_trueIntent, context) {
452
+ // 緊急度と複雑度に基づいてアプローチを決定
453
+ if (context.urgency === 'critical') {
454
+ return this.language === 'ja'
455
+ ? '緊急対応:最小限の調査で即座に対応策を提示'
456
+ : 'Urgent: Provide immediate solutions with minimal research';
457
+ }
458
+ if (context.complexity === 'highly_complex') {
459
+ return this.language === 'ja'
460
+ ? '段階的アプローチ:フェーズ分けして順次対応'
461
+ : 'Phased approach: Address in stages';
462
+ }
463
+ if (context.complexity === 'simple') {
464
+ return this.language === 'ja'
465
+ ? '直接対応:シンプルな解決策を提示'
466
+ : 'Direct approach: Provide simple solution';
467
+ }
468
+ return this.language === 'ja'
469
+ ? '標準アプローチ:調査・分析後に提案を作成'
470
+ : 'Standard approach: Research, analyze, then propose';
471
+ }
472
+ }
473
+ exports.IntentAnalyzer = IntentAnalyzer;
474
+ //# sourceMappingURL=intent-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-analyzer.js","sourceRoot":"","sources":["../../src/dialogue/intent-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Question Generator
3
+ *
4
+ * @fileoverview コンテキストに応じた質問を生成
5
+ * @module @nahisaho/katashiro-orchestrator
6
+ * @since 0.4.1
7
+ */
8
+ import type { DialogueQuestion, ExtractedContext, DialogueExchange, QuestionStrategy, InferredIntent } from './types';
9
+ /**
10
+ * 質問生成器
11
+ */
12
+ export declare class QuestionGenerator {
13
+ private readonly language;
14
+ private readonly templates;
15
+ constructor(language?: 'ja' | 'en');
16
+ /**
17
+ * 次の質問を生成
18
+ */
19
+ generateNextQuestion(_context: ExtractedContext, exchanges: DialogueExchange[], strategy: QuestionStrategy): DialogueQuestion | null;
20
+ /**
21
+ * 確認質問を生成
22
+ */
23
+ generateConfirmationQuestion(_context: ExtractedContext, inferredIntent: InferredIntent): DialogueQuestion;
24
+ /**
25
+ * 明確化質問を生成
26
+ */
27
+ generateClarificationQuestion(ambiguousPoint: string, _context: ExtractedContext): DialogueQuestion;
28
+ /**
29
+ * 優先度質問を生成
30
+ */
31
+ generatePriorityQuestion(items: string[]): DialogueQuestion;
32
+ /**
33
+ * カテゴリに対する質問を生成
34
+ */
35
+ private generateQuestionForCategory;
36
+ /**
37
+ * 次の質問カテゴリを選択
38
+ */
39
+ private selectNextCategory;
40
+ /**
41
+ * 適応的にカテゴリを選択
42
+ */
43
+ private selectAdaptiveCategory;
44
+ /**
45
+ * フォールバック質問を生成
46
+ */
47
+ private generateFallbackQuestion;
48
+ /**
49
+ * テンプレートを初期化
50
+ */
51
+ private initializeTemplates;
52
+ /**
53
+ * 日本語テンプレートを初期化
54
+ */
55
+ private initializeJapaneseTemplates;
56
+ /**
57
+ * 英語テンプレートを初期化
58
+ */
59
+ private initializeEnglishTemplates;
60
+ }
61
+ //# sourceMappingURL=question-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-generator.d.ts","sourceRoot":"","sources":["../../src/dialogue/question-generator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAGhB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,SAAS,CAAC;AAoBjB;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;gBAExD,QAAQ,GAAE,IAAI,GAAG,IAAW;IAKxC;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,gBAAgB,EAAE,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,gBAAgB,GAAG,IAAI;IAqB1B;;OAEG;IACH,4BAA4B,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,cAAc,GAC7B,gBAAgB;IAmBnB;;OAEG;IACH,6BAA6B,CAC3B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,gBAAgB,GACzB,gBAAgB;IAmBnB;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,gBAAgB;IAmB3D;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAsBnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiC9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2ChC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiLnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAsInC"}