メインコンテンツへ移動

mastra.schedules

追加バージョン: @mastra/core@1.50.0

mastra.schedules は、永続化された cron schedules の CRUD サービスです。Agent または Workflow の schedules を作成、一覧取得、更新、一時停止、再開、手動実行、削除できます。

使用パターンと概念については、Schedulesを参照してください。

使用例
使用例への直接リンク

Agent schedule を作成します。

src/mastra/schedules.ts
const schedule = await mastra.schedules.create({
agentId: 'pinger',
cron: '0 * * * *',
prompt: 'Give me a status update.',
})

Workflow schedule を作成します。

src/mastra/schedules.ts
const schedule = await mastra.schedules.create({
workflowId: 'daily-report',
cron: '0 9 * * *',
inputData: { reportType: 'summary' },
})

Schedules には、schedules ドメインを実装したストレージアダプターが必要です。対応するアダプターには、@mastra/libsql@mastra/pg@mastra/mysql@mastra/mongodb@mastra/convex@mastra/spanner があります。

メソッド
メソッドへの直接リンク

Schedules の作成
Schedules の作成への直接リンク

create(input)
createinputへの直接リンク

Agent または Workflow の schedule を作成します。Agent schedule を作成するには agentId、Workflow schedule を作成するには workflowId を渡します。

const schedule = await mastra.schedules.create({
agentId: 'pinger',
cron: '0 * * * *',
prompt: 'Give me a status update.',
})
Agent schedule の入力
Agent schedule の入力への直接リンク

id?:

string
省略可能な固定 schedule ID。値は agent_<slug> に正規化されます。省略すると、Mastra が agent_<uuid> ID を生成します。

agentId:

string
schedule の実行ごとに起動する Agent の ID。

cron:

string
schedule の cron 式。5、6、7パートの cron 式と Croner のニックネームを使用できます。

prompt:

string
schedule の実行ごとに Agent へ送信するプロンプト。

name?:

string
同じ Agent またはスレッド上の複数の schedules を区別する自由形式のラベル。

timezone?:

string
cron の実行時刻の解決に使用する IANA タイムゾーン(America/New_York など)。

threadId?:

string
スケジュールされた signal を受信するスレッド。省略すると、各実行は agent.generate() によりスレッドなしで動作します。

resourceId?:

string
スレッド付き schedules のリソース ID。threadId を設定する場合は必須です。

signalType?:

AgentSignalType
スレッド付き schedule の実行に使用する signal タイプ。デフォルトは notification です。

tagName?:

string
スケジュールされた signal のレンダリングに使用する XML タグ名。デフォルトは schedule です。

attributes?:

AgentSignalAttributes
スケジュールされた signal の XML タグにレンダリングする属性。

providerOptions?:

Record<string, unknown>
実行ごとに schedule の signal payload へマージする、JSON で安全に扱える Provider オプション。

ifActive?:

ScheduleIfActive
対象スレッドがストリーミング中の場合の動作。threadId が必要です。

ifIdle?:

ScheduleIfIdle
対象スレッドがアイドル状態の場合の動作。threadId が必要です。

metadata?:

Record<string, unknown>
schedule の行とともに保存する任意のメタデータ。

status?:

'active' | 'paused'
= 'active'
初期ライフサイクルステータス。デフォルトは active です。
Workflow schedule の入力
Workflow schedule の入力への直接リンク

id?:

string
省略可能な固定 schedule ID。値は schedule_<slug> に正規化されます。省略すると、Mastra が schedule_<uuid> ID を生成します。

workflowId:

string
schedule の実行ごとに開始する Workflow の ID。

cron:

string
schedule の cron 式。5、6、7パートの cron 式と Croner のニックネームを使用できます。

timezone?:

string
cron の実行時刻の解決に使用する IANA タイムゾーン。

inputData?:

unknown
Workflow の実行に渡す入力データ。

initialState?:

unknown
スケジュールされた実行の Workflow 初期状態。

requestContext?:

Record<string, unknown>
Workflow の実行に渡すリクエストコンテキスト。

metadata?:

Record<string, unknown>
schedule の行とともに保存する任意のメタデータ。

status?:

'active' | 'paused'
= 'active'
初期ライフサイクルステータス。デフォルトは active です。

Schedules の取得
Schedules の取得への直接リンク

get(id)
getidへの直接リンク

ID で schedule を取得します。プレフィックスのない Agent schedule ID も、正規化された agent_<slug> 形式として解決されます。

const schedule = await mastra.schedules.get('pinger')

list(filter?)
listfilterへの直接リンク

Schedules の一覧を取得します。filter を指定しない場合、Agent と Workflow の schedules を返します。

const schedules = await mastra.schedules.list({
agentId: 'pinger',
status: 'active',
})

filter?:

ListSchedulesFilter
一覧取得処理に使用する省略可能な filter。
ListSchedulesFilter

agentId?:

string
この Agent の Agent schedules のみを返します。

workflowId?:

string
この Workflow の Workflow schedules のみを返します。

threadId?:

string
このスレッドの Agent schedules のみを返します。

resourceId?:

string
このリソースの Agent schedules のみを返します。

name?:

string
このラベルを持つ Agent schedules のみを返します。

status?:

'active' | 'paused'
このステータスの schedules のみを返します。

Schedules の更新
Schedules の更新への直接リンク

update(id, patch)
updateid-patchへの直接リンク

Schedule を更新します。cron または timezone を変更すると、次回の実行時刻が再計算されます。statuspaused から active に更新した場合も、次回の実行時刻が再計算されます。

const updated = await mastra.schedules.update('pinger', {
cron: '*/30 * * * *',
prompt: 'Give me a status update every 30 minutes.',
})

Agent schedule の patch では、crontimezonepromptnamesignalTypetagNameattributesproviderOptionsifActiveifIdlemetadatastatus を更新できます。threadIdresourceId は patch できません。対象スレッドを変更する場合は、新しい schedule を作成してください。

Workflow schedule の patch では、crontimezoneinputDatainitialStaterequestContextmetadatastatus を更新できます。promptsignalTypeifIdle など Agent 専用の patch フィールドを Workflow schedule に指定するとエラーがスローされます。

ライフサイクル
ライフサイクルへの直接リンク

pause(id)
pauseidへの直接リンク

Schedule を一時停止します。一時停止は永続的かつ冪等です。

const paused = await mastra.schedules.pause('pinger')

resume(id)
resumeidへの直接リンク

一時停止中の schedule を再開し、現在時刻から次回の実行時刻を再計算します。

const active = await mastra.schedules.resume('pinger')

run(id)
runidへの直接リンク

cron の実行間隔を変更せず、schedule を即座に1回実行します。

const run = await mastra.schedules.run('pinger')

Agent schedules の claimIdmanual_<scheduleId>_<timestamp> 形式です。Workflow schedules の claimIdsched_<scheduleId>_<timestamp> 形式で、Workflow の run ID として再利用されます。

delete(id)
deleteidへの直接リンク

Schedule を削除します。存在しない schedule を削除しても何も起こりません。

await mastra.schedules.delete('pinger')

Schedule の動作
Schedule の動作への直接リンク

  • Agent schedule ID には agent_ プレフィックスを使用します。mastra.schedules.create() で作成した Workflow schedule ID には schedule_ プレフィックスを使用します。
  • スレッド付き Agent schedules で threadId を設定する場合は、resourceId が必要です。
  • signalTypeifActiveifIdleresourceId には threadId が必要です。
  • Workflow schedules は、promptsignalTypeifIdle など Agent 専用の patch フィールドを受け付けません。
  • run() は手動実行を即座に発行し、保存されている cron の実行間隔は変更しません。