AgentController
AgentController 機能はベータ段階です。ベータを終了するまでは、マイナーバージョンで破壊的変更が行われる可能性があります。
AgentController クラスは、1つ以上の Session インスタンスを共有するホストです。Controller を初期化して Session を作成したら、会話の状態と実行制御には session.* API を使用します。
手順を追った概要については、AgentController の概要を参照してください。
使用例使用例への直接リンク
次の例では、Controller を初期化して Session を作成します。メッセージを送信する前に Session イベントを購読します。
import { Agent } from '@mastra/core/agent'
import { AgentController } from '@mastra/core/agent-controller'
import { Workspace } from '@mastra/core/workspace'
const agent = new Agent({
id: 'coding-agent',
name: 'Coding agent',
instructions: 'Help with software engineering tasks.',
model: 'anthropic/claude-sonnet-4-6',
})
const controller = new AgentController({
id: 'coding-controller',
agent,
workspace: new Workspace({ id: 'coding-workspace' }),
modes: [{ id: 'build', name: 'Build', metadata: { default: true } }],
})
await controller.init()
const session = await controller.createSession({ resourceId: 'project-42' })
const unsubscribe = session.subscribe(event => {
if (event.type === 'message_update') {
console.log(event.message)
}
})
await session.sendMessage({ content: 'Review the project structure.' })
unsubscribe()
コンストラクターパラメーターコンストラクターパラメーターへの直接リンク
id:
modes:
id:
name?:
defaultModelId?:
description?:
instructions?:
transitionsTo?:
submit_plan Suspension の後に移行する Mode。availableTools?:
metadata?:
metadata.default: true でデフォルトの Mode を指定します。tools?:
additionalTools と同時には指定できません。additionalTools?:
tools と同時には指定できません。agent?:
agent パラメーターを使用してください。default?:
metadata.default または defaultModeId を使用してください。agent?:
resourceId?:
id です。storage?:
stateSchema?:
session.state の更新を検証するためのスキーマ。initialState?:
memory?:
defaultModeId?:
instructions?:
tools?:
workspace?:
browser?:
channels?:
intervalHandlers?:
init() で開始し、stopIntervals() または destroy() で停止する定期 Handler。idGenerator?:
modelUseCountProvider?:
modelUseCountTracker?:
session.model.switch() の後にモデルの選択を記録します。subagents?:
subagent Tool を介して公開するサブ Agent タイプ。id:
name:
description:
instructions:
tools?:
allowedControllerTools?:
allowedWorkspaceTools?:
defaultModelId?:
maxSteps?:
stopWhen?:
forked?:
gateways?:
omConfig?:
disableBuiltinTools?:
toolCategoryResolver?:
pubsub?:
threadLock?:
observability?:
プロパティプロパティへの直接リンク
id:
メソッドメソッドへの直接リンク
SessionSessionへの直接リンク
createSession(options)createsessionoptionsへの直接リンク
(resourceId, scope) の組に対して登録されたライブ Session を取得または作成します。このメソッドより先に init() を呼び出してください。
const session = await controller.createSession({
resourceId: 'project-42',
scope: 'editor-window-1',
threadId: 'thread-7',
})
同じ resourceId と scope を指定すると、同じ Session インスタンスが返されます。Scope が異なる場合、同じ Resource に対して分離された Session が作成されます。threadId を指定すると、キャッシュ済み Session をその Thread に切り替えます。Thread が存在しない場合は作成します。
resourceId?:
resourceId または Controller の id が使用されます。scope?:
threadId?:
id?:
id が使用されます。ownerId?:
id です。workspace?:
browser?:
requestContext?:
戻り値:Promise<Session<TState>>
getSessionByResource(resourceId, scope?)getsessionbyresourceresourceid-scopeへの直接リンク
Resource と省略可能な Scope に対して登録されたライブ Session を返します。
const session = await controller.getSessionByResource('project-42', 'editor-window-1')
戻り値:Promise<Session<TState> | undefined>
setResourceId(session, { resourceId })setresourceidsession--resourceid-への直接リンク
ライブ Session を別の Resource に移動し、アクティブな Thread のバインドを解除します。
await controller.setResourceId(session, { resourceId: 'project-43' })
getKnownResourceIds(session)getknownresourceidssessionへの直接リンク
保存済み Thread に存在する Resource 識別子を一覧表示します。
const resourceIds = await controller.getKnownResourceIds(session)
戻り値:Promise<string[]>
ライフサイクルライフサイクルへの直接リンク
init()initへの直接リンク
共有ストレージ、Workspace サービス、設定済みの Interval Handler を初期化します。繰り返し呼び出した場合は、同じ初期化 Promise が再利用されます。
await controller.init()
destroy()destroyへの直接リンク
Controller が所有する Interval Handler を停止します。Controller が作成した Session は破棄されません。
await controller.destroy()
Mode と AgentMode と Agentへの直接リンク
listModes()listmodesへの直接リンク
設定済みの Mode 定義を返します。
const modes = controller.listModes()
戻り値:AgentControllerMode[]
getCurrentAgent(session)getcurrentagentsessionへの直接リンク
Session のアクティブな Mode に対応する基盤 Agent を返します。
const agent = controller.getCurrentAgent(session)
戻り値:Agent
Workspace と BrowserWorkspace と Browserへの直接リンク
hasWorkspace()hasworkspaceへの直接リンク
Controller に静的、動的、またはオブジェクトベースの Workspace 設定があるかどうかを返します。
if (controller.hasWorkspace()) {
console.log('Workspace configured')
}
戻り値:boolean
isWorkspaceReady()isworkspacereadyへの直接リンク
Controller レベルの Workspace が準備できているかどうかを返します。
const ready = controller.isWorkspaceReady()
戻り値:boolean
getWorkspace()getworkspaceへの直接リンク
Controller の静的 Workspace を返します。動的な Workspace Factory は、解決されるまで undefined を返します。
const workspace = controller.getWorkspace()
戻り値:Workspace | undefined
resolveWorkspace({ session, requestContext? })resolveworkspace-session-requestcontext-への直接リンク
Session の動的 Workspace を解決し、結果を Controller にキャッシュします。
const workspace = await controller.resolveWorkspace({ session, requestContext })
戻り値:Promise<Workspace | undefined>
setBrowser(browser)setbrowserbrowserへの直接リンク
Controller の Browser を置き換え、基盤 Agent に伝播します。
controller.setBrowser(browser)
Mastra と ChannelMastra と Channelへの直接リンク
getMastra()getmastraへの直接リンク
親 Mastra インスタンス、または init() が作成した内部インスタンスを返します。
const mastra = controller.getMastra()
戻り値:Mastra | undefined
getChannels()getchannelsへの直接リンク
設定済みの Chat Channel 統合を返します。
const channels = controller.getChannels()
戻り値:AgentControllerChannels | null
モデルモデルへの直接リンク
getCurrentModelAuthStatus(session)getcurrentmodelauthstatussessionへの直接リンク
Session で選択されているモデルの認証ステータスを返します。
const status = await controller.getCurrentModelAuthStatus(session)
戻り値:Promise<ModelAuthStatus>
listAvailableModels()listavailablemodelsへの直接リンク
設定済みの Gateway と組み込み Gateway からモデルを一覧表示します。結果は短時間キャッシュされ、modelUseCountProvider が設定されている場合は利用状況データを使用して並べ替えられます。
const models = await controller.listAvailableModels()
戻り値:Promise<AvailableModel[]>
invalidateAvailableModelsCache()invalidateavailablemodelscacheへの直接リンク
利用可能なモデルのキャッシュを消去します。
controller.invalidateAvailableModelsCache()
Observational Memory と権限Observational Memory と権限への直接リンク
loadOMProgress(session)loadomprogresssessionへの直接リンク
アクティブな Thread について保存されている Observational Memory の進行状況を読み込み、om_status イベントを発行します。
await controller.loadOMProgress(session)
getObservationalMemoryRecord(session)getobservationalmemoryrecordsessionへの直接リンク
アクティブな Thread の Observational Memory レコードを返します。
const record = await controller.getObservationalMemoryRecord(session)
戻り値:Promise<ObservationalMemoryRecord | null>
getToolCategory({ toolName })gettoolcategory-toolname-への直接リンク
Tool の権限カテゴリーを解決します。
const category = controller.getToolCategory({ toolName: 'execute_command' })
戻り値:ToolCategory | null
IntervalIntervalへの直接リンク
registerInterval(handler)registerintervalhandlerへの直接リンク
定期 Handler を開始または置き換えます。
controller.registerInterval({
id: 'refresh',
intervalMs: 60_000,
handler: async () => refreshData(),
})
removeInterval({ id })removeinterval-id-への直接リンク
1つの Interval を停止し、省略可能なシャットダウンコールバックを実行します。
await controller.removeInterval({ id: 'refresh' })
stopIntervals()stopintervalsへの直接リンク
すべての Interval を停止し、省略可能なシャットダウンコールバックを実行します。
await controller.stopIntervals()