mcpField
D
dbos-typescript

dbos-typescript

github.com/dbos-inc開発19632 回インストール今日更新
リポジトリ

dbos-typescript について

DBOSの永続ワークフローで耐障害性の高いTypeScriptアプリを構築する開発者向けのベストプラクティス集です。設定、ワークフロー、キュー、通信、テスト、DBOS 4.xからの移行指針を扱います。

主な機能

  1. 01DBOS TypeScript 5.xの指針
  2. 02ワークフローとステップの設計
  3. 03キューと並行処理の実践
  4. 04ワークフロー通信パターン
  5. 05テストとアップグレードの指針

活用シーン

  1. 01TypeScriptアプリへのDBOS導入
  2. 02永続ワークフローとステップの設計
  3. 03キューによる並行処理の制御
  4. 04DBOS 4.xを使うプロジェクトのアップグレード

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dbos-inc/agent-skills --skill dbos-typescript

インストール後、Claude Code で/dbos-typescriptを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
references/
_sections.md
advanced-patching.md
advanced-serialization.md
advanced-shared-database.md
advanced-upgrading.md
advanced-versioning.md
client-enqueue.md
client-setup.md
comm-events.md
comm-messages.md
comm-streaming.md
lifecycle-config.md
lifecycle-express.md
pattern-classes.md
pattern-debouncing.md
pattern-idempotency.md
pattern-scheduled.md
pattern-sleep.md
queue-basics.md
queue-concurrency.md
queue-deduplication.md
queue-delay.md
queue-listening.md
queue-management.md
queue-partitioning.md
queue-rate-limiting.md
step-basics.md
step-retries.md
step-timeouts.md

詳細

DBOS TypeScript のベストプラクティス

DBOS の永続ワークフローを使用して、信頼性と耐障害性に優れた TypeScript アプリケーションを構築するためのガイドです。DBOS TypeScript 5.x(@dbos-inc/dbos-sdk)が対象です。プロジェクトが 4.x を使用している場合、または削除された API(new WorkflowQueue、@DBOS.scheduled/DBOS.registerScheduled、partitionQueue、priorityEnabled、@DBOS.requiredRole、dbos-config.yaml ベースの設定)を使用している場合は、references/advanced-upgrading.md を参照してください。

適用する場面

次のような場合に、これらのガイドラインを参照してください。

  • 既存の TypeScript コードに DBOS を追加するとき
  • ワークフローとステップを作成するとき
  • 同時実行制御にキューを使用するとき
  • ワークフロー間の通信(イベント、メッセージ、ストリーム)を実装するとき
  • DBOS アプリケーションを設定して起動するとき
  • 外部アプリケーションから DBOSClient を使用するとき
  • DBOS アプリケーションをテストするとき

優先度別のルールカテゴリ

優先度カテゴリ影響度プレフィックス
1ライフサイクルCRITICALlifecycle-
2ワークフローCRITICALworkflow-
3ステップHIGHstep-
4キューHIGHqueue-
5通信MEDIUMcomm-
6パターンMEDIUMpattern-
7テストLOW-MEDIUMtest-
8クライアントMEDIUMclient-
9高度な機能LOWadvanced-

重要なルール

インストール

常に DBOS の最新バージョンをインストールしてください。

npm install @dbos-inc/dbos-sdk@latest
DBOS の設定と起動

DBOS アプリケーションでは、ワークフローを実行する前に DBOS を設定して起動する必要があります。

import { DBOS } from "@dbos-inc/dbos-sdk";

async function main() {
  DBOS.setConfig({
    name: "my-app",
    applicationVersion: "0.1.0",
    systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,
  });
  await DBOS.launch();
  await myWorkflow();
}

main().catch(console.log);

新しいアプリケーションを作成するときは、applicationVersion を "0.1.0" に設定してください。省略すると、DBOS はワークフローのソースコードから不透明なハッシュを生成します。既存のアプリケーションを編集するときは、設定済みのバージョンを変更しないでください。変更はデプロイに関する判断となります(references/advanced-versioning.md を参照)。

ワークフローとステップの構成

ワークフローはステップで構成されます。複雑な処理を行う関数や外部サービスにアクセスする関数は、DBOS.runStep を使用してステップとして実行する必要があります。

import { DBOS } from "@dbos-inc/dbos-sdk";

async function fetchData() {
  return await fetch("https://api.example.com").then(r => r.json());
}

async function myWorkflowFn() {
  const result = await DBOS.runStep(fetchData, { name: "fetchData" });
  return result;
}
const myWorkflow = DBOS.registerWorkflow(myWorkflowFn);
主な制約
  • ステップ内からワークフローを呼び出したり、開始したり、キューに登録したりしないでください
  • ワークフローの開始にスレッドや制御されていない並行処理を使用しないでください。DBOS.startWorkflow またはキューを使用してください
  • ワークフローは決定論的である必要があります。非決定論的な処理はステップ内で行ってください
  • ワークフローやステップからグローバル変数を変更しないでください
  • キュー(DBOS.registerQueue)の登録とスケジュール(DBOS.applySchedules/DBOS.createSchedule)の作成は、DBOS.launch() の後に行ってください。これらはシステムデータベースに保存されます
  • ステップが永続化されるのは、ワークフローから呼び出された場合のみです。ワークフロー外では通常の関数呼び出しとして実行されます
  • DBOS Conductor(conductorKey、または DBOS Cloud へのデプロイ)に接続するには、@dbos-inc/dbos-enterprise を @dbos-inc/dbos-sdk と同じマイナーバージョンでインストールする必要があります

使用方法

詳しい説明と例については、個別のルールファイルを参照してください。

references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md
references/advanced-upgrading.md
references/advanced-shared-database.md

複数のアプリケーションで 1 つのシステムデータベースを共有する場合は、必ず DBOSClient に applicationName を設定し、references/advanced-shared-database.md を参照してください。

参考資料

コメント