@nahisaho/katashiro 2.1.1 → 2.1.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 (2) hide show
  1. package/AGENTS.md +99 -1
  2. package/package.json +1 -1
package/AGENTS.md CHANGED
@@ -26,6 +26,75 @@
26
26
 
27
27
  ---
28
28
 
29
+ ## ⚠️ 重要: TypeScriptコード生成・実行ワークフロー
30
+
31
+ DeepResearchやその他の機能でTypeScriptコードを生成・実行する際は、**必ず以下のワークフローに従ってください**。
32
+
33
+ ### 必須ワークフロー
34
+
35
+ ```
36
+ 1. コード生成
37
+
38
+ 2. TypeScript型チェック(tsc --noEmit)
39
+
40
+ 3. エラーがあれば修正
41
+
42
+ 4. 実行
43
+ ```
44
+
45
+ ### 実行前チェックリスト
46
+
47
+ 生成したTypeScriptコードを実行する前に、以下を確認してください:
48
+
49
+ #### 1. Result型APIのチェック
50
+ ```typescript
51
+ // ❌ 間違い - WebScraper.scrape()はResult型を返す
52
+ const page = await scraper.scrape(url);
53
+ console.log(page.content); // エラー!
54
+
55
+ // ✅ 正しい
56
+ const page = await scraper.scrape(url);
57
+ if (isOk(page)) {
58
+ console.log(page.value.content);
59
+ }
60
+ ```
61
+
62
+ #### 2. 直接値APIのチェック
63
+ ```typescript
64
+ // ❌ 間違い - TextAnalyzer.analyze()は直接オブジェクトを返す
65
+ const analysis = await analyzer.analyze(text);
66
+ if (isOk(analysis)) { // エラー!isOk()は不要
67
+ console.log(analysis.value.keywords);
68
+ }
69
+
70
+ // ✅ 正しい
71
+ const analysis = await analyzer.analyze(text);
72
+ console.log(analysis.keywords);
73
+ ```
74
+
75
+ #### 3. 型チェックコマンド
76
+ ```bash
77
+ # 生成したファイルの型チェック
78
+ npx tsc --noEmit your-script.ts
79
+
80
+ # エラーがあれば修正してから実行
81
+ npx tsx your-script.ts
82
+ ```
83
+
84
+ ### AIエージェントへの指示
85
+
86
+ **DeepResearch実行時のワークフロー**:
87
+
88
+ 1. **コード生成**: KATASHIROのAPIを使用してTypeScriptコードを生成
89
+ 2. **型チェック**: `npx tsc --noEmit` でコンパイルエラーをチェック
90
+ 3. **エラー修正**: 型エラーがあれば、このドキュメントの「戻り値の型について」セクションを参照して修正
91
+ 4. **実行**: エラーがなくなってから `npx tsx` で実行
92
+ 5. **結果確認**: 実行結果を確認し、必要に応じて修正
93
+
94
+ **重要**: 型チェックをスキップしてはいけません。Result型と直接値の混同は最も一般的なエラーです。
95
+
96
+ ---
97
+
29
98
  ## 🔄 課題解決ワークフロー
30
99
 
31
100
  ### ステップ1: 課題の分析
@@ -118,7 +187,22 @@ console.log(`${summary.length}文字の要約`);
118
187
 
119
188
  | API | 戻り値の型 | 使用例 |
120
189
  |-----|-----------|-------|
121
- | `WebScraper.scrape()` | `Promise<Result<ScrapedContent, Error>>` | `if (isOk(page)) { ... }` |
190
+ | `WebScraper.scrape()` | `Promise<Result<ScrapingResult, Error>>` | `if (isOk(page)) { page.value.content }` |
191
+ | `WebScraper.scrapeMultiple()` | `Promise<Result<ScrapingResult, Error>[]>` | 各要素を`isOk()`でチェック |
192
+ | `SummaryGenerator.summarize()` | `Promise<Result<string, Error>>` | `if (isOk(result)) { result.value }` |
193
+ | `SummaryGenerator.generateSummary()` | `Promise<Result<string, Error>>` | `if (isOk(result)) { result.value }` |
194
+ | `TextAnalyzer.summarize()` | `Promise<Result<Summary, Error>>` | `if (isOk(summary)) { summary.value }` |
195
+ | `FactChecker.checkWithSources()` | `Promise<Result<FactCheckResultDetail, Error>>` | `if (isOk(result)) { ... }` |
196
+ | `FactChecker.detectConflicts()` | `Promise<Result<ConflictDetectionResult, Error>>` | `if (isOk(result)) { ... }` |
197
+ | `DocumentParser.parse()` | `Promise<Result<ParsedDocument, Error>>` | `if (isOk(doc)) { doc.value }` |
198
+ | `PDFParser.parse()` | `Promise<Result<ParsedDocument, Error>>` | `if (isOk(doc)) { ... }` |
199
+ | `DOCXParser.parse()` | `Promise<Result<ParsedDocument, Error>>` | `if (isOk(doc)) { ... }` |
200
+ | `XLSXParser.parse()` | `Promise<Result<ParsedDocument, Error>>` | `if (isOk(doc)) { ... }` |
201
+ | `ApiClient.getSafe()` | `Promise<Result<T, Error>>` | `if (isOk(response)) { ... }` |
202
+ | `ApiClient.postSafe()` | `Promise<Result<T, Error>>` | `if (isOk(response)) { ... }` |
203
+ | `CodeInterpreter.execute()` | `Promise<Result<ExecutionResult, Error>>` | `if (isOk(result)) { ... }` |
204
+ | `TrendAnalyzer.analyze()` | `Promise<Result<TrendAnalysisResult, Error>>` | `if (isOk(result)) { ... }` |
205
+ | `DiagramGenerator.generate*()` | `Promise<Result<DiagramOutput, Error>>` | `if (isOk(diagram)) { ... }` |
122
206
 
123
207
  ```typescript
124
208
  // ✅ 正しい使い方(Result型のみ isOk() を使用)
@@ -129,11 +213,25 @@ if (isOk(page)) {
129
213
  console.error(page.error); // .error でエラー取得
130
214
  }
131
215
 
216
+ // SummaryGenerator.summarize() もResult型
217
+ const summaryResult = await summarizer.summarize(text);
218
+ if (isOk(summaryResult)) {
219
+ console.log(summaryResult.value); // string
220
+ }
221
+
132
222
  // ❌ 間違い(直接値を返すAPIに isOk() を使用)
133
223
  const results = await searchClient.search('AI');
134
224
  // if (isOk(results)) { ... } // エラー!results は配列
225
+
226
+ // ❌ 間違い(generate() と summarize() を混同)
227
+ const summary = await summarizer.generate(text); // これは直接string
228
+ // if (isOk(summary)) { ... } // エラー!summaryはstring
135
229
  ```
136
230
 
231
+ > **注意**: `SummaryGenerator` には2つのメソッドがあります:
232
+ > - `generate()` → 直接 `string` を返す(`isOk()` 不要)
233
+ > - `summarize()` → `Result<string, Error>` を返す(`isOk()` 必須)
234
+
137
235
  ---
138
236
 
139
237
  ## 📝 課題タイプ別の実装パターン
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nahisaho/katashiro",
3
- "version": "2.1.1",
3
+ "version": "2.1.3",
4
4
  "description": "KATASHIRO - VS Code Agent Mode向け情報収集・分析・生成システム(オールインワンパッケージ)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",