# DownloadFile

URL からファイルをダウンロードしてワークスペースに保存する。

## 基本

```js
DownloadFile({
  url: "https://example.com/chart.png",
  filename: "images/sales-chart.png",
  section: "output"
})
```

## パラメータ

- `url`: ダウンロード元 URL
- `filename`: 保存先パス（section 配下からの相対パス）
- `section`: `"input"` / `"output"` / `"source"`
  - `"input"`: 後続処理の入力（既定）
  - `"output"`: 成果物
  - `"source"`: 調べ物・参照資料。スペースのソースライブラリ（`source/`）に蓄積され、出典付きで Files タブに一覧される。research 系のダウンロードはこれを推奨

## ファイル命名規約

### 画像（成果物に埋め込む場合）

- パス: `images/{わかりやすい名前}.png` （または .jpg / .webp / .gif）
- section: `"output"`
- 命名は内容を表すスラッグ（kebab-case 推奨）: `sales-q3-chart.png`, `product-screenshot-home.png`

### ダウンロード履歴

`logs/downloads.jsonl` に各ダウンロードのメタ情報（URL, 保存先, サイズ）が記録される。

### ソースライブラリ（section: "source"）

スペースのタスクで `section: "source"` を指定すると、ファイルは `source/` に保存され、
出典メタ（ファイル名・URL・取得日時・サイズ・ツール名）が `source/index.jsonl` に 1 行追記される。
これらは「そのスペースのソース（資料）」として蓄積され、後から追加調査やグラウンディングに使える。
WebFetch がスペース文脈でページ本文を取得した場合や、BrowseWeb がブラウザでページを閲覧した場合も、同じ `source/index.jsonl` に自動で記録される。

## 成果物への画像埋め込み

ダウンロードした画像は Markdown レポートから相対パスで埋め込める:

```markdown
![Q3 売上推移](./images/sales-q3-chart.png)
```

レポート（output/report.md）と画像（output/images/*.png）が同じ section 配下にあれば `./images/` で参照可能。

## SSRF 保護

WebFetch と同じく、ローカル/プライベート IP はデフォルトブロック。Settings UI の「SSRF Allowed Hosts」で例外設定可能。

## 注意

- 大きすぎるファイル（数百MB以上）はタイムアウトしやすい
- バイナリファイル（PDF, 動画等）も保存可能だが、画像以外の用途では ReadPdf / TranscribeAudio 等の専用ツールも検討
