メインコンテンツへスキップ

ノードと Blocklet の管理

このセクションでは、Blocklet Server ノードおよびその上で実行されている Blocklet のライフサイクルと設定の管理に関連するミューテーションについて詳しく説明します。これらの操作により、個々の Blocklet とノード自体の両方をプログラムでインストール、開始、停止、設定、アップグレードできます。

Blocklet のライフサイクル

これらのミューテーションは、インストールから削除までの Blocklet の基本的なライフサイクルを制御します。

installBlocklet

ストア、URL、ローカルファイルなど、さまざまなソースから新しい Blocklet をノードにインストールします。

パラメータ

  • input object (required) — installBlocklet ミューテーションの入力オブジェクト。
    • type string — インストールタイプ。「store」、「url」、または「upload」が可能です。
    • did string — インストールする Blocklet の DID(ストアからのインストールの場合は必須)。
    • storeUrl string — Blocklet Store の URL。
    • url string — Blocklet のメタファイルまたはバンドルへの URL(URL からのインストールの場合は必須)。
    • file Upload — アップロードする Blocklet バンドルファイル。
    • diffVersion string — アップグレード中に差分を適用する対象のバージョン。
    • deleteSet string[] — 差分ベースのアップグレード中に削除するファイルのリスト。
    • title string — 新しい Blocklet インスタンスのカスタムタイトル。
    • description string — 新しい Blocklet インスタンスのカスタム説明。
    • startImmediately boolean — true の場合、インストール後に Blocklet が自動的に開始されます。
    • downloadTokenList DownloadTokenInput[] — プライベートコンポーネント用のダウンロードトークンのリスト。
      • did string (required) — トークンが必要なコンポーネントの DID。
      • token string (required) — ダウンロードトークン。

例:ストアからのインストール

Install from Store

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function installMyBlocklet() {
  try {
    const { blocklet } = await client.installBlocklet({
      input: {
        did: 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf',
        storeUrl: 'https://store.blocklet.dev',
        startImmediately: true,
      },
    });
    console.log(`Blocklet '${blocklet.meta.title}' installed successfully.`);
  } catch (error) {
    console.error('Failed to install blocklet:', error);
  }
}

installMyBlocklet();

レスポンス例

Response

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf",
      "name": "@blocklet/did-wallet-adapter",
      "version": "1.16.111",
      "title": "DID Wallet Adapter"
    },
    "status": "installed",
    "appDid": "z12A1B...",
    "appPid": "z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf"
  }
}

この例では、公式ストアから DID Wallet Adapter Blocklet をインストールし、すぐに開始します。レスポンスには、新しくインストールされた Blocklet の完全な状態オブジェクトが含まれています。

startBlocklet

現在停止またはエラー状態にある Blocklet の1つ以上のコンポーネントを開始します。

パラメータ

  • input object (required) — startBlocklet ミューテーションの入力オブジェクト。
    • did string (required) — Blocklet のルート DID。
    • componentDids string[] — 開始するコンポーネント DID のオプションの配列。省略した場合、すべてのコンポーネントが開始されます。

Start a Blocklet

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function startMyBlocklet() {
  try {
    const { blocklet } = await client.startBlocklet({
      input: { did: blockletDid },
    });
    console.log(`Blocklet '${blocklet.meta.title}' is now ${blocklet.status}.`);
  } catch (error) {
    console.error('Failed to start blocklet:', error);
  }
}

startMyBlocklet();

レスポンス例

Response

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf"
    },
    "status": "running"
    // ... other properties
  }
}

stopBlocklet

Blocklet の実行中の1つ以上のコンポーネントを停止します。

パラメータ

  • input object (required) — stopBlocklet ミューテーションの入力オブジェクト。
    • did string (required) — Blocklet のルート DID。
    • componentDids string[] — 停止するコンポーネント DID のオプションの配列。省略した場合、実行中のすべてのコンポーネントが停止されます。

Stop a Blocklet

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function stopMyBlocklet() {
  try {
    const { blocklet } = await client.stopBlocklet({
      input: { did: blockletDid },
    });
    console.log(`Blocklet '${blocklet.meta.title}' is now ${blocklet.status}.`);
  } catch (error) {
    console.error('Failed to stop blocklet:', error);
  }
}

stopMyBlocklet();

レスポンス例

Response

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf"
    },
    "status": "stopped"
    // ... other properties
  }
}

reloadBlocklet

Blocklet の実行中の1つ以上のコンポーネントをリロードし、完全な再起動なしでコードの変更を適用します。これは多くの場合、再起動よりも高速です。

パラメータ

  • input object (required) — reloadBlocklet ミューテーションの入力オブジェクト。
    • did string (required) — Blocklet のルート DID。
    • componentDids string[] — リロードするコンポーネント DID のオプションの配列。省略した場合、リロード可能なすべてのコンポーネントがリロードされます。

Reload a Blocklet

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function reloadMyBlocklet() {
  try {
    const { blocklet } = await client.reloadBlocklet({
      input: { did: blockletDid },
    });
    console.log(`Blocklet '${blocklet.meta.title}' has been reloaded.`);
  } catch (error) {
    console.error('Failed to reload blocklet:', error);
  }
}

reloadMyBlocklet();

レスポンス例

Response

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf"
    },
    "status": "running"
    // ... other properties
  }
}

restartBlocklet

Blocklet の1つ以上のコンポーネントを再起動します。これは、それらを停止してから開始するのと同じです。

パラメータ

  • input object (required) — restartBlocklet ミューテーションの入力オブジェクト。
    • did string (required) — Blocklet のルート DID。
    • componentDids string[] — 再起動するコンポーネント DID のオプションの配列。省略した場合、すべてのコンポーネントが再起動されます。

Restart a Blocklet

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function restartMyBlocklet() {
  try {
    const { blocklet } = await client.restartBlocklet({
      input: { did: blockletDid },
    });
    console.log(`Blocklet '${blocklet.meta.title}' has been restarted.`);
  } catch (error) {
    console.error('Failed to restart blocklet:', error);
  }
}

restartMyBlocklet();

レスポンス例

Response

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf"
    },
    "status": "running"
    // ... other properties
  }
}

deleteBlocklet

Blocklet とそのコンポーネントをノードから永久に削除します。

パラメータ

  • input object (required) — deleteBlocklet ミューテーションの入力オブジェクト。
    • did string (required) — 削除する Blocklet のルート DID。
    • keepData boolean (default: false) — true の場合、Blocklet のデータディレクトリは保持されます。

Delete a Blocklet

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function deleteMyBlocklet() {
  try {
    await client.deleteBlocklet({ input: { did: blockletDid } });
    console.log('Blocklet deleted successfully.');
  } catch (error) {
    console.error('Failed to delete blocklet:', error);
  }
}

deleteMyBlocklet();

レスポンス例

Response

json
{
  "code": "ok",
  "blocklet": {
    "meta": {
      "did": "z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf"
    },
    "status": "deleted"
    // ... other properties
  }
}

cancelDownloadBlocklet

進行中の Blocklet のダウンロードをキャンセルします。

パラメータ

  • input object (required) — cancelDownloadBlocklet ミューテーションの入力オブジェクト。
    • did string (required) — ダウンロードをキャンセルする Blocklet のルート DID。

Cancel a Download

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function cancelDownload() {
  try {
    const { blocklet } = await client.cancelDownloadBlocklet({ input: { did: blockletDid } });
    console.log(`Download for blocklet '${blocklet.meta.title}' cancelled.`);
  } catch (error) {
    console.error('Failed to cancel download:', error);
  }
}

cancelDownload();

コンポーネント管理

これらのミューテーションは、インストール、アップグレード、設定変更など、Blocklet 内のコンポーネントを管理するために使用されます。

installComponent

既存の Blocklet に新しいコンポーネントをインストールします。

パラメータ

  • input object (required) — installComponent ミューテーションの入力オブジェクト。
    • rootDid string (required) — 親 Blocklet のルート DID。
    • mountPoint string (required) — コンポーネントがマウントされるパス。
    • url string — コンポーネントのメタファイルまたはバンドルへの URL。
    • did string — インストールするコンポーネントの DID。
    • title string — コンポーネントのカスタムタイトル。
    • configs ConfigEntryInput[] — コンポーネントの初期設定値の配列。

Install a Component

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const rootBlockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function installNewComponent() {
  try {
    const { blocklet } = await client.installComponent({
      input: {
        rootDid: rootBlockletDid,
        mountPoint: '/new-component',
        did: 'z8ibCciF3uW9i9f9tQ5A7n9e3s2W4f8Y6z1x',
        title: 'My New Component',
      },
    });
    console.log('Component installed successfully.');
  } catch (error) {
    console.error('Failed to install component:', error);
  }
}

installNewComponent();

deleteComponent

Blocklet からコンポーネントを永久に削除します。

パラメータ

  • input object (required) — deleteComponent ミューテーションの入力オブジェクト。
    • did string (required) — 削除するコンポーネントの DID。
    • rootDid string (required) — 親 Blocklet のルート DID。
    • keepData boolean (default: false) — true の場合、コンポーネントのデータは保持されます。

Delete a Component

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const rootBlockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';
const componentDid = 'z8ibCciF3uW9i9f9tQ5A7n9e3s2W4f8Y6z1x';

async function deleteMyComponent() {
  try {
    await client.deleteComponent({
      input: { did: componentDid, rootDid: rootBlockletDid },
    });
    console.log('Component deleted successfully.');
  } catch (error) {
    console.error('Failed to delete component:', error);
  }
}

deleteMyComponent();

checkComponentsForUpdates

Blocklet 内のコンポーネントで利用可能なアップデートを確認します。

パラメータ

  • input object (required) — checkComponentsForUpdates ミューテーションの入力オブジェクト。
    • did string (required) — アップデートを確認する Blocklet のルート DID。

戻り値

  • preUpdateInfo object — 利用可能なアップデートに関する情報。
    • updateId string — このアップデートセッションの一意の ID。
    • updateList UpdateList[] — 利用可能なアップデートがあるコンポーネントのリスト。
      • id string — コンポーネントの DID。
      • meta BlockletMeta — 新しいバージョンのメタデータ。

Check for Updates

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function checkUpdates() {
  try {
    const { preUpdateInfo } = await client.checkComponentsForUpdates({ input: { did: blockletDid } });
    if (preUpdateInfo.updateList.length > 0) {
      console.log('Updates available:', preUpdateInfo.updateList);
    } else {
      console.log('All components are up to date.');
    }
  } catch (error) {
    console.error('Failed to check for updates:', error);
  }
}

checkUpdates();

upgradeComponents

checkComponentsForUpdates からの updateId に基づいて、選択されたコンポーネントを最新バージョンにアップグレードします。

パラメータ

  • input object (required) — upgradeComponents ミューテーションの入力オブジェクト。
    • updateId string (required) — checkComponentsForUpdates からのアップデートセッション ID。
    • rootDid string (required) — Blocklet のルート DID。
    • selectedComponents string[] (required) — アップグレードするコンポーネント DID の配列。

Upgrade Components

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const updateId = '...'; // from checkComponentsForUpdates
const rootDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';
const componentsToUpgrade = ['z8ibCciF3uW9i9f9tQ5A7n9e3s2W4f8Y6z1x'];

async function performUpgrade() {
  try {
    await client.upgradeComponents({
      input: {
        updateId,
        rootDid,
        selectedComponents: componentsToUpgrade,
      },
    });
    console.log('Components upgraded successfully.');
  } catch (error) {
    console.error('Failed to upgrade components:', error);
  }
}

performUpgrade();

updateComponentTitle

Blocklet 内の特定のコンポーネントの表示タイトルを更新します。

パラメータ

  • did string (required) — 更新するコンポーネントの DID。
  • rootDid string (required) — 親 Blocklet のルート DID。
  • title string (required) — コンポーネントの新しいタイトル。

updateComponentMountPoint

Blocklet 内の特定のコンポーネントの URL パス(マウントポイント)を変更します。

パラメータ

  • did string (required) — 更新するコンポーネントの DID。
  • rootDid string (required) — 親 Blocklet のルート DID。
  • mountPoint string (required) — コンポーネントの新しいマウントポイント(例:'/new-path')。

設定

これらのミューテーションは、Blocklet とノードの動的な設定を処理します。

configBlocklet

Blocklet またはそのコンポーネントの1つの設定(環境変数)を更新します。

パラメータ

  • input object (required) — configBlocklet ミューテーションの入力オブジェクト。
    • did string[] (required) — ルート DID と、オプションでコンポーネント DID を含む配列。
    • configs ConfigEntryInput[] (required) — 更新する設定オブジェクトの配列。
      • key string (required) — 環境変数名。
      • value string (required) — 変数の新しい値。

Configure a Blocklet

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();
const blockletDid = 'z8ia1posN9ZcxGA2MAnsl62aT82gS7f5kCtUf';

async function updateConfiguration() {
  try {
    await client.configBlocklet({
      input: {
        did: [blockletDid],
        configs: [
          { key: 'API_ENDPOINT', value: 'https://api.new.com' },
          { key: 'API_KEY', value: 'new-secret-key' },
        ],
      },
    });
    console.log('Blocklet configuration updated.');
  } catch (error) {
    console.error('Failed to configure blocklet:', error);
  }
}

updateConfiguration();

updateBlockletSettings

ゲートウェイポリシー、招待設定、AI サービス設定など、特定の Blocklet のさまざまな設定を更新します。

パラメータ

  • input object (required) — updateBlockletSettings ミューテーションの入力オブジェクト。
    • did string (required) — 更新する Blocklet の DID。
    • enableSessionHardening boolean — セキュリティ強化のためセッション強化を有効または無効にします。
    • invite InviteSettingsInput — ユーザー招待に関連する設定。
      • enabled boolean — 招待機能を有効または無効にします。
    • gateway BlockletGatewayInput — レート制限やセキュリティポリシーを含む、Blocklet のゲートウェイの設定。
    • aigne AigneConfigInput — AIGNE サービス統合の設定。

updateAutoBackup

Blocklet の自動バックアップ機能を有効または無効にします。

パラメータ

  • input object (required) — updateAutoBackup ミューテーションの入力オブジェクト。
    • did string (required) — Blocklet の DID。
    • autoBackup AutoBackupInput (required) — 自動バックアップ設定。
      • enabled boolean (required) — 自動バックアップを有効にする場合は true、無効にする場合は false に設定します。

updateAutoCheckUpdate

Blocklet のアップデート自動確認機能を有効または無効にします。

パラメータ

  • input object (required) — updateAutoCheckUpdate ミューテーションの入力オブジェクト。
    • did string (required) — Blocklet の DID。
    • autoCheckUpdate AutoCheckUpdateInput (required) — アップデート自動確認設定。
      • enabled boolean (required) — 自動アップデート確認を有効にする場合は true、無効にする場合は false に設定します。

ノード管理

これらのミューテーションは、Blocklet Server ノード自体を管理するために使用されます。

updateNodeInfo

Blocklet Server ノードの一般情報と設定を更新します。

パラメータ

  • input object (required) — updateNodeInfo ミューテーションの入力オブジェクト。
    • name string — ノードの新しい名前。
    • description string — ノードの新しい説明。
    • autoUpgrade boolean — ノードの自動アップグレードを有効または無効にします。
    • enableWelcomePage boolean — ウェルカムページを有効または無効にします。
    • webWalletUrl string — ノードで使用するウェブウォレットの URL。
    • enableBetaRelease boolean — アップデートのベータリリースチャンネルを有効または無効にします。

Configure Node

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function configureNode() {
  try {
    const { info } = await client.updateNodeInfo({
      input: {
        name: 'My Production Node',
        autoUpgrade: true,
      },
    });
    console.log(`Node name updated to: ${info.name}`);
  } catch (error) {
    console.error('Failed to update node info:', error);
  }
}

configureNode();

レスポンス例

Response

json
{
  "code": "ok",
  "info": {
    "did": "z12A1B...",
    "name": "My Production Node",
    "autoUpgrade": true
    // ... other properties
  }
}

upgradeNodeVersion

Blocklet Server の利用可能な次のバージョンへのアップグレードを開始します。

パラメータ

  • input object — upgradeNodeVersion ミューテーションの入力オブジェクト。
    • sessionId string — アップグレードプロセスを追跡するためのオプションのセッション ID。

Upgrade Node

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function upgradeMyNode() {
  try {
    const { sessionId } = await client.upgradeNodeVersion({});
    console.log(`Node upgrade started with session ID: ${sessionId}`);
  } catch (error) {
    console.error('Failed to start node upgrade:', error);
  }
}

upgradeMyNode();

レスポンス例

Response

json
{
  "code": "ok",
  "sessionId": "unique-session-id-for-upgrade"
}

restartServer

Blocklet Server デーモンを再起動します。これにより、実行中のすべての Blocklet とサービスが一時的に中断されます。

Restart Server

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function restartMyServer() {
  try {
    const { sessionId } = await client.restartServer();
    console.log(`Server restart initiated with session ID: ${sessionId}`);
  } catch (error) {
    console.error('Failed to restart server:', error);
  }
}

restartMyServer();

レスポンス例

Response

json
{
  "code": "ok",
  "sessionId": "unique-session-id-for-restart"
}

resetNode

ノードの設定とデータのさまざまな部分をリセットします。これは破壊的な操作であり、注意して使用する必要があります。

パラメータ

  • input object (required) — resetNode ミューテーションの入力オブジェクト。
    • owner boolean — ノードの所有者をリセットします。
    • blocklets boolean — インストールされているすべての Blocklet を削除します。
    • webhooks boolean — すべての Webhook を削除します。
    • certificates boolean — すべての SSL 証明書を削除します。
    • accessKeys boolean — すべてのアクセスキーを削除します。
    • routingRules boolean — すべてのルーティングルールを削除します。
    • users boolean — 所有者を除くすべてのユーザーを削除します。
    • invitations boolean — 保留中のすべての招待を削除します。

Reset Node Data

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function resetNodeData() {
  try {
    await client.resetNode({
      input: {
        blocklets: true,
        users: true,
      },
    });
    console.log('Node blocklets and users have been reset.');
  } catch (error) {
    console.error('Failed to reset node:', error);
  }
}

resetNodeData();

レスポンス例

Response

json
{
  "code": "ok"
}

restartAllContainers

Blocklet Server によって管理されている実行中のすべての Docker コンテナを再起動します。これは、Docker 環境に影響を与えるシステムレベルの変更を適用するのに役立ちます。

Restart All Containers

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function restartContainers() {
  try {
    const { sessionId } = await client.restartAllContainers();
    console.log(`Restarting all containers with session ID: ${sessionId}`);
  } catch (error) {
    console.error('Failed to restart containers:', error);
  }
}

restartContainers();

レスポンス例

Response

json
{
  "code": "ok",
  "sessionId": "unique-session-id-for-restart-all"
}