@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,530 @@
1
+ "use strict";
2
+ /**
3
+ * Question Generator
4
+ *
5
+ * @fileoverview コンテキストに応じた質問を生成
6
+ * @module @nahisaho/katashiro-orchestrator
7
+ * @since 0.4.1
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.QuestionGenerator = void 0;
11
+ /**
12
+ * 質問生成器
13
+ */
14
+ class QuestionGenerator {
15
+ language;
16
+ templates;
17
+ constructor(language = 'ja') {
18
+ this.language = language;
19
+ this.templates = this.initializeTemplates();
20
+ }
21
+ /**
22
+ * 次の質問を生成
23
+ */
24
+ generateNextQuestion(_context, exchanges, strategy) {
25
+ // 回答済みカテゴリを取得
26
+ const answeredCategories = new Set(exchanges
27
+ .filter((e) => e.answer !== null)
28
+ .map((e) => e.question.category));
29
+ // 戦略に応じて次の質問カテゴリを決定
30
+ const nextCategory = this.selectNextCategory(answeredCategories, strategy);
31
+ if (!nextCategory) {
32
+ return null;
33
+ }
34
+ return this.generateQuestionForCategory(nextCategory);
35
+ }
36
+ /**
37
+ * 確認質問を生成
38
+ */
39
+ generateConfirmationQuestion(_context, inferredIntent) {
40
+ const templates = this.language === 'ja'
41
+ ? {
42
+ text: `ご要望を以下のように理解しました。\n\n「${inferredIntent.trueIntent}」\n\nこの理解で正しいでしょうか?`,
43
+ hint: '修正があればお知らせください',
44
+ }
45
+ : {
46
+ text: `I understand your request as follows:\n\n"${inferredIntent.trueIntent}"\n\nIs this understanding correct?`,
47
+ hint: 'Please let me know if any corrections are needed',
48
+ };
49
+ return {
50
+ text: templates.text,
51
+ type: 'confirmation',
52
+ category: 'confirmation',
53
+ hint: templates.hint,
54
+ };
55
+ }
56
+ /**
57
+ * 明確化質問を生成
58
+ */
59
+ generateClarificationQuestion(ambiguousPoint, _context) {
60
+ const templates = this.language === 'ja'
61
+ ? {
62
+ text: `「${ambiguousPoint}」について、もう少し詳しく教えていただけますか?`,
63
+ hint: '具体的な例や状況を教えていただけると助かります',
64
+ }
65
+ : {
66
+ text: `Could you tell me more about "${ambiguousPoint}"?`,
67
+ hint: 'Specific examples or situations would be helpful',
68
+ };
69
+ return {
70
+ text: templates.text,
71
+ type: 'open',
72
+ category: 'clarification',
73
+ hint: templates.hint,
74
+ };
75
+ }
76
+ /**
77
+ * 優先度質問を生成
78
+ */
79
+ generatePriorityQuestion(items) {
80
+ const templates = this.language === 'ja'
81
+ ? {
82
+ text: '以下の項目を優先度の高い順に並べてください:',
83
+ hint: '番号で回答してください(例: 2, 1, 3)',
84
+ }
85
+ : {
86
+ text: 'Please rank the following items by priority:',
87
+ hint: 'Answer with numbers (e.g., 2, 1, 3)',
88
+ };
89
+ return {
90
+ text: `${templates.text}\n${items.map((item, i) => `${i + 1}. ${item}`).join('\n')}`,
91
+ type: 'open',
92
+ category: 'priority',
93
+ hint: templates.hint,
94
+ };
95
+ }
96
+ /**
97
+ * カテゴリに対する質問を生成
98
+ */
99
+ generateQuestionForCategory(category) {
100
+ const template = this.templates.get(category);
101
+ if (!template) {
102
+ // フォールバック質問
103
+ return this.generateFallbackQuestion(category);
104
+ }
105
+ // テンプレートからランダムに選択
106
+ const selectedTemplate = template.templates[Math.floor(Math.random() * template.templates.length)] ?? template.templates[0];
107
+ return {
108
+ text: selectedTemplate?.text ?? '',
109
+ type: template.type,
110
+ category: template.category,
111
+ options: selectedTemplate?.options ? [...selectedTemplate.options] : undefined,
112
+ hint: selectedTemplate?.hint,
113
+ examples: selectedTemplate?.examples ? [...selectedTemplate.examples] : undefined,
114
+ };
115
+ }
116
+ /**
117
+ * 次の質問カテゴリを選択
118
+ */
119
+ selectNextCategory(answeredCategories, strategy) {
120
+ // 優先度順のカテゴリリスト
121
+ const priorityOrder = [
122
+ 'purpose',
123
+ 'background',
124
+ 'scope',
125
+ 'constraints',
126
+ 'success',
127
+ 'stakeholders',
128
+ 'timeline',
129
+ 'priority',
130
+ 'risks',
131
+ 'resources',
132
+ ];
133
+ switch (strategy) {
134
+ case 'breadth_first':
135
+ // 未回答のカテゴリを優先度順に
136
+ return priorityOrder.find((c) => !answeredCategories.has(c)) ?? null;
137
+ case 'depth_first':
138
+ // 現在のカテゴリを深掘り(同じカテゴリで追加質問)
139
+ // 簡易実装:未回答を順に
140
+ return priorityOrder.find((c) => !answeredCategories.has(c)) ?? null;
141
+ case 'adaptive':
142
+ return this.selectAdaptiveCategory(answeredCategories, priorityOrder);
143
+ case 'minimal':
144
+ // 必須カテゴリのみ
145
+ const essentialCategories = ['purpose', 'scope', 'success'];
146
+ return essentialCategories.find((c) => !answeredCategories.has(c)) ?? null;
147
+ default:
148
+ return priorityOrder.find((c) => !answeredCategories.has(c)) ?? null;
149
+ }
150
+ }
151
+ /**
152
+ * 適応的にカテゴリを選択
153
+ */
154
+ selectAdaptiveCategory(answeredCategories, priorityOrder) {
155
+ // 目的が不明確なら目的を聞く
156
+ if (!answeredCategories.has('purpose')) {
157
+ return 'purpose';
158
+ }
159
+ // 背景が不明なら背景を聞く
160
+ if (!answeredCategories.has('background')) {
161
+ return 'background';
162
+ }
163
+ // 制約を確認
164
+ if (!answeredCategories.has('constraints')) {
165
+ return 'constraints';
166
+ }
167
+ // タイムラインを確認
168
+ if (!answeredCategories.has('timeline')) {
169
+ return 'timeline';
170
+ }
171
+ // 成功基準が未設定なら確認
172
+ if (!answeredCategories.has('success')) {
173
+ return 'success';
174
+ }
175
+ // それ以外は優先度順
176
+ return priorityOrder.find((c) => !answeredCategories.has(c)) ?? null;
177
+ }
178
+ /**
179
+ * フォールバック質問を生成
180
+ */
181
+ generateFallbackQuestion(category) {
182
+ const categoryLabels = this.language === 'ja'
183
+ ? {
184
+ purpose: '目的',
185
+ background: '背景',
186
+ constraints: '制約条件',
187
+ stakeholders: '関係者',
188
+ timeline: 'スケジュール',
189
+ scope: '範囲',
190
+ priority: '優先度',
191
+ success: '成功基準',
192
+ risks: 'リスク',
193
+ resources: 'リソース',
194
+ clarification: '詳細',
195
+ confirmation: '確認',
196
+ }
197
+ : {
198
+ purpose: 'purpose',
199
+ background: 'background',
200
+ constraints: 'constraints',
201
+ stakeholders: 'stakeholders',
202
+ timeline: 'timeline',
203
+ scope: 'scope',
204
+ priority: 'priority',
205
+ success: 'success criteria',
206
+ risks: 'risks',
207
+ resources: 'resources',
208
+ clarification: 'details',
209
+ confirmation: 'confirmation',
210
+ };
211
+ const label = categoryLabels[category];
212
+ const text = this.language === 'ja'
213
+ ? `${label}について教えてください。`
214
+ : `Please tell me about the ${label}.`;
215
+ return {
216
+ text,
217
+ type: 'open',
218
+ category,
219
+ };
220
+ }
221
+ /**
222
+ * テンプレートを初期化
223
+ */
224
+ initializeTemplates() {
225
+ const templates = new Map();
226
+ if (this.language === 'ja') {
227
+ this.initializeJapaneseTemplates(templates);
228
+ }
229
+ else {
230
+ this.initializeEnglishTemplates(templates);
231
+ }
232
+ return templates;
233
+ }
234
+ /**
235
+ * 日本語テンプレートを初期化
236
+ */
237
+ initializeJapaneseTemplates(templates) {
238
+ templates.set('purpose', {
239
+ category: 'purpose',
240
+ type: 'open',
241
+ priority: 1,
242
+ templates: [
243
+ {
244
+ text: 'この取り組みの最終的なゴールは何ですか?',
245
+ hint: '達成したい状態や成果を具体的に教えてください',
246
+ examples: [
247
+ '売上を20%向上させたい',
248
+ '顧客満足度を改善したい',
249
+ '業務効率を上げたい',
250
+ ],
251
+ },
252
+ {
253
+ text: 'なぜこの課題に取り組もうと思われましたか?',
254
+ hint: 'きっかけや動機を教えてください',
255
+ },
256
+ {
257
+ text: 'この結果を誰が、どのように使いますか?',
258
+ hint: '利用者と利用シーンを教えてください',
259
+ },
260
+ ],
261
+ });
262
+ templates.set('background', {
263
+ category: 'background',
264
+ type: 'open',
265
+ priority: 2,
266
+ templates: [
267
+ {
268
+ text: '現在どのような状況にありますか?',
269
+ hint: '現状の課題や問題点を教えてください',
270
+ },
271
+ {
272
+ text: 'これまでに試したことはありますか?',
273
+ hint: '過去の取り組みとその結果を教えてください',
274
+ },
275
+ {
276
+ text: 'この課題が発生した経緯を教えてください。',
277
+ },
278
+ ],
279
+ });
280
+ templates.set('scope', {
281
+ category: 'scope',
282
+ type: 'open',
283
+ priority: 3,
284
+ templates: [
285
+ {
286
+ text: '対象となる範囲を教えてください。',
287
+ hint: '地域、部門、製品など具体的に',
288
+ examples: ['国内市場のみ', '営業部門', '製品Aに関して'],
289
+ },
290
+ {
291
+ text: '今回のスコープに含めないものはありますか?',
292
+ hint: '除外したい範囲があれば教えてください',
293
+ },
294
+ ],
295
+ });
296
+ templates.set('constraints', {
297
+ category: 'constraints',
298
+ type: 'open',
299
+ priority: 4,
300
+ templates: [
301
+ {
302
+ text: '予算や時間などの制約はありますか?',
303
+ hint: '厳守すべき条件を教えてください',
304
+ },
305
+ {
306
+ text: '技術的な制約や前提条件はありますか?',
307
+ },
308
+ {
309
+ text: '法規制やコンプライアンス上の制約はありますか?',
310
+ },
311
+ ],
312
+ });
313
+ templates.set('timeline', {
314
+ category: 'timeline',
315
+ type: 'open',
316
+ priority: 5,
317
+ templates: [
318
+ {
319
+ text: 'いつまでに完了させたいですか?',
320
+ hint: '期限やマイルストーンを教えてください',
321
+ },
322
+ {
323
+ text: '緊急度はどの程度ですか?',
324
+ options: ['今すぐ必要', '1週間以内', '1ヶ月以内', '急ぎではない'],
325
+ },
326
+ ],
327
+ });
328
+ templates.set('success', {
329
+ category: 'success',
330
+ type: 'open',
331
+ priority: 6,
332
+ templates: [
333
+ {
334
+ text: 'どうなったら「成功」と言えますか?',
335
+ hint: '具体的な成功基準を教えてください',
336
+ examples: [
337
+ 'コスト30%削減',
338
+ 'NPS 50以上',
339
+ '処理時間半減',
340
+ ],
341
+ },
342
+ {
343
+ text: '成果をどのように測定しますか?',
344
+ },
345
+ ],
346
+ });
347
+ templates.set('stakeholders', {
348
+ category: 'stakeholders',
349
+ type: 'open',
350
+ priority: 7,
351
+ templates: [
352
+ {
353
+ text: 'この取り組みに関係する人は誰ですか?',
354
+ hint: '意思決定者、実行者、影響を受ける人など',
355
+ },
356
+ {
357
+ text: '最終的な意思決定者は誰ですか?',
358
+ },
359
+ ],
360
+ });
361
+ templates.set('priority', {
362
+ category: 'priority',
363
+ type: 'open',
364
+ priority: 8,
365
+ templates: [
366
+ {
367
+ text: '最も重要視していることは何ですか?',
368
+ hint: 'スピード、品質、コストなど優先順位を教えてください',
369
+ },
370
+ {
371
+ text: '譲れない条件は何ですか?',
372
+ },
373
+ ],
374
+ });
375
+ templates.set('risks', {
376
+ category: 'risks',
377
+ type: 'open',
378
+ priority: 9,
379
+ templates: [
380
+ {
381
+ text: '懸念していることや心配なことはありますか?',
382
+ },
383
+ {
384
+ text: 'うまくいかない可能性として考えられることは?',
385
+ },
386
+ ],
387
+ });
388
+ templates.set('resources', {
389
+ category: 'resources',
390
+ type: 'open',
391
+ priority: 10,
392
+ templates: [
393
+ {
394
+ text: '利用可能なリソース(人員、予算、ツールなど)はありますか?',
395
+ },
396
+ {
397
+ text: '参考にできる既存の資料やデータはありますか?',
398
+ },
399
+ ],
400
+ });
401
+ }
402
+ /**
403
+ * 英語テンプレートを初期化
404
+ */
405
+ initializeEnglishTemplates(templates) {
406
+ templates.set('purpose', {
407
+ category: 'purpose',
408
+ type: 'open',
409
+ priority: 1,
410
+ templates: [
411
+ {
412
+ text: 'What is the ultimate goal of this initiative?',
413
+ hint: 'Please describe the desired state or outcome specifically',
414
+ examples: [
415
+ 'Increase sales by 20%',
416
+ 'Improve customer satisfaction',
417
+ 'Enhance operational efficiency',
418
+ ],
419
+ },
420
+ {
421
+ text: 'Why did you decide to work on this issue?',
422
+ hint: 'Please share the trigger or motivation',
423
+ },
424
+ ],
425
+ });
426
+ templates.set('background', {
427
+ category: 'background',
428
+ type: 'open',
429
+ priority: 2,
430
+ templates: [
431
+ {
432
+ text: 'What is the current situation?',
433
+ hint: 'Please describe current challenges or issues',
434
+ },
435
+ {
436
+ text: 'Have you tried anything before?',
437
+ hint: 'Please share past attempts and their results',
438
+ },
439
+ ],
440
+ });
441
+ templates.set('scope', {
442
+ category: 'scope',
443
+ type: 'open',
444
+ priority: 3,
445
+ templates: [
446
+ {
447
+ text: 'What is the scope of this project?',
448
+ hint: 'Region, department, product, etc.',
449
+ },
450
+ ],
451
+ });
452
+ templates.set('constraints', {
453
+ category: 'constraints',
454
+ type: 'open',
455
+ priority: 4,
456
+ templates: [
457
+ {
458
+ text: 'Are there any constraints (budget, time, etc.)?',
459
+ hint: 'Please share any conditions that must be met',
460
+ },
461
+ ],
462
+ });
463
+ templates.set('timeline', {
464
+ category: 'timeline',
465
+ type: 'open',
466
+ priority: 5,
467
+ templates: [
468
+ {
469
+ text: 'When do you need this completed by?',
470
+ hint: 'Please share deadlines or milestones',
471
+ },
472
+ ],
473
+ });
474
+ templates.set('success', {
475
+ category: 'success',
476
+ type: 'open',
477
+ priority: 6,
478
+ templates: [
479
+ {
480
+ text: 'What would success look like?',
481
+ hint: 'Please describe specific success criteria',
482
+ },
483
+ ],
484
+ });
485
+ templates.set('stakeholders', {
486
+ category: 'stakeholders',
487
+ type: 'open',
488
+ priority: 7,
489
+ templates: [
490
+ {
491
+ text: 'Who are the stakeholders involved?',
492
+ hint: 'Decision makers, executors, affected parties',
493
+ },
494
+ ],
495
+ });
496
+ templates.set('priority', {
497
+ category: 'priority',
498
+ type: 'open',
499
+ priority: 8,
500
+ templates: [
501
+ {
502
+ text: 'What is most important to you?',
503
+ hint: 'Speed, quality, cost - please share your priorities',
504
+ },
505
+ ],
506
+ });
507
+ templates.set('risks', {
508
+ category: 'risks',
509
+ type: 'open',
510
+ priority: 9,
511
+ templates: [
512
+ {
513
+ text: 'Do you have any concerns or worries?',
514
+ },
515
+ ],
516
+ });
517
+ templates.set('resources', {
518
+ category: 'resources',
519
+ type: 'open',
520
+ priority: 10,
521
+ templates: [
522
+ {
523
+ text: 'What resources are available (people, budget, tools)?',
524
+ },
525
+ ],
526
+ });
527
+ }
528
+ }
529
+ exports.QuestionGenerator = QuestionGenerator;
530
+ //# sourceMappingURL=question-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-generator.js","sourceRoot":"","sources":["../../src/dialogue/question-generator.ts"],"names":[],"mappings":"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"}