(input: {
runtime: AgentRuntimeRecord;
task: QueuedTaskRecord;
workDir: string;
agentProfile?: ActiveEmployee;
channelDocuments?: ChannelDocument[];
agentDocumentContexts?: AgentDocumentContext[];
contactContext?: ContactAgentContext;
payloadOverride?: Partial<ParsedTaskPayload>;
routerSessionContext?: RouterSessionPromptContext;
feishuLarkCliResourceGrants?: FeishuLarkCliResourceGrant[];
})
| 386 | } |
| 387 | |
| 388 | export function prepareDaemonTaskContext(input: { |
| 389 | runtime: AgentRuntimeRecord; |
| 390 | task: QueuedTaskRecord; |
| 391 | workDir: string; |
| 392 | agentProfile?: ActiveEmployee; |
| 393 | channelDocuments?: ChannelDocument[]; |
| 394 | agentDocumentContexts?: AgentDocumentContext[]; |
| 395 | contactContext?: ContactAgentContext; |
| 396 | payloadOverride?: Partial<ParsedTaskPayload>; |
| 397 | routerSessionContext?: RouterSessionPromptContext; |
| 398 | feishuLarkCliResourceGrants?: FeishuLarkCliResourceGrant[]; |
| 399 | }): PreparedDaemonTaskContext { |
| 400 | const payload = { |
| 401 | ...parseTaskPayload(input.task), |
| 402 | ...(input.payloadOverride ?? {}), |
| 403 | } satisfies ParsedTaskPayload; |
| 404 | const attachmentLines = materializeAttachments(payload.attachments, input.workDir); |
| 405 | const workspaceState = readWorkspaceStateSync(input.task.workspaceId); |
| 406 | const runtimeApps = listRuntimeAppContextEntriesForRuntimeSync({ |
| 407 | workspaceId: input.task.workspaceId, |
| 408 | runtimeId: input.runtime.id, |
| 409 | }); |
| 410 | const agentDocumentContexts = input.agentDocumentContexts ?? contextsFromLegacyDocuments(input.channelDocuments ?? []); |
| 411 | const feishuLarkCliResourceGrants = input.feishuLarkCliResourceGrants ?? []; |
| 412 | const agentName = payload.assignee ?? input.task.agentId; |
| 413 | const agentNotifications = resolveAgentNotificationsForTask({ |
| 414 | workspaceId: input.task.workspaceId, |
| 415 | agentName, |
| 416 | task: input.task, |
| 417 | payload, |
| 418 | agentDocumentContexts, |
| 419 | }); |
| 420 | const documentPermissionRequests = listDocumentPermissionRequestsSync({ |
| 421 | workspaceId: input.task.workspaceId, |
| 422 | requestedByAgentName: agentName, |
| 423 | }).filter((request) => request.status === "pending" || request.status === "rejected"); |
| 424 | const visibleDocuments = agentDocumentContexts.map((context) => context.document); |
| 425 | let agentSkills = resolveAgentSkills(workspaceState, input.agentProfile, input.task.workspaceId); |
| 426 | agentSkills = includeGoogleWorkspaceCliSkill(agentSkills, workspaceState.skills, visibleDocuments, { |
| 427 | workspaceId: input.task.workspaceId, |
| 428 | agentName, |
| 429 | channelName: payload.channelName ?? payload.channel, |
| 430 | }); |
| 431 | agentSkills = filterRuntimeAppSkillsByRuntimeAvailability(agentSkills, runtimeApps); |
| 432 | const agentKnowledgePages = resolveAgentKnowledgePages(workspaceState, input.agentProfile, input.task.workspaceId); |
| 433 | const skillDirectories = materializeAgentSkills(agentSkills, input.workDir, input.runtime.provider); |
| 434 | const knowledgeContextDir = materializeAgentKnowledgePages(agentKnowledgePages, input.workDir); |
| 435 | const channelDocumentsContextDir = |
| 436 | agentDocumentContexts.length > 0 |
| 437 | ? materializeChannelDocuments(agentDocumentContexts, input.workDir, input.task.workspaceId) |
| 438 | : undefined; |
| 439 | |
| 440 | return { |
| 441 | prompt: buildTaskPromptWithDocumentContexts( |
| 442 | input.runtime, |
| 443 | payload, |
| 444 | attachmentLines, |
| 445 | input.agentProfile, |
no test coverage detected