Add messages support to runAgent for multi-turn bot conversations (#23395)

- Extend `runAgent` so callers can pass either a one-shot prompt or a
multi-turn messages array (user / assistant text), matching AI SDK’s XOR
shape — for Slack/Discord/Teams bots that need thread history.
- Enforce exactly one of prompt | messages in AgentRunService; map
messages 1:1 to AI SDK ModelMessages in AgentAsyncExecutorService
- Update shared types, GraphQL/SDK inputs, docs (skills-and-agents), and
regenerate metadata clients; existing prompt-only callers stay unchanged

<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/23395?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>
<!-- End of auto-generated description by cubic. -->
This commit is contained in:
Abdul Rahman
2026-08-05 13:50:12 +05:30
committed by GitHub
parent 0b817e3bc0
commit ded3f1efb3
17 changed files with 394 additions and 67 deletions
@@ -135,7 +135,12 @@ export type {
RowLevelPermissionPredicateManifest,
RoleManifest,
} from './roleManifestType';
export type { RunAgentInput, RunAgentResult } from './runAgentType';
export type {
RunAgentMessageRole,
RunAgentMessage,
RunAgentInput,
RunAgentResult,
} from './runAgentType';
export type { ServerVariables } from './server-variables.type';
export type { ServerRouteDispatchResult } from './serverRouteDispatchResultType';
export type { ServerRouteTriggerSettings } from './serverRouteTriggerSettingsType';
@@ -1,7 +1,16 @@
export type RunAgentMessageRole = 'user' | 'assistant';
export type RunAgentMessage = {
role: RunAgentMessageRole;
content: string;
};
export type RunAgentInput = {
agentUniversalIdentifier: string;
prompt: string;
};
} & (
| { prompt: string; messages?: never }
| { messages: RunAgentMessage[]; prompt?: never }
);
export type RunAgentResult = {
result: object | null;