@agent-native/core 0.32.2 → 0.32.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +48 -10
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts +12 -0
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +104 -6
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/cli/app-skill.js +2 -2
- package/dist/cli/app-skill.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +6 -1
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/code-agent-output-smoother.d.ts +7 -0
- package/dist/cli/code-agent-output-smoother.d.ts.map +1 -0
- package/dist/cli/code-agent-output-smoother.js +111 -0
- package/dist/cli/code-agent-output-smoother.js.map +1 -0
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +5 -0
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +17 -42
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/skills.d.ts +23 -2
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +405 -41
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +7 -105
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +41 -7
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AgentTaskCard.d.ts.map +1 -1
- package/dist/client/AgentTaskCard.js +0 -28
- package/dist/client/AgentTaskCard.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +8 -23
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +359 -205
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +254 -14
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +14 -9
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-chat.d.ts +24 -0
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +73 -0
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/assistant-ui-recovery.d.ts +34 -0
- package/dist/client/assistant-ui-recovery.d.ts.map +1 -0
- package/dist/client/assistant-ui-recovery.js +122 -0
- package/dist/client/assistant-ui-recovery.js.map +1 -0
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +7 -1
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +7 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +22 -2
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/frame-protocol.d.ts +6 -2
- package/dist/client/frame-protocol.d.ts.map +1 -1
- package/dist/client/frame-protocol.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +2 -1
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts +13 -3
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +105 -36
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/route-warmup.d.ts +61 -0
- package/dist/client/route-warmup.d.ts.map +1 -0
- package/dist/client/route-warmup.js +456 -0
- package/dist/client/route-warmup.js.map +1 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +2 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +5 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +10 -4
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/use-action.d.ts +1 -0
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +22 -4
- package/dist/client/use-action.js.map +1 -1
- package/dist/code-agents/background-run.d.ts +2 -0
- package/dist/code-agents/background-run.d.ts.map +1 -1
- package/dist/code-agents/background-run.js.map +1 -1
- package/dist/db/client.d.ts +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +25 -1
- package/dist/db/client.js.map +1 -1
- package/dist/deploy/build.d.ts +4 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +171 -14
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/immutable-assets.d.ts +1 -0
- package/dist/deploy/immutable-assets.d.ts.map +1 -1
- package/dist/deploy/immutable-assets.js +1 -0
- package/dist/deploy/immutable-assets.js.map +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/connect-route.d.ts.map +1 -1
- package/dist/mcp/connect-route.js +118 -82
- package/dist/mcp/connect-route.js.map +1 -1
- package/dist/progress/routes.d.ts.map +1 -1
- package/dist/progress/routes.js +1 -0
- package/dist/progress/routes.js.map +1 -1
- package/dist/progress/store.d.ts +13 -0
- package/dist/progress/store.d.ts.map +1 -1
- package/dist/progress/store.js +18 -0
- package/dist/progress/store.js.map +1 -1
- package/dist/progress/types.d.ts +2 -0
- package/dist/progress/types.d.ts.map +1 -1
- package/dist/progress/types.js.map +1 -1
- package/dist/scripts/db/wipe-leaked-builder-keys.d.ts +2 -2
- package/dist/scripts/db/wipe-leaked-builder-keys.d.ts.map +1 -1
- package/dist/scripts/db/wipe-leaked-builder-keys.js +14 -3
- package/dist/scripts/db/wipe-leaked-builder-keys.js.map +1 -1
- package/dist/server/action-routes.d.ts +1 -0
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +36 -2
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +5 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +131 -26
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +14 -1
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-teams-run-queue.d.ts +80 -0
- package/dist/server/agent-teams-run-queue.d.ts.map +1 -0
- package/dist/server/agent-teams-run-queue.js +208 -0
- package/dist/server/agent-teams-run-queue.js.map +1 -0
- package/dist/server/agent-teams.d.ts +67 -0
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +607 -180
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/auth-marketing.d.ts.map +1 -1
- package/dist/server/auth-marketing.js +0 -64
- package/dist/server/auth-marketing.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +67 -14
- package/dist/server/auth.js.map +1 -1
- package/dist/server/builder-browser.d.ts +12 -2
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +24 -0
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +66 -5
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +10 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +82 -3
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/csrf.js +3 -0
- package/dist/server/csrf.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts +1 -0
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +14 -1
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/self-dispatch.d.ts +44 -0
- package/dist/server/self-dispatch.d.ts.map +1 -0
- package/dist/server/self-dispatch.js +113 -0
- package/dist/server/self-dispatch.js.map +1 -0
- package/dist/server/social-og-image.d.ts +14 -0
- package/dist/server/social-og-image.d.ts.map +1 -0
- package/dist/server/social-og-image.js +251 -0
- package/dist/server/social-og-image.js.map +1 -0
- package/dist/server/ssr-handler.d.ts +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +27 -11
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/shared/cache-control.d.ts +7 -0
- package/dist/shared/cache-control.d.ts.map +1 -1
- package/dist/shared/cache-control.js +7 -0
- package/dist/shared/cache-control.js.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/route-warmup-config.d.ts +28 -0
- package/dist/shared/route-warmup-config.d.ts.map +1 -0
- package/dist/shared/route-warmup-config.js +58 -0
- package/dist/shared/route-warmup-config.js.map +1 -0
- package/dist/shared/social-meta.d.ts +5 -0
- package/dist/shared/social-meta.d.ts.map +1 -1
- package/dist/shared/social-meta.js +36 -2
- package/dist/shared/social-meta.js.map +1 -1
- package/dist/shared/streaming-text-smoothing.d.ts +12 -0
- package/dist/shared/streaming-text-smoothing.d.ts.map +1 -0
- package/dist/shared/streaming-text-smoothing.js +52 -0
- package/dist/shared/streaming-text-smoothing.js.map +1 -0
- package/dist/styles/agent-native.css +4 -4
- package/dist/templates/default/AGENTS.md +9 -4
- package/dist/templates/default/DEVELOPING.md +15 -1
- package/dist/templates/workspace-core/AGENTS.md +7 -3
- package/dist/templates/workspace-root/AGENTS.md +7 -3
- package/dist/vite/client.d.ts +13 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +26 -0
- package/dist/vite/client.js.map +1 -1
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js.map +1 -1
- package/docs/content/client.md +62 -1
- package/docs/content/code-agents-ui.md +6 -13
- package/docs/content/context-awareness.md +186 -21
- package/docs/content/deployment.md +8 -11
- package/docs/content/dispatch.md +1 -1
- package/docs/content/external-agents.md +32 -2
- package/docs/content/migration-workbench.md +4 -21
- package/docs/content/multi-app-workspace.md +1 -1
- package/docs/content/recurring-jobs.md +1 -1
- package/docs/content/security.md +0 -1
- package/docs/content/sharing.md +1 -3
- package/docs/content/skills-guide.md +12 -10
- package/docs/content/template-assets.md +21 -1
- package/docs/content/template-design.md +23 -5
- package/docs/content/template-dispatch.md +1 -1
- package/package.json +2 -1
- package/src/templates/default/AGENTS.md +9 -4
- package/src/templates/default/DEVELOPING.md +15 -1
- package/src/templates/workspace-core/AGENTS.md +7 -3
- package/src/templates/workspace-root/AGENTS.md +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-teams.js","sourceRoot":"","sources":["../../src/server/agent-teams.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Teams — sub-agent orchestration for agent-native.\n *\n * The main agent chat acts as an orchestrator. It spawns sub-agents\n * for individual tasks, which run in their own threads. Sub-agents\n * appear as rich preview cards (chips) inline in the main chat.\n *\n * This module provides the server-side infrastructure:\n * - Creating sub-agent threads and running them in background\n * - Tracking task status and results\n * - Emitting SSE events for live preview cards\n * - Bidirectional messaging between main agent and sub-agents\n *\n * Task state is persisted in application_state (SQL) so it survives\n * serverless cold starts and works across multiple processes.\n */\n\nimport type { AgentChatEvent } from \"../agent/types.js\";\nimport type {\n ActionEntry,\n AgentLoopFinalResponseGuard,\n} from \"../agent/production-agent.js\";\nimport { actionsToEngineTools } from \"../agent/production-agent.js\";\nimport type { AgentEngine, EngineMessage } from \"../agent/engine/types.js\";\nimport { createAnthropicEngine } from \"../agent/engine/anthropic-engine.js\";\nimport { createThread } from \"../chat-threads/store.js\";\nimport {\n abortRun,\n getRun,\n startRun,\n subscribeToRun,\n} from \"../agent/run-manager.js\";\nimport { getRunEventsSince } from \"../agent/run-store.js\";\nimport { runAgentLoop } from \"../agent/production-agent.js\";\nimport { buildAssistantMessage } from \"../agent/thread-data-builder.js\";\nimport type { RunEvent } from \"../agent/types.js\";\nimport type {\n BackgroundAgentRun,\n BackgroundAgentRunStatus,\n BackgroundAgentTranscriptEvent,\n} from \"../code-agents/background-run.js\";\nimport type {\n BackgroundAgentController,\n BackgroundAgentControlInput,\n BackgroundAgentControlResult,\n BackgroundAgentFollowUpInput,\n ListBackgroundAgentRunsOptions,\n} from \"../code-agents/index.js\";\nimport {\n readAppState,\n writeAppState,\n listAppState,\n deleteAppState,\n} from \"../application-state/script-helpers.js\";\nimport { getRequestUserEmail } from \"./request-context.js\";\n\nexport interface AgentTask {\n taskId: string;\n threadId: string;\n description: string;\n status: \"running\" | \"completed\" | \"errored\";\n preview: string;\n summary: string;\n currentStep: string;\n createdAt: number;\n}\n\nexport type AgentTeamBackgroundRun = Omit<\n BackgroundAgentRun,\n | \"kind\"\n | \"source\"\n | \"sourceRecord\"\n | \"status\"\n | \"cwd\"\n | \"goalId\"\n | \"transcriptPath\"\n | \"artifactRoot\"\n> & {\n kind: \"agent-team\";\n source: \"hosted-agent-team\";\n sourceRecord: {\n type: \"agent-team-task\";\n id: string;\n threadId: string;\n };\n status: BackgroundAgentRunStatus;\n cwd?: string;\n goalId: \"agent-team\";\n transcriptPath?: string;\n artifactRoot?: string;\n};\n\nexport type AgentTeamBackgroundTranscriptEvent = Omit<\n BackgroundAgentTranscriptEvent,\n \"kind\" | \"source\" | \"sourceRecord\"\n> & {\n kind: \"user\" | \"system\" | \"note\" | \"artifact\" | \"status\";\n source: \"hosted-agent-team\";\n sourceRecord: {\n type: \"agent-team-run-event\";\n id: string;\n seq: number;\n };\n};\n\nexport interface SendToAgentTeamBackgroundRunResult {\n ok: boolean;\n error?: string;\n messageId?: string;\n queuedCount?: number;\n}\n\nexport interface ControlAgentTeamBackgroundRunResult {\n ok: boolean;\n error?: string;\n}\n\nexport function createAgentTeamBackgroundAgentController(): BackgroundAgentController {\n return {\n async list(options?: ListBackgroundAgentRunsOptions) {\n if (options?.goalId && options.goalId !== \"agent-team\") return [];\n return listAgentTeamBackgroundRuns();\n },\n get: getAgentTeamBackgroundRun,\n transcript: listAgentTeamBackgroundTranscriptEvents,\n sendFollowUp: sendAgentTeamBackgroundAgentFollowUp,\n control: controlAgentTeamBackgroundAgentRun,\n };\n}\n\nexport const agentTeamBackgroundAgentController =\n createAgentTeamBackgroundAgentController();\n\n/** Key prefix for task records: agent-task:{taskId} */\nconst TASK_PREFIX = \"agent-task:\";\n\n/** Key prefix for thread→task reverse lookup: agent-task-thread:{threadId} */\nconst THREAD_PREFIX = \"agent-task-thread:\";\n\n/** Key prefix for queued orchestrator→sub-agent messages. */\nconst TASK_MESSAGE_PREFIX = \"task-message:\";\n\nexport interface QueuedTaskMessage {\n id: string;\n from: \"orchestrator\";\n message: string;\n timestamp: number;\n}\n\nfunction taskMessageQueuePrefix(taskId: string): string {\n return `${TASK_MESSAGE_PREFIX}${taskId}:`;\n}\n\nfunction generateTaskMessageId(): string {\n return `msg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction normalizeQueuedTaskMessage(\n value: Record<string, unknown>,\n fallbackId: string,\n): QueuedTaskMessage | null {\n if (typeof value.message !== \"string\" || value.message.trim().length === 0) {\n return null;\n }\n const timestamp =\n typeof value.timestamp === \"number\" && Number.isFinite(value.timestamp)\n ? value.timestamp\n : Date.now();\n return {\n id: typeof value.id === \"string\" ? value.id : fallbackId,\n from: \"orchestrator\",\n message: value.message,\n timestamp,\n };\n}\n\nfunction formatQueuedTaskMessages(messages: QueuedTaskMessage[]): string {\n const label =\n messages.length === 1\n ? \"Orchestrator message received while you were working\"\n : \"Orchestrator messages received while you were working\";\n const body = messages\n .map((message) => {\n const sentAt = new Date(message.timestamp).toISOString();\n return `[${sentAt}] ${message.message}`;\n })\n .join(\"\\n\\n\");\n return `${label}:\\n\\n${body}\\n\\nAdjust your next steps to account for this update.`;\n}\n\nconst taskMessageDrainLocks = new Map<string, Promise<unknown>>();\n\nasync function withTaskMessageDrainLock<T>(\n taskId: string,\n fn: () => Promise<T>,\n): Promise<T> {\n const previous = taskMessageDrainLocks.get(taskId) ?? Promise.resolve();\n let release!: () => void;\n const current = new Promise<void>((resolve) => (release = resolve));\n taskMessageDrainLocks.set(taskId, current);\n await previous.catch(() => {});\n try {\n return await fn();\n } finally {\n release();\n if (taskMessageDrainLocks.get(taskId) === current) {\n taskMessageDrainLocks.delete(taskId);\n }\n }\n}\n\nasync function listQueuedTaskMessages(\n taskId: string,\n): Promise<Array<{ key: string; message: QueuedTaskMessage }>> {\n const queuePrefix = taskMessageQueuePrefix(taskId);\n const entries = await listAppState(queuePrefix);\n const messages = entries\n .map((entry) => {\n const id = entry.key.slice(queuePrefix.length);\n const message = normalizeQueuedTaskMessage(entry.value, id);\n return message ? { key: entry.key, message } : null;\n })\n .filter(\n (\n entry,\n ): entry is {\n key: string;\n message: QueuedTaskMessage;\n } => Boolean(entry),\n );\n\n // Backward compatibility for messages queued by the old implementation.\n const legacyKey = `${TASK_MESSAGE_PREFIX}${taskId}`;\n const legacy = await readAppState(legacyKey);\n const legacyMessage = legacy\n ? normalizeQueuedTaskMessage(legacy, \"legacy\")\n : null;\n if (legacyMessage) {\n messages.push({ key: legacyKey, message: legacyMessage });\n }\n\n return messages.sort((a, b) => {\n const byTimestamp = a.message.timestamp - b.message.timestamp;\n return byTimestamp || a.message.id.localeCompare(b.message.id);\n });\n}\n\nasync function drainQueuedTaskMessages(\n taskId: string,\n): Promise<QueuedTaskMessage[]> {\n return withTaskMessageDrainLock(taskId, async () => {\n const entries = await listQueuedTaskMessages(taskId);\n if (entries.length === 0) return [];\n for (const entry of entries) {\n await deleteAppState(entry.key);\n }\n return entries.map((entry) => entry.message);\n });\n}\n\nasync function appendQueuedTaskMessage(\n taskId: string,\n message: string,\n): Promise<{ messageId: string; queuedCount: number }> {\n const messageId = generateTaskMessageId();\n await writeAppState(`${taskMessageQueuePrefix(taskId)}${messageId}`, {\n id: messageId,\n from: \"orchestrator\",\n message,\n timestamp: Date.now(),\n });\n const queuedCount = (await listQueuedTaskMessages(taskId)).length;\n return { messageId, queuedCount };\n}\n\nfunction createMessageAwareActions(\n taskId: string,\n actions: Record<string, ActionEntry>,\n): Record<string, ActionEntry> {\n return Object.fromEntries(\n Object.entries(actions).map(([name, entry]) => [\n name,\n {\n ...entry,\n run: async (args, context) => {\n const result = await entry.run(args, context);\n const queuedMessages = await drainQueuedTaskMessages(taskId);\n if (queuedMessages.length === 0) return result;\n\n // Tool results are already the next safe model-visible boundary:\n // the loop records all tool output, then asks the model to continue.\n // Attaching queued updates here avoids mutating message history while\n // an assistant tool-call turn is still being resolved.\n const formatted = formatQueuedTaskMessages(queuedMessages);\n const resultText =\n typeof result === \"string\"\n ? result\n : JSON.stringify(result, null, 2);\n return `${resultText}\\n\\n${formatted}`;\n },\n },\n ]),\n );\n}\n\nfunction createTaskMessageFinalGuard(\n taskId: string,\n): AgentLoopFinalResponseGuard {\n return async () => {\n const queuedMessages = await drainQueuedTaskMessages(taskId);\n if (queuedMessages.length === 0) return null;\n\n // This is queued delivery, not a live interrupt: if the sub-agent is\n // already producing a final answer, the guard asks the loop for one more\n // continuation that includes the orchestrator update as a fresh user turn.\n return {\n retryMessage: formatQueuedTaskMessages(queuedMessages),\n fallbackMessage:\n \"I received an orchestrator update while finishing, but could not continue from it. Please check the task status and send the update again if needed.\",\n };\n };\n}\n\nasync function saveTask(task: AgentTask): Promise<void> {\n await writeAppState(`${TASK_PREFIX}${task.taskId}`, task as any);\n await writeAppState(`${THREAD_PREFIX}${task.threadId}`, {\n taskId: task.taskId,\n });\n}\n\nasync function loadTask(taskId: string): Promise<AgentTask | null> {\n const data = await readAppState(`${TASK_PREFIX}${taskId}`);\n return data ? (data as unknown as AgentTask) : null;\n}\n\nasync function loadTaskByThread(threadId: string): Promise<AgentTask | null> {\n const ref = await readAppState(`${THREAD_PREFIX}${threadId}`);\n if (!ref || !ref.taskId) return null;\n return loadTask(ref.taskId as string);\n}\n\nfunction generateTaskId(): string {\n return `task-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction taskRunId(taskId: string): string {\n return `run-task-${taskId}`;\n}\n\nfunction taskIdFromBackgroundRunId(runId: string): string {\n return runId.startsWith(\"run-task-\")\n ? runId.slice(\"run-task-\".length)\n : runId;\n}\n\nfunction mapTaskStatusToBackgroundStatus(\n status: AgentTask[\"status\"],\n): BackgroundAgentRunStatus {\n return status;\n}\n\nfunction taskTimestampToIso(timestamp: number): string {\n const date = new Date(timestamp);\n return Number.isFinite(date.getTime())\n ? date.toISOString()\n : new Date(0).toISOString();\n}\n\nfunction latestTaskText(task: AgentTask): string | undefined {\n return task.summary || task.preview || task.currentStep || undefined;\n}\n\nexport function toAgentTaskBackgroundRun(\n task: AgentTask,\n): AgentTeamBackgroundRun {\n const createdAt = taskTimestampToIso(task.createdAt);\n return {\n schemaVersion: 1,\n id: taskRunId(task.taskId),\n kind: \"agent-team\",\n source: \"hosted-agent-team\",\n sourceLabel: \"Agent Teams\",\n sourceRecord: {\n type: \"agent-team-task\",\n id: task.taskId,\n threadId: task.threadId,\n },\n title: task.description,\n subtitle: task.currentStep || undefined,\n status: mapTaskStatusToBackgroundStatus(task.status),\n phase: task.currentStep || task.status,\n createdAt,\n updatedAt: createdAt,\n goalId: \"agent-team\",\n needsInput: false,\n needsApproval: false,\n details: [\n { label: \"Task\", value: task.taskId },\n { label: \"Thread\", value: task.threadId },\n ],\n surfaceUrl: `agent-native://threads/${task.threadId}`,\n metadata: {\n taskId: task.taskId,\n threadId: task.threadId,\n description: task.description,\n preview: task.preview,\n summary: task.summary,\n currentStep: task.currentStep,\n latestText: latestTaskText(task),\n },\n };\n}\n\nfunction summarizeAgentChatEvent(event: RunEvent): {\n kind: AgentTeamBackgroundTranscriptEvent[\"kind\"];\n message: string;\n metadata?: Record<string, unknown>;\n} | null {\n const payload = event.event;\n switch (payload.type) {\n case \"text\":\n return { kind: \"note\", message: payload.text };\n case \"activity\":\n return {\n kind: \"status\",\n message: payload.label,\n metadata: payload.tool ? { tool: payload.tool } : undefined,\n };\n case \"tool_start\":\n return {\n kind: \"status\",\n message: `Running ${payload.tool}`,\n metadata: { tool: payload.tool, input: payload.input },\n };\n case \"tool_done\":\n return {\n kind: \"artifact\",\n message: payload.result,\n metadata: { tool: payload.tool },\n };\n case \"agent_task\":\n return {\n kind: \"status\",\n message: `${payload.description} (${payload.status})`,\n metadata: {\n taskId: payload.taskId,\n threadId: payload.threadId,\n status: payload.status,\n },\n };\n case \"agent_task_update\":\n return {\n kind: \"status\",\n message: payload.preview || payload.currentStep || \"Task updated\",\n metadata: {\n taskId: payload.taskId,\n currentStep: payload.currentStep,\n },\n };\n case \"agent_task_complete\":\n return {\n kind: \"status\",\n message: payload.summary,\n metadata: { taskId: payload.taskId },\n };\n case \"error\":\n return {\n kind: \"status\",\n message: payload.error,\n metadata: {\n errorCode: payload.errorCode,\n upgradeUrl: payload.upgradeUrl,\n },\n };\n case \"missing_api_key\":\n return {\n kind: \"status\",\n message: \"Missing API key\",\n };\n case \"done\":\n return { kind: \"status\", message: \"Run completed\" };\n case \"loop_limit\":\n return { kind: \"status\", message: \"Run stopped at the loop limit\" };\n case \"auto_continue\":\n return {\n kind: \"status\",\n message: \"Run reached its continuation boundary\",\n metadata: { reason: payload.reason },\n };\n case \"clear\":\n return null;\n case \"agent_call\":\n return {\n kind: \"status\",\n message: `${payload.agent} ${payload.status}`,\n metadata: { agent: payload.agent, status: payload.status },\n };\n case \"agent_call_text\":\n return {\n kind: \"note\",\n message: payload.text,\n metadata: { agent: payload.agent },\n };\n default:\n return null;\n }\n}\n\nexport function toAgentTaskBackgroundTranscriptEvent(\n runId: string,\n event: RunEvent,\n): AgentTeamBackgroundTranscriptEvent | null {\n const summary = summarizeAgentChatEvent(event);\n if (!summary) return null;\n return {\n schemaVersion: 1,\n id: `${runId}:${event.seq}`,\n runId,\n kind: summary.kind,\n source: \"hosted-agent-team\",\n sourceRecord: {\n type: \"agent-team-run-event\",\n id: `${runId}:${event.seq}`,\n seq: event.seq,\n },\n message: summary.message,\n createdAt: new Date().toISOString(),\n metadata: summary.metadata,\n };\n}\n\nexport interface SpawnTaskOptions {\n /** Description of what the sub-agent should do */\n description: string;\n /** Additional instructions scoped to this sub-agent */\n instructions?: string;\n /** Model to use (e.g. \"claude-haiku-4-5\"). Uses default if omitted */\n model?: string;\n /** The owner email for thread creation */\n ownerEmail: string;\n /** The system prompt base for the sub-agent */\n systemPrompt: string;\n /** Available actions for the sub-agent */\n actions: Record<string, ActionEntry>;\n /** Agent engine to use. Falls back to creating an Anthropic engine with apiKey. */\n engine?: AgentEngine;\n /** API key for Anthropic (used only if engine is not provided) */\n apiKey?: string;\n /** Callback to emit events to the parent chat stream */\n parentSend: (event: AgentChatEvent) => void;\n /** Parent thread ID — used to auto-respond when the sub-agent finishes */\n parentThreadId?: string;\n}\n\n/**\n * Spawn a sub-agent task. Creates a thread, starts a background agent run,\n * and emits agent_task events to the parent chat stream.\n */\nexport async function spawnTask(opts: SpawnTaskOptions): Promise<AgentTask> {\n const taskId = generateTaskId();\n\n // Create a dedicated thread for the sub-agent with the task as the first message\n const thread = await createThread(opts.ownerEmail, {\n title: opts.description.slice(0, 100),\n });\n\n // Save the initial user message to thread data so the tab shows content\n // immediately. Shape must match assistant-ui's ExportedMessageRepository —\n // each entry carries an explicit `parentId` so the runtime threads messages\n // into a linked list; without it, later assistant messages render as\n // orphaned siblings and only the one under `headId` is shown.\n const userMsgId = `msg-${taskId}-user`;\n try {\n const { updateThreadData } = await import(\"../chat-threads/store.js\");\n const threadData = JSON.stringify({\n headId: userMsgId,\n messages: [\n {\n message: {\n id: userMsgId,\n role: \"user\",\n content: [{ type: \"text\", text: opts.description }],\n metadata: {},\n },\n parentId: null,\n },\n ],\n });\n await updateThreadData(\n thread.id,\n threadData,\n opts.description.slice(0, 100),\n opts.description.slice(0, 200),\n 1,\n );\n } catch {\n // Best effort — thread will still work without persisted messages\n }\n\n const task: AgentTask = {\n taskId,\n threadId: thread.id,\n description: opts.description,\n status: \"running\",\n preview: \"\",\n summary: \"\",\n currentStep: \"\",\n createdAt: Date.now(),\n };\n\n await saveTask(task);\n\n // Notify parent chat that a sub-agent was spawned\n opts.parentSend({\n type: \"agent_task\",\n taskId,\n threadId: thread.id,\n description: opts.description,\n status: \"running\",\n });\n\n // Build scoped system prompt\n // Prepend a clear \"you are a sub-agent\" reminder so the agent doesn't\n // start exploring the file system or database before using its actions.\n const actionNames = Object.keys(opts.actions).join(\", \");\n const subAgentPreamble = `## You Are a Sub-Agent\n\nYou are a focused sub-agent with a specific task. You have been given a curated set of actions that connect directly to the app's database and services.\n\n**Start immediately with your task. Do NOT:**\n- Run \\`db-schema\\` to explore the database structure\n- Run \\`bash\\` just to search/list files\n- Try to \\`curl\\` or access external URLs to find the app\n- Use \\`bash\\` for exploration — only for running \\`pnpm action\\` commands when no direct action exists\n\n**Your available actions (${actionNames}) work directly. Use them.**\n\n`;\n let systemPrompt = subAgentPreamble + opts.systemPrompt;\n if (opts.instructions) {\n systemPrompt += `\\n\\n## Task-Specific Instructions\\n\\n${opts.instructions}`;\n }\n\n // Resolve the engine — prefer the passed engine, fall back to Anthropic with apiKey\n const engine: AgentEngine =\n opts.engine ?? createAnthropicEngine({ apiKey: opts.apiKey });\n const model = opts.model ?? engine.defaultModel;\n\n // Build tools from actions using the normalized EngineTool format\n const messageAwareActions = createMessageAwareActions(taskId, opts.actions);\n const tools = actionsToEngineTools(messageAwareActions);\n\n const messages: EngineMessage[] = [\n { role: \"user\", content: [{ type: \"text\", text: opts.description }] },\n ];\n\n // Start the agent run in background\n const runId = `run-task-${taskId}`;\n let accumulatedText = \"\";\n let lastPreviewSent = 0;\n const PREVIEW_INTERVAL_MS = 300; // Throttle preview updates to every 300ms\n // Gate to prevent sendPreviewUpdate from overwriting terminal status\n let runFinished = false;\n\n startRun(\n runId,\n thread.id,\n async (send, signal) => {\n const sendPreviewUpdate = async (force = false) => {\n if (runFinished) return; // Don't overwrite completed/errored status\n const now = Date.now();\n if (!force && now - lastPreviewSent < PREVIEW_INTERVAL_MS) return;\n lastPreviewSent = now;\n task.preview = accumulatedText.slice(-800);\n // Persist to SQL so status checks from other processes see live state\n await saveTask(task);\n opts.parentSend({\n type: \"agent_task_update\",\n taskId,\n preview: task.preview,\n currentStep: task.currentStep,\n });\n };\n\n // Wrap the send function to also emit preview updates to parent\n const wrappedSend = (event: AgentChatEvent) => {\n send(event);\n\n if (event.type === \"text\") {\n accumulatedText += event.text;\n sendPreviewUpdate();\n } else if (event.type === \"tool_start\") {\n task.currentStep = `Running ${event.tool}...`;\n sendPreviewUpdate(true);\n } else if (event.type === \"tool_done\") {\n task.currentStep = \"\";\n sendPreviewUpdate(true);\n }\n };\n\n await runAgentLoop({\n engine,\n model,\n systemPrompt,\n tools,\n messages,\n actions: messageAwareActions,\n send: wrappedSend,\n signal,\n finalResponseGuard: createTaskMessageFinalGuard(taskId),\n });\n },\n // onComplete callback — called when the run finishes (success or error)\n async (run) => {\n // Prevent any in-flight sendPreviewUpdate from overwriting terminal status\n runFinished = true;\n\n if (run.status === \"errored\") {\n task.status = \"errored\";\n task.summary = accumulatedText.slice(-500) || \"Task failed.\";\n await saveTask(task);\n // Emit error as agent_task_complete with errored status\n opts.parentSend({\n type: \"agent_task\",\n taskId,\n threadId: thread.id,\n description: task.description,\n status: \"errored\",\n });\n } else {\n task.status = \"completed\";\n task.summary =\n accumulatedText.slice(-1000) || \"Task completed successfully.\";\n await saveTask(task);\n opts.parentSend({\n type: \"agent_task_complete\",\n taskId,\n summary: task.summary,\n });\n }\n\n // Persist the full conversation to threadData so the sub-agent tab\n // can restore it later (after the in-memory run is cleaned up).\n // Rebuild from run.events via buildAssistantMessage so partial text\n // streamed in an interrupted final iteration is preserved — the\n // EngineMessage[] array only picks up a turn after runAgentLoop\n // finishes pushing, so an aborted mid-stream would otherwise be lost.\n try {\n const { updateThreadData } = await import(\"../chat-threads/store.js\");\n const userMsg = {\n id: `msg-${taskId}-user`,\n role: \"user\" as const,\n content: [{ type: \"text\", text: opts.description }],\n metadata: {},\n };\n const assistantMsg = buildAssistantMessage(\n run.events ?? [],\n `task-${taskId}`,\n );\n // Chain assistant → user via parentId so assistant-ui renders them\n // as a linked conversation, not orphaned siblings. headId points to\n // the leaf (assistant if present, otherwise the user message).\n const messages: Array<{\n message: Record<string, unknown>;\n parentId: string | null;\n }> = [{ message: userMsg, parentId: null }];\n if (assistantMsg) {\n messages.push({\n message: {\n ...assistantMsg,\n status: { type: \"complete\", reason: \"stop\" },\n },\n parentId: userMsg.id,\n });\n }\n const headId = assistantMsg?.id ?? (userMsg.id as string | undefined);\n const repo = { headId, messages };\n\n const title = opts.description.slice(0, 100);\n const preview = accumulatedText.slice(0, 200);\n await updateThreadData(\n thread.id,\n JSON.stringify(repo),\n title,\n preview,\n repo.messages.length,\n );\n } catch {\n // Best effort — the in-memory replay path still works\n }\n\n // ─── Auto-follow-up on parent thread ────────────────────────────\n // When the sub-agent finishes, start a short agent run on the\n // parent thread so the user sees a recap without having to scroll\n // up or manually check the sub-agent card.\n if (opts.parentThreadId) {\n try {\n const { getActiveRunForThread } =\n await import(\"../agent/run-manager.js\");\n // Only auto-respond if the parent thread is idle — don't\n // interrupt an ongoing conversation.\n const activeRun = getActiveRunForThread(opts.parentThreadId);\n if (!activeRun || activeRun.status !== \"running\") {\n const followUpEngine =\n opts.engine ?? createAnthropicEngine({ apiKey: opts.apiKey });\n const followUpModel = opts.model ?? followUpEngine.defaultModel;\n\n const statusEmoji = task.status === \"errored\" ? \"!\" : \"done\";\n const notification =\n `[Sub-agent ${statusEmoji}] The sub-agent task \"${task.description}\" has ${task.status === \"errored\" ? \"failed\" : \"completed\"}.\\n\\n` +\n `Summary of what it did:\\n${task.summary}\\n\\n` +\n `Briefly let the user know the sub-agent finished and highlight any key results. Be concise — 1-2 sentences.`;\n\n const followUpRunId = `run-followup-${taskId}`;\n startRun(\n followUpRunId,\n opts.parentThreadId,\n async (send, signal) => {\n await runAgentLoop({\n engine: followUpEngine,\n model: followUpModel,\n systemPrompt: opts.systemPrompt,\n tools: [], // No tools needed for a recap\n messages: [\n {\n role: \"user\",\n content: [{ type: \"text\", text: notification }],\n },\n ],\n actions: {},\n send,\n signal,\n });\n },\n );\n }\n } catch {\n // Best effort — don't break the sub-agent completion\n }\n }\n },\n );\n\n return task;\n}\n\n/** Get task by ID */\nexport async function getTask(taskId: string): Promise<AgentTask | undefined> {\n const task = await loadTask(taskId);\n return task ?? undefined;\n}\n\n/** Get task by thread ID */\nexport async function getTaskByThread(\n threadId: string,\n): Promise<AgentTask | undefined> {\n const task = await loadTaskByThread(threadId);\n return task ?? undefined;\n}\n\n/** List all tasks (most recent first) */\nexport async function listTasks(): Promise<AgentTask[]> {\n const entries = await listAppState(TASK_PREFIX);\n const tasks = entries.map((e) => e.value as unknown as AgentTask);\n return tasks.sort((a, b) => b.createdAt - a.createdAt);\n}\n\nexport async function listAgentTeamBackgroundRuns(): Promise<\n AgentTeamBackgroundRun[]\n> {\n return (await listTasks()).map(toAgentTaskBackgroundRun);\n}\n\nexport async function getAgentTeamBackgroundRun(\n runId: string,\n): Promise<AgentTeamBackgroundRun | null> {\n const task = await loadTask(taskIdFromBackgroundRunId(runId));\n return task ? toAgentTaskBackgroundRun(task) : null;\n}\n\nexport async function listAgentTeamBackgroundTranscriptEvents(\n runId: string,\n): Promise<AgentTeamBackgroundTranscriptEvent[]> {\n const normalizedRunId = taskRunId(taskIdFromBackgroundRunId(runId));\n const activeRun = getRun(normalizedRunId);\n const events = activeRun\n ? activeRun.events\n : await getPersistedRunEvents(normalizedRunId);\n\n return events\n .map((event) =>\n toAgentTaskBackgroundTranscriptEvent(normalizedRunId, event),\n )\n .filter((event): event is AgentTeamBackgroundTranscriptEvent =>\n Boolean(event),\n );\n}\n\nexport function subscribeToAgentTeamBackgroundRun(\n runId: string,\n fromSeq = 0,\n): ReadableStream<Uint8Array> | null {\n return subscribeToRun(taskRunId(taskIdFromBackgroundRunId(runId)), fromSeq);\n}\n\nasync function getPersistedRunEvents(runId: string): Promise<RunEvent[]> {\n const rows = await getRunEventsSince(runId, 0);\n return rows\n .map((row): RunEvent | null => {\n try {\n return {\n seq: row.seq,\n event: JSON.parse(row.eventData) as RunEvent[\"event\"],\n };\n } catch {\n return null;\n }\n })\n .filter((event): event is RunEvent => Boolean(event));\n}\n\n/** Send a message/update to a running sub-agent via application state */\nexport async function sendToTask(\n taskId: string,\n message: string,\n): Promise<{\n ok: boolean;\n error?: string;\n messageId?: string;\n queuedCount?: number;\n}> {\n const task = await loadTask(taskId);\n if (!task) return { ok: false, error: \"Task not found\" };\n if (task.status !== \"running\")\n return { ok: false, error: \"Task is not running\" };\n if (message.trim().length === 0)\n return { ok: false, error: \"Message is required\" };\n\n // Append to a durable per-task queue. Running sub-agents drain this queue\n // after tool batches and immediately before a final response. This does not\n // interrupt an in-flight model stream or tool call; it guarantees the next\n // safe continuation sees the update.\n try {\n const queued = await appendQueuedTaskMessage(taskId, message);\n return { ok: true, ...queued };\n } catch {\n const sessionId = getRequestUserEmail();\n if (!sessionId) return { ok: false, error: \"no authenticated user\" };\n return { ok: false, error: \"Unable to queue message\" };\n }\n}\n\nexport async function sendToAgentTeamBackgroundRun(\n runId: string,\n message: string,\n): Promise<SendToAgentTeamBackgroundRunResult> {\n return sendToTask(taskIdFromBackgroundRunId(runId), message);\n}\n\nasync function sendAgentTeamBackgroundAgentFollowUp(\n input: BackgroundAgentFollowUpInput,\n): Promise<BackgroundAgentControlResult> {\n const prompt = input.prompt.trim();\n if (!prompt) {\n return {\n ok: false,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n error: \"Follow-up prompt is required.\",\n };\n }\n\n const result = await sendToAgentTeamBackgroundRun(input.runId, prompt);\n return {\n ok: result.ok,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n queued: result.ok,\n message: result.ok\n ? \"Follow-up queued for the Agent Teams background run.\"\n : undefined,\n error: result.error,\n };\n}\n\nasync function controlAgentTeamBackgroundAgentRun(\n input: BackgroundAgentControlInput,\n): Promise<BackgroundAgentControlResult> {\n if (input.command !== \"stop\") {\n return {\n ok: false,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n error:\n \"Agent Teams background runs currently support stop through the shared controller.\",\n };\n }\n\n const result = await stopAgentTeamBackgroundRun(input.runId);\n return {\n ok: result.ok,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n message: result.ok ? \"Agent Teams background run stopped.\" : undefined,\n error: result.error,\n };\n}\n\nexport async function stopAgentTeamBackgroundRun(\n runId: string,\n reason = \"user\",\n): Promise<ControlAgentTeamBackgroundRunResult> {\n const taskId = taskIdFromBackgroundRunId(runId);\n const task = await loadTask(taskId);\n if (!task) return { ok: false, error: \"Task not found\" };\n if (task.status !== \"running\") {\n return { ok: false, error: \"Task is not running\" };\n }\n\n abortRun(taskRunId(taskId), reason);\n task.status = \"errored\";\n task.summary =\n reason === \"user\" ? \"Task stopped.\" : `Task stopped: ${reason}`;\n await saveTask(task);\n return { ok: true };\n}\n\n/** Mark a task as errored */\nexport async function markTaskErrored(\n taskId: string,\n error: string,\n): Promise<void> {\n const task = await loadTask(taskId);\n if (task) {\n task.status = \"errored\";\n task.summary = error;\n await saveTask(task);\n }\n}\n\nexport const _agentTeamsQueueForTests = {\n createMessageAwareActions,\n createTaskMessageFinalGuard,\n drainQueuedTaskMessages,\n formatQueuedTaskMessages,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"agent-teams.js","sourceRoot":"","sources":["../../src/server/agent-teams.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Teams — sub-agent orchestration for agent-native.\n *\n * The main agent chat acts as an orchestrator. It spawns sub-agents\n * for individual tasks, which run in their own threads. Sub-agents\n * appear as rich preview cards (chips) inline in the main chat.\n *\n * This module provides the server-side infrastructure:\n * - Creating sub-agent threads and running them in background\n * - Tracking task status and results\n * - Emitting SSE events for live preview cards\n * - Bidirectional messaging between main agent and sub-agents\n *\n * Task state is persisted in application_state (SQL) so it survives\n * serverless cold starts and works across multiple processes.\n */\n\nimport type { AgentChatEvent } from \"../agent/types.js\";\nimport type {\n ActionEntry,\n AgentLoopFinalResponseGuard,\n} from \"../agent/production-agent.js\";\nimport { actionsToEngineTools } from \"../agent/production-agent.js\";\nimport type { AgentEngine, EngineMessage } from \"../agent/engine/types.js\";\nimport { createThread } from \"../chat-threads/store.js\";\nimport {\n abortRun,\n getActiveRunForThreadAsync,\n getRun,\n startRun,\n subscribeToRun,\n type ActiveRun,\n} from \"../agent/run-manager.js\";\nimport { getRunEventsSince } from \"../agent/run-store.js\";\nimport {\n runAgentLoop,\n appendAgentLoopContinuation,\n} from \"../agent/production-agent.js\";\nimport {\n buildAssistantMessage,\n foldAssistantTurn,\n threadDataToEngineMessages,\n} from \"../agent/thread-data-builder.js\";\nimport type { RunEvent } from \"../agent/types.js\";\nimport {\n completeRun as completeProgressRun,\n startRun as startProgressRun,\n updateRunProgress,\n} from \"../progress/registry.js\";\nimport {\n enqueueAgentTeamRun,\n claimAgentTeamRun,\n touchAgentTeamRun,\n bumpAgentTeamContinuation,\n completeAgentTeamRun,\n getAgentTeamRunDispatchState,\n listActiveAgentTeamTaskIdsForOwner,\n MAX_AGENT_TEAM_CONTINUATIONS,\n RUN_DISPATCH_STUCK_AFTER_MS,\n RUN_PROCESSING_STUCK_AFTER_MS,\n type AgentTeamRunPayload,\n} from \"./agent-teams-run-queue.js\";\nimport { fireInternalDispatch } from \"./self-dispatch.js\";\nimport { resolveOrgIdForEmail } from \"../org/context.js\";\nimport type {\n BackgroundAgentRun,\n BackgroundAgentRunStatus,\n BackgroundAgentTranscriptEvent,\n} from \"../code-agents/background-run.js\";\nimport type {\n BackgroundAgentController,\n BackgroundAgentControlInput,\n BackgroundAgentControlResult,\n BackgroundAgentFollowUpInput,\n ListBackgroundAgentRunsOptions,\n} from \"../code-agents/index.js\";\nimport {\n readAppState,\n writeAppState,\n listAppState,\n deleteAppState,\n} from \"../application-state/script-helpers.js\";\nimport {\n getRequestUserEmail,\n runWithRequestContext,\n} from \"./request-context.js\";\n\n/** Framework route the self-fire dispatch targets to run a queued sub-agent in\n * a fresh function invocation. Mounted inside the agent-chat plugin (where the\n * sub-agent action/prompt/engine closures live). */\nexport const AGENT_TEAM_PROCESS_RUN_PATH =\n \"/_agent-native/agent-teams/_process-run\";\n\n/** Heartbeat cadence for the queue row while a chunk is actively processing. */\nconst RUN_QUEUE_HEARTBEAT_MS = 5_000;\n\nexport interface AgentTask {\n taskId: string;\n threadId: string;\n parentThreadId?: string;\n name?: string;\n description: string;\n status: \"running\" | \"completed\" | \"errored\";\n preview: string;\n summary: string;\n currentStep: string;\n createdAt: number;\n updatedAt?: number;\n startedAt?: number;\n completedAt?: number;\n runId?: string;\n error?: string;\n}\n\nexport type AgentTeamBackgroundRun = Omit<\n BackgroundAgentRun,\n | \"kind\"\n | \"source\"\n | \"sourceRecord\"\n | \"status\"\n | \"cwd\"\n | \"goalId\"\n | \"transcriptPath\"\n | \"artifactRoot\"\n> & {\n kind: \"agent-team\";\n source: \"hosted-agent-team\";\n sourceRecord: {\n type: \"agent-team-task\";\n id: string;\n threadId: string;\n };\n status: BackgroundAgentRunStatus;\n cwd?: string;\n goalId: \"agent-team\";\n transcriptPath?: string;\n artifactRoot?: string;\n};\n\nexport type AgentTeamBackgroundTranscriptEvent = Omit<\n BackgroundAgentTranscriptEvent,\n \"kind\" | \"source\" | \"sourceRecord\"\n> & {\n kind: \"user\" | \"system\" | \"note\" | \"artifact\" | \"status\";\n source: \"hosted-agent-team\";\n sourceRecord: {\n type: \"agent-team-run-event\";\n id: string;\n seq: number;\n };\n};\n\nexport interface SendToAgentTeamBackgroundRunResult {\n ok: boolean;\n error?: string;\n messageId?: string;\n queuedCount?: number;\n}\n\nexport interface ControlAgentTeamBackgroundRunResult {\n ok: boolean;\n error?: string;\n}\n\nexport function createAgentTeamBackgroundAgentController(): BackgroundAgentController {\n return {\n async list(options?: ListBackgroundAgentRunsOptions) {\n if (options?.goalId && options.goalId !== \"agent-team\") return [];\n return listAgentTeamBackgroundRuns();\n },\n get: getAgentTeamBackgroundRun,\n transcript: listAgentTeamBackgroundTranscriptEvents,\n sendFollowUp: sendAgentTeamBackgroundAgentFollowUp,\n control: controlAgentTeamBackgroundAgentRun,\n };\n}\n\nexport const agentTeamBackgroundAgentController =\n createAgentTeamBackgroundAgentController();\n\n/** Key prefix for task records: agent-task:{taskId} */\nconst TASK_PREFIX = \"agent-task:\";\n\n/** Key prefix for thread→task reverse lookup: agent-task-thread:{threadId} */\nconst THREAD_PREFIX = \"agent-task-thread:\";\n\n/** Key prefix for queued orchestrator→sub-agent messages. */\nconst TASK_MESSAGE_PREFIX = \"task-message:\";\n\nconst TASK_RUN_MISSING_GRACE_MS = 60_000;\n\nexport interface QueuedTaskMessage {\n id: string;\n from: \"orchestrator\";\n message: string;\n timestamp: number;\n}\n\nfunction taskMessageQueuePrefix(taskId: string): string {\n return `${TASK_MESSAGE_PREFIX}${taskId}:`;\n}\n\nfunction generateTaskMessageId(): string {\n return `msg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction normalizeQueuedTaskMessage(\n value: Record<string, unknown>,\n fallbackId: string,\n): QueuedTaskMessage | null {\n if (typeof value.message !== \"string\" || value.message.trim().length === 0) {\n return null;\n }\n const timestamp =\n typeof value.timestamp === \"number\" && Number.isFinite(value.timestamp)\n ? value.timestamp\n : Date.now();\n return {\n id: typeof value.id === \"string\" ? value.id : fallbackId,\n from: \"orchestrator\",\n message: value.message,\n timestamp,\n };\n}\n\nfunction formatQueuedTaskMessages(messages: QueuedTaskMessage[]): string {\n const label =\n messages.length === 1\n ? \"Orchestrator message received while you were working\"\n : \"Orchestrator messages received while you were working\";\n const body = messages\n .map((message) => {\n const sentAt = new Date(message.timestamp).toISOString();\n return `[${sentAt}] ${message.message}`;\n })\n .join(\"\\n\\n\");\n return `${label}:\\n\\n${body}\\n\\nAdjust your next steps to account for this update.`;\n}\n\nconst taskMessageDrainLocks = new Map<string, Promise<unknown>>();\n\nasync function withTaskMessageDrainLock<T>(\n taskId: string,\n fn: () => Promise<T>,\n): Promise<T> {\n const previous = taskMessageDrainLocks.get(taskId) ?? Promise.resolve();\n let release!: () => void;\n const current = new Promise<void>((resolve) => (release = resolve));\n taskMessageDrainLocks.set(taskId, current);\n await previous.catch(() => {});\n try {\n return await fn();\n } finally {\n release();\n if (taskMessageDrainLocks.get(taskId) === current) {\n taskMessageDrainLocks.delete(taskId);\n }\n }\n}\n\nasync function listQueuedTaskMessages(\n taskId: string,\n): Promise<Array<{ key: string; message: QueuedTaskMessage }>> {\n const queuePrefix = taskMessageQueuePrefix(taskId);\n const entries = await listAppState(queuePrefix);\n const messages = entries\n .map((entry) => {\n const id = entry.key.slice(queuePrefix.length);\n const message = normalizeQueuedTaskMessage(entry.value, id);\n return message ? { key: entry.key, message } : null;\n })\n .filter(\n (\n entry,\n ): entry is {\n key: string;\n message: QueuedTaskMessage;\n } => Boolean(entry),\n );\n\n // Backward compatibility for messages queued by the old implementation.\n const legacyKey = `${TASK_MESSAGE_PREFIX}${taskId}`;\n const legacy = await readAppState(legacyKey);\n const legacyMessage = legacy\n ? normalizeQueuedTaskMessage(legacy, \"legacy\")\n : null;\n if (legacyMessage) {\n messages.push({ key: legacyKey, message: legacyMessage });\n }\n\n return messages.sort((a, b) => {\n const byTimestamp = a.message.timestamp - b.message.timestamp;\n return byTimestamp || a.message.id.localeCompare(b.message.id);\n });\n}\n\nasync function drainQueuedTaskMessages(\n taskId: string,\n): Promise<QueuedTaskMessage[]> {\n return withTaskMessageDrainLock(taskId, async () => {\n const entries = await listQueuedTaskMessages(taskId);\n if (entries.length === 0) return [];\n for (const entry of entries) {\n await deleteAppState(entry.key);\n }\n return entries.map((entry) => entry.message);\n });\n}\n\nasync function appendQueuedTaskMessage(\n taskId: string,\n message: string,\n): Promise<{ messageId: string; queuedCount: number }> {\n const messageId = generateTaskMessageId();\n await writeAppState(`${taskMessageQueuePrefix(taskId)}${messageId}`, {\n id: messageId,\n from: \"orchestrator\",\n message,\n timestamp: Date.now(),\n });\n const queuedCount = (await listQueuedTaskMessages(taskId)).length;\n return { messageId, queuedCount };\n}\n\nfunction createMessageAwareActions(\n taskId: string,\n actions: Record<string, ActionEntry>,\n): Record<string, ActionEntry> {\n return Object.fromEntries(\n Object.entries(actions).map(([name, entry]) => [\n name,\n {\n ...entry,\n run: async (args, context) => {\n const result = await entry.run(args, context);\n const queuedMessages = await drainQueuedTaskMessages(taskId);\n if (queuedMessages.length === 0) return result;\n\n // Tool results are already the next safe model-visible boundary:\n // the loop records all tool output, then asks the model to continue.\n // Attaching queued updates here avoids mutating message history while\n // an assistant tool-call turn is still being resolved.\n const formatted = formatQueuedTaskMessages(queuedMessages);\n const resultText =\n typeof result === \"string\"\n ? result\n : JSON.stringify(result, null, 2);\n return `${resultText}\\n\\n${formatted}`;\n },\n },\n ]),\n );\n}\n\nfunction createTaskMessageFinalGuard(\n taskId: string,\n): AgentLoopFinalResponseGuard {\n return async () => {\n const queuedMessages = await drainQueuedTaskMessages(taskId);\n if (queuedMessages.length === 0) return null;\n\n // This is queued delivery, not a live interrupt: if the sub-agent is\n // already producing a final answer, the guard asks the loop for one more\n // continuation that includes the orchestrator update as a fresh user turn.\n return {\n retryMessage: formatQueuedTaskMessages(queuedMessages),\n fallbackMessage:\n \"I received an orchestrator update while finishing, but could not continue from it. Please check the task status and send the update again if needed.\",\n };\n };\n}\n\nasync function saveTask(task: AgentTask): Promise<void> {\n task.updatedAt = Date.now();\n await writeAppState(`${TASK_PREFIX}${task.taskId}`, task as any);\n await writeAppState(`${THREAD_PREFIX}${task.threadId}`, {\n taskId: task.taskId,\n });\n}\n\nasync function loadTask(taskId: string): Promise<AgentTask | null> {\n const data = await readAppState(`${TASK_PREFIX}${taskId}`);\n return data ? (data as unknown as AgentTask) : null;\n}\n\nasync function loadTaskByThread(threadId: string): Promise<AgentTask | null> {\n const ref = await readAppState(`${THREAD_PREFIX}${threadId}`);\n if (!ref || !ref.taskId) return null;\n return loadTask(ref.taskId as string);\n}\n\nfunction applyDispatchMetadataToTask(\n task: AgentTask,\n dispatch: Awaited<ReturnType<typeof getAgentTeamRunDispatchState>> | null,\n): AgentTask {\n if (!dispatch) return task;\n const parentThreadId = dispatch.payload.parentThreadId?.trim();\n const name = dispatch.payload.name?.trim();\n if (parentThreadId && !task.parentThreadId) {\n task.parentThreadId = parentThreadId;\n }\n if (name && !task.name) {\n task.name = name;\n }\n return task;\n}\n\nasync function completeReconciledTask(\n task: AgentTask,\n ownerEmail: string | null,\n): Promise<AgentTask> {\n task.status = \"completed\";\n task.summary = task.summary || task.preview || \"Task completed.\";\n task.currentStep = \"\";\n task.completedAt = Date.now();\n await saveTask(task);\n if (ownerEmail) {\n await completeTaskProgressRun(\n task,\n ownerEmail,\n \"succeeded\",\n \"Task completed.\",\n );\n }\n return task;\n}\n\nasync function failReconciledTask(\n task: AgentTask,\n ownerEmail: string | null,\n message: string,\n progressStatus: TerminalProgressStatus = \"failed\",\n): Promise<AgentTask> {\n task.status = \"errored\";\n task.summary = task.summary || task.preview || message;\n task.error = task.error || message;\n task.currentStep = \"\";\n task.completedAt = Date.now();\n await saveTask(task);\n if (ownerEmail) {\n await completeTaskProgressRun(task, ownerEmail, progressStatus, message);\n }\n // Make the dispatch row terminal too so it isn't re-fired.\n await completeAgentTeamRun(task.taskId, \"failed\").catch(() => {});\n return task;\n}\n\n/**\n * Re-fire a dropped self-dispatch. When the queue row is still queued/running\n * but its heartbeat has gone stale (the self-fire never landed, or the\n * processing invocation died), kick the processor again before the hard\n * stuck-cutoff fail path gives up. Best-effort — the fail path is the backstop.\n */\nasync function refireStuckAgentTeamRunIfNeeded(\n task: AgentTask,\n dispatch: NonNullable<\n Awaited<ReturnType<typeof getAgentTeamRunDispatchState>>\n >,\n event?: any,\n): Promise<void> {\n if (dispatch.status !== \"queued\" && dispatch.status !== \"running\") return;\n const idleFor = Date.now() - dispatch.updatedAt;\n if (idleFor < RUN_DISPATCH_STUCK_AFTER_MS) return; // still fresh — leave it\n if (idleFor >= RUN_PROCESSING_STUCK_AFTER_MS) return; // fail path owns this\n try {\n await fireInternalDispatch({\n event,\n path: AGENT_TEAM_PROCESS_RUN_PATH,\n taskId: task.taskId,\n body: { mode: dispatch.continuationCount > 0 ? \"continue\" : \"start\" },\n });\n } catch {\n // best-effort\n }\n}\n\n/**\n * Reconcile a task that still reads \"running\" against the actual run state.\n *\n * Durable-dispatch path (the normal case): the `agent_team_run_queue` row is\n * the authority. While it's queued/running the task stays running (a single\n * completed agent_runs chunk at a soft-timeout boundary does NOT mean the task\n * finished — a continuation may be queued/in-flight). A dropped dispatch is\n * re-fired; a genuinely stalled one (past the hard cutoff) is failed.\n *\n * Legacy fallback (no queue row — pre-upgrade tasks, or the in-process\n * Cloudflare path): fall back to the in-memory/SQL run state via\n * `getActiveRunForThreadAsync`, with the original missing-run grace.\n */\nasync function reconcileTaskWithRun(\n task: AgentTask,\n event?: any,\n): Promise<AgentTask> {\n let dispatch: Awaited<ReturnType<typeof getAgentTeamRunDispatchState>> = null;\n try {\n dispatch = await getAgentTeamRunDispatchState(task.taskId);\n } catch {\n dispatch = null;\n }\n applyDispatchMetadataToTask(task, dispatch);\n\n if (task.status !== \"running\") return task;\n\n if (dispatch) {\n const ownerEmail = dispatch.ownerEmail ?? getRequestUserEmail() ?? null;\n if (dispatch.status === \"queued\" || dispatch.status === \"running\") {\n const stuckFor = Date.now() - dispatch.updatedAt;\n if (stuckFor < RUN_PROCESSING_STUCK_AFTER_MS) {\n await refireStuckAgentTeamRunIfNeeded(task, dispatch, event);\n return task;\n }\n return await failReconciledTask(\n task,\n ownerEmail,\n \"Sub-agent run stalled and did not produce a result.\",\n );\n }\n if (dispatch.status === \"failed\") {\n return await failReconciledTask(\n task,\n ownerEmail,\n task.error || task.summary || \"Sub-agent run failed.\",\n );\n }\n // status === \"done\" but task still running — safety net (the processor\n // normally sets the task terminal before completing the queue row).\n return await completeReconciledTask(task, ownerEmail);\n }\n\n // ── Legacy fallback: no durable queue row ────────────────────────────────\n if (!task.runId) return task;\n let runState:\n | Awaited<ReturnType<typeof getActiveRunForThreadAsync>>\n | undefined;\n try {\n runState = await getActiveRunForThreadAsync(task.threadId);\n } catch {\n return task;\n }\n if (runState?.status === \"running\") return task;\n\n const ownerEmail = getRequestUserEmail();\n if (runState?.status === \"completed\") {\n return await completeReconciledTask(task, ownerEmail);\n }\n if (runState?.status === \"errored\" || runState?.status === \"aborted\") {\n return await failReconciledTask(\n task,\n ownerEmail,\n runState.status === \"aborted\" ? \"Task stopped.\" : \"Task failed.\",\n runState.status === \"aborted\" ? \"cancelled\" : \"failed\",\n );\n }\n\n const referenceAt = task.startedAt ?? task.createdAt;\n if (Date.now() - referenceAt < TASK_RUN_MISSING_GRACE_MS) return task;\n return await failReconciledTask(\n task,\n ownerEmail,\n \"Sub-agent run is no longer active and did not produce a result.\",\n );\n}\n\n/**\n * Reconcile all of an owner's in-flight sub-agent runs. Wired into the RunsTray\n * data path (`/_agent-native/runs`) so the tray self-heals: dropped dispatches\n * are re-fired and dead runs are marked failed promptly, even when the\n * orchestrator chat never polls `status`/`read-result`.\n */\nexport async function reconcileAgentTeamRunsForOwner(\n owner: string,\n event?: any,\n): Promise<void> {\n let taskIds: string[];\n try {\n taskIds = await listActiveAgentTeamTaskIdsForOwner(owner);\n } catch {\n return;\n }\n for (const taskId of taskIds) {\n try {\n const task = await loadTask(taskId);\n if (task) await reconcileTaskWithRun(task, event);\n } catch {\n // best-effort per task — one bad row shouldn't block the rest\n }\n }\n}\n\nfunction generateTaskId(): string {\n return `task-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction taskRunId(taskId: string): string {\n return `run-task-${taskId}`;\n}\n\nfunction taskIdFromBackgroundRunId(runId: string): string {\n return runId.startsWith(\"run-task-\")\n ? runId.slice(\"run-task-\".length)\n : runId;\n}\n\nfunction mapTaskStatusToBackgroundStatus(\n status: AgentTask[\"status\"],\n): BackgroundAgentRunStatus {\n return status;\n}\n\nfunction taskTimestampToIso(timestamp: number): string {\n const date = new Date(timestamp);\n return Number.isFinite(date.getTime())\n ? date.toISOString()\n : new Date(0).toISOString();\n}\n\nfunction latestTaskText(task: AgentTask): string | undefined {\n return task.summary || task.preview || task.currentStep || undefined;\n}\n\nfunction formatTaskPhase(task: AgentTask): string {\n if (task.status === \"running\") return task.currentStep || \"Running\";\n if (task.status === \"completed\") return \"Completed\";\n const phase = task.error || task.summary || \"Task failed.\";\n return phase.length > 120 ? `${phase.slice(0, 117)}...` : phase;\n}\n\ntype TerminalProgressStatus = \"succeeded\" | \"failed\" | \"cancelled\";\n\nfunction taskProgressMetadata(task: AgentTask): Record<string, unknown> {\n return {\n kind: \"agent-team\",\n source: \"agent-teams\",\n taskId: task.taskId,\n threadId: task.threadId,\n description: task.description,\n preview: task.preview,\n summary: task.summary,\n currentStep: task.currentStep,\n surfaceUrl: `agent-native://threads/${encodeURIComponent(task.threadId)}`,\n ...(task.parentThreadId ? { parentThreadId: task.parentThreadId } : {}),\n ...(task.name ? { name: task.name } : {}),\n };\n}\n\nfunction currentTaskProgressStep(task: AgentTask): string {\n return (\n task.currentStep ||\n (task.preview ? \"Working on response\" : \"Starting sub-agent\")\n );\n}\n\nasync function startTaskProgressRun(\n task: AgentTask,\n ownerEmail: string,\n): Promise<void> {\n const runId = task.runId ?? taskRunId(task.taskId);\n task.runId = runId;\n try {\n await startProgressRun({\n id: runId,\n owner: ownerEmail,\n title: task.description,\n step: currentTaskProgressStep(task),\n metadata: taskProgressMetadata(task),\n });\n } catch {\n // Progress rows are user-facing visibility. A write failure should not\n // prevent the sub-agent from running or the task card from updating.\n }\n}\n\nasync function updateTaskProgressRun(\n task: AgentTask,\n ownerEmail: string,\n): Promise<void> {\n const runId = task.runId ?? taskRunId(task.taskId);\n task.runId = runId;\n try {\n await updateRunProgress(runId, ownerEmail, {\n step: currentTaskProgressStep(task),\n metadata: taskProgressMetadata(task),\n });\n } catch {\n // best-effort\n }\n}\n\nasync function completeTaskProgressRun(\n task: AgentTask,\n ownerEmail: string,\n status: TerminalProgressStatus,\n step: string,\n): Promise<void> {\n const runId = task.runId ?? taskRunId(task.taskId);\n task.runId = runId;\n try {\n await completeProgressRun(runId, ownerEmail, status, {\n step,\n metadata: taskProgressMetadata(task),\n });\n } catch {\n // best-effort\n }\n}\n\nfunction resolveTaskCompletion(\n run: Pick<ActiveRun, \"status\" | \"abortReason\">,\n accumulatedText: string,\n): {\n taskStatus: \"completed\" | \"errored\";\n summary: string;\n progressStatus: TerminalProgressStatus;\n progressStep: string;\n error?: string;\n} {\n const text = accumulatedText.trim();\n if (run.status === \"aborted\") {\n const stopped =\n run.abortReason && run.abortReason !== \"user\"\n ? `Task stopped: ${run.abortReason}`\n : \"Task stopped.\";\n return {\n taskStatus: \"errored\",\n summary: stopped,\n progressStatus: \"cancelled\",\n progressStep: stopped,\n error: stopped,\n };\n }\n if (run.status === \"errored\") {\n const failed = text.slice(-500) || \"Task failed.\";\n return {\n taskStatus: \"errored\",\n summary: failed,\n progressStatus: \"failed\",\n progressStep: \"Task failed.\",\n error: failed,\n };\n }\n const summary = text.slice(-1000) || \"Task completed successfully.\";\n return {\n taskStatus: \"completed\",\n summary,\n progressStatus: \"succeeded\",\n progressStep: \"Task completed.\",\n };\n}\n\nexport function toAgentTaskBackgroundRun(\n task: AgentTask,\n): AgentTeamBackgroundRun {\n const createdAt = taskTimestampToIso(task.createdAt);\n const updatedAt = taskTimestampToIso(\n task.completedAt ?? task.updatedAt ?? task.createdAt,\n );\n const phase = formatTaskPhase(task);\n return {\n schemaVersion: 1,\n id: taskRunId(task.taskId),\n kind: \"agent-team\",\n source: \"hosted-agent-team\",\n sourceLabel: \"Agent Teams\",\n sourceRecord: {\n type: \"agent-team-task\",\n id: task.taskId,\n threadId: task.threadId,\n ...(task.parentThreadId ? { parentThreadId: task.parentThreadId } : {}),\n ...(task.name ? { name: task.name } : {}),\n },\n title: task.description,\n subtitle:\n task.currentStep || (task.status === \"errored\" ? phase : undefined),\n status: mapTaskStatusToBackgroundStatus(task.status),\n phase,\n createdAt,\n updatedAt,\n goalId: \"agent-team\",\n needsInput: false,\n needsApproval: false,\n details: [\n { label: \"Task\", value: task.taskId },\n { label: \"Thread\", value: task.threadId },\n ...(task.parentThreadId\n ? [{ label: \"Parent\", value: task.parentThreadId }]\n : []),\n ],\n surfaceUrl: `agent-native://threads/${task.threadId}`,\n metadata: {\n taskId: task.taskId,\n threadId: task.threadId,\n description: task.description,\n preview: task.preview,\n summary: task.summary,\n currentStep: task.currentStep,\n latestText: latestTaskText(task),\n completedAt: task.completedAt,\n error: task.error,\n ...(task.parentThreadId ? { parentThreadId: task.parentThreadId } : {}),\n ...(task.name ? { name: task.name } : {}),\n },\n };\n}\n\nfunction summarizeAgentChatEvent(event: RunEvent): {\n kind: AgentTeamBackgroundTranscriptEvent[\"kind\"];\n message: string;\n metadata?: Record<string, unknown>;\n} | null {\n const payload = event.event;\n switch (payload.type) {\n case \"text\":\n return { kind: \"note\", message: payload.text };\n case \"activity\":\n return {\n kind: \"status\",\n message: payload.label,\n metadata: payload.tool ? { tool: payload.tool } : undefined,\n };\n case \"tool_start\":\n return {\n kind: \"status\",\n message: `Running ${payload.tool}`,\n metadata: { tool: payload.tool, input: payload.input },\n };\n case \"tool_done\":\n return {\n kind: \"artifact\",\n message: payload.result,\n metadata: { tool: payload.tool },\n };\n case \"agent_task\":\n return {\n kind: \"status\",\n message: `${payload.description} (${payload.status})`,\n metadata: {\n taskId: payload.taskId,\n threadId: payload.threadId,\n status: payload.status,\n },\n };\n case \"agent_task_update\":\n return {\n kind: \"status\",\n message: payload.preview || payload.currentStep || \"Task updated\",\n metadata: {\n taskId: payload.taskId,\n currentStep: payload.currentStep,\n },\n };\n case \"agent_task_complete\":\n return {\n kind: \"status\",\n message: payload.summary,\n metadata: { taskId: payload.taskId },\n };\n case \"error\":\n return {\n kind: \"status\",\n message: payload.error,\n metadata: {\n errorCode: payload.errorCode,\n upgradeUrl: payload.upgradeUrl,\n },\n };\n case \"missing_api_key\":\n return {\n kind: \"status\",\n message: \"Missing API key\",\n };\n case \"done\":\n return { kind: \"status\", message: \"Run completed\" };\n case \"loop_limit\":\n return { kind: \"status\", message: \"Run stopped at the loop limit\" };\n case \"auto_continue\":\n return {\n kind: \"status\",\n message: \"Run reached its continuation boundary\",\n metadata: { reason: payload.reason },\n };\n case \"clear\":\n return null;\n case \"agent_call\":\n return {\n kind: \"status\",\n message: `${payload.agent} ${payload.status}`,\n metadata: { agent: payload.agent, status: payload.status },\n };\n case \"agent_call_text\":\n return {\n kind: \"note\",\n message: payload.text,\n metadata: { agent: payload.agent },\n };\n default:\n return null;\n }\n}\n\nexport function toAgentTaskBackgroundTranscriptEvent(\n runId: string,\n event: RunEvent,\n): AgentTeamBackgroundTranscriptEvent | null {\n const summary = summarizeAgentChatEvent(event);\n if (!summary) return null;\n return {\n schemaVersion: 1,\n id: `${runId}:${event.seq}`,\n runId,\n kind: summary.kind,\n source: \"hosted-agent-team\",\n sourceRecord: {\n type: \"agent-team-run-event\",\n id: `${runId}:${event.seq}`,\n seq: event.seq,\n },\n message: summary.message,\n createdAt: new Date().toISOString(),\n metadata: summary.metadata,\n };\n}\n\nexport interface SpawnTaskOptions {\n /** Description of what the sub-agent should do */\n description: string;\n /** Additional instructions scoped to this sub-agent */\n instructions?: string;\n /** Model to use (e.g. \"claude-haiku-4-5\"). Uses default if omitted */\n model?: string;\n /** The owner email for thread creation */\n ownerEmail: string;\n /** The system prompt base for the sub-agent */\n systemPrompt: string;\n /** Available actions for the sub-agent */\n actions: Record<string, ActionEntry>;\n /** Agent engine to use. Falls back to creating an Anthropic engine with apiKey. */\n engine?: AgentEngine;\n /** API key for Anthropic (used only if engine is not provided) */\n apiKey?: string;\n /** Callback to emit events to the parent chat stream */\n parentSend: (event: AgentChatEvent) => void;\n /** Parent thread ID — used to auto-respond when the sub-agent finishes */\n parentThreadId?: string;\n /** Display name for the sub-agent tab (carried into the dispatch payload). */\n name?: string;\n}\n\n/**\n * Spawn a sub-agent task. Creates a thread, starts a background agent run,\n * and emits agent_task events to the parent chat stream.\n */\nexport async function spawnTask(opts: SpawnTaskOptions): Promise<AgentTask> {\n const taskId = generateTaskId();\n\n // Create a dedicated thread for the sub-agent with the task as the first message\n const thread = await createThread(opts.ownerEmail, {\n title: opts.description.slice(0, 100),\n });\n\n // Save the initial user message to thread data so the tab shows content\n // immediately. Shape must match assistant-ui's ExportedMessageRepository —\n // each entry carries an explicit `parentId` so the runtime threads messages\n // into a linked list; without it, later assistant messages render as\n // orphaned siblings and only the one under `headId` is shown.\n const userMsgId = `msg-${taskId}-user`;\n try {\n const { updateThreadData } = await import(\"../chat-threads/store.js\");\n const threadData = JSON.stringify({\n headId: userMsgId,\n messages: [\n {\n message: {\n id: userMsgId,\n role: \"user\",\n content: [{ type: \"text\", text: opts.description }],\n metadata: {},\n },\n parentId: null,\n },\n ],\n });\n await updateThreadData(\n thread.id,\n threadData,\n opts.description.slice(0, 100),\n opts.description.slice(0, 200),\n 1,\n );\n } catch {\n // Best effort — thread will still work without persisted messages\n }\n\n const runId = taskRunId(taskId);\n const createdAt = Date.now();\n const task: AgentTask = {\n taskId,\n threadId: thread.id,\n ...(opts.parentThreadId ? { parentThreadId: opts.parentThreadId } : {}),\n ...(opts.name ? { name: opts.name } : {}),\n description: opts.description,\n status: \"running\",\n preview: \"\",\n summary: \"\",\n currentStep: \"Starting sub-agent\",\n createdAt,\n updatedAt: createdAt,\n startedAt: createdAt,\n runId,\n };\n\n await saveTask(task);\n await startTaskProgressRun(task, opts.ownerEmail);\n\n // Notify parent chat that a sub-agent was spawned\n opts.parentSend({\n type: \"agent_task\",\n taskId,\n threadId: thread.id,\n description: opts.description,\n status: \"running\",\n });\n\n // Hand the run off to the durable dispatch queue and self-fire a fresh\n // function invocation to execute it. This is what makes background\n // sub-agents survive serverless: the spawning request returns immediately\n // while the sub-agent runs in its OWN invocation (with its own timeout\n // budget) instead of as a detached in-process promise that the host freezes\n // when this response flushes. Same enqueue-to-SQL + self-fire-HTTP pattern\n // as A2A async tasks (a2a/handlers.ts) and integration webhooks\n // (integrations/webhook-handler.ts). Execution happens in `processAgentTeamRun`,\n // invoked by the `/_agent-native/agent-teams/_process-run` route mounted\n // inside the agent-chat plugin (where the action/prompt/engine closures live).\n let orgId: string | null = null;\n try {\n orgId = (await resolveOrgIdForEmail(opts.ownerEmail)) ?? null;\n } catch {\n orgId = null;\n }\n\n const payload: AgentTeamRunPayload = {\n description: opts.description,\n instructions: opts.instructions,\n model: opts.model,\n ...(opts.parentThreadId ? { parentThreadId: opts.parentThreadId } : {}),\n ...(opts.name ? { name: opts.name } : {}),\n // Stable across continuation chunks so the durable assistant message folds.\n turnId: runId,\n };\n\n try {\n await enqueueAgentTeamRun({\n taskId,\n threadId: thread.id,\n runId,\n ownerEmail: opts.ownerEmail,\n orgId,\n payload,\n });\n await fireInternalDispatch({\n path: AGENT_TEAM_PROCESS_RUN_PATH,\n taskId,\n body: { mode: \"start\" },\n });\n } catch (err) {\n // Enqueue/dispatch failed outright — surface as an errored task rather\n // than a ghost \"running\" one. (A dropped self-fire that still enqueued is\n // recovered by the reconcile stuck-refire path.)\n const message =\n err instanceof Error\n ? `Failed to start sub-agent: ${err.message}`\n : \"Failed to start sub-agent.\";\n await failReconciledTask(task, opts.ownerEmail, message);\n }\n\n return task;\n}\n\n/**\n * Build the sub-agent system prompt: a \"you are a sub-agent\" preamble (so it\n * starts on its task instead of exploring), the base prompt, and any\n * task-specific instructions.\n */\nfunction buildSubAgentSystemPrompt(\n baseSystemPrompt: string,\n actions: Record<string, ActionEntry>,\n instructions?: string,\n): string {\n const actionNames = Object.keys(actions).join(\", \");\n const preamble = `## You Are a Sub-Agent\n\nYou are a focused sub-agent with a specific task. You have been given a curated set of actions that connect directly to the app's database and services.\n\n**Start immediately with your task. Do NOT:**\n- Run \\`db-schema\\` to explore the database structure\n- Run \\`bash\\` just to search/list files\n- Try to \\`curl\\` or access external URLs to find the app\n- Use \\`bash\\` for exploration — only for running \\`pnpm action\\` commands when no direct action exists\n\n**Your available actions (${actionNames}) work directly. Use them.**\n\n`;\n let prompt = preamble + baseSystemPrompt;\n if (instructions) {\n prompt += `\\n\\n## Task-Specific Instructions\\n\\n${instructions}`;\n }\n return prompt;\n}\n\n/**\n * Persist the sub-agent conversation to thread_data, folding continuation\n * chunks of the same turn into one assistant message (same `foldAssistantTurn`\n * mechanism the main chat uses). Returns the full folded assistant text for use\n * as the task summary so multi-chunk runs don't lose earlier chunks' output.\n */\nasync function persistTaskThreadData(\n task: AgentTask,\n description: string,\n run: ActiveRun,\n runId: string,\n turnId: string,\n): Promise<string> {\n try {\n const { getThread, updateThreadData } =\n await import(\"../chat-threads/store.js\");\n const thread = await getThread(task.threadId);\n let repo: any;\n try {\n repo = JSON.parse(thread?.threadData || \"{}\");\n } catch {\n repo = {};\n }\n if (!Array.isArray(repo.messages)) repo.messages = [];\n\n // Ensure the seed user message exists (first chunk / fresh thread).\n const userMsgId = `msg-${task.taskId}-user`;\n const hasUser = repo.messages.some(\n (m: any) => (m?.message ?? m)?.id === userMsgId,\n );\n if (!hasUser) {\n repo.messages.unshift({\n message: {\n id: userMsgId,\n role: \"user\",\n content: [{ type: \"text\", text: description }],\n metadata: {},\n },\n parentId: null,\n });\n if (!repo.headId) repo.headId = userMsgId;\n }\n\n const assistantMsg = buildAssistantMessage(run.events ?? [], runId, {\n suppressInternalContinuation: true,\n turnId,\n });\n if (assistantMsg) {\n repo = foldAssistantTurn(repo, assistantMsg, { runId, turnId });\n }\n\n // Extract the folded assistant text (full content across chunks).\n let assistantText = \"\";\n const headEntry = Array.isArray(repo.messages)\n ? repo.messages.find((m: any) => (m?.message ?? m)?.id === repo.headId)\n : undefined;\n const headMsg = headEntry?.message ?? headEntry;\n if (headMsg?.role === \"assistant\" && Array.isArray(headMsg.content)) {\n assistantText = headMsg.content\n .filter((c: any) => c?.type === \"text\" && typeof c.text === \"string\")\n .map((c: any) => c.text)\n .join(\"\\n\");\n }\n\n await updateThreadData(\n task.threadId,\n JSON.stringify(repo),\n description.slice(0, 100),\n assistantText.slice(0, 200),\n Array.isArray(repo.messages) ? repo.messages.length : 1,\n );\n return assistantText;\n } catch {\n return \"\";\n }\n}\n\n/** Mark a sub-agent task terminal: task record, progress row, and queue row. */\nasync function finalizeAgentTeamRun(\n task: AgentTask,\n run: ActiveRun,\n ownerEmail: string | null,\n fullText: string,\n): Promise<void> {\n const terminal = resolveTaskCompletion(run, fullText);\n task.status = terminal.taskStatus;\n task.summary = terminal.summary;\n task.error = terminal.error;\n task.currentStep = \"\";\n task.completedAt = Date.now();\n await saveTask(task);\n if (ownerEmail) {\n await completeTaskProgressRun(\n task,\n ownerEmail,\n terminal.progressStatus,\n terminal.progressStep,\n );\n }\n await completeAgentTeamRun(\n task.taskId,\n terminal.taskStatus === \"completed\" ? \"done\" : \"failed\",\n );\n}\n\n/** Run config the processor route resolves from plugin-scope closures. */\nexport interface AgentTeamRunConfig {\n baseSystemPrompt: string;\n actions: Record<string, ActionEntry>;\n engine: AgentEngine;\n model: string;\n}\n\nexport interface ProcessAgentTeamRunOptions {\n taskId: string;\n /** \"start\" = first chunk; \"continue\" = resume from thread_data after a\n * soft-timeout boundary. Defaults from the queue row's continuation count. */\n mode?: \"start\" | \"continue\";\n /** Inbound request event, used to resolve the self-dispatch base URL for\n * continuation self-fires. */\n event?: any;\n /** Builds the sub-agent run config from the queue payload + resolved owner.\n * The plugin supplies this because the action registry / base prompt /\n * engine are per-deployment plugin-scope closures, not serializable. */\n resolveConfig: (ctx: {\n payload: AgentTeamRunPayload;\n ownerEmail: string;\n orgId: string | null;\n }) => Promise<AgentTeamRunConfig>;\n}\n\n/**\n * Execute one chunk of a queued sub-agent run in a fresh function invocation.\n * Called by the `/_agent-native/agent-teams/_process-run` route. Atomically\n * claims the run (idempotent on duplicate self-fires), reconstructs the\n * messages (start vs continue), runs the agent loop to completion, persists\n * thread_data, and either self-fires a continuation (soft-timeout boundary,\n * under the cap) or finalizes the task.\n */\nexport async function processAgentTeamRun(\n opts: ProcessAgentTeamRunOptions,\n): Promise<{ ok: boolean; skipped?: string }> {\n const claimed = await claimAgentTeamRun(opts.taskId);\n if (!claimed) return { ok: true, skipped: \"already-claimed-or-missing\" };\n\n return await runWithRequestContext(\n {\n userEmail: claimed.ownerEmail ?? undefined,\n orgId: claimed.orgId ?? undefined,\n },\n async () => {\n const task = await loadTask(opts.taskId);\n if (!task) {\n await completeAgentTeamRun(opts.taskId, \"failed\");\n return { ok: true, skipped: \"task-missing\" };\n }\n if (task.status !== \"running\") {\n await completeAgentTeamRun(\n opts.taskId,\n task.status === \"completed\" ? \"done\" : \"failed\",\n );\n return { ok: true, skipped: \"task-terminal\" };\n }\n\n const payload = claimed.payload;\n const ownerEmail = claimed.ownerEmail ?? getRequestUserEmail() ?? \"\";\n const orgId = claimed.orgId;\n const turnId = payload.turnId || taskRunId(opts.taskId);\n\n let config: AgentTeamRunConfig;\n try {\n config = await opts.resolveConfig({ payload, ownerEmail, orgId });\n } catch (err) {\n const message =\n err instanceof Error\n ? `Failed to prepare sub-agent: ${err.message}`\n : \"Failed to prepare sub-agent.\";\n await failReconciledTask(task, ownerEmail || null, message);\n return { ok: false, skipped: \"config-failed\" };\n }\n\n const mode: \"start\" | \"continue\" =\n opts.mode ?? (claimed.continuationCount > 0 ? \"continue\" : \"start\");\n\n const systemPrompt = buildSubAgentSystemPrompt(\n config.baseSystemPrompt,\n config.actions,\n payload.instructions,\n );\n\n let messages: EngineMessage[];\n if (mode === \"continue\") {\n let priorThreadData: string | null | undefined;\n try {\n const { getThread } = await import(\"../chat-threads/store.js\");\n priorThreadData = (await getThread(task.threadId))?.threadData;\n } catch {\n priorThreadData = undefined;\n }\n messages = threadDataToEngineMessages(priorThreadData);\n if (messages.length === 0) {\n messages = [\n {\n role: \"user\",\n content: [{ type: \"text\", text: payload.description }],\n },\n ];\n }\n appendAgentLoopContinuation(messages, \"run_timeout\");\n } else {\n messages = [\n {\n role: \"user\",\n content: [{ type: \"text\", text: payload.description }],\n },\n ];\n }\n\n const messageAwareActions = createMessageAwareActions(\n opts.taskId,\n config.actions,\n );\n const tools = actionsToEngineTools(messageAwareActions);\n\n // Fresh runId per chunk (avoids agent_runs PK collisions); stable turnId so\n // the durable assistant message folds across chunks.\n const runId = `${taskRunId(opts.taskId)}-c${claimed.continuationCount}`;\n\n task.currentStep =\n mode === \"continue\" ? \"Continuing sub-agent\" : \"Working on response\";\n task.startedAt = task.startedAt ?? Date.now();\n await saveTask(task);\n if (ownerEmail) await updateTaskProgressRun(task, ownerEmail);\n\n const heartbeat = setInterval(() => {\n void touchAgentTeamRun(opts.taskId);\n }, RUN_QUEUE_HEARTBEAT_MS);\n (heartbeat as unknown as { unref?: () => void }).unref?.();\n\n let accumulatedText = \"\";\n let lastProgressSent = 0;\n const PROGRESS_INTERVAL_MS = 2000;\n\n await new Promise<void>((resolve) => {\n startRun(\n runId,\n task.threadId,\n async (send, signal) => {\n const wrappedSend = (event: AgentChatEvent) => {\n send(event);\n if (event.type === \"text\") {\n accumulatedText += event.text;\n task.preview = accumulatedText.slice(-800);\n const now = Date.now();\n if (now - lastProgressSent >= PROGRESS_INTERVAL_MS) {\n lastProgressSent = now;\n void saveTask(task);\n if (ownerEmail) void updateTaskProgressRun(task, ownerEmail);\n }\n } else if (event.type === \"tool_start\") {\n task.currentStep = `Running ${event.tool}...`;\n } else if (event.type === \"tool_done\") {\n task.currentStep = \"\";\n }\n };\n await runWithRequestContext(\n { userEmail: ownerEmail || undefined, orgId: orgId ?? undefined },\n async () => {\n await runAgentLoop({\n engine: config.engine,\n model: config.model,\n systemPrompt,\n tools,\n messages,\n actions: messageAwareActions,\n send: wrappedSend,\n signal,\n finalResponseGuard: createTaskMessageFinalGuard(opts.taskId),\n });\n },\n );\n },\n async (run) => {\n clearInterval(heartbeat);\n try {\n const fullText = await persistTaskThreadData(\n task,\n payload.description,\n run,\n runId,\n turnId,\n );\n\n // A soft-timeout boundary means the host function wall is near and\n // the partial turn is checkpointed in thread_data — self-fire the\n // next continuation chunk (server-side analog of the client re-POST\n // that continues the main chat) instead of finalizing.\n const reachedBoundary = (run.events ?? []).some(\n (e) => e.event.type === \"auto_continue\",\n );\n if (reachedBoundary) {\n const count = await bumpAgentTeamContinuation(opts.taskId);\n if (count !== null && count <= MAX_AGENT_TEAM_CONTINUATIONS) {\n task.currentStep = \"Continuing sub-agent\";\n task.preview = (fullText || accumulatedText).slice(-800);\n await saveTask(task);\n if (ownerEmail) await updateTaskProgressRun(task, ownerEmail);\n await fireInternalDispatch({\n event: opts.event,\n path: AGENT_TEAM_PROCESS_RUN_PATH,\n taskId: opts.taskId,\n body: { mode: \"continue\" },\n });\n return;\n }\n // Hit the cap — finalize with whatever was produced.\n }\n\n await finalizeAgentTeamRun(\n task,\n run,\n ownerEmail || null,\n fullText || accumulatedText,\n );\n } finally {\n resolve();\n }\n },\n { useHostedSoftTimeoutDefault: true, turnId },\n );\n });\n\n return { ok: true };\n },\n );\n}\n\n/** Get task by ID */\nexport async function getTask(taskId: string): Promise<AgentTask | undefined> {\n const task = await loadTask(taskId);\n return task ? await reconcileTaskWithRun(task) : undefined;\n}\n\n/** Get task by thread ID */\nexport async function getTaskByThread(\n threadId: string,\n): Promise<AgentTask | undefined> {\n const task = await loadTaskByThread(threadId);\n return task ? await reconcileTaskWithRun(task) : undefined;\n}\n\n/** List all tasks (most recent first) */\nexport async function listTasks(): Promise<AgentTask[]> {\n const entries = await listAppState(TASK_PREFIX);\n const tasks = entries.map((e) => e.value as unknown as AgentTask);\n const reconciled = await Promise.all(tasks.map(reconcileTaskWithRun));\n return reconciled.sort(\n (a, b) =>\n (b.updatedAt ?? b.completedAt ?? b.createdAt) -\n (a.updatedAt ?? a.completedAt ?? a.createdAt),\n );\n}\n\nexport async function listAgentTeamBackgroundRuns(): Promise<\n AgentTeamBackgroundRun[]\n> {\n return (await listTasks()).map(toAgentTaskBackgroundRun);\n}\n\nexport async function getAgentTeamBackgroundRun(\n runId: string,\n): Promise<AgentTeamBackgroundRun | null> {\n const task = await loadTask(taskIdFromBackgroundRunId(runId));\n return task\n ? toAgentTaskBackgroundRun(await reconcileTaskWithRun(task))\n : null;\n}\n\nexport async function listAgentTeamBackgroundTranscriptEvents(\n runId: string,\n): Promise<AgentTeamBackgroundTranscriptEvent[]> {\n const normalizedRunId = taskRunId(taskIdFromBackgroundRunId(runId));\n const activeRun = getRun(normalizedRunId);\n const events = activeRun\n ? activeRun.events\n : await getPersistedRunEvents(normalizedRunId);\n\n return events\n .map((event) =>\n toAgentTaskBackgroundTranscriptEvent(normalizedRunId, event),\n )\n .filter((event): event is AgentTeamBackgroundTranscriptEvent =>\n Boolean(event),\n );\n}\n\nexport function subscribeToAgentTeamBackgroundRun(\n runId: string,\n fromSeq = 0,\n): ReadableStream<Uint8Array> | null {\n return subscribeToRun(taskRunId(taskIdFromBackgroundRunId(runId)), fromSeq);\n}\n\nasync function getPersistedRunEvents(runId: string): Promise<RunEvent[]> {\n const rows = await getRunEventsSince(runId, 0);\n return rows\n .map((row): RunEvent | null => {\n try {\n return {\n seq: row.seq,\n event: JSON.parse(row.eventData) as RunEvent[\"event\"],\n };\n } catch {\n return null;\n }\n })\n .filter((event): event is RunEvent => Boolean(event));\n}\n\n/** Send a message/update to a running sub-agent via application state */\nexport async function sendToTask(\n taskId: string,\n message: string,\n): Promise<{\n ok: boolean;\n error?: string;\n messageId?: string;\n queuedCount?: number;\n}> {\n const task = await loadTask(taskId);\n if (!task) return { ok: false, error: \"Task not found\" };\n if (task.status !== \"running\")\n return { ok: false, error: \"Task is not running\" };\n if (message.trim().length === 0)\n return { ok: false, error: \"Message is required\" };\n\n // Append to a durable per-task queue. Running sub-agents drain this queue\n // after tool batches and immediately before a final response. This does not\n // interrupt an in-flight model stream or tool call; it guarantees the next\n // safe continuation sees the update.\n try {\n const queued = await appendQueuedTaskMessage(taskId, message);\n return { ok: true, ...queued };\n } catch {\n const sessionId = getRequestUserEmail();\n if (!sessionId) return { ok: false, error: \"no authenticated user\" };\n return { ok: false, error: \"Unable to queue message\" };\n }\n}\n\nexport async function sendToAgentTeamBackgroundRun(\n runId: string,\n message: string,\n): Promise<SendToAgentTeamBackgroundRunResult> {\n return sendToTask(taskIdFromBackgroundRunId(runId), message);\n}\n\nasync function sendAgentTeamBackgroundAgentFollowUp(\n input: BackgroundAgentFollowUpInput,\n): Promise<BackgroundAgentControlResult> {\n const prompt = input.prompt.trim();\n if (!prompt) {\n return {\n ok: false,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n error: \"Follow-up prompt is required.\",\n };\n }\n\n const result = await sendToAgentTeamBackgroundRun(input.runId, prompt);\n return {\n ok: result.ok,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n queued: result.ok,\n message: result.ok\n ? \"Follow-up queued for the Agent Teams background run.\"\n : undefined,\n error: result.error,\n };\n}\n\nasync function controlAgentTeamBackgroundAgentRun(\n input: BackgroundAgentControlInput,\n): Promise<BackgroundAgentControlResult> {\n if (input.command !== \"stop\") {\n return {\n ok: false,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n error:\n \"Agent Teams background runs currently support stop through the shared controller.\",\n };\n }\n\n const result = await stopAgentTeamBackgroundRun(input.runId);\n return {\n ok: result.ok,\n runId: input.runId,\n run: await getAgentTeamBackgroundRun(input.runId),\n message: result.ok ? \"Agent Teams background run stopped.\" : undefined,\n error: result.error,\n };\n}\n\nexport async function stopAgentTeamBackgroundRun(\n runId: string,\n reason = \"user\",\n): Promise<ControlAgentTeamBackgroundRunResult> {\n const taskId = taskIdFromBackgroundRunId(runId);\n const task = await loadTask(taskId);\n if (!task) return { ok: false, error: \"Task not found\" };\n if (task.status !== \"running\") {\n return { ok: false, error: \"Task is not running\" };\n }\n\n abortRun(taskRunId(taskId), reason);\n task.status = \"errored\";\n task.summary =\n reason === \"user\" ? \"Task stopped.\" : `Task stopped: ${reason}`;\n task.error = task.summary;\n task.currentStep = \"\";\n task.completedAt = Date.now();\n await saveTask(task);\n const ownerEmail = getRequestUserEmail();\n if (ownerEmail) {\n await completeTaskProgressRun(task, ownerEmail, \"cancelled\", task.summary);\n }\n return { ok: true };\n}\n\n/** Mark a task as errored */\nexport async function markTaskErrored(\n taskId: string,\n error: string,\n): Promise<void> {\n const task = await loadTask(taskId);\n if (task) {\n task.status = \"errored\";\n task.summary = error;\n task.error = error;\n task.currentStep = \"\";\n task.completedAt = Date.now();\n await saveTask(task);\n const ownerEmail = getRequestUserEmail();\n if (ownerEmail) {\n await completeTaskProgressRun(task, ownerEmail, \"failed\", error);\n }\n }\n}\n\nexport const _agentTeamsQueueForTests = {\n createMessageAwareActions,\n createTaskMessageFinalGuard,\n drainQueuedTaskMessages,\n formatQueuedTaskMessages,\n resolveTaskCompletion,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-marketing.d.ts","sourceRoot":"","sources":["../../src/server/auth-marketing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"auth-marketing.d.ts","sourceRoot":"","sources":["../../src/server/auth-marketing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAoIxE,CAAC;AAmFF,wBAAgB,2BAA2B,CACzC,IAAI,GAAE,kCAAuC,GAC5C,oBAAoB,GAAG,SAAS,CAMlC"}
|
|
@@ -26,15 +26,6 @@ export const BUILT_IN_AUTH_MARKETING = {
|
|
|
26
26
|
"Answers schedule questions and resolves conflicts instantly",
|
|
27
27
|
],
|
|
28
28
|
},
|
|
29
|
-
calls: {
|
|
30
|
-
appName: "Agent-Native Calls",
|
|
31
|
-
tagline: "Your AI agent transcribes, summarizes, and surfaces key moments from every conversation.",
|
|
32
|
-
features: [
|
|
33
|
-
"Automatic recaps, action items, and next steps after every call",
|
|
34
|
-
"Smart trackers that detect competitor mentions, objections, and custom topics",
|
|
35
|
-
"Shareable snippets for the exact moment that matters",
|
|
36
|
-
],
|
|
37
|
-
},
|
|
38
29
|
clips: {
|
|
39
30
|
appName: "Agent-Native Clips",
|
|
40
31
|
tagline: "Your AI agent transcribes, summarizes, and searches everything you record alongside you.",
|
|
@@ -44,15 +35,6 @@ export const BUILT_IN_AUTH_MARKETING = {
|
|
|
44
35
|
"One searchable library across recordings, meetings, and dictations",
|
|
45
36
|
],
|
|
46
37
|
},
|
|
47
|
-
code: {
|
|
48
|
-
appName: "Agent-Native Code",
|
|
49
|
-
tagline: "A customizable local Agent-Native Code UI for long-running coding sessions, slash commands, and migration goals.",
|
|
50
|
-
features: [
|
|
51
|
-
"Start and resume local coding sessions",
|
|
52
|
-
"Use the same transcript store as the CLI and Desktop",
|
|
53
|
-
"Customize the UI while reusing the agent-native run harness",
|
|
54
|
-
],
|
|
55
|
-
},
|
|
56
38
|
content: {
|
|
57
39
|
appName: "Agent-Native Content",
|
|
58
40
|
tagline: "Your AI agent creates, edits, and organizes documents alongside you in a Notion-like workspace.",
|
|
@@ -108,42 +90,6 @@ export const BUILT_IN_AUTH_MARKETING = {
|
|
|
108
90
|
],
|
|
109
91
|
runLocalCommand: "npx @agent-native/core create my-mail-app --template mail",
|
|
110
92
|
},
|
|
111
|
-
"meeting-notes": {
|
|
112
|
-
appName: "Agent-Native Meeting Notes",
|
|
113
|
-
tagline: "Your AI agent transcribes, enhances, and organizes your meeting notes while you focus on the conversation.",
|
|
114
|
-
features: [
|
|
115
|
-
"AI-enhanced meeting notes that merge raw notes with transcripts",
|
|
116
|
-
"Smart contact and company tracking from meeting attendees",
|
|
117
|
-
"Reusable templates for consistent note formatting",
|
|
118
|
-
],
|
|
119
|
-
},
|
|
120
|
-
migration: {
|
|
121
|
-
appName: "Migration Workbench",
|
|
122
|
-
tagline: "Move existing apps to agent-native with assessment, human approval, and deterministic verification.",
|
|
123
|
-
features: [
|
|
124
|
-
"Inventory routes, components, behavior, and content before touching output",
|
|
125
|
-
"Approve plans before generated writes begin",
|
|
126
|
-
"Verify output with structured migration reports",
|
|
127
|
-
],
|
|
128
|
-
},
|
|
129
|
-
recruiting: {
|
|
130
|
-
appName: "Agent-Native Recruiting",
|
|
131
|
-
tagline: "Your AI agent screens candidates, manages pipelines, and keeps your hiring on track.",
|
|
132
|
-
features: [
|
|
133
|
-
"AI resume analysis and candidate comparison",
|
|
134
|
-
"Pipeline management with automated stage progression",
|
|
135
|
-
"Scorecard tracking and overdue feedback alerts",
|
|
136
|
-
],
|
|
137
|
-
},
|
|
138
|
-
scheduling: {
|
|
139
|
-
appName: "Agent-Native Scheduling",
|
|
140
|
-
tagline: "Your AI agent manages availability, books meetings, and handles rescheduling alongside you.",
|
|
141
|
-
features: [
|
|
142
|
-
"Automatic round-robin and team scheduling across hosts",
|
|
143
|
-
"Smart availability management with conflict detection",
|
|
144
|
-
"Autonomous rescheduling, reminders, and follow-ups",
|
|
145
|
-
],
|
|
146
|
-
},
|
|
147
93
|
slides: {
|
|
148
94
|
appName: "Agent-Native Slides",
|
|
149
95
|
tagline: "Your AI agent builds, edits, and refines presentations alongside you.",
|
|
@@ -171,20 +117,10 @@ export const BUILT_IN_AUTH_MARKETING = {
|
|
|
171
117
|
"Camera moves, interactive elements, and effects the agent wires for you",
|
|
172
118
|
],
|
|
173
119
|
},
|
|
174
|
-
voice: {
|
|
175
|
-
appName: "Agent-Native Voice",
|
|
176
|
-
tagline: "Speak to type anywhere with context-aware formatting, snippets, and custom vocabulary.",
|
|
177
|
-
features: [
|
|
178
|
-
"Push-to-talk or hands-free dictation with Whisper transcription",
|
|
179
|
-
"Context-aware style presets for formal, casual, and excited tones",
|
|
180
|
-
"Text expansion snippets and custom dictionary for tricky words",
|
|
181
|
-
],
|
|
182
|
-
},
|
|
183
120
|
};
|
|
184
121
|
const SLUG_ALIASES = {
|
|
185
122
|
"agent-native": "",
|
|
186
123
|
"blank-app": "starter",
|
|
187
|
-
"migration-goal-surface": "migration",
|
|
188
124
|
asset: "assets",
|
|
189
125
|
image: "assets",
|
|
190
126
|
images: "assets",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-marketing.js","sourceRoot":"","sources":["../../src/server/auth-marketing.ts"],"names":[],"mappings":"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","sourcesContent":["export interface AuthMarketingContent {\n appName: string;\n tagline: string;\n description?: string;\n features?: string[];\n runLocalCommand?: string;\n}\n\nexport interface ResolveBuiltInAuthMarketingOptions {\n requestHost?: string;\n requestPath?: string;\n}\n\nexport const BUILT_IN_AUTH_MARKETING: Record<string, AuthMarketingContent> = {\n analytics: {\n appName: \"Agent-Native Analytics\",\n tagline:\n \"Your AI agent queries your data sources, builds dashboards, and answers business questions alongside you.\",\n features: [\n \"Ask any question and get answers from BigQuery, HubSpot, Jira, and more\",\n \"Agent-built dashboards that pull live data from all your sources\",\n \"Saved analyses the agent can re-run on demand with fresh numbers\",\n ],\n },\n brain: {\n appName: \"Agent-Native Brain\",\n tagline:\n \"A company memory layer where raw conversations become reviewed, searchable institutional knowledge.\",\n features: [\n \"Import transcripts, notes, Slack exports, and Granola summaries\",\n \"Validate every fact against exact source quotes\",\n \"Review company-wide knowledge through proposal workflows\",\n ],\n },\n calendar: {\n appName: \"Agent-Native Calendar\",\n tagline:\n \"Your AI agent schedules, reschedules, and manages your calendar so you never have to.\",\n features: [\n \"Finds open slots and books meetings on your behalf\",\n \"Manages availability and booking links automatically\",\n \"Answers schedule questions and resolves conflicts instantly\",\n ],\n },\n calls: {\n appName: \"Agent-Native Calls\",\n tagline:\n \"Your AI agent transcribes, summarizes, and surfaces key moments from every conversation.\",\n features: [\n \"Automatic recaps, action items, and next steps after every call\",\n \"Smart trackers that detect competitor mentions, objections, and custom topics\",\n \"Shareable snippets for the exact moment that matters\",\n ],\n },\n clips: {\n appName: \"Agent-Native Clips\",\n tagline:\n \"Your AI agent transcribes, summarizes, and searches everything you record alongside you.\",\n features: [\n \"One-click screen recording with automatic titles, summaries, and chapters\",\n \"Calendar-synced meeting notes with live transcripts and action items\",\n \"One searchable library across recordings, meetings, and dictations\",\n ],\n },\n code: {\n appName: \"Agent-Native Code\",\n tagline:\n \"A customizable local Agent-Native Code UI for long-running coding sessions, slash commands, and migration goals.\",\n features: [\n \"Start and resume local coding sessions\",\n \"Use the same transcript store as the CLI and Desktop\",\n \"Customize the UI while reusing the agent-native run harness\",\n ],\n },\n content: {\n appName: \"Agent-Native Content\",\n tagline:\n \"Your AI agent creates, edits, and organizes documents alongside you in a Notion-like workspace.\",\n features: [\n \"Create and restructure entire document trees from a single prompt\",\n \"Surgical edits that sync live to your editor via real-time collaboration\",\n \"Search, summarize, and cross-reference documents instantly\",\n ],\n },\n design: {\n appName: \"Agent-Native Design\",\n tagline:\n \"Design and prototype by describing what you want. The AI agent turns your ideas into interactive, fully responsive designs in seconds.\",\n features: [\n \"Create polished prototypes just by describing them\",\n \"Build and apply design systems to keep everything on-brand\",\n \"Export your work or share it with a link\",\n ],\n },\n dispatch: {\n appName: \"Agent-Native Dispatch\",\n tagline:\n \"Your AI agent manages secrets, orchestrates other agents, and routes messages across your workspace.\",\n features: [\n \"Centralized vault for secrets with granular per-app grants\",\n \"Cross-agent orchestration and delegation to specialist apps\",\n \"Slack and Telegram routing with approval workflows\",\n ],\n },\n forms: {\n appName: \"Agent-Native Forms\",\n tagline:\n \"Your AI agent builds, publishes, and analyzes forms alongside you.\",\n features: [\n \"Create complete forms from a single sentence\",\n \"Instant publishing with shareable links and captcha\",\n \"Response summaries, exports, and trend analysis on demand\",\n ],\n },\n assets: {\n appName: \"Agent-Native Assets\",\n tagline:\n \"Your AI agent creates, refines, and organizes on-brand assets alongside you.\",\n features: [\n \"Build reusable asset libraries from logos, product shots, videos, and references\",\n \"Generate heroes, diagrams, slide art, product visuals, and videos from a prompt\",\n \"Audit prompts, references, outputs, and refinements across every run\",\n ],\n },\n mail: {\n appName: \"Agent-Native Mail\",\n tagline: \"Your AI agent reads, drafts, and organizes email alongside you.\",\n features: [\n \"Replies that match your tone and style\",\n \"Multi-account Gmail in a single unified inbox\",\n \"Autonomous triage, archiving, and follow-ups\",\n ],\n runLocalCommand:\n \"npx @agent-native/core create my-mail-app --template mail\",\n },\n \"meeting-notes\": {\n appName: \"Agent-Native Meeting Notes\",\n tagline:\n \"Your AI agent transcribes, enhances, and organizes your meeting notes while you focus on the conversation.\",\n features: [\n \"AI-enhanced meeting notes that merge raw notes with transcripts\",\n \"Smart contact and company tracking from meeting attendees\",\n \"Reusable templates for consistent note formatting\",\n ],\n },\n migration: {\n appName: \"Migration Workbench\",\n tagline:\n \"Move existing apps to agent-native with assessment, human approval, and deterministic verification.\",\n features: [\n \"Inventory routes, components, behavior, and content before touching output\",\n \"Approve plans before generated writes begin\",\n \"Verify output with structured migration reports\",\n ],\n },\n recruiting: {\n appName: \"Agent-Native Recruiting\",\n tagline:\n \"Your AI agent screens candidates, manages pipelines, and keeps your hiring on track.\",\n features: [\n \"AI resume analysis and candidate comparison\",\n \"Pipeline management with automated stage progression\",\n \"Scorecard tracking and overdue feedback alerts\",\n ],\n },\n scheduling: {\n appName: \"Agent-Native Scheduling\",\n tagline:\n \"Your AI agent manages availability, books meetings, and handles rescheduling alongside you.\",\n features: [\n \"Automatic round-robin and team scheduling across hosts\",\n \"Smart availability management with conflict detection\",\n \"Autonomous rescheduling, reminders, and follow-ups\",\n ],\n },\n slides: {\n appName: \"Agent-Native Slides\",\n tagline:\n \"Your AI agent builds, edits, and refines presentations alongside you.\",\n features: [\n \"Generate entire decks from a single prompt\",\n \"Surgical slide edits while you present or review\",\n \"Real-time collaboration between you and the agent\",\n ],\n },\n starter: {\n appName: \"Blank app\",\n tagline:\n \"Build an agent-native app where the AI agent and UI share state, actions, and context.\",\n features: [\n \"Define once, use everywhere: actions work as agent tools and API endpoints\",\n \"The agent always knows what you are looking at and can act on it\",\n \"Modify your app's own code, routes, and styles through conversation\",\n ],\n },\n videos: {\n appName: \"Agent-Native Videos\",\n tagline:\n \"Your AI agent builds, animates, and refines programmatic videos alongside you.\",\n features: [\n \"Generate animated components and compositions from a description\",\n \"Fine-tune tracks, keyframes, and easing without touching code\",\n \"Camera moves, interactive elements, and effects the agent wires for you\",\n ],\n },\n voice: {\n appName: \"Agent-Native Voice\",\n tagline:\n \"Speak to type anywhere with context-aware formatting, snippets, and custom vocabulary.\",\n features: [\n \"Push-to-talk or hands-free dictation with Whisper transcription\",\n \"Context-aware style presets for formal, casual, and excited tones\",\n \"Text expansion snippets and custom dictionary for tricky words\",\n ],\n },\n};\n\nconst SLUG_ALIASES: Record<string, string> = {\n \"agent-native\": \"\",\n \"blank-app\": \"starter\",\n \"migration-goal-surface\": \"migration\",\n asset: \"assets\",\n image: \"assets\",\n images: \"assets\",\n video: \"videos\",\n};\n\nfunction cloneMarketing(marketing: AuthMarketingContent): AuthMarketingContent {\n return {\n ...marketing,\n features: marketing.features ? [...marketing.features] : undefined,\n };\n}\n\nfunction normalizeSlug(value: string | undefined): string | undefined {\n if (!value) return undefined;\n let slug = value.trim().toLowerCase();\n if (!slug) return undefined;\n\n slug = slug.replace(/^@agent-native\\//, \"\");\n slug = slug\n .replace(/&/g, \" and \")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n slug = slug.replace(/^agent-native-/, \"\");\n slug = SLUG_ALIASES[slug] ?? slug;\n if (!slug) return undefined;\n return BUILT_IN_AUTH_MARKETING[slug] ? slug : undefined;\n}\n\nfunction slugFromUrl(value: string | undefined): string | undefined {\n if (!value) return undefined;\n try {\n const url = new URL(value);\n return slugFromHost(url.host) ?? slugFromPath(url.pathname);\n } catch {\n return undefined;\n }\n}\n\nfunction slugFromHost(value: string | undefined): string | undefined {\n if (!value) return undefined;\n const host = value.split(\",\")[0]?.trim().split(\":\")[0]?.toLowerCase();\n if (!host) return undefined;\n if (host.endsWith(\".agent-native.com\")) {\n return normalizeSlug(host.slice(0, -\".agent-native.com\".length));\n }\n return undefined;\n}\n\nfunction slugFromPath(value: string | undefined): string | undefined {\n if (!value) return undefined;\n const firstSegment = value.split(\"?\")[0]?.split(\"/\").filter(Boolean)[0];\n return normalizeSlug(firstSegment);\n}\n\nfunction candidateSlugs(\n opts: ResolveBuiltInAuthMarketingOptions = {},\n): string[] {\n const env = process.env;\n const candidates = [\n opts.requestHost ? slugFromHost(opts.requestHost) : undefined,\n opts.requestPath ? slugFromPath(opts.requestPath) : undefined,\n normalizeSlug(env.AGENT_NATIVE_TEMPLATE),\n normalizeSlug(env.APP_NAME),\n normalizeSlug(env.npm_package_name),\n slugFromPath(env.APP_BASE_PATH),\n slugFromPath(env.VITE_APP_BASE_PATH),\n slugFromUrl(env.APP_URL),\n slugFromUrl(env.BETTER_AUTH_URL),\n slugFromUrl(env.VITE_BETTER_AUTH_URL),\n slugFromUrl(env.URL),\n slugFromUrl(env.DEPLOY_URL),\n slugFromUrl(env.DEPLOY_PRIME_URL),\n ];\n\n return candidates.filter((slug): slug is string => !!slug);\n}\n\nexport function resolveBuiltInAuthMarketing(\n opts: ResolveBuiltInAuthMarketingOptions = {},\n): AuthMarketingContent | undefined {\n for (const slug of candidateSlugs(opts)) {\n const marketing = BUILT_IN_AUTH_MARKETING[slug];\n if (marketing) return cloneMarketing(marketing);\n }\n return undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"auth-marketing.js","sourceRoot":"","sources":["../../src/server/auth-marketing.ts"],"names":[],"mappings":"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","sourcesContent":["export interface AuthMarketingContent {\n appName: string;\n tagline: string;\n description?: string;\n features?: string[];\n runLocalCommand?: string;\n}\n\nexport interface ResolveBuiltInAuthMarketingOptions {\n requestHost?: string;\n requestPath?: string;\n}\n\nexport const BUILT_IN_AUTH_MARKETING: Record<string, AuthMarketingContent> = {\n analytics: {\n appName: \"Agent-Native Analytics\",\n tagline:\n \"Your AI agent queries your data sources, builds dashboards, and answers business questions alongside you.\",\n features: [\n \"Ask any question and get answers from BigQuery, HubSpot, Jira, and more\",\n \"Agent-built dashboards that pull live data from all your sources\",\n \"Saved analyses the agent can re-run on demand with fresh numbers\",\n ],\n },\n brain: {\n appName: \"Agent-Native Brain\",\n tagline:\n \"A company memory layer where raw conversations become reviewed, searchable institutional knowledge.\",\n features: [\n \"Import transcripts, notes, Slack exports, and Granola summaries\",\n \"Validate every fact against exact source quotes\",\n \"Review company-wide knowledge through proposal workflows\",\n ],\n },\n calendar: {\n appName: \"Agent-Native Calendar\",\n tagline:\n \"Your AI agent schedules, reschedules, and manages your calendar so you never have to.\",\n features: [\n \"Finds open slots and books meetings on your behalf\",\n \"Manages availability and booking links automatically\",\n \"Answers schedule questions and resolves conflicts instantly\",\n ],\n },\n clips: {\n appName: \"Agent-Native Clips\",\n tagline:\n \"Your AI agent transcribes, summarizes, and searches everything you record alongside you.\",\n features: [\n \"One-click screen recording with automatic titles, summaries, and chapters\",\n \"Calendar-synced meeting notes with live transcripts and action items\",\n \"One searchable library across recordings, meetings, and dictations\",\n ],\n },\n content: {\n appName: \"Agent-Native Content\",\n tagline:\n \"Your AI agent creates, edits, and organizes documents alongside you in a Notion-like workspace.\",\n features: [\n \"Create and restructure entire document trees from a single prompt\",\n \"Surgical edits that sync live to your editor via real-time collaboration\",\n \"Search, summarize, and cross-reference documents instantly\",\n ],\n },\n design: {\n appName: \"Agent-Native Design\",\n tagline:\n \"Design and prototype by describing what you want. The AI agent turns your ideas into interactive, fully responsive designs in seconds.\",\n features: [\n \"Create polished prototypes just by describing them\",\n \"Build and apply design systems to keep everything on-brand\",\n \"Export your work or share it with a link\",\n ],\n },\n dispatch: {\n appName: \"Agent-Native Dispatch\",\n tagline:\n \"Your AI agent manages secrets, orchestrates other agents, and routes messages across your workspace.\",\n features: [\n \"Centralized vault for secrets with granular per-app grants\",\n \"Cross-agent orchestration and delegation to specialist apps\",\n \"Slack and Telegram routing with approval workflows\",\n ],\n },\n forms: {\n appName: \"Agent-Native Forms\",\n tagline:\n \"Your AI agent builds, publishes, and analyzes forms alongside you.\",\n features: [\n \"Create complete forms from a single sentence\",\n \"Instant publishing with shareable links and captcha\",\n \"Response summaries, exports, and trend analysis on demand\",\n ],\n },\n assets: {\n appName: \"Agent-Native Assets\",\n tagline:\n \"Your AI agent creates, refines, and organizes on-brand assets alongside you.\",\n features: [\n \"Build reusable asset libraries from logos, product shots, videos, and references\",\n \"Generate heroes, diagrams, slide art, product visuals, and videos from a prompt\",\n \"Audit prompts, references, outputs, and refinements across every run\",\n ],\n },\n mail: {\n appName: \"Agent-Native Mail\",\n tagline: \"Your AI agent reads, drafts, and organizes email alongside you.\",\n features: [\n \"Replies that match your tone and style\",\n \"Multi-account Gmail in a single unified inbox\",\n \"Autonomous triage, archiving, and follow-ups\",\n ],\n runLocalCommand:\n \"npx @agent-native/core create my-mail-app --template mail\",\n },\n slides: {\n appName: \"Agent-Native Slides\",\n tagline:\n \"Your AI agent builds, edits, and refines presentations alongside you.\",\n features: [\n \"Generate entire decks from a single prompt\",\n \"Surgical slide edits while you present or review\",\n \"Real-time collaboration between you and the agent\",\n ],\n },\n starter: {\n appName: \"Blank app\",\n tagline:\n \"Build an agent-native app where the AI agent and UI share state, actions, and context.\",\n features: [\n \"Define once, use everywhere: actions work as agent tools and API endpoints\",\n \"The agent always knows what you are looking at and can act on it\",\n \"Modify your app's own code, routes, and styles through conversation\",\n ],\n },\n videos: {\n appName: \"Agent-Native Videos\",\n tagline:\n \"Your AI agent builds, animates, and refines programmatic videos alongside you.\",\n features: [\n \"Generate animated components and compositions from a description\",\n \"Fine-tune tracks, keyframes, and easing without touching code\",\n \"Camera moves, interactive elements, and effects the agent wires for you\",\n ],\n },\n};\n\nconst SLUG_ALIASES: Record<string, string> = {\n \"agent-native\": \"\",\n \"blank-app\": \"starter\",\n asset: \"assets\",\n image: \"assets\",\n images: \"assets\",\n video: \"videos\",\n};\n\nfunction cloneMarketing(marketing: AuthMarketingContent): AuthMarketingContent {\n return {\n ...marketing,\n features: marketing.features ? [...marketing.features] : undefined,\n };\n}\n\nfunction normalizeSlug(value: string | undefined): string | undefined {\n if (!value) return undefined;\n let slug = value.trim().toLowerCase();\n if (!slug) return undefined;\n\n slug = slug.replace(/^@agent-native\\//, \"\");\n slug = slug\n .replace(/&/g, \" and \")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n slug = slug.replace(/^agent-native-/, \"\");\n slug = SLUG_ALIASES[slug] ?? slug;\n if (!slug) return undefined;\n return BUILT_IN_AUTH_MARKETING[slug] ? slug : undefined;\n}\n\nfunction slugFromUrl(value: string | undefined): string | undefined {\n if (!value) return undefined;\n try {\n const url = new URL(value);\n return slugFromHost(url.host) ?? slugFromPath(url.pathname);\n } catch {\n return undefined;\n }\n}\n\nfunction slugFromHost(value: string | undefined): string | undefined {\n if (!value) return undefined;\n const host = value.split(\",\")[0]?.trim().split(\":\")[0]?.toLowerCase();\n if (!host) return undefined;\n if (host.endsWith(\".agent-native.com\")) {\n return normalizeSlug(host.slice(0, -\".agent-native.com\".length));\n }\n return undefined;\n}\n\nfunction slugFromPath(value: string | undefined): string | undefined {\n if (!value) return undefined;\n const firstSegment = value.split(\"?\")[0]?.split(\"/\").filter(Boolean)[0];\n return normalizeSlug(firstSegment);\n}\n\nfunction candidateSlugs(\n opts: ResolveBuiltInAuthMarketingOptions = {},\n): string[] {\n const env = process.env;\n const candidates = [\n opts.requestHost ? slugFromHost(opts.requestHost) : undefined,\n opts.requestPath ? slugFromPath(opts.requestPath) : undefined,\n normalizeSlug(env.AGENT_NATIVE_TEMPLATE),\n normalizeSlug(env.APP_NAME),\n normalizeSlug(env.npm_package_name),\n slugFromPath(env.APP_BASE_PATH),\n slugFromPath(env.VITE_APP_BASE_PATH),\n slugFromUrl(env.APP_URL),\n slugFromUrl(env.BETTER_AUTH_URL),\n slugFromUrl(env.VITE_BETTER_AUTH_URL),\n slugFromUrl(env.URL),\n slugFromUrl(env.DEPLOY_URL),\n slugFromUrl(env.DEPLOY_PRIME_URL),\n ];\n\n return candidates.filter((slug): slug is string => !!slug);\n}\n\nexport function resolveBuiltInAuthMarketing(\n opts: ResolveBuiltInAuthMarketingOptions = {},\n): AuthMarketingContent | undefined {\n for (const slug of candidateSlugs(opts)) {\n const marketing = BUILT_IN_AUTH_MARKETING[slug];\n if (marketing) return cloneMarketing(marketing);\n }\n return undefined;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAkDhE,KAAK,KAAK,GAAG,SAAS,CAAC;AAQvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAUlE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"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"}
|