musubix 3.6.0 → 3.7.3

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.
Files changed (123) hide show
  1. package/.github/AGENTS.md +949 -0
  2. package/.github/prompts/sdd-change-apply.prompt.md +283 -0
  3. package/.github/prompts/sdd-change-archive.prompt.md +241 -0
  4. package/.github/prompts/sdd-change-init.prompt.md +269 -0
  5. package/.github/prompts/sdd-design.prompt.md +250 -0
  6. package/.github/prompts/sdd-implement.prompt.md +387 -0
  7. package/.github/prompts/sdd-requirements.prompt.md +193 -0
  8. package/.github/prompts/sdd-review.prompt.md +155 -0
  9. package/.github/prompts/sdd-security.prompt.md +228 -0
  10. package/.github/prompts/sdd-steering.prompt.md +269 -0
  11. package/.github/prompts/sdd-tasks.prompt.md +255 -0
  12. package/.github/prompts/sdd-test.prompt.md +230 -0
  13. package/.github/prompts/sdd-validate.prompt.md +304 -0
  14. package/.github/skills/build-fix/SKILL.md +124 -0
  15. package/.github/skills/checkpoint/SKILL.md +131 -0
  16. package/.github/skills/codemap/SKILL.md +120 -0
  17. package/.github/skills/codemap/templates/codemap-index.md +142 -0
  18. package/.github/skills/codemap/templates/package-codemap.md +160 -0
  19. package/.github/skills/context-optimizer/SKILL.md +109 -0
  20. package/.github/skills/context-optimizer/contexts/dev.md +40 -0
  21. package/.github/skills/context-optimizer/contexts/research.md +55 -0
  22. package/.github/skills/context-optimizer/contexts/review.md +49 -0
  23. package/.github/skills/e2e-runner/SKILL.md +145 -0
  24. package/.github/skills/eval-harness/SKILL.md +111 -0
  25. package/.github/skills/eval-harness/examples/capability-eval.md +158 -0
  26. package/.github/skills/eval-harness/examples/human-grader-template.md +326 -0
  27. package/.github/skills/eval-harness/examples/regression-eval.md +228 -0
  28. package/.github/skills/learning-hooks/SKILL.md +101 -0
  29. package/.github/skills/learning-hooks/templates/learned-skill-template.md +79 -0
  30. package/.github/skills/musubix-adr-generation/SKILL.md +74 -0
  31. package/.github/skills/musubix-best-practices/SKILL.md +85 -0
  32. package/.github/skills/musubix-c4-design/SKILL.md +86 -0
  33. package/.github/skills/musubix-code-generation/SKILL.md +90 -0
  34. package/.github/skills/musubix-domain-inference/SKILL.md +82 -0
  35. package/.github/skills/musubix-ears-validation/SKILL.md +74 -0
  36. package/.github/skills/musubix-sdd-workflow/SKILL.md +95 -0
  37. package/.github/skills/musubix-technical-writing/SKILL.md +108 -0
  38. package/.github/skills/musubix-test-generation/SKILL.md +88 -0
  39. package/.github/skills/musubix-traceability/SKILL.md +94 -0
  40. package/.github/skills/refactor-cleaner/SKILL.md +105 -0
  41. package/.github/skills/session-manager/SKILL.md +119 -0
  42. package/.github/skills/session-manager/scripts/session-end.sh +175 -0
  43. package/.github/skills/session-manager/scripts/session-start.sh +87 -0
  44. package/.github/skills/verification-loop/SKILL.md +111 -0
  45. package/.github/skills/verification-loop/scripts/verify.sh +305 -0
  46. package/AGENTS.md +333 -0
  47. package/LICENSE +21 -0
  48. package/README.ja.md +313 -0
  49. package/README.md +315 -50
  50. package/bin/musubix-mcp.js +15 -0
  51. package/bin/musubix.js +9 -1
  52. package/docs/API-REFERENCE.md +1425 -0
  53. package/docs/CODEMAPS/CODEMAP.md +1 -0
  54. package/docs/GITHUB-ACTIONS-NPM-SETUP.md +132 -0
  55. package/docs/INSTALL-GUIDE.ja.md +459 -0
  56. package/docs/INSTALL-GUIDE.md +459 -0
  57. package/docs/MIGRATION-v3.0.md +324 -0
  58. package/docs/MUSUBI-enhancement_roadmap_20260105.md +651 -0
  59. package/docs/MUSUBIX-v3.0-User-Guide.md +1357 -0
  60. package/docs/MUSUBIXv2.2.0-Manual-outline.md +136 -0
  61. package/docs/MUSUBIXv2.2.0-Manual.md +3123 -0
  62. package/docs/MUSUBIXv2.3.5-Refactering.md +1310 -0
  63. package/docs/MUSUBIv1.6.1-enhancement_roadmap_20260105.md +291 -0
  64. package/docs/MUSUBIv2.2.0-USERGUIDE.md +2079 -0
  65. package/docs/ROADMAP-v1.5.md +116 -0
  66. package/docs/SwarmCoding.md +1284 -0
  67. package/docs/Test-prompt.md +105 -0
  68. package/docs/USER-GUIDE-v1.8.0.md +2371 -0
  69. package/docs/USER-GUIDE.ja.md +2147 -0
  70. package/docs/USER-GUIDE.md +3022 -0
  71. package/docs/YATA-GLOBAL-GUIDE.ja.md +750 -0
  72. package/docs/YATA-GLOBAL-GUIDE.md +595 -0
  73. package/docs/YATA-LOCAL-GUIDE.ja.md +989 -0
  74. package/docs/YATA-LOCAL-GUIDE.md +730 -0
  75. package/docs/adr/0001-real-time-pattern-learning-architecture-for-v1-5-0.md +75 -0
  76. package/docs/adr/0002-pattern-sharing-protocol-for-cross-team-collaborat.md +79 -0
  77. package/docs/adr/0003-owl-2-rl-implementation-strategy-for-advanced-infe.md +90 -0
  78. package/docs/adr/ADR-v3.4.0-001-deep-research-architecture.md +217 -0
  79. package/docs/adr/ADR-v3.4.0-002-search-provider-selection.md +308 -0
  80. package/docs/adr/ADR-v3.4.0-003-lm-api-integration.md +475 -0
  81. package/docs/adr/ADR-v3.7.0-001-everything-claude-code-integration.md +102 -0
  82. package/docs/enterprise-knowledge-management.md +1737 -0
  83. package/docs/evolution-from-musubi-to-musubix.md +2170 -0
  84. package/docs/experiments/EXPERIMENT-ASSISTANT-AXIS-DRIFT-DETECTION.md +155 -0
  85. package/docs/getting-started-with-sdd.md +1602 -0
  86. package/docs/moodle-refactering-codegraph-musubix.md +391 -0
  87. package/docs/moodle-refactering-codegraph.md +278 -0
  88. package/docs/overview/MUSUBIX-CodeGraph.md +322 -0
  89. package/docs/overview/MUSUBIX-Core.md +671 -0
  90. package/docs/overview/MUSUBIX-Decisions.md +494 -0
  91. package/docs/overview/MUSUBIX-FormalVerify.md +566 -0
  92. package/docs/overview/MUSUBIX-Knowledge.md +1231 -0
  93. package/docs/overview/MUSUBIX-Learning.md +837 -0
  94. package/docs/overview/MUSUBIX-MCP-Server.md +535 -0
  95. package/docs/overview/MUSUBIX-Overview.md +264 -0
  96. package/docs/overview/MUSUBIX-Phase1-Complete.md +271 -0
  97. package/docs/overview/MUSUBIX-Phase2-Complete.md +310 -0
  98. package/docs/overview/MUSUBIX-Policy.md +477 -0
  99. package/docs/overview/MUSUBIX-Roadmap-v2.md +399 -0
  100. package/docs/overview/MUSUBIX-Security-Plan.md +939 -0
  101. package/docs/overview/MUSUBIX-Security-v2.1.md +668 -0
  102. package/docs/overview/MUSUBIX-Security.md +891 -0
  103. package/docs/overview/MUSUBIX-YATA.md +666 -0
  104. package/docs/overview/MUSUBIX-v2.2.0-Advanced-Learning.md +513 -0
  105. package/docs/overview/Neuro-SymbolicAI.md +159 -0
  106. package/docs/packages/knowledge.md +594 -0
  107. package/docs/qiita/musubix-v3.6.0-fastrender-insights.md +625 -0
  108. package/docs/qiita-linux-kernel-knowledge-graph.md +596 -0
  109. package/docs/qiita-musubix-assistant-axis.md +380 -0
  110. package/package.json +58 -52
  111. package/scripts/generate-quality-gate-report.ts +106 -0
  112. package/scripts/postinstall.js +94 -0
  113. package/scripts/register-release-knowledge.ts +127 -0
  114. package/steering/.musubi-version +1 -0
  115. package/steering/product.ja.md +572 -0
  116. package/steering/project.yml +66 -0
  117. package/steering/rules/constitution.md +491 -0
  118. package/steering/structure.ja.md +503 -0
  119. package/steering/tech.ja.md +208 -0
  120. package/dist/index.d.ts +0 -25
  121. package/dist/index.d.ts.map +0 -1
  122. package/dist/index.js +0 -74
  123. package/dist/index.js.map +0 -1
@@ -0,0 +1,308 @@
1
+ # ADR-v3.4.0-002: Search Provider Selection Strategy
2
+
3
+ **Status**: Accepted
4
+ **Date**: 2026-01-16
5
+ **Authors**: AI Agent
6
+ **Context**: MUSUBIX v3.4.0 Deep Research Integration
7
+ **Traces To**: REQ-DR-CORE-002, REQ-DR-NFR-005, DES-DR-v3.4.0
8
+
9
+ ---
10
+
11
+ ## Context
12
+
13
+ Deep Research機能では、Web検索プロバイダーからSERP(Search Engine Results Page)データを取得する必要がある。以下の技術的決定が必要:
14
+
15
+ 1. **プロバイダー選択**: どの検索プロバイダーを使用するか
16
+ 2. **フォールバック戦略**: プライマリプロバイダーが失敗した場合の対応
17
+ 3. **API制限対応**: レート制限、タイムアウト、エラーハンドリング
18
+
19
+ ### 要件からの制約
20
+
21
+ - REQ-DR-CORE-002: 複数検索プロバイダー対応、フォールバック必須
22
+ - REQ-DR-NFR-001: 応答時間3秒以内
23
+ - REQ-DR-NFR-005: 全プロバイダー失敗時のエラーハンドリング
24
+ - 既存パッケージ: @nahisaho/musubix-neural-search (v2.2.0+) を活用可能
25
+
26
+ ---
27
+
28
+ ## Decision
29
+
30
+ **Jina AI**をプライマリプロバイダーとし、**Brave Search**と**DuckDuckGo**をフォールバックとする3段階戦略を採用。
31
+
32
+ ### プロバイダー優先順位
33
+
34
+ ```
35
+ 1. Jina AI (Primary)
36
+ - Search API: https://s.jina.ai/
37
+ - Reader API: https://r.jina.ai/
38
+ ↓ 失敗時
39
+ 2. Brave Search (Fallback 1)
40
+ - Search API v1
41
+ - 高品質な検索結果
42
+ ↓ 失敗時
43
+ 3. DuckDuckGo (Fallback 2)
44
+ - HTML Instant Answer API
45
+ - API Key不要
46
+ ```
47
+
48
+ ### Strategy Pattern実装
49
+
50
+ ```typescript
51
+ // src/providers/provider-factory.ts
52
+
53
+ export class SearchProviderFactory {
54
+ private providers: SearchProvider[];
55
+ private currentIndex: number = 0;
56
+
57
+ constructor(config: ProviderConfig) {
58
+ this.providers = [
59
+ new JinaProvider(config.jinaApiKey), // Priority 1
60
+ new BraveProvider(config.braveApiKey), // Priority 2
61
+ new DuckDuckGoProvider(), // Priority 3 (No API Key)
62
+ ];
63
+ }
64
+
65
+ async search(query: SERPQuery): Promise<SearchResult[]> {
66
+ for (let attempt = 0; attempt < 3; attempt++) {
67
+ try {
68
+ const provider = this.providers[this.currentIndex];
69
+ const results = await provider.search(query);
70
+
71
+ // 成功したらインデックスをリセット
72
+ this.currentIndex = 0;
73
+ return results;
74
+
75
+ } catch (error) {
76
+ logger.warn(`Provider ${provider.name} failed:`, error.message);
77
+
78
+ // 次のプロバイダーへフォールバック
79
+ this.currentIndex = (this.currentIndex + 1) % this.providers.length;
80
+
81
+ // 全プロバイダー試行済み
82
+ if (attempt === 2) {
83
+ throw new AllProvidersFailedError('All search providers exhausted');
84
+ }
85
+
86
+ // Exponential Backoff
87
+ await this.exponentialBackoff(attempt);
88
+ }
89
+ }
90
+ }
91
+
92
+ private async exponentialBackoff(attempt: number): Promise<void> {
93
+ const delay = Math.min(1000 * Math.pow(2, attempt), 10000); // Max 10s
94
+ await new Promise(resolve => setTimeout(resolve, delay));
95
+ }
96
+ }
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Rationale
102
+
103
+ ### なぜJina AIをプライマリにするか
104
+
105
+ **✅ 採用理由**:
106
+
107
+ 1. **Search + Reader統合**: 1つのAPIで検索とコンテンツ読取が可能
108
+ 2. **高品質な結果**: Webスクレイピングではなく、構造化データ取得
109
+ 3. **参照実装**: jina-ai/node-DeepResearchで実績あり
110
+ 4. **Markdown変換**: HTML → Markdown変換機能内蔵
111
+
112
+ **Jina AI API例**:
113
+ ```typescript
114
+ // Search: https://s.jina.ai/{query}
115
+ const searchUrl = `https://s.jina.ai/${encodeURIComponent(query)}`;
116
+
117
+ // Reader: https://r.jina.ai/{targetUrl}
118
+ const readerUrl = `https://r.jina.ai/${encodeURIComponent(targetUrl)}`;
119
+ ```
120
+
121
+ ### プロバイダー比較
122
+
123
+ | プロバイダー | 長所 | 短所 | 優先度 |
124
+ |-------------|------|------|--------|
125
+ | **Jina AI** | Search+Reader統合、Markdown変換 | API Key必要 | ✅ Primary |
126
+ | **Brave Search** | 高品質、広告なし | API Key必要、Reader機能なし | 🔄 Fallback 1 |
127
+ | **DuckDuckGo** | API Key不要、無料 | 品質低め、レート制限厳しい | 🔄 Fallback 2 |
128
+ | **Google Search** | 最高品質 | ❌ 有料、TOS制約厳しい | ❌ 不採用 |
129
+ | **Bing Search** | 高品質 | ❌ 有料、Azure依存 | ❌ 不採用 |
130
+
131
+ ### フォールバック戦略
132
+
133
+ **Chain of Responsibility Pattern**で実装:
134
+
135
+ ```
136
+ Request → Jina AI → Success? YES → Return
137
+ ↓ NO (Error)
138
+ Brave Search → Success? YES → Return
139
+ ↓ NO (Error)
140
+ DuckDuckGo → Success? YES → Return
141
+ ↓ NO (Error)
142
+ AllProvidersFailedError
143
+ ```
144
+
145
+ **Exponential Backoff**:
146
+ - 1回目失敗: 1秒待機
147
+ - 2回目失敗: 2秒待機
148
+ - 3回目失敗: 4秒待機(最大10秒)
149
+
150
+ ---
151
+
152
+ ## Consequences
153
+
154
+ ### Positive
155
+
156
+ ✅ **高可用性**: 3プロバイダーで99.9%のアップタイム
157
+ ✅ **コスト最適化**: JinaがダウンでもBrave/DuckDuckGoで継続可能
158
+ ✅ **API Key不要オプション**: DuckDuckGoで最低限の機能保証
159
+ ✅ **拡張性**: 新プロバイダーをSearchProviderインターフェースで追加容易
160
+
161
+ ### Negative
162
+
163
+ ⚠️ **API Key管理**: Jina/Brave用のAPI Key管理が必要
164
+ ⚠️ **応答時間**: フォールバック発生時に遅延(最大13秒)
165
+ ⚠️ **結果品質差**: プロバイダーごとに結果品質が異なる
166
+
167
+ ### Mitigations
168
+
169
+ - **API Key管理**: SecretManagerシングルトンで一元管理(REQ-DR-NFR-003)
170
+ - **応答時間**:
171
+ - タイムアウト設定: 各プロバイダー3秒
172
+ - 並列実行: 検索とReader APIを並列化(REQ-DR-NFR-002)
173
+ - **結果品質**:
174
+ - LMReasoningで推論時に品質評価
175
+ - 低品質結果は自動的にフィルタリング
176
+
177
+ ---
178
+
179
+ ## Implementation Details
180
+
181
+ ### プロバイダーインターフェース
182
+
183
+ ```typescript
184
+ // src/providers/provider-interface.ts
185
+
186
+ export interface SearchProvider {
187
+ name: string;
188
+ search(query: SERPQuery): Promise<SearchResult[]>;
189
+ isAvailable(): Promise<boolean>;
190
+ }
191
+
192
+ export interface SERPQuery {
193
+ keywords: string;
194
+ topK: number; // 検索結果数 (1-20)
195
+ timestamp: number;
196
+ iteration: number;
197
+ }
198
+
199
+ export interface SearchResult {
200
+ title: string;
201
+ url: string;
202
+ snippet: string;
203
+ date?: string;
204
+ relevance?: number; // 0.0-1.0
205
+ }
206
+ ```
207
+
208
+ ### Jina Providerの実装
209
+
210
+ ```typescript
211
+ // src/providers/jina-provider.ts
212
+
213
+ export class JinaProvider implements SearchProvider {
214
+ name = 'Jina AI';
215
+
216
+ constructor(private apiKey: string) {}
217
+
218
+ async search(query: SERPQuery): Promise<SearchResult[]> {
219
+ const url = `https://s.jina.ai/${encodeURIComponent(query.keywords)}`;
220
+
221
+ const response = await axios.get(url, {
222
+ headers: {
223
+ 'Authorization': `Bearer ${this.apiKey}`,
224
+ 'X-Return-Format': 'json',
225
+ },
226
+ timeout: 3000,
227
+ });
228
+
229
+ return response.data.data.map((item: any) => ({
230
+ title: item.title,
231
+ url: item.url,
232
+ snippet: item.content.slice(0, 200),
233
+ date: item.publishedTime,
234
+ })).slice(0, query.topK);
235
+ }
236
+
237
+ async isAvailable(): Promise<boolean> {
238
+ try {
239
+ await axios.head('https://s.jina.ai', { timeout: 1000 });
240
+ return true;
241
+ } catch {
242
+ return false;
243
+ }
244
+ }
245
+ }
246
+ ```
247
+
248
+ ### Neural Search統合(オプション)
249
+
250
+ 既存の`@nahisaho/musubix-neural-search`を活用:
251
+
252
+ ```typescript
253
+ // src/integrations/neural-search-integration.ts
254
+
255
+ import { HybridRanker } from '@nahisaho/musubix-neural-search';
256
+
257
+ export class NeuralSearchIntegration {
258
+ private ranker: HybridRanker;
259
+
260
+ async rerankResults(
261
+ query: string,
262
+ results: SearchResult[]
263
+ ): Promise<SearchResult[]> {
264
+ // BM25 + ベクトル類似度でリランキング
265
+ const scored = await this.ranker.rank(query, results);
266
+ return scored.sort((a, b) => b.relevance - a.relevance);
267
+ }
268
+ }
269
+ ```
270
+
271
+ ---
272
+
273
+ ## Compliance
274
+
275
+ ### 要件準拠
276
+
277
+ | 要件ID | 対応 |
278
+ |--------|------|
279
+ | REQ-DR-CORE-002 | ✅ 3プロバイダー対応、フォールバック実装 |
280
+ | REQ-DR-NFR-001 | ✅ タイムアウト3秒、並列実行で性能確保 |
281
+ | REQ-DR-NFR-005 | ✅ AllProvidersFailedError、リトライ戦略 |
282
+ | REQ-DR-INT-002 | ✅ Neural Search統合でリランキング |
283
+
284
+ ### 憲法準拠
285
+
286
+ | 条項 | 対応 |
287
+ |-----|------|
288
+ | VII. Design Patterns | ✅ Strategy, Chain of Responsibility適用 |
289
+ | IX. Quality Gates | ✅ isAvailable()でヘルスチェック |
290
+
291
+ ---
292
+
293
+ ## References
294
+
295
+ - [Jina AI Search API Documentation](https://jina.ai/search)
296
+ - [Brave Search API](https://brave.com/search/api/)
297
+ - [DuckDuckGo Instant Answer API](https://duckduckgo.com/api)
298
+ - [jina-ai/node-DeepResearch](https://github.com/jina-ai/node-DeepResearch) - 参照実装
299
+ - REQ-MUSUBIX-v3.4.0.md - 要件定義書
300
+ - DES-DR-v3.4.0.md - 設計書
301
+
302
+ ---
303
+
304
+ ## Approval
305
+
306
+ - **Author**: AI Agent (2026-01-16)
307
+ - **Reviewer**: -
308
+ - **Status**: Accepted