Context
T3 is the Project Consumer for its configured authenticated Client. Project Service delivers structured Work facts to a target agentId + projectId; T3 owns the mapping to runtime Sessions.
Dependencies:
Project Service must not know T3 Session, Thread, provider, model, workspace, or prompt-delivery details.
Consumer adapter
Integrate the supported ProjectConsumerRuntime with a thin T3 adapter:
interface RuntimeConsumerAdapter {
listAgents(): Promise<AgentDescriptor[]>
wakeAgent(input: StructuredWorkNotice): Promise<void>
}
listAgents() returns configured agentId + agentName. The authenticated Project Client identity comes from the credential, not a self-declared Consumer ID.
Only one active Consumer connection is allowed for the configured Project Client.
Session routing
Maintain one current Session for each:
logicalAgentId + Project Service projectId
Routing rules:
- no current Session: create one using the Agent's Provider Instance and mapped T3 project/workspace;
- active/idle Session: send one aggregate Work notification;
- busy Session: record that Work is available and defer/coalesce the notification;
- after the current Turn finishes: query authoritative open/assigned Work and send at most one aggregate notification;
- archived Session: it is no longer current; create a new Session;
- replayed
noticeId/runId: do not create duplicate wake messages.
Project names and Agent names are display metadata only and may update without changing the mapping.
Aggregate notification
Do not inject each Project notice verbatim. Prefer a compact notification such as:
There are 3 assigned Work items waiting. Use the Project tools to inspect them.
The count must be refreshed from Project Service's authoritative assigned/open Work query before delivery. T3's local pending set is only debounce/dedup state, never a second Work lifecycle.
The Agent then uses internal MCP Project tools; it never receives the Project service credential or direct authenticated HTTP instructions.
Delivery semantics
- Consumer ACK means T3 accepted/routed the notice.
- ACK does not mean the Agent is running or Work completed.
- If routing fails, return the protocol's delivery failure code.
- Credential errors update integration status but do not delete the current Session.
- T3 restart/reconnect must not multiply notifications for the same still-pending notice.
Acceptance criteria
Non-goals
- Do not mirror Project Work lifecycle into T3.
- Do not infer Agent runtime activity in Project Service.
- Do not make Project Service select a T3 Session.
Context
T3 is the Project Consumer for its configured authenticated Client. Project Service delivers structured Work facts to a target
agentId + projectId; T3 owns the mapping to runtime Sessions.Dependencies:
Project Service must not know T3 Session, Thread, provider, model, workspace, or prompt-delivery details.
Consumer adapter
Integrate the supported
ProjectConsumerRuntimewith a thin T3 adapter:listAgents()returns configuredagentId + agentName. The authenticated Project Client identity comes from the credential, not a self-declared Consumer ID.Only one active Consumer connection is allowed for the configured Project Client.
Session routing
Maintain one current Session for each:
Routing rules:
noticeId/runId: do not create duplicate wake messages.Project names and Agent names are display metadata only and may update without changing the mapping.
Aggregate notification
Do not inject each Project notice verbatim. Prefer a compact notification such as:
The count must be refreshed from Project Service's authoritative assigned/open Work query before delivery. T3's local pending set is only debounce/dedup state, never a second Work lifecycle.
The Agent then uses internal MCP Project tools; it never receives the Project service credential or direct authenticated HTTP instructions.
Delivery semantics
Acceptance criteria
agentId + projectIdto one current Session.Non-goals