注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

高度なワークフロー

ベータ版

SuperRepo は開発のベータ版段階にあり、お使いのエンロールメントでは利用できない場合があります。開発が活発に進められている間は、機能が変更される可能性があります。

リポジトリを SuperRepo として使用するには、各コンポーネントの種類とパスからなるプロジェクト構造を宣言する foundry.yml ファイルが、リポジトリのルートに必要です。このファイルでは、出力アーティファクト(Marketplace 製品)を宣言することも、複数の出力を宣言することもできます。

複数の製品を追加する

foundry.yml 設定ファイルには、最上位の components リスト、または各製品内に components キーを持つ最上位の products リストのいずれかを含めることができます。複数製品の設定では、各製品内に bundle キーを宣言して、その出力アーティファクトを定義します。次の例を確認してください。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 products: - components: - type: ONTOLOGY path: ./ontology - type: APP path: ./app osdkOutput: ontology/osdk-output apiNamespace: com.palantir.ontology bundle: name: "operations-console" description: "example description" mavenCoordinate: "com.example:operations-console" installMode: SINGLETON - components: - type: ONTOLOGY path: ./analytics/ontology - type: APP path: ./analytics/app osdkOutput: analytics/ontology/osdk-output apiNamespace: com.palantir.analytics bundle: name: "analytics-console" description: "example description" mavenCoordinate: "com.example:analytics-console" installMode: SINGLETON

複数製品の設定を使用する場合は、すべての Foundry CLI コマンドに --product <bundle name> オプションを渡して、どの製品を対象に実行するかを指定します。

製品をファイルから削除せずにパッケージ化される出力から除くには、その製品に includeInBundle: false を設定します。このオプションを省略した場合、デフォルトは true です。

複数製品の SuperRepo をバンドルする

単一製品の SuperRepo は、foundry bundle --project-version <VERSION> という1つのコマンドでパッケージ化されます。このコマンドは複数製品の設定を受け付けません。foundry.yml で複数の製品が宣言されている場合、コマンドは失敗し、代わりに以下の2つのサブコマンドを使用するよう案内します。

複数製品の SuperRepo は、2段階でバンドルします。

  1. 各製品に対して foundry bundle product --product <bundle name> --project-version <VERSION> を1回ずつ実行します。実行するたびに、その製品のパッケージ化された出力が build/<bundle name>/blockset.zip に書き込まれます。--project-version は実行ごとに指定するため、同じリポジトリ内の製品に個別のバージョンを付けることができます。
  2. foundry bundle store を実行して、それらの出力を build/store.zip にまとめます。このコマンドはバージョン引数を取りません。ストアを別の場所に書き込むには、--output を渡します。まだバンドルされていない製品がある場合、コマンドは失敗し、期待されるパスと、その出力を生成するために必要な foundry bundle product コマンドを示します。

foundry deploy では、どちらの段階も自動的には実行されません。このコマンドはストアがすでに存在することを前提とし、存在しない場合は失敗します。デプロイする前にバンドルしてください。

SuperRepo を再構成する

製品内のコンポーネントは自由に移動できます。たとえば、./ontology を ./platform/ontology に移動すると、マニフェストの3個のキーを変更することになります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 components: - type: ONTOLOGY - path: ./ontology + path: ./platform/ontology imports: - - ontology: ontology/external-imports/ontology-full-metadata.json + - ontology: platform/ontology/external-imports/ontology-full-metadata.json -osdkOutput: ontology/osdk-output +osdkOutput: platform/ontology/osdk-output

プレビューデータを選択する

SuperRepo のプレビューでは、ローカルのシードデータを使用することも、Foundry オントロジーからライブオブジェクトを読み取ることもできます。データソースを選択するには、foundry.yml の最上位の preview.ontology 設定を指定します。

モードデータソースオントロジーの編集
SEED_ONLY(デフォルト)ローカルの埋め込みオントロジー。任意のシードデータを格納できますローカルでサポート
REMOTE_ONLYontologyRid で指定された Foundry オントロジーのライブオブジェクト拒否

このモードは、プレビューのオントロジー全体に適用されます。preview は最上位のキーであるため、複数製品の設定では、1つの設定がすべての製品に適用されます。foundry.yml を変更した後は、プレビューを再起動してください。これらの設定はプレビューにのみ影響します。

Foundry データを読み取る

ライブデータを使ってプレビューするには、次の設定を foundry.yml に追加します。例の ontologyRid を、読み取りたいオントロジーの RID に置き換えます。RID を確認するには、Ontology Manager を開き、オントロジーを選択して、オントロジー設定タブを開き、オントロジーメタデータセクションから RID をコピーします。

Copied!
1 2 3 4 preview: ontology: mode: REMOTE_ONLY ontologyRid: ri.ontology.main.ontology.00000000-0000-0000-0000-000000000000

リモートからの読み取りには、foundry login によって保存された資格情報が使用されるため、プレビューでは、お使いのエンロールメントでアクセス可能なオブジェクトのみが返されます。

プレビューの起動時に、ONTOLOGY コンポーネント内で定義またはインポートされた各オントロジータイプが、対象オントロジー内の同じAPI名を持つオントロジータイプと比較されます。そのオントロジー内にタイプが存在しない場合、またはそのタイプにアクセスできない場合、プレビューは起動に失敗します。プロパティが異なる場合、プレビューは Foundry schema mismatch エラーで失敗します。先にオントロジーの変更をデプロイするか、インポートした定義が Foundry で変更されている場合は更新するか、SEED_ONLY を使用して Foundry のスキーマとの一致を必要としないプレビューを行ってください。

アプリケーションと関数は引き続きローカルで実行されます。関数は、追加の platformApiProxy ルートなしで、プラットフォーム API プロキシを通じて Foundry データを読み取ることができます。関数ベースのアクションから返される編集を含め、オントロジーの編集は拒否されます。オブジェクトとリンクの作成、更新、削除をプレビューするには、SEED_ONLY を使用してください。

シードデータを定義する

SEED_ONLY モードでは、foundry は、SuperRepo の ONTOLOGY コンポーネント内で定義またはインポートされたタイプに対して、ローカルの埋め込みオントロジーサーバーを実行します。シードデータを格納することも、ローカルのアクションを呼び出してオブジェクトを作成することもできます。シードデータはプレビュー専用のローカルデータであり、デプロイされることはありません。

TypeScript のシードファイルのディレクトリを設定するには、foundry.yml の preview.ontology に seedDir を追加します。パスは、foundry.yml があるディレクトリからの相対パスです。

Copied!
1 2 3 4 preview: ontology: mode: SEED_ONLY seedDir: ontology/seed

最上位の .mts ファイルのみが、ファイル名の並べ替え順にコンパイルされます。そのため、デモテンプレートではファイル名に 001-、002-、003- という番号を付けています。各ファイルは createSeed 呼び出しをデフォルトエクスポートします。seed.add の第1引数は、オブジェクトタイプ用に生成された SDK 定数です。主キーを含め、null を許容しないすべてのプロパティが必須です。主キーは、ディレクトリ全体を通じて、同じオブジェクトタイプ内で一意である必要があります。seed.link 関数は seed.add が返す参照を受け取り、リンクの両端は同じ呼び出し内で登録されている必要があります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import { seller, superproduct } from "@ontology/sdk"; import { createSeed } from "@osdk/seed-helpers"; export default createSeed((seed) => { const charger = seed.add(superproduct, { pk: "prod-004", title: "USB-C 100W GaN Charger", price: 5900, newPrice: 4720, description: "Compact 100W USB-C GaN wall charger", }); const halcyon = seed.add(seller, { pk: "seller-003", name: "Halcyon Desk Co.", }); seed.link("charger-seller-link", charger, "sellers", halcyon, "superproducts"); });

foundry start ontology を実行するたびに、新しいローカルデータベースで起動し、シードファイルが再適用されます。プレビューを停止して再起動すると、ローカルでの編集内容は破棄されます。

プレビューの実行中にオントロジーのスキーマまたはコンパイル済みのシードデータを変更すると、ローカルデータがリセットされ、シードが再適用されます。関数のみの変更では、ローカルデータは保持されます。

プレビュー中にシードファイルのコンパイルが失敗した場合、サーバーは以前のシードデータを使用して動作を続け、ファイルを編集すると再試行します。再コンパイルされたシードデータの読み込み中に失敗すると、次の再読み込みが成功するまでローカルデータが不完全な状態になる可能性があります。プレビューの出力を確認し、シードファイルを修正してください。

オーケストレーションフレームワークを変更する

foundry create コマンドは Nx を設定しますが、CLI は nx.json ファイルも project.json ファイルも読み取りません。そのため、SuperRepo と Foundry CLI は、選択したオーケストレーションフレームワークに依存しません。デフォルトのテンプレートでは、広く使われていることから Nx を使用しています。Nx から移行するには、project.json ファイル内の Foundry CLI の呼び出しを別のシステムに移植します。

移行中は、すべての Node のインストールを foundry run-with-auth でラップする必要があります。このコマンドは FOUNDRY_HOSTNAME と FOUNDRY_TOKEN を注入するため、.npmrc ファイルでこれらの環境変数を利用できます。

コンテンツセキュリティポリシー

アプリケーションがほかのオリジンのリソースを使用する場合は、Foundry が製品用に管理する Web サイトのコンテンツセキュリティポリシー (CSP) で、それらのオリジンを許可する必要があります。許可しない場合、ブラウザーがリクエストをブロックします。contentSecurityPolicyAdditions キーで追加内容を宣言します。

Copied!
1 2 3 contentSecurityPolicyAdditions: img-src: - tile.openstreetmap.org

各キーは標準の CSP ディレクティブ名で、各値は https://api.example.com や 'self' など、許可するソースのリストです。有効なディレクティブ名は、connect-src、frame-src、img-src、media-src、script-src、style-src、font-src、frame-ancestors です。

contentSecurityPolicyAdditions は製品ごとに指定するキーで、components および bundle と同じ階層で宣言します。このキーは、製品に APP コンポーネントがある場合にのみ適用されます。そのため、製品が1件の foundry.yml では、上記のようにファイルのトップレベルにこのキーを記述します。複数の製品を含む設定では、複数の製品を追加するセクションで説明されているように、このキーが必要な製品ごとに宣言します。

プラットフォーム API プロキシ

アプリケーションでは通常、オントロジー SDK を介して Foundry プラットフォーム API を呼び出します。SuperRepo のローカルプレビューサーバーは、これらのプラットフォーム API の一部を実装していますが、すべてを実装しているわけではありません。たとえば、プラットフォーム API の LLM プロバイダープロキシを使用するには、Foundry エンロールメントにリクエストを送信する必要があります。Foundry からオントロジーオブジェクトを読み取るには、プロキシルートではなく REMOTE_ONLY プレビューを使用します。

SuperRepo プレビューでは、次の例のように foundry.yml ファイル内のトップレベルに platformApiProxy キーを定義することで、リモートの Foundry インスタンスへの API 呼び出しをプロキシできます。

Copied!
1 2 3 4 5 6 platformApiProxy: passthrough: - path: /api/v2/admin/users/getCurrent methods: [GET] - path: /api/v2/llm/proxy/openai/v1/responses methods: [POST]

これらのパスを宣言すると、プレビューサーバーは、上記のパスとメソッドに対するオントロジー SDK クライアントからのリクエストに応答します。これらのリクエストは、Foundry CLI のインストール時にエクスポートしたトークンではなく、foundry login によって保存された資格情報を使用して、Foundry エンロールメントにプロキシされます。保存された資格情報の有効期限が切れた場合は、foundry login refresh を実行し、ローカルプレビューを再起動します。

platformApiProxy の設定はデプロイ済みの製品には影響せず、プレビュー中にのみ有効です。