Skip to content

ワークフローDSLリファレンス

TriggerfishのワークフローエンジンにおけるCNCF Serverless Workflow DSL 1.0の完全なリファレンスです。 使用ガイドと例についてはワークフローを参照してください。

ドキュメント構造

すべてのワークフローYAMLにはトップレベルのdocumentフィールドとdoブロックが必要です。

yaml
document:
  dsl: "1.0"
  namespace: my-namespace
  name: my-workflow
  version: "1.0.0"            # オプション
  description: "何をするか"   # オプション
classification_ceiling: INTERNAL  # オプション
input:                            # オプション
  from: "${ . }"
output:                           # オプション
  from:
    result: "${ .final_step }"
timeout:                          # オプション
  after: PT5M
do:
  - task_name:
      # タスク定義

ドキュメントメタデータ

フィールド必須説明
dslstringはいDSLバージョン。"1.0"である必要がある
namespacestringはい論理的なグループ(例:opsreports
namestringはい名前空間内の一意のワークフロー名
versionstringいいえセマンティックバージョン文字列
descriptionstringいいえ人間が読める説明

トップレベルフィールド

フィールド必須説明
documentobjectはいドキュメントメタデータ(上記参照)
doarrayはいタスクエントリーの順序付きリスト
classification_ceilingstringいいえ実行中の最大許容セッションTaint
inputtransformいいえワークフロー入力に適用される変換
outputtransformいいえワークフロー出力に適用される変換
timeoutobjectいいえワークフローレベルのタイムアウト(after: <ISO 8601>
metadataobjectいいえ任意のキーバリューメタデータ

タスクエントリーフォーマット

doブロックの各エントリーは単一キーのオブジェクトです。キーがタスク名で、値がタスク定義です。

yaml
do:
  - my_task_name:
      call: http
      with:
        endpoint: "https://example.com"

タスク名は同じdoブロック内で一意である必要があります。タスクの結果はタスク名のもとに データコンテキストに保存されます。


共通タスクフィールド

すべてのタスクタイプはこれらのオプションフィールドを共有します:

フィールド説明
ifstring式の条件。偽の場合、タスクはスキップされる。
inputtransformタスク実行前に適用される変換
outputtransformタスク実行後に適用される変換
timeoutobjectタスクタイムアウト:after: <ISO 8601 duration>
thenstringフローディレクティブ:continueend、またはタスク名
metadataobject任意のキーバリューメタデータ。self-healingが有効の場合、descriptionexpectsproducesが必要。

Self-Healing設定

metadata.triggerfish.self_healingブロックはワークフローの自律的な修復エージェントを有効にします。 完全なガイドはSelf-Healingを参照してください。

yaml
metadata:
  triggerfish:
    self_healing:
      enabled: true
      retry_budget: 3
      approval_required: true
      pause_on_intervention: blocking_only
      pause_timeout_seconds: 300
      pause_timeout_policy: escalate_and_halt
      notify_on: [intervention, escalation, approval_required]
フィールド必須デフォルト説明
enabledbooleanはい修復エージェントを有効にする
retry_budgetnumberいいえ3最大介入試行回数
approval_requiredbooleanいいえtrue修正に人間の承認を要求する
pause_on_interventionstringいいえ"blocking_only"always | never | blocking_only
pause_timeout_secondsnumberいいえ300タイムアウトポリシーが発火するまでの秒数
pause_timeout_policystringいいえ"escalate_and_halt"escalate_and_halt | escalate_and_skip | escalate_and_fail
notify_onarrayいいえ[]intervention | escalation | approval_required

ステップメタデータ(Self-Healing有効時に必須)

self_healing.enabledtrueの場合、すべてのタスクはこれらのメタデータフィールドを含む必要があります。 パーサーはそのいずれかが欠けているワークフローを拒否します。

フィールド説明
descriptionstringステップが何をするか、なぜするか
expectsstring必要な入力形状または前提条件
producesstring生成される出力形状
yaml
- fetch-invoices:
    call: http
    with:
      endpoint: "https://api.example.com/invoices"
    metadata:
      description: "請求APIから未払い請求書を取得する"
      expects: "APIが利用可能で、JSON配列を返す"
      produces: "{id, amount, status}オブジェクトの配列"

タスクタイプ

call

HTTPエンドポイントまたはTriggerfishサービスへのディスパッチ。

フィールド必須説明
callstringはい呼び出しタイプ(以下のディスパッチテーブル参照)
withobjectいいえターゲットツールに渡される引数
yaml
- fetch:
    call: http
    with:
      endpoint: "https://api.example.com/data"
      method: GET

run

シェルコマンド、インラインスクリプト、またはサブワークフローを実行する。runフィールドには shellscriptworkflowのいずれか1つが含まれる必要があります。

Shell:

フィールド必須説明
run.shell.commandstringはい実行するシェルコマンド
run.shell.argumentsobjectいいえ名前付き引数
run.shell.environmentobjectいいえ環境変数

Script:

フィールド必須説明
run.script.languagestringはいスクリプト言語
run.script.codestringはいインラインスクリプトコード
run.script.argumentsobjectいいえ名前付き引数

サブワークフロー:

フィールド必須説明
run.workflow.namestringはい保存されたワークフローの名前
run.workflow.versionstringいいえバージョン制約
run.workflow.inputobjectいいえサブワークフローの入力データ

set

データコンテキストに値を割り当てる。

フィールド必須説明
setobjectはい割り当てるキーバリューペア。値は式にできる。
yaml
- prepare:
    set:
      full_name: "${ .first_name } ${ .last_name }"
      count: 0

switch

条件分岐。switchフィールドはcaseエントリーの配列です。各caseはキーがcase名の 単一キーのオブジェクトです。

Caseフィールド必須説明
whenstringいいえ式の条件。デフォルトケースには省略する。
thenstringはいフローディレクティブ:continueend、またはタスク名

Caseは順番に評価されます。最初に真のwhen(またはwhenなし)があるcaseが選択されます。

yaml
- route:
    switch:
      - high:
          when: "${ .priority > 7 }"
          then: alert_team
      - low:
          then: log_only

for

コレクションをイテレートする。

フィールド必須説明
for.eachstringはい現在のアイテムの変数名
for.instringはいコレクションを参照する式
for.atstringいいえ現在のインデックスの変数名
doarrayはい各イテレーションで実行されるネストされたタスクリスト
yaml
- process_all:
    for:
      each: item
      in: "${ .items }"
      at: idx
    do:
      - handle:
          call: triggerfish:llm
          with:
            task: "Process item ${ .idx }: ${ .item.name }"

raise

構造化されたエラーでワークフローを停止する。

フィールド必須説明
raise.error.statusnumberはいHTTPスタイルのステータスコード
raise.error.typestringはいエラータイプURI/文字列
raise.error.titlestringはい人間が読めるタイトル
raise.error.detailstringいいえ詳細なエラーメッセージ
yaml
- abort:
    raise:
      error:
        status: 422
        type: "validation-error"
        title: "Invalid input"
        detail: "Field 'email' is required"

emit

ワークフローイベントを記録する。イベントはrun結果に保存されます。

フィールド必須説明
emit.event.typestringはいイベントタイプ識別子
emit.event.sourcestringいいえイベントソースURI
emit.event.dataobjectいいえイベントペイロード
yaml
- record:
    emit:
      event:
        type: "step.completed"
        source: "workflow/pipeline"
        data:
          step: "transform"
          duration_ms: 1200

wait

指定された時間、実行を一時停止する。

フィールド必須説明
waitstringはいISO 8601 duration(例:PT5S

一般的なduration:PT1S(1秒)、PT30S(30秒)、PT1M(1分)、PT5M(5分)。


Callディスパッチテーブル

callフィールドの値を実際に呼び出されるTriggerfishツールにマッピングします。

call呼び出されるツール必須のwith:フィールド
httpweb_fetchendpointまたはurl;オプション:methodheadersbody
triggerfish:llmllm_taskpromptまたはtask;オプション:toolsmax_iterations
triggerfish:agentsubagentpromptまたはtask;オプション:toolsagent
triggerfish:memorymemory_*operationsave/search/get/list/delete)+ 操作フィールド
triggerfish:web_searchweb_searchquery;オプション:max_results
triggerfish:web_fetchweb_fetchurl;オプション:methodheadersbody
triggerfish:mcpmcp__<server>__<tool>servertool;オプション:arguments
triggerfish:messagesend_messagechanneltext;オプション:recipient

サポートされていないCNCFの呼び出しタイプ(grpcopenapiasyncapi)はエラーを返します。


式の構文

式は${ }で区切られ、ワークフローデータコンテキストに対して解決されます。

ドットパス解決

構文説明結果の例
${ . }データコンテキスト全体{...}
${ .key }トップレベルキー"value"
${ .a.b.c }ネストされたキー"deep value"
${ .items[0] }配列インデックス{...最初のアイテム...}
${ .items[0].name }配列インデックスからキー"first"

先頭のドット(または$.)はコンテキストルートにパスをアンカーします。undefinedに解決されるパスは、 補間されるとき空文字列を生成し、スタンドアロン値として使用されるときundefinedを生成します。

演算子

タイプ演算子
比較==!=><>=<=${ .count > 0 }
算術+-*/%${ .price * .quantity }

比較式はtrueまたはfalseを返します。算術式は数値を返します (どちらかのオペランドが数値でない場合、またはゼロ除算の場合はundefined)。

リテラル

タイプ
String"hello"'hello'
Number423.14-1
Booleantruefalse
Nullnull

補間モード

単一式(生の値): 文字列全体が1つの${ }式の場合、生の型付き値が返されます (数値、ブール値、オブジェクト、配列)。

yaml
count: "${ .items.length }"  # 文字列ではなく数値を返す

混合/複数式(文字列): ${ }式がテキストと混在しているか、複数の式がある場合、 結果は常に文字列です。

yaml
message: "Found ${ .count } items in ${ .category }"  # 文字列を返す

真偽値

if:条件とswitchwhen:式では、JavaScriptスタイルの真偽値を使用して値が評価されます:

真?
trueはい
非ゼロの数値はい
非空の文字列はい
非空の配列はい
オブジェクトはい
false0""nullundefined、空の配列いいえ

Input/Output変換

変換はタスクへのデータとタスクからのデータの形状を整えます。

input

タスク実行前に適用されます。タスクのデータコンテキストの見え方を置き換えます。

yaml
- step:
    call: http
    input:
      from: "${ .config }"       # タスクはconfigオブジェクトのみを見る
    with:
      endpoint: "${ .api_url }"  # configオブジェクトに対して解決される

文字列としてのfrom 入力コンテキスト全体を置き換える式。

オブジェクトとしてのfrom 新しいキーを式にマッピングする:

yaml
input:
  from:
    url: "${ .config.api_url }"
    token: "${ .secrets.api_token }"

output

タスク実行後に適用されます。タスク名のもとにコンテキストに保存する前に結果を整形します。

yaml
- fetch:
    call: http
    output:
      from:
        items: "${ .fetch.data.results }"
        count: "${ .fetch.data.total }"

フローディレクティブ

任意のタスクのthenフィールドはタスク完了後の実行フローを制御します。

動作
continueシーケンス内の次のタスクに進む(デフォルト)
endワークフローを停止する。ステータス:completed
<タスク名>指定されたタスクにジャンプする。タスクは同じdoブロックに存在する必要がある。

Switchのcaseもthenフィールドでフローディレクティブを使用します。


分類上限

実行中の最大セッションTaintを制限するオプションフィールド。

yaml
classification_ceiling: INTERNAL
意味
PUBLIC分類されたデータへのアクセスがあるとワークフローが停止する
INTERNALPUBLICINTERNALデータを許可する
CONFIDENTIALCONFIDENTIALまで許可する
RESTRICTEDすべての分類レベルを許可する
(省略)上限なし

上限はすべてのタスクの前にチェックされます。セッションTaintが上限を超えてエスカレートした場合 (例えば、前のタスクが分類されたデータにアクセスした場合)、ワークフローはステータスfailedと エラーWorkflow classification ceiling breachedで停止します。


ストレージ

ワークフロー定義

キープレフィックスworkflows:{name}で保存されます。各保存されたレコードには:

フィールド説明
namestringワークフロー名
yamlstring生のYAML定義
classificationstring保存時の分類レベル
savedAtstringISO 8601タイムスタンプ
descriptionstringオプションの説明

実行履歴

キープレフィックスworkflow-runs:{runId}で保存されます。各runレコードには:

フィールド説明
runIdstringこの実行のUUID
workflowNamestring実行されたワークフローの名前
statusstringcompletedfailed、またはcancelled
outputobject最終データコンテキスト(内部キーはフィルタリングされる)
eventsarray実行中に送出されたイベント
errorstringエラーメッセージ(ステータスがfailedの場合)
startedAtstringISO 8601タイムスタンプ
completedAtstringISO 8601タイムスタンプ
taskCountnumberワークフロー内のタスク数
classificationstring完了時のセッションTaint

制限

制限説明
サブワークフローの最大深度5run.workflow呼び出しの最大ネスト
実行履歴のデフォルト制限10workflow_historyのデフォルトlimit

実行ステータス

ステータス説明
pendingワークフローが作成されたが開始されていない
runningワークフローが現在実行中
completedすべてのタスクが正常に完了した(またはthen: end
failedタスクが失敗した、raiseが実行された、または上限に達した
cancelled実行が外部からキャンセルされた