コンテンツにスキップ

仕様・利用条件・制約

仕様・JSON Schema・利用条件・制約

Section titled “仕様・JSON Schema・利用条件・制約”

ai-coreはReactを使わないアクション、提案レビュー、UIデータ検証、チャットプロトコル、 出力解析の正本です。react-aiがUI用に参照します。グラフ計算はtask-graph、 グラフを使うエージェント実行・DBアダプター・スキーマ/DDL連携はdata-engineに残します。 ai-coreからこれらへ依存しません。engineの既存AI入口は同じ実装を再exportします。

ActionToolInputSchemaはアプリケーションが用意するobjectルートのJSON Schemaです。 engine固有の拡張型への依存はありません。TypeScript型だけでモデルの入力を検証することは できません。defineActionToolは構造検証後に必須のparseInputを実行し、handlerの型を 確定します。失敗すれば処理を実行しません。

tool入力では同期draft-07(既定)と2020-12を利用できます。2020-12なら $schema: 'https://json-schema.org/draft/2020-12/schema'を明示します。 その他のdraftやasyncのtoolスキーマは拒否します。properties、required、 additionalProperties、文字数・数値の制約などを明示してください。 必須化や未知キーの禁止は自動ではありません。未知キーを禁止するなら additionalProperties: falseが必要です。tool境界では型変換、default挿入、キー削除をしません。 不正なスキーマは設定時のコンパイルで例外になり、データ不適合は検証失敗として返します。

未知のx-*キーを書くだけでは業務ルール・認可・DB制約・UI動作は実装されません。 構造検証後の業務検証・認可はアプリケーション側が用意します。 remoteスキーマの自動取得はありません。参照はローカルで解決し、コンパイル後の変更には 新しいスキーマobjectを渡してください。

/validationのcreateAjvValidatorが共通AJV実装です。engineもこれを参照します。 既定は非coercionですが、明示的なajvOptionsによって入力を変更する設定は可能です。 draft・locale・返されたAjv instanceの扱いはJSDocを確認してください。 Ajvの実行時コンパイルには関数生成を許可するホストが必要です。CSP/edge環境の制約は 個別に確認してください。

toolのスキーマ・引数・公開出力は、元データから分離して凍結した有限JSONです。 plain object/配列、文字列、有限数値、boolean、nullを受け入れます。 accessor、独自prototype、toJSON、関数、undefined、疎配列、循環、非有限数値は拒否します。 1つの値につき深さ64、訪問値10,000、JSON化後のJavaScript UTF-16コード単位1,000,000が上限です。 UTF-8のバイト数ではありません。JSON解析前のリクエストサイズ制限も別に必要です。

登録やtool公開は自動ではありません。公開対象を明示し、mapOutputで外部へ渡してよい値だけを 検証・選択します。登録差し替えで出力型が変わり得るため、公開処理はunknownを受け取ります。 bridgeのcallIdはセッション内で重複拒否され、maxCallsの既定は1000です。古いIDは追い出しません。 会話が変われば新しいセッションを作成します。closeやキャンセルで開始済みの副作用は戻りません。 キャンセルは協調動作で、処理がsettleするまで実行ロックを維持します。 これらは認可、永続的な重複排除、DB transaction、プロセスをまたぐロックの代わりにはなりません。

v1文書はversion: 1、空でないid、最大32件の平坦なblocksを持ちます。 blockには一意のid、明示登録されたtype、objectのdataが必要です。 実行可能HTML、React node、callbackをモデルから受け取りません。 validateGenerativeUIDocumentは文書外形と有限JSONを検証し、アプリ固有のcomponent dataは 検証しません。createGenerativeUIContractは登録ごとのデータ検証と対応する応答スキーマを生成します。

component schemaはinline・同期・draft-07・objectルートに限定します。 参照、ID、anchor、draft指定、asyncの予約キーは再帰的に拒否します。 最大32種類の一意なcomponentを登録でき、型変換やdefault挿入はしません。 block IDの一意性とJSONの上限は、生成JSON Schemaだけでは表現できないため実行時にも検証します。 各AIモデルのスキーマ対応範囲にはアプリ側の調整が必要な場合があります。 業務検証・認可はアプリ、React描画はreact-aiとアプリが担当します。

提案v1は明示したprimitiveフィールドが対象で、object/配列の変更は非対応です。 レビュー判断・変更前値・versionを確認し、選択したbatchの1件が失敗すれば実行用の部分結果を返しません。 保存時にはサーバーでも原子的なversion確認・transactionが必要です。事前確認後の競合は防げません。

チャットアダプターはOpenAI互換/AI SDKのstreamを共通イベントへ変換し、tool呼び出しと結果を 受け渡しますが、toolを自動実行しません。URL・header・モデル設定・transportは明示します。 特権APIキーはサーバーに保管してください。maxResponseCharsの既定はデコード後1,000,000文字、 設定上限は10,000,000文字です。終了・エラー・キャンセルを検証しますが、実サービスや全プロトコルの 動作を保証するものではありません。

extractAgentMessageTextは完了したagent messageのJSONLを抽出し、見つからなければ元の文字列を返します。 出力の実行や、実際のタスク完了・正当性の判定は行いません。

bun run verifyは依存境界、テストを含む型検査、単体テスト、ESM/CJSビルド、 Node/Bun tarball consumer、Node型の有無双方の厳密なNodeNext型解決、browser bundleを検証します。 consumerへengine・DB・storage・Reactは導入しません。README・機能ガイド・JSDocはこのリポジトリが正本です。 apps/docsは同じcheckoutのローカルMarkdownを使い、開発と本番で同じビルドを行います。 初回の公開順序とlockfileはRELEASING.mdを確認してください。

同期createAjvValidatorはdraft-07/2020-12双方でasync schemaを実行前に拒否します。schema設定エラーは例外、同期データ不適合はvalid:falseです。このAPIで非同期検証を実行することはできません。