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はい論理的なグループ(例:ops、reports)
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フローディレクティブ:continue、end、またはタスク名
metadataobject任意のキーバリューメタデータ。self-healingが有効の場合、description、expects、producesが必要。

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.enabledがtrueの場合、すべてのタスクはこれらのメタデータフィールドを含む必要があります。 パーサーはそのいずれかが欠けているワークフローを拒否します。

フィールド型説明
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フィールドには shell、script、workflowのいずれか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はいフローディレクティブ:continue、end、またはタスク名

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;オプション:method、headers、body
triggerfish:llmllm_taskpromptまたはtask;オプション:tools、max_iterations
triggerfish:agentsubagentpromptまたはtask;オプション:tools、agent
triggerfish:memorymemory_*operation(save/search/get/list/delete)+ 操作フィールド
triggerfish:web_searchweb_searchquery;オプション:max_results
triggerfish:web_fetchweb_fetchurl;オプション:method、headers、body
triggerfish:mcpmcp__<server>__<tool>server、tool;オプション:arguments
triggerfish:messagesend_messagechannel、text;オプション:recipient

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


式の構文 ​

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

ドットパス解決 ​

構文説明結果の例
${ . }データコンテキスト全体{...}
${ .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'
Number42、3.14、-1
Booleantrue、false
Nullnull

補間モード ​

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

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

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

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

真偽値 ​

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

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

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分類されたデータへのアクセスがあるとワークフローが停止する
INTERNALPUBLICとINTERNALデータを許可する
CONFIDENTIALCONFIDENTIALまで許可する
RESTRICTEDすべての分類レベルを許可する
(省略)上限なし

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


ストレージ ​

ワークフロー定義 ​

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

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

実行履歴 ​

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

フィールド型説明
runIdstringこの実行のUUID
workflowNamestring実行されたワークフローの名前
statusstringcompleted、failed、または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実行が外部からキャンセルされた