@agent-native/core 0.92.1 → 0.92.3

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.
Files changed (181) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +32 -0
  3. package/corpus/core/docs/content/locales/ar-SA/server.mdx +35 -0
  4. package/corpus/core/docs/content/locales/de-DE/server.mdx +35 -0
  5. package/corpus/core/docs/content/locales/es-ES/server.mdx +35 -0
  6. package/corpus/core/docs/content/locales/fr-FR/server.mdx +35 -0
  7. package/corpus/core/docs/content/locales/hi-IN/server.mdx +35 -0
  8. package/corpus/core/docs/content/locales/ja-JP/server.mdx +35 -0
  9. package/corpus/core/docs/content/locales/ko-KR/server.mdx +35 -0
  10. package/corpus/core/docs/content/locales/pt-BR/server.mdx +35 -0
  11. package/corpus/core/docs/content/locales/zh-CN/server.mdx +35 -0
  12. package/corpus/core/docs/content/locales/zh-TW/server.mdx +35 -0
  13. package/corpus/core/docs/content/server.mdx +35 -0
  14. package/corpus/core/package.json +1 -1
  15. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +14 -4
  16. package/corpus/core/src/agent/engine/anthropic-engine.ts +15 -3
  17. package/corpus/core/src/agent/engine/builder-engine.ts +30 -4
  18. package/corpus/core/src/agent/engine/registry.ts +63 -2
  19. package/corpus/core/src/agent/model-config.ts +0 -2
  20. package/corpus/core/src/agent/production-agent.ts +12 -1
  21. package/corpus/core/src/agent/run-manager.ts +57 -36
  22. package/corpus/core/src/agent/run-store.ts +81 -2
  23. package/corpus/core/src/agent/thread-data-builder.ts +33 -2
  24. package/corpus/core/src/cli/sync-builder-starter-manifest.ts +29 -1
  25. package/corpus/core/src/client/AssistantChat.tsx +314 -96
  26. package/corpus/core/src/client/agent-chat-adapter.ts +17 -1
  27. package/corpus/core/src/client/chat/repo-helpers.ts +45 -0
  28. package/corpus/core/src/client/chat/tool-call-display.tsx +36 -27
  29. package/corpus/core/src/client/chat-model-groups.ts +1 -5
  30. package/corpus/core/src/client/composer/TiptapComposer.tsx +0 -2
  31. package/corpus/core/src/client/embed-auth.ts +20 -0
  32. package/corpus/core/src/client/settings/SettingsSection.tsx +66 -5
  33. package/corpus/core/src/client/sse-event-processor.ts +49 -17
  34. package/corpus/core/src/client/use-db-sync.ts +31 -9
  35. package/corpus/core/src/collab/agent-presence.ts +6 -1
  36. package/corpus/core/src/collab/awareness-store.ts +185 -0
  37. package/corpus/core/src/collab/awareness.ts +58 -2
  38. package/corpus/core/src/notifications/channels.ts +1 -22
  39. package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +7 -8
  40. package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +7 -18
  41. package/corpus/core/src/server/core-routes-plugin.ts +21 -2
  42. package/corpus/core/src/server/embed-session.ts +20 -4
  43. package/corpus/core/src/styles/agent-native.css +51 -0
  44. package/corpus/core/src/tracking/providers.ts +33 -2
  45. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +8 -1
  46. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +9 -1
  47. package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorDetail.tsx +41 -11
  48. package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +44 -0
  49. package/corpus/templates/analytics/changelog/2026-07-08-alert-emails-now-show-the-message-without-raw-metadata-json.md +6 -0
  50. package/corpus/templates/analytics/changelog/2026-07-08-uptime-checks-no-longer-count-ssrf-setup-time-against-the-re.md +6 -0
  51. package/corpus/templates/analytics/changelog/2026-07-08-uptime-checks-reuse-one-keep-alive-connection-so-recorded-la.md +6 -0
  52. package/corpus/templates/analytics/changelog/2026-07-08-uptime-monitors-now-confirm-transient-timeout-failures-befor.md +6 -0
  53. package/corpus/templates/analytics/changelog/2026-07-09-dashboard-action-menus-now-close-cleanly-before-opening-hist.md +6 -0
  54. package/corpus/templates/analytics/changelog/2026-07-09-dashboard-email-reports-still-send-when-the-screenshot-captu.md +6 -0
  55. package/corpus/templates/analytics/changelog/2026-07-09-uptime-alerts-now-suppress-recovery-noise-during-flapping-an.md +6 -0
  56. package/corpus/templates/analytics/changelog/2026-07-09-uptime-check-history-now-shows-timing-diagnostics-so-slow-or.md +6 -0
  57. package/corpus/templates/analytics/changelog/2026-07-09-uptime-recovery-alerts-now-send-when-the-original-outage-not.md +6 -0
  58. package/corpus/templates/analytics/docs/uptime-monitoring.md +47 -22
  59. package/corpus/templates/analytics/netlify.toml +3 -0
  60. package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +126 -0
  61. package/corpus/templates/analytics/server/db/schema-monitoring.ts +5 -0
  62. package/corpus/templates/analytics/server/jobs/uptime-monitors.ts +5 -1
  63. package/corpus/templates/analytics/server/lib/uptime-monitors.ts +538 -54
  64. package/corpus/templates/analytics/server/plugins/db.ts +15 -0
  65. package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +1 -1
  66. package/corpus/templates/analytics/server/routes/api/uptime-monitors/run.post.ts +57 -0
  67. package/corpus/templates/clips/actions/list-meetings.ts +12 -0
  68. package/corpus/templates/clips/changelog/2026-07-09-meeting-reminders-now-ignore-obvious-solo-personal-calendar-.md +6 -0
  69. package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +1 -0
  70. package/corpus/templates/clips/server/lib/calendar-event-classification.ts +79 -0
  71. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  72. package/dist/agent/engine/ai-sdk-engine.js +13 -4
  73. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  74. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  75. package/dist/agent/engine/anthropic-engine.js +14 -3
  76. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  77. package/dist/agent/engine/builder-engine.d.ts +1 -1
  78. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  79. package/dist/agent/engine/builder-engine.js +26 -4
  80. package/dist/agent/engine/builder-engine.js.map +1 -1
  81. package/dist/agent/engine/registry.d.ts.map +1 -1
  82. package/dist/agent/engine/registry.js +47 -2
  83. package/dist/agent/engine/registry.js.map +1 -1
  84. package/dist/agent/model-config.d.ts +2 -2
  85. package/dist/agent/model-config.d.ts.map +1 -1
  86. package/dist/agent/model-config.js +0 -2
  87. package/dist/agent/model-config.js.map +1 -1
  88. package/dist/agent/production-agent.d.ts.map +1 -1
  89. package/dist/agent/production-agent.js +12 -1
  90. package/dist/agent/production-agent.js.map +1 -1
  91. package/dist/agent/run-manager.d.ts.map +1 -1
  92. package/dist/agent/run-manager.js +52 -33
  93. package/dist/agent/run-manager.js.map +1 -1
  94. package/dist/agent/run-store.d.ts +24 -0
  95. package/dist/agent/run-store.d.ts.map +1 -1
  96. package/dist/agent/run-store.js +64 -2
  97. package/dist/agent/run-store.js.map +1 -1
  98. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  99. package/dist/agent/thread-data-builder.js +28 -2
  100. package/dist/agent/thread-data-builder.js.map +1 -1
  101. package/dist/cli/sync-builder-starter-manifest.d.ts.map +1 -1
  102. package/dist/cli/sync-builder-starter-manifest.js +24 -1
  103. package/dist/cli/sync-builder-starter-manifest.js.map +1 -1
  104. package/dist/client/AssistantChat.d.ts +6 -0
  105. package/dist/client/AssistantChat.d.ts.map +1 -1
  106. package/dist/client/AssistantChat.js +243 -36
  107. package/dist/client/AssistantChat.js.map +1 -1
  108. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  109. package/dist/client/agent-chat-adapter.js +15 -1
  110. package/dist/client/agent-chat-adapter.js.map +1 -1
  111. package/dist/client/chat/repo-helpers.d.ts.map +1 -1
  112. package/dist/client/chat/repo-helpers.js +43 -0
  113. package/dist/client/chat/repo-helpers.js.map +1 -1
  114. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  115. package/dist/client/chat/tool-call-display.js +4 -4
  116. package/dist/client/chat/tool-call-display.js.map +1 -1
  117. package/dist/client/chat-model-groups.d.ts.map +1 -1
  118. package/dist/client/chat-model-groups.js +1 -3
  119. package/dist/client/chat-model-groups.js.map +1 -1
  120. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  121. package/dist/client/composer/TiptapComposer.js +0 -2
  122. package/dist/client/composer/TiptapComposer.js.map +1 -1
  123. package/dist/client/embed-auth.d.ts.map +1 -1
  124. package/dist/client/embed-auth.js +14 -0
  125. package/dist/client/embed-auth.js.map +1 -1
  126. package/dist/client/settings/SettingsSection.d.ts.map +1 -1
  127. package/dist/client/settings/SettingsSection.js +32 -3
  128. package/dist/client/settings/SettingsSection.js.map +1 -1
  129. package/dist/client/sse-event-processor.d.ts.map +1 -1
  130. package/dist/client/sse-event-processor.js +44 -17
  131. package/dist/client/sse-event-processor.js.map +1 -1
  132. package/dist/client/use-db-sync.d.ts.map +1 -1
  133. package/dist/client/use-db-sync.js +29 -9
  134. package/dist/client/use-db-sync.js.map +1 -1
  135. package/dist/collab/agent-presence.d.ts.map +1 -1
  136. package/dist/collab/agent-presence.js +5 -2
  137. package/dist/collab/agent-presence.js.map +1 -1
  138. package/dist/collab/awareness-store.d.ts +1 -1
  139. package/dist/collab/awareness-store.d.ts.map +1 -1
  140. package/dist/collab/awareness-store.js +0 -0
  141. package/dist/collab/awareness-store.js.map +1 -1
  142. package/dist/collab/awareness.d.ts +2 -0
  143. package/dist/collab/awareness.d.ts.map +1 -1
  144. package/dist/collab/awareness.js +46 -2
  145. package/dist/collab/awareness.js.map +1 -1
  146. package/dist/collab/routes.d.ts +1 -1
  147. package/dist/notifications/channels.js +1 -17
  148. package/dist/notifications/channels.js.map +1 -1
  149. package/dist/notifications/routes.d.ts +1 -1
  150. package/dist/observability/routes.d.ts +5 -5
  151. package/dist/progress/routes.d.ts +1 -1
  152. package/dist/resources/handlers.d.ts +1 -1
  153. package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -1
  154. package/dist/scripts/agent-engines/manage-agent-engine.js +6 -6
  155. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  156. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
  157. package/dist/scripts/agent-engines/set-agent-engine.js +5 -13
  158. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  159. package/dist/server/core-routes-plugin.d.ts +5 -0
  160. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  161. package/dist/server/core-routes-plugin.js +10 -3
  162. package/dist/server/core-routes-plugin.js.map +1 -1
  163. package/dist/server/embed-session.d.ts.map +1 -1
  164. package/dist/server/embed-session.js +17 -4
  165. package/dist/server/embed-session.js.map +1 -1
  166. package/dist/styles/agent-native.css +51 -0
  167. package/dist/tracking/providers.d.ts.map +1 -1
  168. package/dist/tracking/providers.js +23 -5
  169. package/dist/tracking/providers.js.map +1 -1
  170. package/docs/content/locales/ar-SA/server.mdx +35 -0
  171. package/docs/content/locales/de-DE/server.mdx +35 -0
  172. package/docs/content/locales/es-ES/server.mdx +35 -0
  173. package/docs/content/locales/fr-FR/server.mdx +35 -0
  174. package/docs/content/locales/hi-IN/server.mdx +35 -0
  175. package/docs/content/locales/ja-JP/server.mdx +35 -0
  176. package/docs/content/locales/ko-KR/server.mdx +35 -0
  177. package/docs/content/locales/pt-BR/server.mdx +35 -0
  178. package/docs/content/locales/zh-CN/server.mdx +35 -0
  179. package/docs/content/locales/zh-TW/server.mdx +35 -0
  180. package/docs/content/server.mdx +35 -0
  181. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agent/engine/registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Engine Registry.\n *\n * Mirrors the CLI_REGISTRY pattern (packages/core/src/terminal/cli-registry.ts)\n * but is open — anyone can register a custom engine via registerAgentEngine()\n * from a server plugin at startup.\n *\n * Built-in engines (anthropic, ai-sdk) are auto-registered by builtin.ts.\n */\n\nimport { createRequire } from \"node:module\";\n\nimport {\n canUseDeployCredentialFallbackForRequest,\n getProviderCredentialAuthFailure,\n readDeployCredentialEnv,\n resolveBuilderCredentials,\n resolveSecret,\n} from \"../../server/credential-provider.js\";\nimport { getSetting } from \"../../settings/store.js\";\nimport { getAgentAppModelDefaultForCurrentRequest } from \"../app-model-defaults.js\";\nimport {\n normalizeOpenAiBaseUrl,\n OPENAI_BASE_URL_ENV_VAR,\n} from \"./openai-compatible-endpoint.js\";\nimport type { AgentEngine, EngineCapabilities } from \"./types.js\";\n\nconst require = createRequire(import.meta.url);\n\nexport interface AgentEngineEntry {\n /** Unique name, e.g. \"anthropic\", \"ai-sdk:anthropic\", \"ai-sdk:openai\" */\n name: string;\n /** Human-readable label for UI */\n label: string;\n /** Short description for engine picker */\n description: string;\n /** npm package hint displayed in UI when package is missing */\n installPackage?: string;\n /** Engine capabilities */\n capabilities: EngineCapabilities;\n /** Default model string */\n defaultModel: string;\n /** All supported models (shown in model picker) */\n supportedModels: readonly string[];\n /** Environment variables required for this engine to work */\n requiredEnvVars: string[];\n /** Create an engine instance from config */\n create(config: Record<string, unknown>): AgentEngine;\n}\n\nconst _registry = new Map<string, AgentEngineEntry>();\nconst _packageAvailabilityCache = new Map<string, boolean>();\n\n/**\n * Register a custom agent engine. Called at server startup (e.g., from a\n * server plugin or builtin.ts). Throws if name is already registered.\n */\nexport function registerAgentEngine(entry: AgentEngineEntry): void {\n if (_registry.has(entry.name)) {\n // Allow re-registration in tests / hot-reload — just overwrite\n if (process.env.NODE_ENV === \"test\") {\n _registry.set(entry.name, entry);\n return;\n }\n console.warn(\n `[agent-engine] Engine \"${entry.name}\" is already registered. Skipping.`,\n );\n return;\n }\n _registry.set(entry.name, entry);\n}\n\n/** Get a registered engine entry by name, or undefined if not found */\nexport function getAgentEngineEntry(\n name: string,\n): AgentEngineEntry | undefined {\n return _registry.get(name);\n}\n\n/** List all registered engine entries */\nexport function listAgentEngines(): AgentEngineEntry[] {\n return Array.from(_registry.values());\n}\n\nfunction packageNameFromInstallSpecifier(specifier: string): string | null {\n const trimmed = specifier.trim();\n if (!trimmed) return null;\n if (trimmed.startsWith(\"-\")) return null;\n if (trimmed.startsWith(\"@\")) {\n const slashIndex = trimmed.indexOf(\"/\");\n if (slashIndex === -1) return trimmed;\n const versionIndex = trimmed.indexOf(\"@\", slashIndex + 1);\n return versionIndex === -1 ? trimmed : trimmed.slice(0, versionIndex);\n }\n const versionIndex = trimmed.indexOf(\"@\");\n return versionIndex === -1 ? trimmed : trimmed.slice(0, versionIndex);\n}\n\nfunction canResolvePackage(packageName: string): boolean {\n const cached = _packageAvailabilityCache.get(packageName);\n if (cached !== undefined) return cached;\n let available = false;\n try {\n require.resolve(packageName);\n available = true;\n } catch {\n available = false;\n }\n _packageAvailabilityCache.set(packageName, available);\n return available;\n}\n\nexport function isAgentEnginePackageInstalled(\n entry: AgentEngineEntry,\n): boolean {\n const packageNames =\n entry.installPackage\n ?.split(/\\s+/)\n .map(packageNameFromInstallSpecifier)\n .filter((name): name is string => Boolean(name)) ?? [];\n return packageNames.every(canResolvePackage);\n}\n\nexport function normalizeModelForEngine(\n engine: Pick<AgentEngine, \"name\" | \"defaultModel\" | \"supportedModels\">,\n model: string | null | undefined,\n): string {\n const candidate = typeof model === \"string\" ? model.trim() : \"\";\n if (!candidate) return engine.defaultModel;\n\n if (engine.name !== \"builder\") return candidate;\n\n if (candidate === \"auto\" || engine.supportedModels.includes(candidate)) {\n return candidate;\n }\n\n return engine.supportedModels.includes(\"auto\") ? \"auto\" : engine.defaultModel;\n}\n\nfunction assertAgentEnginePackageInstalled(entry: AgentEngineEntry): void {\n if (isAgentEnginePackageInstalled(entry)) return;\n const installHint = entry.installPackage\n ? ` Run: pnpm add ${entry.installPackage}`\n : \"\";\n throw new Error(\n `[agent-engine] Engine \"${entry.name}\" requires optional packages that are not installed in this app.${installHint}`,\n );\n}\n\n/**\n * First registered engine whose requiredEnvVars are all set. Registration\n * order controls priority — the Builder gateway is registered first so it\n * wins when the Builder private key is present.\n *\n * Escape hatch: AGENT_ENGINE_PREFER_BYO_KEY=true skips the Builder engine\n * on the first pass, so an explicit provider key (ANTHROPIC_API_KEY etc.)\n * is picked instead. Builder is still used as the fallback when no other\n * provider key is set.\n *\n * This sync helper is for CLI/status callers that cannot await settings. Prefer\n * {@link detectEngineFromEnvForRequest} at request time so sticky auth-failure\n * markers can skip rejected deploy keys.\n */\nexport function detectEngineFromEnv(): AgentEngineEntry | null {\n const preferByo = /^(1|true)$/i.test(\n process.env.AGENT_ENGINE_PREFER_BYO_KEY ?? \"\",\n );\n\n if (preferByo) {\n for (const entry of _registry.values()) {\n if (entry.name === \"builder\") continue;\n if (entry.requiredEnvVars.length === 0) continue;\n if (!isAgentEnginePackageInstalled(entry)) continue;\n if (\n entry.requiredEnvVars.every(\n (v) =>\n canUseDeployCredentialFallbackForRequest(v) &&\n !!readDeployCredentialEnv(v),\n )\n ) {\n return entry;\n }\n }\n // No BYO key matched — fall through to include Builder as fallback.\n }\n\n for (const entry of _registry.values()) {\n if (entry.requiredEnvVars.length === 0) continue;\n if (!isAgentEnginePackageInstalled(entry)) continue;\n if (\n entry.requiredEnvVars.every(\n (v) =>\n canUseDeployCredentialFallbackForRequest(v) &&\n !!readDeployCredentialEnv(v),\n )\n ) {\n return entry;\n }\n }\n return null;\n}\n\nasync function envKeyUsableForEntry(\n entry: AgentEngineEntry,\n key: string,\n): Promise<boolean> {\n if (\n !(\n canUseDeployCredentialFallbackForRequest(key) &&\n !!readDeployCredentialEnv(key)\n )\n ) {\n return false;\n }\n if (entry.name === \"builder\") {\n return true;\n }\n const value = readDeployCredentialEnv(key);\n if (!value) return false;\n return !(await getProviderCredentialAuthFailure({ key, value }));\n}\n\nasync function hasUsableEnvKeys(entry: AgentEngineEntry): Promise<boolean> {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (entry.requiredEnvVars.length === 0) return false;\n for (const key of entry.requiredEnvVars) {\n if (!(await envKeyUsableForEntry(entry, key))) return false;\n }\n return true;\n}\n\n/**\n * Request-aware env auto-detect. Same priority as {@link detectEngineFromEnv},\n * but skips provider keys that currently have an auth-failure marker so a\n * rejected deploy key does not permanently win selection and leave chat stuck\n * on `missing_credentials`.\n */\nexport async function detectEngineFromEnvForRequest(): Promise<AgentEngineEntry | null> {\n const preferByo = /^(1|true)$/i.test(\n process.env.AGENT_ENGINE_PREFER_BYO_KEY ?? \"\",\n );\n\n if (preferByo) {\n for (const entry of _registry.values()) {\n if (entry.name === \"builder\") continue;\n if (await hasUsableEnvKeys(entry)) return entry;\n }\n }\n\n for (const entry of _registry.values()) {\n if (await hasUsableEnvKeys(entry)) return entry;\n }\n return null;\n}\n\nfunction shouldTraceEngineDetection(): boolean {\n return /^(1|true)$/i.test(\n process.env.AGENT_NATIVE_DEBUG_AGENT_ENGINE_DETECT ??\n process.env.AGENT_NATIVE_DEBUG_CREDENTIAL_RESOLVE ??\n \"\",\n );\n}\n\n/**\n * Detect a usable engine from the current request user's accessible\n * `app_secrets` rows. Mirrors `detectEngineFromEnv` but consults the\n * encrypted secret store instead of `process.env`, including org-scoped\n * credentials shared with the active organization.\n *\n * Required because the Builder OAuth callback (and the settings UI's\n * \"paste your own key\" flow) writes credentials to app_secrets, not env.\n * Without this check, a user who connected Builder would see status\n * \"configured\" but the next chat turn would fall through to the default\n * Anthropic engine and hit `missing_api_key` — exactly Brent's symptom\n * on the docs site (Loom 2026-04-28: \"It doesn't seem to realize I'm\n * connected once I do a chat\").\n *\n * Includes the local dev session (`local@localhost`): the Builder\n * OAuth flow writes credentials scoped to that email when run from\n * `pnpm dev`, so detection has to consult those rows or the dev user\n * sees the same \"Connect your AI\" card after they've already connected\n * (Sami, 2026-04-30). Org-scoped Builder credentials must also count here:\n * `/builder/status` resolves them via the same request org context, and the\n * chat engine picker must not disagree with that card.\n */\nexport async function detectEngineFromUserSecrets(): Promise<AgentEngineEntry | null> {\n const traceLookup = shouldTraceEngineDetection();\n let email: string | undefined;\n let orgId: string | null | undefined;\n try {\n const { getRequestUserEmail, getRequestOrgId } =\n await import(\"../../server/request-context.js\");\n email = getRequestUserEmail();\n orgId = getRequestOrgId();\n } catch {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=null reason=no-request-context email=(unknown) orgId=(unknown)`,\n );\n }\n return null;\n }\n if (!email) {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=null reason=no-email email=(empty) orgId=${orgId ?? \"(none)\"}`,\n );\n }\n return null;\n }\n\n const hasAllKeys = async (entry: AgentEngineEntry): Promise<boolean> => {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (entry.requiredEnvVars.length === 0) return false;\n if (entry.name === \"builder\") {\n const creds = await resolveBuilderCredentials();\n return Boolean(creds.privateKey && creds.publicKey);\n }\n for (const key of entry.requiredEnvVars) {\n try {\n if (!(await resolveUsableProviderSecret(key))) return false;\n } catch {\n return false;\n }\n }\n return true;\n };\n\n const preferByo = /^(1|true)$/i.test(\n process.env.AGENT_ENGINE_PREFER_BYO_KEY ?? \"\",\n );\n\n if (preferByo) {\n for (const entry of _registry.values()) {\n if (entry.name === \"builder\") continue;\n if (await hasAllKeys(entry)) {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=${entry.name} email=${email} orgId=${orgId ?? \"(none)\"} byo=true`,\n );\n }\n return entry;\n }\n }\n // No BYO key matched — fall through to include Builder as fallback.\n }\n\n for (const entry of _registry.values()) {\n if (await hasAllKeys(entry)) {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=${entry.name} email=${email} orgId=${orgId ?? \"(none)\"}`,\n );\n }\n return entry;\n }\n }\n if (traceLookup) {\n console.log(\n `[engine-detect] result=null reason=no-engine-keys-found email=${email} orgId=${orgId ?? \"(none)\"}`,\n );\n }\n return null;\n}\n\n/**\n * Legacy inline API keys on the global `agent-engine` settings row are\n * intentionally ignored. That row is deployment-wide, so treating\n * `{ apiKey }` or `{ config: { apiKey } }` as configured would let one\n * user's pasted key power every other user. Per-user keys live in\n * `app_secrets` and are resolved separately.\n */\nexport function isAgentEngineSettingConfigured(stored: unknown): boolean {\n if (!stored || typeof stored !== \"object\") return false;\n const s = stored as {\n engine?: unknown;\n };\n if (typeof s.engine !== \"string\" || !s.engine) return false;\n return false;\n}\n\nfunction stripInlineApiKeyConfig(\n config: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n if (!config) return {};\n const { apiKey: _discardedApiKey, ...safeConfig } = config;\n return safeConfig;\n}\n\nfunction canUseDeployEnvForEntry(entry: AgentEngineEntry): boolean {\n if (entry.requiredEnvVars.length === 0) return true;\n return entry.requiredEnvVars.every((key) =>\n canUseDeployCredentialFallbackForRequest(key),\n );\n}\n\nfunction engineCreateConfig(\n entry: AgentEngineEntry,\n apiKey: string | undefined,\n extra?: Record<string, unknown>,\n): Record<string, unknown> {\n return {\n apiKey,\n allowEnvFallback: canUseDeployEnvForEntry(entry),\n ...(extra ?? {}),\n };\n}\n\nasync function resolveOpenAiBaseUrl(): Promise<string | undefined> {\n let raw: string | null | undefined = null;\n try {\n raw = await resolveSecret(OPENAI_BASE_URL_ENV_VAR);\n } catch {\n raw = null;\n }\n\n if (\n !raw &&\n canUseDeployCredentialFallbackForRequest(OPENAI_BASE_URL_ENV_VAR)\n ) {\n raw = readDeployCredentialEnv(OPENAI_BASE_URL_ENV_VAR);\n }\n\n return raw ? normalizeOpenAiBaseUrl(raw) : undefined;\n}\n\nasync function resolveUsableProviderSecret(\n key: string,\n): Promise<string | null> {\n const value = await resolveSecret(key);\n if (!value) return null;\n const authFailure = await getProviderCredentialAuthFailure({ key, value });\n return authFailure ? null : value;\n}\n\nasync function engineCreateConfigForEntry(\n entry: AgentEngineEntry,\n apiKey: string | undefined,\n extra?: Record<string, unknown>,\n): Promise<Record<string, unknown>> {\n const safeExtra = { ...(extra ?? {}) };\n if (entry.name === \"ai-sdk:openai\") {\n if (typeof safeExtra.baseURL === \"string\" && safeExtra.baseUrl == null) {\n safeExtra.baseUrl = normalizeOpenAiBaseUrl(safeExtra.baseURL);\n }\n if (safeExtra.baseUrl == null) {\n const baseUrl = await resolveOpenAiBaseUrl();\n if (baseUrl) safeExtra.baseUrl = baseUrl;\n }\n }\n return engineCreateConfig(entry, apiKey, safeExtra);\n}\n\n/**\n * True when the stored `agent-engine` row points at a registered engine\n * AND an API key for it is reachable via the engine's required env vars.\n * Inline keys on the global settings row are ignored; see\n * `isAgentEngineSettingConfigured`.\n *\n * Sync helper for CLI/status. Prefer {@link isStoredEngineUsableForRequest}\n * so sticky auth-failure markers are respected.\n */\nexport function isStoredEngineUsable(\n stored: unknown,\n entry: AgentEngineEntry,\n): boolean {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (isAgentEngineSettingConfigured(stored)) return true;\n if (entry.requiredEnvVars.length === 0) return true;\n return entry.requiredEnvVars.every(\n (v) =>\n canUseDeployCredentialFallbackForRequest(v) &&\n !!readDeployCredentialEnv(v),\n );\n}\n\n/**\n * Request-aware version of `isStoredEngineUsable`.\n *\n * The settings row stores the selected engine/model, while credentials may\n * live in per-user/org `app_secrets`. The sync helper intentionally only sees\n * deploy env vars; this async helper is what request-time routes should use\n * when deciding whether a stored engine can actually run for the current user.\n */\nexport async function isStoredEngineUsableForRequest(\n stored: unknown,\n entry: AgentEngineEntry,\n): Promise<boolean> {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (isAgentEngineSettingConfigured(stored)) return true;\n if (entry.requiredEnvVars.length === 0) return true;\n if (entry.name === \"builder\") {\n const creds = await resolveBuilderCredentials();\n return Boolean(creds.privateKey && creds.publicKey);\n }\n for (const key of entry.requiredEnvVars) {\n try {\n if (await resolveUsableProviderSecret(key)) continue;\n } catch {\n return false;\n }\n return false;\n }\n return true;\n}\n\n/**\n * Request-aware credential preflight for an already-resolved engine instance.\n * `resolveEngine()` may still return a default or explicitly requested engine\n * object before credentials are actually usable; call this before starting a\n * user-visible run so missing providers fail immediately.\n */\nexport async function isResolvedEngineUsableForRequest(\n engine: AgentEngine,\n options: { apiKey?: string } = {},\n): Promise<boolean> {\n const entry = _registry.get(engine.name);\n // Custom engines may have their own credential contract outside the core\n // registry metadata, so do not block them speculatively.\n if (!entry) return true;\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (entry.requiredEnvVars.length === 0) return true;\n\n if (entry.name === \"builder\") {\n const creds = await resolveBuilderCredentials();\n return Boolean(creds.privateKey && creds.publicKey);\n }\n\n if (options.apiKey?.trim()) {\n const key = entry.requiredEnvVars[0];\n if (!key) return true;\n return !(await getProviderCredentialAuthFailure({\n key,\n value: options.apiKey,\n }));\n }\n\n for (const key of entry.requiredEnvVars) {\n try {\n if (await resolveUsableProviderSecret(key)) continue;\n } catch {\n return false;\n }\n return false;\n }\n return true;\n}\n\nexport interface ResolveEngineConfig {\n /** Explicit engine name or instance from createAgentChatPlugin options */\n engineOption?:\n | string\n | AgentEngine\n | { name: string; config: Record<string, unknown> };\n /** API key (used as config for the resolved engine) */\n apiKey?: string;\n /** Model override (used as part of engine config) */\n model?: string;\n /** App/template id used for org-scoped per-app model defaults. */\n appId?: string;\n}\n\n/**\n * Resolve an AgentEngine from options → explicit env → app default →\n * settings → request credentials → env → default.\n *\n * Resolution order:\n * 1. Explicit `engineOption` from plugin options (string name, instance, or {name, config})\n * 2. Env var AGENT_ENGINE\n * 3. Org/user app-template default, when usable\n * 4. Settings store key \"agent-engine\" → { engine: string }, when usable\n * 5. Current request's app_secrets; Builder wins by default when connected\n * 6. Auto-detect deployment env credentials\n * 7. Default \"anthropic\" (requires ANTHROPIC_API_KEY)\n */\nexport async function resolveEngine(\n config: ResolveEngineConfig,\n): Promise<AgentEngine> {\n const { engineOption, apiKey, model: _model, appId } = config;\n\n // 1. Explicit instance passed directly\n if (\n engineOption &&\n typeof engineOption === \"object\" &&\n \"stream\" in engineOption\n ) {\n return engineOption as AgentEngine;\n }\n\n // 2. Explicit {name, config} object\n if (\n engineOption &&\n typeof engineOption === \"object\" &&\n \"name\" in engineOption\n ) {\n const { name, config: engineConfig } = engineOption as {\n name: string;\n config: Record<string, unknown>;\n };\n const entry = _registry.get(name);\n if (!entry)\n throw new Error(\n `[agent-engine] Unknown engine: \"${name}\". Registered: ${[..._registry.keys()].join(\", \")}`,\n );\n assertAgentEnginePackageInstalled(entry);\n return entry.create(\n await engineCreateConfigForEntry(entry, apiKey, engineConfig),\n );\n }\n\n // 3. Explicit string name from options\n if (typeof engineOption === \"string\") {\n const entry = _registry.get(engineOption);\n if (!entry)\n throw new Error(\n `[agent-engine] Unknown engine: \"${engineOption}\". Registered: ${[..._registry.keys()].join(\", \")}`,\n );\n assertAgentEnginePackageInstalled(entry);\n return entry.create(await engineCreateConfigForEntry(entry, apiKey));\n }\n\n // 4. Env var — explicit engine name override\n const envEngine = process.env.AGENT_ENGINE;\n if (envEngine) {\n const entry = _registry.get(envEngine);\n if (entry) {\n assertAgentEnginePackageInstalled(entry);\n return entry.create(await engineCreateConfigForEntry(entry, apiKey));\n }\n }\n\n const appDefault = await getAgentAppModelDefaultForCurrentRequest(appId);\n if (appDefault?.engine) {\n const entry = _registry.get(appDefault.engine);\n if (entry && (await isStoredEngineUsableForRequest(appDefault, entry))) {\n return entry.create(await engineCreateConfigForEntry(entry, apiKey));\n }\n }\n\n let stored: { engine?: unknown; config?: unknown } | null = null;\n try {\n stored = (await getSetting(\"agent-engine\")) as typeof stored;\n } catch {\n // Settings not available — fall through\n }\n\n // Auto-detect from the current user's per-user `app_secrets` rows\n // (Builder OAuth callback + \"paste your own key\" settings flow write here,\n // not env). Stored/app defaults are checked first so an explicit provider\n // selection can override a connected Builder account.\n const detectedFromUser = await detectEngineFromUserSecrets();\n\n // 6. Settings store — only when the stored row's API key is reachable.\n // This explicit selection beats automatic Builder detection so users can\n // switch away from Builder credits by saving/applying their own provider key.\n const storedRaw = stored as { engine?: unknown; config?: unknown } | null;\n const storedEngine = storedRaw?.engine;\n const storedConfig = storedRaw?.config;\n if (storedRaw && typeof storedEngine === \"string\") {\n const entry = _registry.get(storedEngine);\n if (entry && (await isStoredEngineUsableForRequest(storedRaw, entry))) {\n return entry.create(\n await engineCreateConfigForEntry(\n entry,\n apiKey,\n stripInlineApiKeyConfig(\n storedConfig as Record<string, unknown> | undefined,\n ),\n ),\n );\n }\n }\n\n if (detectedFromUser) {\n return detectedFromUser.create(\n await engineCreateConfigForEntry(detectedFromUser, apiKey),\n );\n }\n\n // 8. Auto-detect from any provider env var — so just dropping a key in\n // .env works without also setting AGENT_ENGINE. Skip keys with active\n // auth-failure markers so a rejected deploy key cannot permanently win.\n const detected = await detectEngineFromEnvForRequest();\n if (detected) {\n return detected.create(await engineCreateConfigForEntry(detected, apiKey));\n }\n\n // 9. Default: anthropic\n const anthropicEntry = _registry.get(\"anthropic\");\n if (!anthropicEntry) {\n throw new Error(\n \"[agent-engine] Default Anthropic engine is not registered. Did builtin.ts fail to load?\",\n );\n }\n return anthropicEntry.create(\n await engineCreateConfigForEntry(anthropicEntry, apiKey),\n );\n}\n\n/**\n * Read the user-selected model for an engine from the `agent-engine` setting.\n *\n * The settings UI writes `{engine, model}` via the `manage-agent-engine` action=\"set\",\n * but `resolveEngine` only uses the stored engine (the model is a separate\n * per-request concern). Call this helper alongside `resolveEngine` to honor\n * the user's model choice without requiring a process restart.\n *\n * Returns the stored model only when the stored engine name matches `engine`\n * — otherwise returns `undefined` to avoid applying an Anthropic model string\n * to, say, an OpenRouter engine.\n */\nexport async function getStoredModelForEngine(\n engine: AgentEngine | string,\n options: { appId?: string } = {},\n): Promise<string | undefined> {\n const engineName = typeof engine === \"string\" ? engine : engine.name;\n try {\n const appDefault = await getAgentAppModelDefaultForCurrentRequest(\n options.appId,\n );\n if (\n appDefault?.engine === engineName &&\n typeof appDefault.model === \"string\" &&\n appDefault.model.length > 0\n ) {\n return appDefault.model;\n }\n } catch {\n // Settings/request context may not be available — fall through.\n }\n\n try {\n const stored = await getSetting(\"agent-engine\");\n if (\n stored &&\n typeof stored.engine === \"string\" &&\n stored.engine === engineName &&\n typeof stored.model === \"string\" &&\n stored.model.length > 0\n ) {\n return stored.model;\n }\n } catch {\n // Settings store not ready (fresh install, migration pending) — skip.\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agent/engine/registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Engine Registry.\n *\n * Mirrors the CLI_REGISTRY pattern (packages/core/src/terminal/cli-registry.ts)\n * but is open — anyone can register a custom engine via registerAgentEngine()\n * from a server plugin at startup.\n *\n * Built-in engines (anthropic, ai-sdk) are auto-registered by builtin.ts.\n */\n\nimport { createRequire } from \"node:module\";\n\nimport {\n canUseDeployCredentialFallbackForRequest,\n getProviderCredentialAuthFailure,\n readDeployCredentialEnv,\n resolveBuilderCredentials,\n resolveSecret,\n} from \"../../server/credential-provider.js\";\nimport { getSetting } from \"../../settings/store.js\";\nimport { getAgentAppModelDefaultForCurrentRequest } from \"../app-model-defaults.js\";\nimport {\n normalizeOpenAiBaseUrl,\n OPENAI_BASE_URL_ENV_VAR,\n} from \"./openai-compatible-endpoint.js\";\nimport type { AgentEngine, EngineCapabilities } from \"./types.js\";\n\nconst require = createRequire(import.meta.url);\n\nexport interface AgentEngineEntry {\n /** Unique name, e.g. \"anthropic\", \"ai-sdk:anthropic\", \"ai-sdk:openai\" */\n name: string;\n /** Human-readable label for UI */\n label: string;\n /** Short description for engine picker */\n description: string;\n /** npm package hint displayed in UI when package is missing */\n installPackage?: string;\n /** Engine capabilities */\n capabilities: EngineCapabilities;\n /** Default model string */\n defaultModel: string;\n /** All supported models (shown in model picker) */\n supportedModels: readonly string[];\n /** Environment variables required for this engine to work */\n requiredEnvVars: string[];\n /** Create an engine instance from config */\n create(config: Record<string, unknown>): AgentEngine;\n}\n\nconst _registry = new Map<string, AgentEngineEntry>();\nconst _packageAvailabilityCache = new Map<string, boolean>();\n\n/**\n * Register a custom agent engine. Called at server startup (e.g., from a\n * server plugin or builtin.ts). Throws if name is already registered.\n */\nexport function registerAgentEngine(entry: AgentEngineEntry): void {\n if (_registry.has(entry.name)) {\n // Allow re-registration in tests / hot-reload — just overwrite\n if (process.env.NODE_ENV === \"test\") {\n _registry.set(entry.name, entry);\n return;\n }\n console.warn(\n `[agent-engine] Engine \"${entry.name}\" is already registered. Skipping.`,\n );\n return;\n }\n _registry.set(entry.name, entry);\n}\n\n/** Get a registered engine entry by name, or undefined if not found */\nexport function getAgentEngineEntry(\n name: string,\n): AgentEngineEntry | undefined {\n return _registry.get(name);\n}\n\n/** List all registered engine entries */\nexport function listAgentEngines(): AgentEngineEntry[] {\n return Array.from(_registry.values());\n}\n\nfunction packageNameFromInstallSpecifier(specifier: string): string | null {\n const trimmed = specifier.trim();\n if (!trimmed) return null;\n if (trimmed.startsWith(\"-\")) return null;\n if (trimmed.startsWith(\"@\")) {\n const slashIndex = trimmed.indexOf(\"/\");\n if (slashIndex === -1) return trimmed;\n const versionIndex = trimmed.indexOf(\"@\", slashIndex + 1);\n return versionIndex === -1 ? trimmed : trimmed.slice(0, versionIndex);\n }\n const versionIndex = trimmed.indexOf(\"@\");\n return versionIndex === -1 ? trimmed : trimmed.slice(0, versionIndex);\n}\n\nfunction canResolvePackage(packageName: string): boolean {\n const cached = _packageAvailabilityCache.get(packageName);\n if (cached !== undefined) return cached;\n let available = false;\n try {\n require.resolve(packageName);\n available = true;\n } catch {\n available = false;\n }\n _packageAvailabilityCache.set(packageName, available);\n return available;\n}\n\nexport function isAgentEnginePackageInstalled(\n entry: AgentEngineEntry,\n): boolean {\n const packageNames =\n entry.installPackage\n ?.split(/\\s+/)\n .map(packageNameFromInstallSpecifier)\n .filter((name): name is string => Boolean(name)) ?? [];\n return packageNames.every(canResolvePackage);\n}\n\ninterface ParsedVersionedModelId {\n family: string;\n version: number[];\n suffix: string;\n}\n\nfunction parseVersionedModelId(model: string): ParsedVersionedModelId | null {\n const match =\n /^(?<family>.+?)[-.](?<version>\\d+(?:[-.]\\d+)*)(?<suffix>(?:[-.][a-z][a-z0-9]*)*)$/i.exec(\n model.trim().toLowerCase(),\n );\n const groups = match?.groups;\n if (!groups?.family || !groups.version) return null;\n\n const version = groups.version.split(/[-.]/).map((part) => Number(part));\n if (version.some((part) => !Number.isSafeInteger(part))) return null;\n\n return {\n family: groups.family,\n version,\n suffix: groups.suffix ?? \"\",\n };\n}\n\nfunction compareModelVersions(left: number[], right: number[]): number {\n const length = Math.max(left.length, right.length);\n for (let index = 0; index < length; index += 1) {\n const delta = (left[index] ?? 0) - (right[index] ?? 0);\n if (delta !== 0) return delta;\n }\n return 0;\n}\n\nfunction findLatestSupportedVersionMatch(\n candidate: string,\n supportedModels: readonly string[],\n): string | undefined {\n const parsedCandidate = parseVersionedModelId(candidate);\n if (!parsedCandidate) return undefined;\n\n let best: { model: string; version: number[] } | undefined;\n for (const supportedModel of supportedModels) {\n const parsedSupported = parseVersionedModelId(supportedModel);\n if (!parsedSupported) continue;\n if (parsedSupported.family !== parsedCandidate.family) continue;\n if (parsedSupported.suffix !== parsedCandidate.suffix) continue;\n if (\n best &&\n compareModelVersions(parsedSupported.version, best.version) <= 0\n ) {\n continue;\n }\n best = { model: supportedModel, version: parsedSupported.version };\n }\n\n return best?.model;\n}\n\nexport function normalizeModelForEngine(\n engine: Pick<AgentEngine, \"name\" | \"defaultModel\" | \"supportedModels\">,\n model: string | null | undefined,\n): string {\n const candidate = typeof model === \"string\" ? model.trim() : \"\";\n if (!candidate) return engine.defaultModel;\n\n if (engine.supportedModels.length === 0) return candidate;\n\n if (candidate === \"auto\" || engine.supportedModels.includes(candidate)) {\n return candidate;\n }\n\n return (\n findLatestSupportedVersionMatch(candidate, engine.supportedModels) ??\n engine.defaultModel\n );\n}\n\nfunction assertAgentEnginePackageInstalled(entry: AgentEngineEntry): void {\n if (isAgentEnginePackageInstalled(entry)) return;\n const installHint = entry.installPackage\n ? ` Run: pnpm add ${entry.installPackage}`\n : \"\";\n throw new Error(\n `[agent-engine] Engine \"${entry.name}\" requires optional packages that are not installed in this app.${installHint}`,\n );\n}\n\n/**\n * First registered engine whose requiredEnvVars are all set. Registration\n * order controls priority — the Builder gateway is registered first so it\n * wins when the Builder private key is present.\n *\n * Escape hatch: AGENT_ENGINE_PREFER_BYO_KEY=true skips the Builder engine\n * on the first pass, so an explicit provider key (ANTHROPIC_API_KEY etc.)\n * is picked instead. Builder is still used as the fallback when no other\n * provider key is set.\n *\n * This sync helper is for CLI/status callers that cannot await settings. Prefer\n * {@link detectEngineFromEnvForRequest} at request time so sticky auth-failure\n * markers can skip rejected deploy keys.\n */\nexport function detectEngineFromEnv(): AgentEngineEntry | null {\n const preferByo = /^(1|true)$/i.test(\n process.env.AGENT_ENGINE_PREFER_BYO_KEY ?? \"\",\n );\n\n if (preferByo) {\n for (const entry of _registry.values()) {\n if (entry.name === \"builder\") continue;\n if (entry.requiredEnvVars.length === 0) continue;\n if (!isAgentEnginePackageInstalled(entry)) continue;\n if (\n entry.requiredEnvVars.every(\n (v) =>\n canUseDeployCredentialFallbackForRequest(v) &&\n !!readDeployCredentialEnv(v),\n )\n ) {\n return entry;\n }\n }\n // No BYO key matched — fall through to include Builder as fallback.\n }\n\n for (const entry of _registry.values()) {\n if (entry.requiredEnvVars.length === 0) continue;\n if (!isAgentEnginePackageInstalled(entry)) continue;\n if (\n entry.requiredEnvVars.every(\n (v) =>\n canUseDeployCredentialFallbackForRequest(v) &&\n !!readDeployCredentialEnv(v),\n )\n ) {\n return entry;\n }\n }\n return null;\n}\n\nasync function envKeyUsableForEntry(\n entry: AgentEngineEntry,\n key: string,\n): Promise<boolean> {\n if (\n !(\n canUseDeployCredentialFallbackForRequest(key) &&\n !!readDeployCredentialEnv(key)\n )\n ) {\n return false;\n }\n if (entry.name === \"builder\") {\n return true;\n }\n const value = readDeployCredentialEnv(key);\n if (!value) return false;\n return !(await getProviderCredentialAuthFailure({ key, value }));\n}\n\nasync function hasUsableEnvKeys(entry: AgentEngineEntry): Promise<boolean> {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (entry.requiredEnvVars.length === 0) return false;\n for (const key of entry.requiredEnvVars) {\n if (!(await envKeyUsableForEntry(entry, key))) return false;\n }\n return true;\n}\n\n/**\n * Request-aware env auto-detect. Same priority as {@link detectEngineFromEnv},\n * but skips provider keys that currently have an auth-failure marker so a\n * rejected deploy key does not permanently win selection and leave chat stuck\n * on `missing_credentials`.\n */\nexport async function detectEngineFromEnvForRequest(): Promise<AgentEngineEntry | null> {\n const preferByo = /^(1|true)$/i.test(\n process.env.AGENT_ENGINE_PREFER_BYO_KEY ?? \"\",\n );\n\n if (preferByo) {\n for (const entry of _registry.values()) {\n if (entry.name === \"builder\") continue;\n if (await hasUsableEnvKeys(entry)) return entry;\n }\n }\n\n for (const entry of _registry.values()) {\n if (await hasUsableEnvKeys(entry)) return entry;\n }\n return null;\n}\n\nfunction shouldTraceEngineDetection(): boolean {\n return /^(1|true)$/i.test(\n process.env.AGENT_NATIVE_DEBUG_AGENT_ENGINE_DETECT ??\n process.env.AGENT_NATIVE_DEBUG_CREDENTIAL_RESOLVE ??\n \"\",\n );\n}\n\n/**\n * Detect a usable engine from the current request user's accessible\n * `app_secrets` rows. Mirrors `detectEngineFromEnv` but consults the\n * encrypted secret store instead of `process.env`, including org-scoped\n * credentials shared with the active organization.\n *\n * Required because the Builder OAuth callback (and the settings UI's\n * \"paste your own key\" flow) writes credentials to app_secrets, not env.\n * Without this check, a user who connected Builder would see status\n * \"configured\" but the next chat turn would fall through to the default\n * Anthropic engine and hit `missing_api_key` — exactly Brent's symptom\n * on the docs site (Loom 2026-04-28: \"It doesn't seem to realize I'm\n * connected once I do a chat\").\n *\n * Includes the local dev session (`local@localhost`): the Builder\n * OAuth flow writes credentials scoped to that email when run from\n * `pnpm dev`, so detection has to consult those rows or the dev user\n * sees the same \"Connect your AI\" card after they've already connected\n * (Sami, 2026-04-30). Org-scoped Builder credentials must also count here:\n * `/builder/status` resolves them via the same request org context, and the\n * chat engine picker must not disagree with that card.\n */\nexport async function detectEngineFromUserSecrets(): Promise<AgentEngineEntry | null> {\n const traceLookup = shouldTraceEngineDetection();\n let email: string | undefined;\n let orgId: string | null | undefined;\n try {\n const { getRequestUserEmail, getRequestOrgId } =\n await import(\"../../server/request-context.js\");\n email = getRequestUserEmail();\n orgId = getRequestOrgId();\n } catch {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=null reason=no-request-context email=(unknown) orgId=(unknown)`,\n );\n }\n return null;\n }\n if (!email) {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=null reason=no-email email=(empty) orgId=${orgId ?? \"(none)\"}`,\n );\n }\n return null;\n }\n\n const hasAllKeys = async (entry: AgentEngineEntry): Promise<boolean> => {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (entry.requiredEnvVars.length === 0) return false;\n if (entry.name === \"builder\") {\n const creds = await resolveBuilderCredentials();\n return Boolean(creds.privateKey && creds.publicKey);\n }\n for (const key of entry.requiredEnvVars) {\n try {\n if (!(await resolveUsableProviderSecret(key))) return false;\n } catch {\n return false;\n }\n }\n return true;\n };\n\n const preferByo = /^(1|true)$/i.test(\n process.env.AGENT_ENGINE_PREFER_BYO_KEY ?? \"\",\n );\n\n if (preferByo) {\n for (const entry of _registry.values()) {\n if (entry.name === \"builder\") continue;\n if (await hasAllKeys(entry)) {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=${entry.name} email=${email} orgId=${orgId ?? \"(none)\"} byo=true`,\n );\n }\n return entry;\n }\n }\n // No BYO key matched — fall through to include Builder as fallback.\n }\n\n for (const entry of _registry.values()) {\n if (await hasAllKeys(entry)) {\n if (traceLookup) {\n console.log(\n `[engine-detect] result=${entry.name} email=${email} orgId=${orgId ?? \"(none)\"}`,\n );\n }\n return entry;\n }\n }\n if (traceLookup) {\n console.log(\n `[engine-detect] result=null reason=no-engine-keys-found email=${email} orgId=${orgId ?? \"(none)\"}`,\n );\n }\n return null;\n}\n\n/**\n * Legacy inline API keys on the global `agent-engine` settings row are\n * intentionally ignored. That row is deployment-wide, so treating\n * `{ apiKey }` or `{ config: { apiKey } }` as configured would let one\n * user's pasted key power every other user. Per-user keys live in\n * `app_secrets` and are resolved separately.\n */\nexport function isAgentEngineSettingConfigured(stored: unknown): boolean {\n if (!stored || typeof stored !== \"object\") return false;\n const s = stored as {\n engine?: unknown;\n };\n if (typeof s.engine !== \"string\" || !s.engine) return false;\n return false;\n}\n\nfunction stripInlineApiKeyConfig(\n config: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n if (!config) return {};\n const { apiKey: _discardedApiKey, ...safeConfig } = config;\n return safeConfig;\n}\n\nfunction canUseDeployEnvForEntry(entry: AgentEngineEntry): boolean {\n if (entry.requiredEnvVars.length === 0) return true;\n return entry.requiredEnvVars.every((key) =>\n canUseDeployCredentialFallbackForRequest(key),\n );\n}\n\nfunction engineCreateConfig(\n entry: AgentEngineEntry,\n apiKey: string | undefined,\n extra?: Record<string, unknown>,\n): Record<string, unknown> {\n return {\n apiKey,\n allowEnvFallback: canUseDeployEnvForEntry(entry),\n ...(extra ?? {}),\n };\n}\n\nasync function resolveOpenAiBaseUrl(): Promise<string | undefined> {\n let raw: string | null | undefined = null;\n try {\n raw = await resolveSecret(OPENAI_BASE_URL_ENV_VAR);\n } catch {\n raw = null;\n }\n\n if (\n !raw &&\n canUseDeployCredentialFallbackForRequest(OPENAI_BASE_URL_ENV_VAR)\n ) {\n raw = readDeployCredentialEnv(OPENAI_BASE_URL_ENV_VAR);\n }\n\n return raw ? normalizeOpenAiBaseUrl(raw) : undefined;\n}\n\nasync function resolveUsableProviderSecret(\n key: string,\n): Promise<string | null> {\n const value = await resolveSecret(key);\n if (!value) return null;\n const authFailure = await getProviderCredentialAuthFailure({ key, value });\n return authFailure ? null : value;\n}\n\nasync function engineCreateConfigForEntry(\n entry: AgentEngineEntry,\n apiKey: string | undefined,\n extra?: Record<string, unknown>,\n): Promise<Record<string, unknown>> {\n const safeExtra = { ...(extra ?? {}) };\n if (entry.name === \"ai-sdk:openai\") {\n if (typeof safeExtra.baseURL === \"string\" && safeExtra.baseUrl == null) {\n safeExtra.baseUrl = normalizeOpenAiBaseUrl(safeExtra.baseURL);\n }\n if (safeExtra.baseUrl == null) {\n const baseUrl = await resolveOpenAiBaseUrl();\n if (baseUrl) safeExtra.baseUrl = baseUrl;\n }\n }\n return engineCreateConfig(entry, apiKey, safeExtra);\n}\n\n/**\n * True when the stored `agent-engine` row points at a registered engine\n * AND an API key for it is reachable via the engine's required env vars.\n * Inline keys on the global settings row are ignored; see\n * `isAgentEngineSettingConfigured`.\n *\n * Sync helper for CLI/status. Prefer {@link isStoredEngineUsableForRequest}\n * so sticky auth-failure markers are respected.\n */\nexport function isStoredEngineUsable(\n stored: unknown,\n entry: AgentEngineEntry,\n): boolean {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (isAgentEngineSettingConfigured(stored)) return true;\n if (entry.requiredEnvVars.length === 0) return true;\n return entry.requiredEnvVars.every(\n (v) =>\n canUseDeployCredentialFallbackForRequest(v) &&\n !!readDeployCredentialEnv(v),\n );\n}\n\n/**\n * Request-aware version of `isStoredEngineUsable`.\n *\n * The settings row stores the selected engine/model, while credentials may\n * live in per-user/org `app_secrets`. The sync helper intentionally only sees\n * deploy env vars; this async helper is what request-time routes should use\n * when deciding whether a stored engine can actually run for the current user.\n */\nexport async function isStoredEngineUsableForRequest(\n stored: unknown,\n entry: AgentEngineEntry,\n): Promise<boolean> {\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (isAgentEngineSettingConfigured(stored)) return true;\n if (entry.requiredEnvVars.length === 0) return true;\n if (entry.name === \"builder\") {\n const creds = await resolveBuilderCredentials();\n return Boolean(creds.privateKey && creds.publicKey);\n }\n for (const key of entry.requiredEnvVars) {\n try {\n if (await resolveUsableProviderSecret(key)) continue;\n } catch {\n return false;\n }\n return false;\n }\n return true;\n}\n\n/**\n * Request-aware credential preflight for an already-resolved engine instance.\n * `resolveEngine()` may still return a default or explicitly requested engine\n * object before credentials are actually usable; call this before starting a\n * user-visible run so missing providers fail immediately.\n */\nexport async function isResolvedEngineUsableForRequest(\n engine: AgentEngine,\n options: { apiKey?: string } = {},\n): Promise<boolean> {\n const entry = _registry.get(engine.name);\n // Custom engines may have their own credential contract outside the core\n // registry metadata, so do not block them speculatively.\n if (!entry) return true;\n if (!isAgentEnginePackageInstalled(entry)) return false;\n if (entry.requiredEnvVars.length === 0) return true;\n\n if (entry.name === \"builder\") {\n const creds = await resolveBuilderCredentials();\n return Boolean(creds.privateKey && creds.publicKey);\n }\n\n if (options.apiKey?.trim()) {\n const key = entry.requiredEnvVars[0];\n if (!key) return true;\n return !(await getProviderCredentialAuthFailure({\n key,\n value: options.apiKey,\n }));\n }\n\n for (const key of entry.requiredEnvVars) {\n try {\n if (await resolveUsableProviderSecret(key)) continue;\n } catch {\n return false;\n }\n return false;\n }\n return true;\n}\n\nexport interface ResolveEngineConfig {\n /** Explicit engine name or instance from createAgentChatPlugin options */\n engineOption?:\n | string\n | AgentEngine\n | { name: string; config: Record<string, unknown> };\n /** API key (used as config for the resolved engine) */\n apiKey?: string;\n /** Model override (used as part of engine config) */\n model?: string;\n /** App/template id used for org-scoped per-app model defaults. */\n appId?: string;\n}\n\n/**\n * Resolve an AgentEngine from options → explicit env → app default →\n * settings → request credentials → env → default.\n *\n * Resolution order:\n * 1. Explicit `engineOption` from plugin options (string name, instance, or {name, config})\n * 2. Env var AGENT_ENGINE\n * 3. Org/user app-template default, when usable\n * 4. Settings store key \"agent-engine\" → { engine: string }, when usable\n * 5. Current request's app_secrets; Builder wins by default when connected\n * 6. Auto-detect deployment env credentials\n * 7. Default \"anthropic\" (requires ANTHROPIC_API_KEY)\n */\nexport async function resolveEngine(\n config: ResolveEngineConfig,\n): Promise<AgentEngine> {\n const { engineOption, apiKey, model: _model, appId } = config;\n\n // 1. Explicit instance passed directly\n if (\n engineOption &&\n typeof engineOption === \"object\" &&\n \"stream\" in engineOption\n ) {\n return engineOption as AgentEngine;\n }\n\n // 2. Explicit {name, config} object\n if (\n engineOption &&\n typeof engineOption === \"object\" &&\n \"name\" in engineOption\n ) {\n const { name, config: engineConfig } = engineOption as {\n name: string;\n config: Record<string, unknown>;\n };\n const entry = _registry.get(name);\n if (!entry)\n throw new Error(\n `[agent-engine] Unknown engine: \"${name}\". Registered: ${[..._registry.keys()].join(\", \")}`,\n );\n assertAgentEnginePackageInstalled(entry);\n return entry.create(\n await engineCreateConfigForEntry(entry, apiKey, engineConfig),\n );\n }\n\n // 3. Explicit string name from options\n if (typeof engineOption === \"string\") {\n const entry = _registry.get(engineOption);\n if (!entry)\n throw new Error(\n `[agent-engine] Unknown engine: \"${engineOption}\". Registered: ${[..._registry.keys()].join(\", \")}`,\n );\n assertAgentEnginePackageInstalled(entry);\n return entry.create(await engineCreateConfigForEntry(entry, apiKey));\n }\n\n // 4. Env var — explicit engine name override\n const envEngine = process.env.AGENT_ENGINE;\n if (envEngine) {\n const entry = _registry.get(envEngine);\n if (entry) {\n assertAgentEnginePackageInstalled(entry);\n return entry.create(await engineCreateConfigForEntry(entry, apiKey));\n }\n }\n\n const appDefault = await getAgentAppModelDefaultForCurrentRequest(appId);\n if (appDefault?.engine) {\n const entry = _registry.get(appDefault.engine);\n if (entry && (await isStoredEngineUsableForRequest(appDefault, entry))) {\n return entry.create(await engineCreateConfigForEntry(entry, apiKey));\n }\n }\n\n let stored: { engine?: unknown; config?: unknown } | null = null;\n try {\n stored = (await getSetting(\"agent-engine\")) as typeof stored;\n } catch {\n // Settings not available — fall through\n }\n\n // Auto-detect from the current user's per-user `app_secrets` rows\n // (Builder OAuth callback + \"paste your own key\" settings flow write here,\n // not env). Stored/app defaults are checked first so an explicit provider\n // selection can override a connected Builder account.\n const detectedFromUser = await detectEngineFromUserSecrets();\n\n // 6. Settings store — only when the stored row's API key is reachable.\n // This explicit selection beats automatic Builder detection so users can\n // switch away from Builder credits by saving/applying their own provider key.\n const storedRaw = stored as { engine?: unknown; config?: unknown } | null;\n const storedEngine = storedRaw?.engine;\n const storedConfig = storedRaw?.config;\n if (storedRaw && typeof storedEngine === \"string\") {\n const entry = _registry.get(storedEngine);\n if (entry && (await isStoredEngineUsableForRequest(storedRaw, entry))) {\n return entry.create(\n await engineCreateConfigForEntry(\n entry,\n apiKey,\n stripInlineApiKeyConfig(\n storedConfig as Record<string, unknown> | undefined,\n ),\n ),\n );\n }\n }\n\n if (detectedFromUser) {\n return detectedFromUser.create(\n await engineCreateConfigForEntry(detectedFromUser, apiKey),\n );\n }\n\n // 8. Auto-detect from any provider env var — so just dropping a key in\n // .env works without also setting AGENT_ENGINE. Skip keys with active\n // auth-failure markers so a rejected deploy key cannot permanently win.\n const detected = await detectEngineFromEnvForRequest();\n if (detected) {\n return detected.create(await engineCreateConfigForEntry(detected, apiKey));\n }\n\n // 9. Default: anthropic\n const anthropicEntry = _registry.get(\"anthropic\");\n if (!anthropicEntry) {\n throw new Error(\n \"[agent-engine] Default Anthropic engine is not registered. Did builtin.ts fail to load?\",\n );\n }\n return anthropicEntry.create(\n await engineCreateConfigForEntry(anthropicEntry, apiKey),\n );\n}\n\n/**\n * Read the user-selected model for an engine from the `agent-engine` setting.\n *\n * The settings UI writes `{engine, model}` via the `manage-agent-engine` action=\"set\",\n * but `resolveEngine` only uses the stored engine (the model is a separate\n * per-request concern). Call this helper alongside `resolveEngine` to honor\n * the user's model choice without requiring a process restart.\n *\n * Returns the stored model only when the stored engine name matches `engine`\n * — otherwise returns `undefined` to avoid applying an Anthropic model string\n * to, say, an OpenRouter engine.\n */\nexport async function getStoredModelForEngine(\n engine: AgentEngine | string,\n options: { appId?: string } = {},\n): Promise<string | undefined> {\n const engineName = typeof engine === \"string\" ? engine : engine.name;\n try {\n const appDefault = await getAgentAppModelDefaultForCurrentRequest(\n options.appId,\n );\n if (\n appDefault?.engine === engineName &&\n typeof appDefault.model === \"string\" &&\n appDefault.model.length > 0\n ) {\n return appDefault.model;\n }\n } catch {\n // Settings/request context may not be available — fall through.\n }\n\n try {\n const stored = await getSetting(\"agent-engine\");\n if (\n stored &&\n typeof stored.engine === \"string\" &&\n stored.engine === engineName &&\n typeof stored.model === \"string\" &&\n stored.model.length > 0\n ) {\n return stored.model;\n }\n } catch {\n // Settings store not ready (fresh install, migration pending) — skip.\n }\n return undefined;\n}\n"]}
@@ -26,7 +26,7 @@ export declare const CLAUDE_SONNET_MODEL_LABEL: string;
26
26
  export declare const AGENT_MODEL_CONFIG: {
27
27
  readonly builder: {
28
28
  readonly defaultModel: "claude-sonnet-4-6" | "claude-sonnet-5";
29
- readonly supportedModels: readonly ["auto", "claude-opus-4-8", "claude-sonnet-4-6" | "claude-sonnet-5", "claude-haiku-4-5", string, "gpt-5-4", "gpt-5-4-mini", "gemini-3-1-pro", "gemini-3-5-flash", "gemini-3-1-flash-lite", "grok-code-fast", "qwen3-coder"];
29
+ readonly supportedModels: readonly ["auto", "claude-opus-4-8", "claude-sonnet-4-6" | "claude-sonnet-5", "claude-haiku-4-5", string, "gpt-5-4", "gpt-5-4-mini", "gemini-3-1-pro", "gemini-3-5-flash", "gemini-3-1-flash-lite"];
30
30
  };
31
31
  readonly anthropic: {
32
32
  readonly defaultModel: "claude-sonnet-4-6" | "claude-sonnet-5";
@@ -69,7 +69,7 @@ export declare const AGENT_MODEL_CONFIG: {
69
69
  };
70
70
  export declare const BUILDER_MODEL_CONFIG: {
71
71
  readonly defaultModel: "claude-sonnet-4-6" | "claude-sonnet-5";
72
- readonly supportedModels: readonly ["auto", "claude-opus-4-8", "claude-sonnet-4-6" | "claude-sonnet-5", "claude-haiku-4-5", string, "gpt-5-4", "gpt-5-4-mini", "gemini-3-1-pro", "gemini-3-5-flash", "gemini-3-1-flash-lite", "grok-code-fast", "qwen3-coder"];
72
+ readonly supportedModels: readonly ["auto", "claude-opus-4-8", "claude-sonnet-4-6" | "claude-sonnet-5", "claude-haiku-4-5", string, "gpt-5-4", "gpt-5-4-mini", "gemini-3-1-pro", "gemini-3-5-flash", "gemini-3-1-flash-lite"];
73
73
  };
74
74
  export declare const ANTHROPIC_MODEL_CONFIG: {
75
75
  readonly defaultModel: "claude-sonnet-4-6" | "claude-sonnet-5";
@@ -1 +1 @@
1
- {"version":3,"file":"model-config.d.ts","sourceRoot":"","sources":["../../src/agent/model-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-config.d.ts","sourceRoot":"","sources":["../../src/agent/model-config.ts"],"names":[],"mappings":"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"}
@@ -224,8 +224,6 @@ export const AGENT_MODEL_CONFIG = {
224
224
  "gemini-3-1-pro",
225
225
  "gemini-3-5-flash",
226
226
  "gemini-3-1-flash-lite",
227
- "grok-code-fast",
228
- "qwen3-coder",
229
227
  ],
230
228
  },
231
229
  anthropic: {
@@ -1 +1 @@
1
- {"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/agent/model-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAC9E,qDAAqD;AACrD,EAAE;AACF,uBAAuB;AACvB,+EAA+E;AAC/E,oEAAoE;AACpE,oEAAoE;AACpE,2DAA2D;AAC3D,kDAAkD;AAClD,EAAE;AACF,kEAAkE;AAClE,6DAA6D;AAC7D,8DAA8D;AAC9D,qCAAqC;AACrC,wDAAwD;AACxD,EAAE;AACF,mFAAmF;AACnF,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,qBAAqB,GAA2B;IACpD,6EAA6E;IAC7E,gBAAgB,EAAE,SAAS;IAC3B,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,mBAAmB,EAAE,SAAS;IAC9B,kBAAkB,EAAE,OAAO;IAC3B,2BAA2B,EAAE,OAAO;IAEpC,4EAA4E;IAC5E,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,cAAc,EAAE,OAAO;IAEvB,4EAA4E;IAC5E,gBAAgB,EAAE,SAAS;IAC3B,kBAAkB,EAAE,SAAS;IAC7B,uBAAuB,EAAE,SAAS;IAElC,6EAA6E;IAC7E,0BAA0B,EAAE,SAAS;IACrC,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,SAAS;IACtC,6BAA6B,EAAE,SAAS;IACxC,gBAAgB,EAAE,SAAS;IAC3B,gBAAgB,EAAE,SAAS;IAC3B,yBAAyB,EAAE,SAAS;IACpC,cAAc,EAAE,SAAS;IAEzB,6EAA6E;IAC7E,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,cAAc,EAAE,OAAO;IAEvB,6EAA6E;IAC7E,kBAAkB,EAAE,SAAS;IAC7B,wBAAwB,EAAE,SAAS;IACnC,kBAAkB,EAAE,SAAS;IAC7B,gBAAgB,EAAE,SAAS;CAC5B,CAAC;AAEF,kEAAkE;AAClE,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,IAAI,CAAC,OAAO;QAAE,OAAO,sBAAsB,CAAC;IAE5C,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEtC,2CAA2C;IAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEjC,6DAA6D;IAC7D,IACE,EAAE,KAAK,gBAAgB;QACvB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC7B,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAChC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAEhC,OAAO,SAAS,CAAC;IAEnB,yCAAyC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IAE7C,yBAAyB;IACzB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9E,wBAAwB;IACxB,IACE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACzB,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACzB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACxB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAExB,OAAO,SAAS,CAAC;IAEnB,2CAA2C;IAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtE,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,uBAAuB;AACvB,oFAAoF;AACpF,6EAA6E;AAC7E,wDAAwD;AACxD,oEAAoE;AACpE,oEAAoE;AACpE,yEAAyE;AACzE,wDAAwD;AACxD,EAAE;AACF,kEAAkE;AAClE,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,8EAA8E;AAE9E,MAAM,uBAAuB,GAA2B;IACtD,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO;IACzB,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,OAAO;IAC5B,kBAAkB,EAAE,MAAM;IAC1B,2BAA2B,EAAE,MAAM;IAEnC,4EAA4E;IAC5E,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,OAAO;IAEvB,6EAA6E;IAC7E,0BAA0B,EAAE,OAAO;IACnC,2BAA2B,EAAE,OAAO;IACpC,2BAA2B,EAAE,OAAO;IACpC,2BAA2B,EAAE,OAAO;IACpC,6BAA6B,EAAE,OAAO;IACtC,gBAAgB,EAAE,OAAO;IACzB,gBAAgB,EAAE,OAAO;IAEzB,6EAA6E;IAC7E,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,OAAO;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,iCAAiC,GAAG,MAAM,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO,iCAAiC,CAAC;IAEvD,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEtC,2CAA2C;IAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEjC,uEAAuE;IACvE,IACE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC7B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAChC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAEhC,OAAO,OAAO,CAAC;IAEjB,4DAA4D;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IAED,+BAA+B;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,OAAO,CAAC;IAE5E,OAAO,iCAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB;IAC1D,CAAC,CAAC,iBAAiB;IACnB,CAAC,CAAC,mBAAmB,CAAC;AACxB,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB;IAC7D,CAAC,CAAC,iBAAiB;IACnB,CAAC,CAAC,mBAAmB,CAAC;AAExB,MAAM,iCAAiC,GAAG,sBAAsB;IAC9D,CAAC,CAAC,2BAA2B;IAC7B,CAAC,CAAC,6BAA6B,CAAC;AAElC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AAE1D,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,KAAa;IACxD,OAAO,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,8BAA8B,GAAG,SAAS,CAAC;AACjD,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AACnE,MAAM,sCAAsC,GAAG,qBAAqB,CAClE,8BAA8B,CAC/B,CAAC;AACF,MAAM,kCAAkC,GAAG,iBAAiB,CAC1D,QAAQ,EACR,8BAA8B,CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE;QACP,YAAY,EAAE,+BAA+B;QAC7C,eAAe,EAAE;YACf,MAAM;YACN,iBAAiB;YACjB,sBAAsB;YACtB,kBAAkB;YAClB,sCAAsC;YACtC,SAAS;YACT,cAAc;YACd,gBAAgB;YAChB,kBAAkB;YAClB,uBAAuB;YACvB,gBAAgB;YAChB,aAAa;SACd;KACF;IACD,SAAS,EAAE;QACT,YAAY,EAAE,0BAA0B;QACxC,eAAe,EAAE;YACf,gBAAgB;YAChB,iBAAiB;YACjB,sBAAsB;YACtB,2BAA2B;SAC5B;KACF;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,YAAY,EAAE,0BAA0B;YACxC,eAAe,EAAE;gBACf,gBAAgB;gBAChB,iBAAiB;gBACjB,sBAAsB;gBACtB,2BAA2B;aAC5B;SACF;QACD,MAAM,EAAE;YACN,YAAY,EAAE,8BAA8B;YAC5C,eAAe,EAAE;gBACf,8BAA8B;gBAC9B,SAAS;gBACT,cAAc;aACf;SACF;QACD,UAAU,EAAE;YACV,YAAY,EAAE,kCAAkC;YAChD,eAAe,EAAE;gBACf,0BAA0B;gBAC1B,2BAA2B;gBAC3B,iCAAiC;gBACjC,kCAAkC;gBAClC,gBAAgB;gBAChB,wDAAwD;gBACxD,yBAAyB;gBACzB,cAAc;aACf;SACF;QACD,MAAM,EAAE;YACN,YAAY,EAAE,kBAAkB;YAChC,eAAe,EAAE,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;SAChE;QACD,IAAI,EAAE;YACJ,qEAAqE;YACrE,0EAA0E;YAC1E,0BAA0B;YAC1B,YAAY,EAAE,yBAAyB;YACvC,eAAe,EAAE;gBACf,yBAAyB;gBACzB,gBAAgB;gBAChB,sBAAsB;aACvB;SACF;QACD,OAAO,EAAE;YACP,YAAY,EAAE,sBAAsB;YACpC,eAAe,EAAE;gBACf,sBAAsB;gBACtB,uBAAuB;gBACvB,sBAAsB;aACvB;SACF;QACD,MAAM,EAAE;YACN,oEAAoE;YACpE,2CAA2C;YAC3C,YAAY,EAAE,wBAAwB;YACtC,eAAe,EAAE;gBACf,wBAAwB;gBACxB,gBAAgB;gBAChB,WAAW;aACZ;SACF;QACD,MAAM,EAAE;YACN,YAAY,EAAE,UAAU;YACxB,eAAe,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC;SAClE;KACF;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,SAAS,CAAC;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAI5D,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC,YAAY,CAAC;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAC,YAAY,CAAC","sourcesContent":["/**\n * Central model catalog for built-in agent engines.\n *\n * To bump the framework's managed default, update the Anthropic/OpenAI\n * constants below. Builder gateway and OpenRouter IDs are derived here so the\n * usual default bump stays in one file.\n */\n\n// ---------------------------------------------------------------------------\n// Per-model context window table (input token limit)\n//\n// Sources (June 2026):\n// Anthropic https://platform.claude.com/docs/en/about-claude/models/overview\n// OpenAI https://developers.openai.com/api/docs/models/gpt-5.5\n// https://developers.openai.com/api/docs/models/gpt-5.4\n// Google https://ai.google.dev/gemini-api/docs/models\n// OpenRouter https://openrouter.ai/api/v1/models\n//\n// Family defaults (used when a model id isn't listed explicitly):\n// claude-* → 200_000 (Haiku 4.5 and earlier models)\n// gpt-5* → 1_050_000 (GPT-5.4/5.5 flagship context)\n// gemini-2* / gemini-3* → 1_048_576\n// everything else → 128_000 (safe conservative floor)\n//\n// Note: Fable 5, Sonnet 5, Sonnet 4.6, and Opus 4.6/4.7/4.8 support 1M via the API\n// at standard prices.\n// ---------------------------------------------------------------------------\n\nconst MODEL_CONTEXT_WINDOWS: Record<string, number> = {\n // ── Anthropic / Claude (via Builder gateway or Anthropic direct) ──────────\n \"claude-fable-5\": 1_000_000,\n \"claude-opus-4-8\": 1_000_000,\n \"claude-opus-4-7\": 1_000_000,\n \"claude-sonnet-5\": 1_000_000,\n \"claude-sonnet-4-6\": 1_000_000,\n \"claude-haiku-4-5\": 200_000,\n \"claude-haiku-4-5-20251001\": 200_000,\n\n // ── Builder gateway OpenAI IDs (dot→dash) ────────────────────────────────\n \"gpt-5-5\": 1_050_000,\n \"gpt-5-4\": 1_050_000,\n \"gpt-5-4-mini\": 400_000,\n\n // ── Gemini (Builder gateway IDs) ─────────────────────────────────────────\n \"gemini-3-1-pro\": 1_048_576,\n \"gemini-3-5-flash\": 1_048_576,\n \"gemini-3-1-flash-lite\": 1_048_576,\n\n // ── OpenRouter model IDs ──────────────────────────────────────────────────\n \"anthropic/claude-fable-5\": 1_000_000,\n \"anthropic/claude-opus-4.8\": 1_000_000,\n \"anthropic/claude-opus-4.7\": 1_000_000,\n \"anthropic/claude-sonnet-5\": 1_000_000,\n \"anthropic/claude-sonnet-4.6\": 1_000_000,\n \"openai/gpt-5.5\": 1_050_000,\n \"openai/gpt-5.4\": 1_050_000,\n \"google/gemini-2.5-flash\": 1_048_576,\n \"z-ai/glm-5.2\": 1_048_576,\n\n // ── AI-SDK native OpenAI IDs ──────────────────────────────────────────────\n \"gpt-5.5\": 1_050_000,\n \"gpt-5.4\": 1_050_000,\n \"gpt-5.4-mini\": 400_000,\n\n // ── AI-SDK native Google IDs ──────────────────────────────────────────────\n \"gemini-3.5-flash\": 1_048_576,\n \"gemini-3.1-pro-preview\": 1_048_576,\n \"gemini-2.5-flash\": 1_048_576,\n \"gemini-2.5-pro\": 1_048_576,\n};\n\n/** Conservative safe default when a model is not in the table. */\nconst DEFAULT_CONTEXT_WINDOW = 128_000;\n\n/**\n * Return the known input-token context window for the given model ID.\n *\n * Uses an exact-match table first, then falls back to family-prefix heuristics,\n * then a conservative 128 K default. Never throws — always returns a positive\n * integer.\n */\nexport function getContextWindowForModel(modelId: string): number {\n if (!modelId) return DEFAULT_CONTEXT_WINDOW;\n\n const exact = MODEL_CONTEXT_WINDOWS[modelId];\n if (exact !== undefined) return exact;\n\n // Family heuristics for unlisted model IDs\n const id = modelId.toLowerCase();\n\n // Anthropic Fable 5, Opus 4.x, Sonnet 5, and Sonnet 4.6 = 1M\n if (\n id === \"claude-fable-5\" ||\n id.includes(\"claude-fable-5\") ||\n id.startsWith(\"claude-opus-4\") ||\n id.includes(\"claude-sonnet-5\") ||\n id.includes(\"claude-sonnet-4-6\") ||\n id.includes(\"claude-sonnet-4.6\")\n )\n return 1_000_000;\n\n // All other Claude models — default 200K\n if (id.startsWith(\"claude-\")) return 200_000;\n\n // GPT-5.x family — 1.05M\n if (id.startsWith(\"gpt-5\") || id.startsWith(\"openai/gpt-5\")) return 1_050_000;\n\n // Gemini 2.x / 3.x — 1M\n if (\n id.startsWith(\"gemini-2\") ||\n id.startsWith(\"gemini-3\") ||\n id.includes(\"/gemini-2\") ||\n id.includes(\"/gemini-3\")\n )\n return 1_048_576;\n\n // Z.ai GLM 5.x on OpenRouter — 1M context.\n if (id.startsWith(\"glm-5\") || id.includes(\"/glm-5\")) return 1_048_576;\n\n return DEFAULT_CONTEXT_WINDOW;\n}\n\n// ---------------------------------------------------------------------------\n// Per-model max output token table (documented output-token ceilings)\n//\n// Sources (July 2026):\n// Anthropic https://platform.claude.com/docs/en/docs/about-claude/models/overview\n// (Fable 5 / Opus 4.8 / Opus 4.7 / Sonnet 5 / Sonnet 4.6 = 128K;\n// Haiku 4.5 / Sonnet 4.5 / Opus 4.5 = 64K)\n// OpenAI https://developers.openai.com/api/docs/models/gpt-5.5\n// https://developers.openai.com/api/docs/models/gpt-5.4\n// https://developers.openai.com/api/docs/models/gpt-5.4-mini\n// (GPT-5.5 / GPT-5.4 / GPT-5.4-mini = 128K)\n//\n// Family defaults (used when a model id isn't listed explicitly):\n// claude flagship (fable-5 / opus-4.6+ / sonnet-5 / sonnet-4.6) → 128_000\n// claude-* (Haiku 4.5, older/unknown Claude ids) → 64_000\n// gpt-5* → 128_000\n// everything else → 64_000\n// (safe conservative ceiling that matches the previous global clamp)\n// ---------------------------------------------------------------------------\n\nconst MODEL_MAX_OUTPUT_TOKENS: Record<string, number> = {\n // ── Anthropic / Claude (via Builder gateway or Anthropic direct) ──────────\n \"claude-fable-5\": 128_000,\n \"claude-opus-4-8\": 128_000,\n \"claude-opus-4-7\": 128_000,\n \"claude-sonnet-5\": 128_000,\n \"claude-sonnet-4-6\": 128_000,\n \"claude-haiku-4-5\": 64_000,\n \"claude-haiku-4-5-20251001\": 64_000,\n\n // ── Builder gateway OpenAI IDs (dot→dash) ────────────────────────────────\n \"gpt-5-5\": 128_000,\n \"gpt-5-4\": 128_000,\n \"gpt-5-4-mini\": 128_000,\n\n // ── OpenRouter model IDs ──────────────────────────────────────────────────\n \"anthropic/claude-fable-5\": 128_000,\n \"anthropic/claude-opus-4.8\": 128_000,\n \"anthropic/claude-opus-4.7\": 128_000,\n \"anthropic/claude-sonnet-5\": 128_000,\n \"anthropic/claude-sonnet-4.6\": 128_000,\n \"openai/gpt-5.5\": 128_000,\n \"openai/gpt-5.4\": 128_000,\n\n // ── AI-SDK native OpenAI IDs ──────────────────────────────────────────────\n \"gpt-5.5\": 128_000,\n \"gpt-5.4\": 128_000,\n \"gpt-5.4-mini\": 128_000,\n};\n\n/**\n * Conservative safe ceiling when a model is not in the table (matches the\n * previous global output-token clamp, and current Claude Haiku 4.5 limits).\n */\nconst DEFAULT_MAX_OUTPUT_TOKENS_CEILING = 64_000;\n\n/**\n * Return the documented max output-token ceiling for the given model ID.\n *\n * Uses an exact-match table first, then falls back to family-prefix\n * heuristics, then a conservative 64 K default. Never throws — always returns\n * a positive integer.\n */\nexport function getMaxOutputTokensForModel(\n modelId: string | undefined,\n): number {\n if (!modelId) return DEFAULT_MAX_OUTPUT_TOKENS_CEILING;\n\n const exact = MODEL_MAX_OUTPUT_TOKENS[modelId];\n if (exact !== undefined) return exact;\n\n // Family heuristics for unlisted model IDs\n const id = modelId.toLowerCase();\n\n // Anthropic Fable 5, Opus 4.6+, Sonnet 5, and Sonnet 4.6 = 128K output\n if (\n id.includes(\"claude-fable-5\") ||\n id.includes(\"claude-opus-4-6\") ||\n id.includes(\"claude-opus-4.6\") ||\n id.includes(\"claude-opus-4-7\") ||\n id.includes(\"claude-opus-4.7\") ||\n id.includes(\"claude-opus-4-8\") ||\n id.includes(\"claude-opus-4.8\") ||\n id.includes(\"claude-sonnet-5\") ||\n id.includes(\"claude-sonnet-4-6\") ||\n id.includes(\"claude-sonnet-4.6\")\n )\n return 128_000;\n\n // All other Claude models (Haiku 4.5, legacy) — 64K ceiling\n if (id.startsWith(\"claude-\") || id.includes(\"/claude-\")) {\n return DEFAULT_MAX_OUTPUT_TOKENS_CEILING;\n }\n\n // GPT-5.x family — 128K output\n if (id.startsWith(\"gpt-5\") || id.startsWith(\"openai/gpt-5\")) return 128_000;\n\n return DEFAULT_MAX_OUTPUT_TOKENS_CEILING;\n}\n\nconst ENABLE_CLAUDE_SONNET_5 = true;\n\nexport const CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"claude-sonnet-5\"\n : \"claude-sonnet-4-6\";\nexport const CLAUDE_SONNET_MODEL_LABEL = ENABLE_CLAUDE_SONNET_5\n ? \"Claude Sonnet 5\"\n : \"Claude Sonnet 4.6\";\n\nconst OPENROUTER_CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"anthropic/claude-sonnet-5\"\n : \"anthropic/claude-sonnet-4.6\";\n\nconst ANTHROPIC_DEFAULT_MODEL_ID = CLAUDE_SONNET_MODEL_ID;\n\nfunction builderGatewayModelId(model: string): string {\n return model.replace(/\\./g, \"-\");\n}\n\nfunction openRouterModelId(provider: string, model: string): string {\n return `${provider}/${model}`;\n}\n\nconst FRAMEWORK_DEFAULT_OPENAI_MODEL = \"gpt-5.5\";\nconst FRAMEWORK_DEFAULT_BUILDER_MODEL = ANTHROPIC_DEFAULT_MODEL_ID;\nconst FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL = builderGatewayModelId(\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\nconst FRAMEWORK_DEFAULT_OPENROUTER_MODEL = openRouterModelId(\n \"openai\",\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\n\nexport const AGENT_MODEL_CONFIG = {\n builder: {\n defaultModel: FRAMEWORK_DEFAULT_BUILDER_MODEL,\n supportedModels: [\n \"auto\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5\",\n FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL,\n \"gpt-5-4\",\n \"gpt-5-4-mini\",\n \"gemini-3-1-pro\",\n \"gemini-3-5-flash\",\n \"gemini-3-1-flash-lite\",\n \"grok-code-fast\",\n \"qwen3-coder\",\n ],\n },\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n aiSdk: {\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n openai: {\n defaultModel: FRAMEWORK_DEFAULT_OPENAI_MODEL,\n supportedModels: [\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n ],\n },\n openrouter: {\n defaultModel: FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n supportedModels: [\n \"anthropic/claude-fable-5\",\n \"anthropic/claude-opus-4.8\",\n OPENROUTER_CLAUDE_SONNET_MODEL_ID,\n FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n \"openai/gpt-5.4\",\n // Current stable Gemini on OpenRouter (2.5 Flash is GA)\n \"google/gemini-2.5-flash\",\n \"z-ai/glm-5.2\",\n ],\n },\n google: {\n defaultModel: \"gemini-3.5-flash\",\n supportedModels: [\"gemini-3.5-flash\", \"gemini-3.1-pro-preview\"],\n },\n groq: {\n // llama-3.1-70b-versatile and mixtral-8x7b-32768 were decommissioned\n // (errors since Jan 2025 and Mar 2025 respectively). Replace with current\n // Groq production models.\n defaultModel: \"llama-3.3-70b-versatile\",\n supportedModels: [\n \"llama-3.3-70b-versatile\",\n \"llama3-8b-8192\",\n \"llama-3.1-8b-instant\",\n ],\n },\n mistral: {\n defaultModel: \"mistral-large-latest\",\n supportedModels: [\n \"mistral-large-latest\",\n \"mistral-medium-latest\",\n \"mistral-small-latest\",\n ],\n },\n cohere: {\n // command-r-plus (unversioned) is an alias that may lag; the stable\n // dated release is command-r-plus-08-2024.\n defaultModel: \"command-r-plus-08-2024\",\n supportedModels: [\n \"command-r-plus-08-2024\",\n \"command-r-plus\",\n \"command-r\",\n ],\n },\n ollama: {\n defaultModel: \"llama3.1\",\n supportedModels: [\"llama3.1\", \"llama3.2\", \"mistral\", \"codestral\"],\n },\n },\n} as const;\n\nexport const BUILDER_MODEL_CONFIG = AGENT_MODEL_CONFIG.builder;\nexport const ANTHROPIC_MODEL_CONFIG = AGENT_MODEL_CONFIG.anthropic;\nexport const AI_SDK_MODEL_CONFIG = AGENT_MODEL_CONFIG.aiSdk;\n\nexport type AISDKProvider = keyof typeof AI_SDK_MODEL_CONFIG;\n\nexport const DEFAULT_MODEL = BUILDER_MODEL_CONFIG.defaultModel;\nexport const DEFAULT_OPENAI_MODEL = AI_SDK_MODEL_CONFIG.openai.defaultModel;\nexport const DEFAULT_ANTHROPIC_MODEL = ANTHROPIC_MODEL_CONFIG.defaultModel;\n"]}
1
+ {"version":3,"file":"model-config.js","sourceRoot":"","sources":["../../src/agent/model-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Central model catalog for built-in agent engines.\n *\n * To bump the framework's managed default, update the Anthropic/OpenAI\n * constants below. Builder gateway and OpenRouter IDs are derived here so the\n * usual default bump stays in one file.\n */\n\n// ---------------------------------------------------------------------------\n// Per-model context window table (input token limit)\n//\n// Sources (June 2026):\n// Anthropic https://platform.claude.com/docs/en/about-claude/models/overview\n// OpenAI https://developers.openai.com/api/docs/models/gpt-5.5\n// https://developers.openai.com/api/docs/models/gpt-5.4\n// Google https://ai.google.dev/gemini-api/docs/models\n// OpenRouter https://openrouter.ai/api/v1/models\n//\n// Family defaults (used when a model id isn't listed explicitly):\n// claude-* → 200_000 (Haiku 4.5 and earlier models)\n// gpt-5* → 1_050_000 (GPT-5.4/5.5 flagship context)\n// gemini-2* / gemini-3* → 1_048_576\n// everything else → 128_000 (safe conservative floor)\n//\n// Note: Fable 5, Sonnet 5, Sonnet 4.6, and Opus 4.6/4.7/4.8 support 1M via the API\n// at standard prices.\n// ---------------------------------------------------------------------------\n\nconst MODEL_CONTEXT_WINDOWS: Record<string, number> = {\n // ── Anthropic / Claude (via Builder gateway or Anthropic direct) ──────────\n \"claude-fable-5\": 1_000_000,\n \"claude-opus-4-8\": 1_000_000,\n \"claude-opus-4-7\": 1_000_000,\n \"claude-sonnet-5\": 1_000_000,\n \"claude-sonnet-4-6\": 1_000_000,\n \"claude-haiku-4-5\": 200_000,\n \"claude-haiku-4-5-20251001\": 200_000,\n\n // ── Builder gateway OpenAI IDs (dot→dash) ────────────────────────────────\n \"gpt-5-5\": 1_050_000,\n \"gpt-5-4\": 1_050_000,\n \"gpt-5-4-mini\": 400_000,\n\n // ── Gemini (Builder gateway IDs) ─────────────────────────────────────────\n \"gemini-3-1-pro\": 1_048_576,\n \"gemini-3-5-flash\": 1_048_576,\n \"gemini-3-1-flash-lite\": 1_048_576,\n\n // ── OpenRouter model IDs ──────────────────────────────────────────────────\n \"anthropic/claude-fable-5\": 1_000_000,\n \"anthropic/claude-opus-4.8\": 1_000_000,\n \"anthropic/claude-opus-4.7\": 1_000_000,\n \"anthropic/claude-sonnet-5\": 1_000_000,\n \"anthropic/claude-sonnet-4.6\": 1_000_000,\n \"openai/gpt-5.5\": 1_050_000,\n \"openai/gpt-5.4\": 1_050_000,\n \"google/gemini-2.5-flash\": 1_048_576,\n \"z-ai/glm-5.2\": 1_048_576,\n\n // ── AI-SDK native OpenAI IDs ──────────────────────────────────────────────\n \"gpt-5.5\": 1_050_000,\n \"gpt-5.4\": 1_050_000,\n \"gpt-5.4-mini\": 400_000,\n\n // ── AI-SDK native Google IDs ──────────────────────────────────────────────\n \"gemini-3.5-flash\": 1_048_576,\n \"gemini-3.1-pro-preview\": 1_048_576,\n \"gemini-2.5-flash\": 1_048_576,\n \"gemini-2.5-pro\": 1_048_576,\n};\n\n/** Conservative safe default when a model is not in the table. */\nconst DEFAULT_CONTEXT_WINDOW = 128_000;\n\n/**\n * Return the known input-token context window for the given model ID.\n *\n * Uses an exact-match table first, then falls back to family-prefix heuristics,\n * then a conservative 128 K default. Never throws — always returns a positive\n * integer.\n */\nexport function getContextWindowForModel(modelId: string): number {\n if (!modelId) return DEFAULT_CONTEXT_WINDOW;\n\n const exact = MODEL_CONTEXT_WINDOWS[modelId];\n if (exact !== undefined) return exact;\n\n // Family heuristics for unlisted model IDs\n const id = modelId.toLowerCase();\n\n // Anthropic Fable 5, Opus 4.x, Sonnet 5, and Sonnet 4.6 = 1M\n if (\n id === \"claude-fable-5\" ||\n id.includes(\"claude-fable-5\") ||\n id.startsWith(\"claude-opus-4\") ||\n id.includes(\"claude-sonnet-5\") ||\n id.includes(\"claude-sonnet-4-6\") ||\n id.includes(\"claude-sonnet-4.6\")\n )\n return 1_000_000;\n\n // All other Claude models — default 200K\n if (id.startsWith(\"claude-\")) return 200_000;\n\n // GPT-5.x family — 1.05M\n if (id.startsWith(\"gpt-5\") || id.startsWith(\"openai/gpt-5\")) return 1_050_000;\n\n // Gemini 2.x / 3.x — 1M\n if (\n id.startsWith(\"gemini-2\") ||\n id.startsWith(\"gemini-3\") ||\n id.includes(\"/gemini-2\") ||\n id.includes(\"/gemini-3\")\n )\n return 1_048_576;\n\n // Z.ai GLM 5.x on OpenRouter — 1M context.\n if (id.startsWith(\"glm-5\") || id.includes(\"/glm-5\")) return 1_048_576;\n\n return DEFAULT_CONTEXT_WINDOW;\n}\n\n// ---------------------------------------------------------------------------\n// Per-model max output token table (documented output-token ceilings)\n//\n// Sources (July 2026):\n// Anthropic https://platform.claude.com/docs/en/docs/about-claude/models/overview\n// (Fable 5 / Opus 4.8 / Opus 4.7 / Sonnet 5 / Sonnet 4.6 = 128K;\n// Haiku 4.5 / Sonnet 4.5 / Opus 4.5 = 64K)\n// OpenAI https://developers.openai.com/api/docs/models/gpt-5.5\n// https://developers.openai.com/api/docs/models/gpt-5.4\n// https://developers.openai.com/api/docs/models/gpt-5.4-mini\n// (GPT-5.5 / GPT-5.4 / GPT-5.4-mini = 128K)\n//\n// Family defaults (used when a model id isn't listed explicitly):\n// claude flagship (fable-5 / opus-4.6+ / sonnet-5 / sonnet-4.6) → 128_000\n// claude-* (Haiku 4.5, older/unknown Claude ids) → 64_000\n// gpt-5* → 128_000\n// everything else → 64_000\n// (safe conservative ceiling that matches the previous global clamp)\n// ---------------------------------------------------------------------------\n\nconst MODEL_MAX_OUTPUT_TOKENS: Record<string, number> = {\n // ── Anthropic / Claude (via Builder gateway or Anthropic direct) ──────────\n \"claude-fable-5\": 128_000,\n \"claude-opus-4-8\": 128_000,\n \"claude-opus-4-7\": 128_000,\n \"claude-sonnet-5\": 128_000,\n \"claude-sonnet-4-6\": 128_000,\n \"claude-haiku-4-5\": 64_000,\n \"claude-haiku-4-5-20251001\": 64_000,\n\n // ── Builder gateway OpenAI IDs (dot→dash) ────────────────────────────────\n \"gpt-5-5\": 128_000,\n \"gpt-5-4\": 128_000,\n \"gpt-5-4-mini\": 128_000,\n\n // ── OpenRouter model IDs ──────────────────────────────────────────────────\n \"anthropic/claude-fable-5\": 128_000,\n \"anthropic/claude-opus-4.8\": 128_000,\n \"anthropic/claude-opus-4.7\": 128_000,\n \"anthropic/claude-sonnet-5\": 128_000,\n \"anthropic/claude-sonnet-4.6\": 128_000,\n \"openai/gpt-5.5\": 128_000,\n \"openai/gpt-5.4\": 128_000,\n\n // ── AI-SDK native OpenAI IDs ──────────────────────────────────────────────\n \"gpt-5.5\": 128_000,\n \"gpt-5.4\": 128_000,\n \"gpt-5.4-mini\": 128_000,\n};\n\n/**\n * Conservative safe ceiling when a model is not in the table (matches the\n * previous global output-token clamp, and current Claude Haiku 4.5 limits).\n */\nconst DEFAULT_MAX_OUTPUT_TOKENS_CEILING = 64_000;\n\n/**\n * Return the documented max output-token ceiling for the given model ID.\n *\n * Uses an exact-match table first, then falls back to family-prefix\n * heuristics, then a conservative 64 K default. Never throws — always returns\n * a positive integer.\n */\nexport function getMaxOutputTokensForModel(\n modelId: string | undefined,\n): number {\n if (!modelId) return DEFAULT_MAX_OUTPUT_TOKENS_CEILING;\n\n const exact = MODEL_MAX_OUTPUT_TOKENS[modelId];\n if (exact !== undefined) return exact;\n\n // Family heuristics for unlisted model IDs\n const id = modelId.toLowerCase();\n\n // Anthropic Fable 5, Opus 4.6+, Sonnet 5, and Sonnet 4.6 = 128K output\n if (\n id.includes(\"claude-fable-5\") ||\n id.includes(\"claude-opus-4-6\") ||\n id.includes(\"claude-opus-4.6\") ||\n id.includes(\"claude-opus-4-7\") ||\n id.includes(\"claude-opus-4.7\") ||\n id.includes(\"claude-opus-4-8\") ||\n id.includes(\"claude-opus-4.8\") ||\n id.includes(\"claude-sonnet-5\") ||\n id.includes(\"claude-sonnet-4-6\") ||\n id.includes(\"claude-sonnet-4.6\")\n )\n return 128_000;\n\n // All other Claude models (Haiku 4.5, legacy) — 64K ceiling\n if (id.startsWith(\"claude-\") || id.includes(\"/claude-\")) {\n return DEFAULT_MAX_OUTPUT_TOKENS_CEILING;\n }\n\n // GPT-5.x family — 128K output\n if (id.startsWith(\"gpt-5\") || id.startsWith(\"openai/gpt-5\")) return 128_000;\n\n return DEFAULT_MAX_OUTPUT_TOKENS_CEILING;\n}\n\nconst ENABLE_CLAUDE_SONNET_5 = true;\n\nexport const CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"claude-sonnet-5\"\n : \"claude-sonnet-4-6\";\nexport const CLAUDE_SONNET_MODEL_LABEL = ENABLE_CLAUDE_SONNET_5\n ? \"Claude Sonnet 5\"\n : \"Claude Sonnet 4.6\";\n\nconst OPENROUTER_CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5\n ? \"anthropic/claude-sonnet-5\"\n : \"anthropic/claude-sonnet-4.6\";\n\nconst ANTHROPIC_DEFAULT_MODEL_ID = CLAUDE_SONNET_MODEL_ID;\n\nfunction builderGatewayModelId(model: string): string {\n return model.replace(/\\./g, \"-\");\n}\n\nfunction openRouterModelId(provider: string, model: string): string {\n return `${provider}/${model}`;\n}\n\nconst FRAMEWORK_DEFAULT_OPENAI_MODEL = \"gpt-5.5\";\nconst FRAMEWORK_DEFAULT_BUILDER_MODEL = ANTHROPIC_DEFAULT_MODEL_ID;\nconst FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL = builderGatewayModelId(\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\nconst FRAMEWORK_DEFAULT_OPENROUTER_MODEL = openRouterModelId(\n \"openai\",\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n);\n\nexport const AGENT_MODEL_CONFIG = {\n builder: {\n defaultModel: FRAMEWORK_DEFAULT_BUILDER_MODEL,\n supportedModels: [\n \"auto\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5\",\n FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL,\n \"gpt-5-4\",\n \"gpt-5-4-mini\",\n \"gemini-3-1-pro\",\n \"gemini-3-5-flash\",\n \"gemini-3-1-flash-lite\",\n ],\n },\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n aiSdk: {\n anthropic: {\n defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,\n supportedModels: [\n \"claude-fable-5\",\n \"claude-opus-4-8\",\n CLAUDE_SONNET_MODEL_ID,\n \"claude-haiku-4-5-20251001\",\n ],\n },\n openai: {\n defaultModel: FRAMEWORK_DEFAULT_OPENAI_MODEL,\n supportedModels: [\n FRAMEWORK_DEFAULT_OPENAI_MODEL,\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n ],\n },\n openrouter: {\n defaultModel: FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n supportedModels: [\n \"anthropic/claude-fable-5\",\n \"anthropic/claude-opus-4.8\",\n OPENROUTER_CLAUDE_SONNET_MODEL_ID,\n FRAMEWORK_DEFAULT_OPENROUTER_MODEL,\n \"openai/gpt-5.4\",\n // Current stable Gemini on OpenRouter (2.5 Flash is GA)\n \"google/gemini-2.5-flash\",\n \"z-ai/glm-5.2\",\n ],\n },\n google: {\n defaultModel: \"gemini-3.5-flash\",\n supportedModels: [\"gemini-3.5-flash\", \"gemini-3.1-pro-preview\"],\n },\n groq: {\n // llama-3.1-70b-versatile and mixtral-8x7b-32768 were decommissioned\n // (errors since Jan 2025 and Mar 2025 respectively). Replace with current\n // Groq production models.\n defaultModel: \"llama-3.3-70b-versatile\",\n supportedModels: [\n \"llama-3.3-70b-versatile\",\n \"llama3-8b-8192\",\n \"llama-3.1-8b-instant\",\n ],\n },\n mistral: {\n defaultModel: \"mistral-large-latest\",\n supportedModels: [\n \"mistral-large-latest\",\n \"mistral-medium-latest\",\n \"mistral-small-latest\",\n ],\n },\n cohere: {\n // command-r-plus (unversioned) is an alias that may lag; the stable\n // dated release is command-r-plus-08-2024.\n defaultModel: \"command-r-plus-08-2024\",\n supportedModels: [\n \"command-r-plus-08-2024\",\n \"command-r-plus\",\n \"command-r\",\n ],\n },\n ollama: {\n defaultModel: \"llama3.1\",\n supportedModels: [\"llama3.1\", \"llama3.2\", \"mistral\", \"codestral\"],\n },\n },\n} as const;\n\nexport const BUILDER_MODEL_CONFIG = AGENT_MODEL_CONFIG.builder;\nexport const ANTHROPIC_MODEL_CONFIG = AGENT_MODEL_CONFIG.anthropic;\nexport const AI_SDK_MODEL_CONFIG = AGENT_MODEL_CONFIG.aiSdk;\n\nexport type AISDKProvider = keyof typeof AI_SDK_MODEL_CONFIG;\n\nexport const DEFAULT_MODEL = BUILDER_MODEL_CONFIG.defaultModel;\nexport const DEFAULT_OPENAI_MODEL = AI_SDK_MODEL_CONFIG.openai.defaultModel;\nexport const DEFAULT_ANTHROPIC_MODEL = ANTHROPIC_MODEL_CONFIG.defaultModel;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
@@ -697,6 +697,7 @@ export function isRetryableError(err) {
697
697
  }
698
698
  return (code === "builder_gateway_error" ||
699
699
  code === "builder_gateway_network_error" ||
700
+ code === "provider_network_error" ||
700
701
  code === "http_429" ||
701
702
  code === "http_500" ||
702
703
  code === "http_502" ||
@@ -722,6 +723,11 @@ export function isRetryableError(err) {
722
723
  msg.includes("gateway error") ||
723
724
  msg.includes("socket hang up") ||
724
725
  msg.includes("connection reset") ||
726
+ // Anthropic SDK APIConnectionError default message is exactly
727
+ // "Connection error." — Builder gateway often forwards it as a stop
728
+ // event with no structured code. Without this match the run fails in
729
+ // ~3s and the client recovery loop storms POSTs.
730
+ msg.includes("connection error") ||
725
731
  msg.includes("too many requests") ||
726
732
  msg.includes("timeout") ||
727
733
  msg.includes("gateway timeout") ||
@@ -1195,7 +1201,8 @@ export function isResumableEngineError(err) {
1195
1201
  return false;
1196
1202
  const code = err instanceof EngineError ? (err.errorCode ?? "").toLowerCase() : "";
1197
1203
  if (code === "builder_gateway_timeout" ||
1198
- code === "builder_gateway_network_error") {
1204
+ code === "builder_gateway_network_error" ||
1205
+ code === "provider_network_error") {
1199
1206
  return true;
1200
1207
  }
1201
1208
  if (code === "http_502" ||
@@ -1211,6 +1218,7 @@ export function isResumableEngineError(err) {
1211
1218
  text.includes("econnaborted") ||
1212
1219
  text.includes("fetch failed") ||
1213
1220
  text.includes("network error") ||
1221
+ text.includes("connection error") ||
1214
1222
  text.includes("connection reset") ||
1215
1223
  text.includes("connection closed") ||
1216
1224
  text.includes("stream closed") ||
@@ -3393,6 +3401,8 @@ function isRecoverableContinuationError(event) {
3393
3401
  return false;
3394
3402
  return (event.recoverable === true ||
3395
3403
  code === "builder_gateway_timeout" ||
3404
+ code === "builder_gateway_network_error" ||
3405
+ code === "provider_network_error" ||
3396
3406
  code === "stale_run" ||
3397
3407
  code === "timeout" ||
3398
3408
  code === "timeout_error" ||
@@ -3401,6 +3411,7 @@ function isRecoverableContinuationError(event) {
3401
3411
  code === "http_529" ||
3402
3412
  code === "run_timeout" ||
3403
3413
  message.includes("timeout") ||
3414
+ message.includes("connection error") ||
3404
3415
  message.includes("temporarily unavailable"));
3405
3416
  }
3406
3417
  function endsAtInternalContinuationBoundary(run) {