デプロイポリシー
Vifu は、ビルド済み出力をレビュー対象の実行成果物として扱います。
つまり、ゲームを実行する JavaScript はデプロイ成果物の中に入っている必要があります。Vifu deploy は CDN スクリプトをダウンロードしたり、HTML を書き換えたり、依存関係を同梱化したり、デプロイ用ロックファイルを作ったりしません。
短いまとめ
許可:
- ビルド出力内の同梱済み JavaScript
- ビルド出力内のローカルアセット
- Google Fonts
- 承認済みパッケージ CDN からの、バージョン固定された静的 CSS、フォント、画像、メディア
- 通常の外部リンク
@vifu/sdkまたはwindow.Vifu経由の AI / バックエンドアクセス
ブロック:
- CDN JavaScript
- リモート
import(...)、importScripts(...)、Worker スクリプト - リモート
.js、.mjs、.wasmURL - ゲーム JavaScript からの外部 AI / バックエンド API 直接呼び出し
- デプロイ成果物に残った LM Studio / Ollama などのローカル専用プロバイダー
なぜリモート JavaScript をブロックするか
Vifu 上で動くゲームはマネージド iframe で実行され、AI、セーブ状態、リソース、AI パートナーの操作などのプラットフォーム機能にアクセスできます。リモート JavaScript を実行できると、レビューした成果物とは別のコードが実際に動いてしまいます。
CSS、フォント、画像、メディアはゲームロジックを定義しないため、種類ごとの CSP で承認済みの静的リソースとして扱います。
良い例
html
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/theme.css"
>ts
const result = await Vifu.ai.generateText({
model: "basic",
messages: [{ role: "user", content: "Give a short hint." }]
});ブロックされる例
html
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/phaser.min.js"></script>ts
await import("https://cdn.jsdelivr.net/npm/@mediapipe/[email protected]/+esm");
fetch("https://api.openai.com/v1/chat/completions");
fetch("http://localhost:1234/v1/chat/completions");CLI エラーの読み方
vifu deploy は、失敗したビルド済みファイル、行、ルール、URL、理由、修正方法を表示します。
text
Vifu deploy blocked this runtime artifact.
1. Remote JavaScript import
Built file: chunk.js:2
Rule: remote code import
URL: https://cdn.jsdelivr.net/npm/@mediapipe/[email protected]/+esm
Why blocked: Remote JavaScript/WASM would execute outside the reviewed deploy artifact.
Fix: Bundle the dependency locally, remove the unused provider/import, or lazy-load it only in a non-deployed build profile.ランタイム CSP
script-srcに CDN JavaScript ホストは入りません。connect-srcは Vifu platform API に制限されます。style-src、font-src、img-src、media-srcは種類ごとに承認済みの静的リソースホストを許可できます。- Worker / eval の扱いは内部ランタイムルールであり、公開マニフェストで切り替えるものではありません。