@agent-native/core 0.7.16 → 0.7.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/a2a/agent-card.js.map +1 -1
  2. package/dist/a2a/client.js.map +1 -1
  3. package/dist/a2a/handlers.js.map +1 -1
  4. package/dist/a2a/index.js.map +1 -1
  5. package/dist/a2a/server.js.map +1 -1
  6. package/dist/a2a/task-store.js.map +1 -1
  7. package/dist/a2a/types.js.map +1 -1
  8. package/dist/action.js.map +1 -1
  9. package/dist/adapters/cli/index.js.map +1 -1
  10. package/dist/adapters/cli/registry.js.map +1 -1
  11. package/dist/adapters/cli/shell-adapter.js.map +1 -1
  12. package/dist/adapters/cli/types.js.map +1 -1
  13. package/dist/agent/default-model.js.map +1 -1
  14. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  15. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  16. package/dist/agent/engine/builder-engine.js.map +1 -1
  17. package/dist/agent/engine/builtin.js.map +1 -1
  18. package/dist/agent/engine/index.js.map +1 -1
  19. package/dist/agent/engine/provider-env-vars.js.map +1 -1
  20. package/dist/agent/engine/registry.d.ts +5 -3
  21. package/dist/agent/engine/registry.d.ts.map +1 -1
  22. package/dist/agent/engine/registry.js +6 -5
  23. package/dist/agent/engine/registry.js.map +1 -1
  24. package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
  25. package/dist/agent/engine/translate-anthropic.js.map +1 -1
  26. package/dist/agent/engine/types.js.map +1 -1
  27. package/dist/agent/index.js.map +1 -1
  28. package/dist/agent/production-agent.js.map +1 -1
  29. package/dist/agent/run-manager.js.map +1 -1
  30. package/dist/agent/run-store.js.map +1 -1
  31. package/dist/agent/thread-data-builder.js.map +1 -1
  32. package/dist/agent/types.js.map +1 -1
  33. package/dist/application-state/emitter.js.map +1 -1
  34. package/dist/application-state/handlers.js.map +1 -1
  35. package/dist/application-state/index.js.map +1 -1
  36. package/dist/application-state/script-helpers.js.map +1 -1
  37. package/dist/application-state/store.js.map +1 -1
  38. package/dist/chat-threads/emitter.js.map +1 -1
  39. package/dist/chat-threads/store.js.map +1 -1
  40. package/dist/checkpoints/index.js.map +1 -1
  41. package/dist/checkpoints/service.js.map +1 -1
  42. package/dist/checkpoints/store.js.map +1 -1
  43. package/dist/cli/create-workspace.js.map +1 -1
  44. package/dist/cli/create.d.ts.map +1 -1
  45. package/dist/cli/create.js +11 -0
  46. package/dist/cli/create.js.map +1 -1
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/info.js.map +1 -1
  49. package/dist/cli/setup-agents.js.map +1 -1
  50. package/dist/cli/templates-meta.js.map +1 -1
  51. package/dist/cli/workspacify.js.map +1 -1
  52. package/dist/client/AgentPanel.js.map +1 -1
  53. package/dist/client/AgentTaskCard.js.map +1 -1
  54. package/dist/client/AssistantChat.d.ts.map +1 -1
  55. package/dist/client/AssistantChat.js.map +1 -1
  56. package/dist/client/ClientOnly.js.map +1 -1
  57. package/dist/client/CommandMenu.js.map +1 -1
  58. package/dist/client/ConnectBuilderCard.js.map +1 -1
  59. package/dist/client/DefaultSpinner.js.map +1 -1
  60. package/dist/client/ErrorBoundary.js.map +1 -1
  61. package/dist/client/FeedbackButton.js.map +1 -1
  62. package/dist/client/IframeEmbed.js.map +1 -1
  63. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  64. package/dist/client/PoweredByBadge.js.map +1 -1
  65. package/dist/client/ProductionAgentPanel.js.map +1 -1
  66. package/dist/client/Turnstile.js.map +1 -1
  67. package/dist/client/active-run-state.js.map +1 -1
  68. package/dist/client/agent-chat-adapter.js.map +1 -1
  69. package/dist/client/agent-chat.js.map +1 -1
  70. package/dist/client/analytics.js.map +1 -1
  71. package/dist/client/api-path.js.map +1 -1
  72. package/dist/client/builder-mark.js.map +1 -1
  73. package/dist/client/components/AgentPresenceChip.js.map +1 -1
  74. package/dist/client/components/ApiKeySettings.js.map +1 -1
  75. package/dist/client/components/CodeAgentIndicator.js.map +1 -1
  76. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  77. package/dist/client/components/MissingKeyCard.js.map +1 -1
  78. package/dist/client/components/PresenceBar.js.map +1 -1
  79. package/dist/client/components/ui/popover.js.map +1 -1
  80. package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
  81. package/dist/client/composer/MentionPopover.js.map +1 -1
  82. package/dist/client/composer/TiptapComposer.js.map +1 -1
  83. package/dist/client/composer/VoiceButton.js.map +1 -1
  84. package/dist/client/composer/draft-key.js.map +1 -1
  85. package/dist/client/composer/extensions/FileReference.js.map +1 -1
  86. package/dist/client/composer/extensions/MentionReference.js.map +1 -1
  87. package/dist/client/composer/extensions/SkillReference.js.map +1 -1
  88. package/dist/client/composer/index.js.map +1 -1
  89. package/dist/client/composer/types.js.map +1 -1
  90. package/dist/client/composer/use-file-search.js.map +1 -1
  91. package/dist/client/composer/use-mention-search.js.map +1 -1
  92. package/dist/client/composer/use-skills.js.map +1 -1
  93. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  94. package/dist/client/dev-mode.js.map +1 -1
  95. package/dist/client/dev-overlay/DevOverlay.js.map +1 -1
  96. package/dist/client/dev-overlay/builtins.js.map +1 -1
  97. package/dist/client/dev-overlay/index.js.map +1 -1
  98. package/dist/client/dev-overlay/registry.js.map +1 -1
  99. package/dist/client/dev-overlay/types.js.map +1 -1
  100. package/dist/client/dev-overlay/use-dev-option.js.map +1 -1
  101. package/dist/client/dev-overlay/use-dev-overlay-shortcut.js.map +1 -1
  102. package/dist/client/embed.js.map +1 -1
  103. package/dist/client/error-format.js.map +1 -1
  104. package/dist/client/frame-protocol.js.map +1 -1
  105. package/dist/client/frame.js.map +1 -1
  106. package/dist/client/index.d.ts +0 -1
  107. package/dist/client/index.d.ts.map +1 -1
  108. package/dist/client/index.js +0 -1
  109. package/dist/client/index.js.map +1 -1
  110. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  111. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  112. package/dist/client/integrations/index.js.map +1 -1
  113. package/dist/client/integrations/useIntegrationStatus.js.map +1 -1
  114. package/dist/client/notifications/NotificationsBell.js.map +1 -1
  115. package/dist/client/notifications/index.js.map +1 -1
  116. package/dist/client/observability/ObservabilityDashboard.js.map +1 -1
  117. package/dist/client/observability/ThumbsFeedback.js.map +1 -1
  118. package/dist/client/observability/index.js.map +1 -1
  119. package/dist/client/observability/useObservability.js.map +1 -1
  120. package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
  121. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  122. package/dist/client/onboarding/OnboardingPanel.js +6 -27
  123. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  124. package/dist/client/onboarding/SetupButton.js.map +1 -1
  125. package/dist/client/onboarding/index.js.map +1 -1
  126. package/dist/client/onboarding/use-onboarding.js.map +1 -1
  127. package/dist/client/onboarding/use-preview-mode.js.map +1 -1
  128. package/dist/client/org/InvitationBanner.js.map +1 -1
  129. package/dist/client/org/OrgSwitcher.js.map +1 -1
  130. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  131. package/dist/client/org/TeamPage.js.map +1 -1
  132. package/dist/client/org/hooks.js.map +1 -1
  133. package/dist/client/org/index.js.map +1 -1
  134. package/dist/client/progress/RunsTray.js.map +1 -1
  135. package/dist/client/progress/index.js.map +1 -1
  136. package/dist/client/resources/McpServerDetail.js.map +1 -1
  137. package/dist/client/resources/ResourceEditor.js.map +1 -1
  138. package/dist/client/resources/ResourceTree.js.map +1 -1
  139. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  140. package/dist/client/resources/index.js.map +1 -1
  141. package/dist/client/resources/use-mcp-servers.js.map +1 -1
  142. package/dist/client/resources/use-resources.js.map +1 -1
  143. package/dist/client/settings/AgentsSection.js.map +1 -1
  144. package/dist/client/settings/AutomationsSection.js.map +1 -1
  145. package/dist/client/settings/BackgroundAgentSection.js.map +1 -1
  146. package/dist/client/settings/BrowserSection.js.map +1 -1
  147. package/dist/client/settings/SecretsSection.js.map +1 -1
  148. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  149. package/dist/client/settings/SettingsPanel.js +3 -19
  150. package/dist/client/settings/SettingsPanel.js.map +1 -1
  151. package/dist/client/settings/SettingsSection.js.map +1 -1
  152. package/dist/client/settings/UsageSection.js.map +1 -1
  153. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  154. package/dist/client/settings/index.js.map +1 -1
  155. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  156. package/dist/client/sharing/ShareButton.js.map +1 -1
  157. package/dist/client/sharing/ShareDialog.js.map +1 -1
  158. package/dist/client/sharing/VisibilityBadge.js.map +1 -1
  159. package/dist/client/sharing/index.js.map +1 -1
  160. package/dist/client/sse-event-processor.js.map +1 -1
  161. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  162. package/dist/client/terminal/index.js.map +1 -1
  163. package/dist/client/tools/EmbeddedTool.js.map +1 -1
  164. package/dist/client/tools/ExtensionSlot.js.map +1 -1
  165. package/dist/client/tools/ToolEditor.js.map +1 -1
  166. package/dist/client/tools/ToolViewer.js.map +1 -1
  167. package/dist/client/tools/ToolViewerPage.js.map +1 -1
  168. package/dist/client/tools/ToolsListPage.js.map +1 -1
  169. package/dist/client/tools/ToolsSidebarSection.js.map +1 -1
  170. package/dist/client/tools/iframe-bridge.js.map +1 -1
  171. package/dist/client/tools/index.js.map +1 -1
  172. package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -1
  173. package/dist/client/transcription/use-live-transcription.js.map +1 -1
  174. package/dist/client/use-action.js.map +1 -1
  175. package/dist/client/use-agent-chat.js.map +1 -1
  176. package/dist/client/use-avatar.js.map +1 -1
  177. package/dist/client/use-chat-threads.js.map +1 -1
  178. package/dist/client/use-db-sync.js.map +1 -1
  179. package/dist/client/use-dev-mode.js.map +1 -1
  180. package/dist/client/use-pausing-interval.js.map +1 -1
  181. package/dist/client/use-send-to-agent-chat.js.map +1 -1
  182. package/dist/client/use-session.js.map +1 -1
  183. package/dist/client/useProductionAgent.js.map +1 -1
  184. package/dist/client/utils.js.map +1 -1
  185. package/dist/collab/agent-identity.js.map +1 -1
  186. package/dist/collab/agent-presence.js.map +1 -1
  187. package/dist/collab/awareness.js.map +1 -1
  188. package/dist/collab/client-struct.js.map +1 -1
  189. package/dist/collab/client.js.map +1 -1
  190. package/dist/collab/emitter.js.map +1 -1
  191. package/dist/collab/index.js.map +1 -1
  192. package/dist/collab/json-to-yjs.js.map +1 -1
  193. package/dist/collab/routes.js.map +1 -1
  194. package/dist/collab/storage.js.map +1 -1
  195. package/dist/collab/struct-routes.js.map +1 -1
  196. package/dist/collab/text-to-yjs.js.map +1 -1
  197. package/dist/collab/xml-ops.js.map +1 -1
  198. package/dist/collab/ydoc-manager.js.map +1 -1
  199. package/dist/credentials/index.js.map +1 -1
  200. package/dist/db/client.js.map +1 -1
  201. package/dist/db/create-get-db.js.map +1 -1
  202. package/dist/db/drizzle-config.js.map +1 -1
  203. package/dist/db/index.js.map +1 -1
  204. package/dist/db/migrations.js.map +1 -1
  205. package/dist/db/schema.js.map +1 -1
  206. package/dist/deploy/build.js.map +1 -1
  207. package/dist/deploy/route-discovery.js.map +1 -1
  208. package/dist/deploy/workspace-core.js.map +1 -1
  209. package/dist/deploy/workspace-deploy.js.map +1 -1
  210. package/dist/event-bus/bus.js.map +1 -1
  211. package/dist/event-bus/index.js.map +1 -1
  212. package/dist/event-bus/registry.js.map +1 -1
  213. package/dist/event-bus/types.js.map +1 -1
  214. package/dist/file-upload/builder.js.map +1 -1
  215. package/dist/file-upload/index.js.map +1 -1
  216. package/dist/file-upload/registry.js.map +1 -1
  217. package/dist/file-upload/types.js.map +1 -1
  218. package/dist/index.browser.js.map +1 -1
  219. package/dist/index.js.map +1 -1
  220. package/dist/integrations/adapters/email.js.map +1 -1
  221. package/dist/integrations/adapters/google-docs.js.map +1 -1
  222. package/dist/integrations/adapters/slack.js.map +1 -1
  223. package/dist/integrations/adapters/telegram.js.map +1 -1
  224. package/dist/integrations/adapters/whatsapp.js.map +1 -1
  225. package/dist/integrations/config-store.js.map +1 -1
  226. package/dist/integrations/google-docs-poller.js.map +1 -1
  227. package/dist/integrations/index.js.map +1 -1
  228. package/dist/integrations/internal-token.js.map +1 -1
  229. package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
  230. package/dist/integrations/pending-tasks-store.js.map +1 -1
  231. package/dist/integrations/plugin.js.map +1 -1
  232. package/dist/integrations/task-queue-stats.js.map +1 -1
  233. package/dist/integrations/thread-mapping-store.js.map +1 -1
  234. package/dist/integrations/types.js.map +1 -1
  235. package/dist/integrations/webhook-handler.js.map +1 -1
  236. package/dist/jobs/cron.js.map +1 -1
  237. package/dist/jobs/index.js.map +1 -1
  238. package/dist/jobs/scheduler.js.map +1 -1
  239. package/dist/jobs/tools.js.map +1 -1
  240. package/dist/mcp/index.js.map +1 -1
  241. package/dist/mcp/server.js.map +1 -1
  242. package/dist/mcp-client/config.js.map +1 -1
  243. package/dist/mcp-client/hub-client.js.map +1 -1
  244. package/dist/mcp-client/hub-routes.js.map +1 -1
  245. package/dist/mcp-client/index.js.map +1 -1
  246. package/dist/mcp-client/manager.js.map +1 -1
  247. package/dist/mcp-client/remote-store.js.map +1 -1
  248. package/dist/mcp-client/routes.js.map +1 -1
  249. package/dist/mcp-client/visibility.js.map +1 -1
  250. package/dist/notifications/actions.js.map +1 -1
  251. package/dist/notifications/channels.js.map +1 -1
  252. package/dist/notifications/index.js.map +1 -1
  253. package/dist/notifications/registry.js.map +1 -1
  254. package/dist/notifications/routes.js.map +1 -1
  255. package/dist/notifications/store.js.map +1 -1
  256. package/dist/notifications/types.js.map +1 -1
  257. package/dist/oauth-tokens/google-refresh.js.map +1 -1
  258. package/dist/oauth-tokens/index.js.map +1 -1
  259. package/dist/oauth-tokens/store.js.map +1 -1
  260. package/dist/observability/cleanup-job.js.map +1 -1
  261. package/dist/observability/evals.js.map +1 -1
  262. package/dist/observability/experiments.js.map +1 -1
  263. package/dist/observability/feedback.js.map +1 -1
  264. package/dist/observability/index.js.map +1 -1
  265. package/dist/observability/plugin.js.map +1 -1
  266. package/dist/observability/routes.js.map +1 -1
  267. package/dist/observability/store.js.map +1 -1
  268. package/dist/observability/traces.js.map +1 -1
  269. package/dist/observability/types.js.map +1 -1
  270. package/dist/onboarding/default-steps.d.ts.map +1 -1
  271. package/dist/onboarding/default-steps.js +0 -1
  272. package/dist/onboarding/default-steps.js.map +1 -1
  273. package/dist/onboarding/index.js.map +1 -1
  274. package/dist/onboarding/plugin.js.map +1 -1
  275. package/dist/onboarding/registry.js.map +1 -1
  276. package/dist/onboarding/types.d.ts +0 -9
  277. package/dist/onboarding/types.d.ts.map +1 -1
  278. package/dist/onboarding/types.js.map +1 -1
  279. package/dist/org/accept-pending.js.map +1 -1
  280. package/dist/org/context.js.map +1 -1
  281. package/dist/org/handlers.js.map +1 -1
  282. package/dist/org/index.js.map +1 -1
  283. package/dist/org/migrations.js.map +1 -1
  284. package/dist/org/plugin.js.map +1 -1
  285. package/dist/org/schema.js.map +1 -1
  286. package/dist/org/types.js.map +1 -1
  287. package/dist/progress/actions.js.map +1 -1
  288. package/dist/progress/index.js.map +1 -1
  289. package/dist/progress/registry.js.map +1 -1
  290. package/dist/progress/routes.js.map +1 -1
  291. package/dist/progress/store.js.map +1 -1
  292. package/dist/progress/types.js.map +1 -1
  293. package/dist/resources/agents.js.map +1 -1
  294. package/dist/resources/emitter.js.map +1 -1
  295. package/dist/resources/handlers.js.map +1 -1
  296. package/dist/resources/index.js.map +1 -1
  297. package/dist/resources/metadata.js.map +1 -1
  298. package/dist/resources/script-helpers.js.map +1 -1
  299. package/dist/resources/store.js.map +1 -1
  300. package/dist/router/index.js.map +1 -1
  301. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  302. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  303. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  304. package/dist/scripts/agent-engines/test-agent-engine.js.map +1 -1
  305. package/dist/scripts/call-agent.js.map +1 -1
  306. package/dist/scripts/chat/index.js.map +1 -1
  307. package/dist/scripts/chat/open-chat.js.map +1 -1
  308. package/dist/scripts/chat/search-chats.js.map +1 -1
  309. package/dist/scripts/core-scripts.js.map +1 -1
  310. package/dist/scripts/db/check-scoping.js.map +1 -1
  311. package/dist/scripts/db/exec.js.map +1 -1
  312. package/dist/scripts/db/index.js.map +1 -1
  313. package/dist/scripts/db/migrate-user-api-keys.js.map +1 -1
  314. package/dist/scripts/db/patch.js.map +1 -1
  315. package/dist/scripts/db/query.js.map +1 -1
  316. package/dist/scripts/db/schema.js.map +1 -1
  317. package/dist/scripts/db/scoping.js.map +1 -1
  318. package/dist/scripts/db/wipe-leaked-builder-keys.js.map +1 -1
  319. package/dist/scripts/dev/index.js.map +1 -1
  320. package/dist/scripts/dev/list-files.js.map +1 -1
  321. package/dist/scripts/dev/read-file.js.map +1 -1
  322. package/dist/scripts/dev/search-files.js.map +1 -1
  323. package/dist/scripts/dev/shell.js.map +1 -1
  324. package/dist/scripts/dev/write-file.js.map +1 -1
  325. package/dist/scripts/docs/index.js.map +1 -1
  326. package/dist/scripts/docs/search.js.map +1 -1
  327. package/dist/scripts/index.js.map +1 -1
  328. package/dist/scripts/parse-args.js.map +1 -1
  329. package/dist/scripts/resources/delete-memory.js.map +1 -1
  330. package/dist/scripts/resources/delete.js.map +1 -1
  331. package/dist/scripts/resources/index.js.map +1 -1
  332. package/dist/scripts/resources/list.js.map +1 -1
  333. package/dist/scripts/resources/migrate-learnings.js.map +1 -1
  334. package/dist/scripts/resources/read.js.map +1 -1
  335. package/dist/scripts/resources/save-memory.js.map +1 -1
  336. package/dist/scripts/resources/write.js.map +1 -1
  337. package/dist/scripts/runner.js.map +1 -1
  338. package/dist/scripts/utils.d.ts.map +1 -1
  339. package/dist/scripts/utils.js +3 -2
  340. package/dist/scripts/utils.js.map +1 -1
  341. package/dist/secrets/index.js.map +1 -1
  342. package/dist/secrets/onboarding.js.map +1 -1
  343. package/dist/secrets/register-framework-secrets.js.map +1 -1
  344. package/dist/secrets/register.js.map +1 -1
  345. package/dist/secrets/routes.js.map +1 -1
  346. package/dist/secrets/schema.js.map +1 -1
  347. package/dist/secrets/storage.js.map +1 -1
  348. package/dist/secrets/substitution.js.map +1 -1
  349. package/dist/server/action-discovery.js.map +1 -1
  350. package/dist/server/action-routes.js.map +1 -1
  351. package/dist/server/agent-chat-plugin.js +1 -1
  352. package/dist/server/agent-chat-plugin.js.map +1 -1
  353. package/dist/server/agent-discovery.js.map +1 -1
  354. package/dist/server/agent-teams.js.map +1 -1
  355. package/dist/server/agents-bundle.js.map +1 -1
  356. package/dist/server/analytics.js.map +1 -1
  357. package/dist/server/app-base-path.js.map +1 -1
  358. package/dist/server/app-name.js.map +1 -1
  359. package/dist/server/app-url.js.map +1 -1
  360. package/dist/server/auth-plugin.js.map +1 -1
  361. package/dist/server/auth.js.map +1 -1
  362. package/dist/server/better-auth-instance.js.map +1 -1
  363. package/dist/server/builder-browser.js.map +1 -1
  364. package/dist/server/captcha.js.map +1 -1
  365. package/dist/server/cli-capture.js.map +1 -1
  366. package/dist/server/collab-plugin.js.map +1 -1
  367. package/dist/server/core-routes-plugin.js.map +1 -1
  368. package/dist/server/create-server.js.map +1 -1
  369. package/dist/server/credential-provider.js.map +1 -1
  370. package/dist/server/csrf.js.map +1 -1
  371. package/dist/server/date-utils.js.map +1 -1
  372. package/dist/server/design-token-utils.js.map +1 -1
  373. package/dist/server/desktop-sso.js.map +1 -1
  374. package/dist/server/email-template.js.map +1 -1
  375. package/dist/server/email-templates.js.map +1 -1
  376. package/dist/server/email.js.map +1 -1
  377. package/dist/server/framework-request-handler.js.map +1 -1
  378. package/dist/server/google-auth-plugin.js.map +1 -1
  379. package/dist/server/google-oauth.d.ts +1 -1
  380. package/dist/server/google-oauth.d.ts.map +1 -1
  381. package/dist/server/google-oauth.js +14 -6
  382. package/dist/server/google-oauth.js.map +1 -1
  383. package/dist/server/h3-helpers.js.map +1 -1
  384. package/dist/server/index.js.map +1 -1
  385. package/dist/server/local-migration.js.map +1 -1
  386. package/dist/server/missing-key.js.map +1 -1
  387. package/dist/server/oauth-helpers.js.map +1 -1
  388. package/dist/server/onboarding-html.js.map +1 -1
  389. package/dist/server/poll.js.map +1 -1
  390. package/dist/server/request-context.js.map +1 -1
  391. package/dist/server/resources-plugin.js.map +1 -1
  392. package/dist/server/schema-prompt.js.map +1 -1
  393. package/dist/server/script-discovery.js.map +1 -1
  394. package/dist/server/security-headers.js.map +1 -1
  395. package/dist/server/short-lived-token.js.map +1 -1
  396. package/dist/server/sse.js.map +1 -1
  397. package/dist/server/ssr-handler.js.map +1 -1
  398. package/dist/server/transcribe-voice.js.map +1 -1
  399. package/dist/server/voice-providers-status.js.map +1 -1
  400. package/dist/settings/handlers.js.map +1 -1
  401. package/dist/settings/index.js.map +1 -1
  402. package/dist/settings/org-settings.js.map +1 -1
  403. package/dist/settings/script-helpers.js.map +1 -1
  404. package/dist/settings/store.js.map +1 -1
  405. package/dist/settings/user-settings.js.map +1 -1
  406. package/dist/shared/agent-chat.js.map +1 -1
  407. package/dist/shared/agent-env.js.map +1 -1
  408. package/dist/shared/index.js.map +1 -1
  409. package/dist/shared/runtime.js.map +1 -1
  410. package/dist/shared/truncate.js.map +1 -1
  411. package/dist/sharing/access.d.ts +9 -1
  412. package/dist/sharing/access.d.ts.map +1 -1
  413. package/dist/sharing/access.js +11 -2
  414. package/dist/sharing/access.js.map +1 -1
  415. package/dist/sharing/actions/list-resource-shares.js.map +1 -1
  416. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  417. package/dist/sharing/actions/share-resource.js.map +1 -1
  418. package/dist/sharing/actions/unshare-resource.js.map +1 -1
  419. package/dist/sharing/index.js.map +1 -1
  420. package/dist/sharing/registry.js.map +1 -1
  421. package/dist/sharing/schema.js.map +1 -1
  422. package/dist/tailwind.preset.js.map +1 -1
  423. package/dist/terminal/cli-registry.js.map +1 -1
  424. package/dist/terminal/index.js.map +1 -1
  425. package/dist/terminal/pty-server.js.map +1 -1
  426. package/dist/terminal/terminal-plugin.d.ts.map +1 -1
  427. package/dist/terminal/terminal-plugin.js +19 -4
  428. package/dist/terminal/terminal-plugin.js.map +1 -1
  429. package/dist/tools/actions.js.map +1 -1
  430. package/dist/tools/fetch-tool.js.map +1 -1
  431. package/dist/tools/html-shell.js.map +1 -1
  432. package/dist/tools/proxy-security.js.map +1 -1
  433. package/dist/tools/routes.js.map +1 -1
  434. package/dist/tools/schema.js.map +1 -1
  435. package/dist/tools/slots/routes.js.map +1 -1
  436. package/dist/tools/slots/schema.js.map +1 -1
  437. package/dist/tools/slots/store.js.map +1 -1
  438. package/dist/tools/store.js.map +1 -1
  439. package/dist/tools/theme.js.map +1 -1
  440. package/dist/tools/url-safety.js.map +1 -1
  441. package/dist/tracking/index.js.map +1 -1
  442. package/dist/tracking/providers.js.map +1 -1
  443. package/dist/tracking/registry.js.map +1 -1
  444. package/dist/tracking/types.js.map +1 -1
  445. package/dist/transcription/builder-transcription.js.map +1 -1
  446. package/dist/triggers/actions.js.map +1 -1
  447. package/dist/triggers/condition-evaluator.js.map +1 -1
  448. package/dist/triggers/dispatcher.js.map +1 -1
  449. package/dist/triggers/index.js.map +1 -1
  450. package/dist/triggers/types.js.map +1 -1
  451. package/dist/usage/store.js.map +1 -1
  452. package/dist/vite/action-types-plugin.js.map +1 -1
  453. package/dist/vite/agents-bundle-plugin.js.map +1 -1
  454. package/dist/vite/client.d.ts.map +1 -1
  455. package/dist/vite/client.js +4 -0
  456. package/dist/vite/client.js.map +1 -1
  457. package/dist/vite/index.js.map +1 -1
  458. package/package.json +1 -1
  459. package/dist/client/settings/ComingSoonSection.d.ts +0 -13
  460. package/dist/client/settings/ComingSoonSection.d.ts.map +0 -1
  461. package/dist/client/settings/ComingSoonSection.js +0 -10
  462. package/dist/client/settings/ComingSoonSection.js.map +0 -1
  463. package/dist/client/use-builder-enabled.d.ts +0 -17
  464. package/dist/client/use-builder-enabled.d.ts.map +0 -1
  465. package/dist/client/use-builder-enabled.js +0 -37
  466. package/dist/client/use-builder-enabled.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"core-routes-plugin.js","sourceRoot":"","sources":["../../src/server/core-routes-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-routes-plugin.js","sourceRoot":"","sources":["../../src/server/core-routes-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,MAAM,IAAI,CAAC;AAEZ,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,qCAAqC,EACrC,gCAAgC,EAChC,+BAA+B,EAC/B,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,8BAA8B,EAC9B,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEvD;;;;;;;;;;;;;;GAcG;AACH,SAAS,oBAAoB;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,gBAAgB,EAAE,IAAI,eAAe,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,QAAQ,GAAG,oBAAoB,CACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAC5D,CAAC;IACF,IAAI,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/B,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACtC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IAChD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,MAAwC;IAC1E,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK;YAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAiBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAmC,EAAE;IAErC,OAAO,KAAK,EAAE,QAAa,EAAE,EAAE;QAC7B,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE/B,gEAAgE;QAChE,kEAAkE;QAClE,gEAAgE;QAChE,sDAAsD;QACtD,EAAE;QACF,mEAAmE;QACnE,iEAAiE;QACjE,sEAAsE;QACtE,sEAAsE;QACtE,kEAAkE;QAClE,iEAAiE;QACjE,kEAAkE;QAClE,oEAAoE;QACpE,iDAAiD;QACjD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAGjD,CAAC;YACT,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,gBAAgB,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;gBAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/C,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvB,QAAQ,EAAE,CAAC;wBACX,SAAS;oBACX,CAAC;oBACD,IAAI,aAAa,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;gBACD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACH,MAAM,OAAO,GAA2B,EAAE,CAAC;wBAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gCAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC1C,CAAC;wBACD,MAAM,UAAU,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;wBAChD,OAAO,CAAC,IAAI,CACV,kBAAkB,QAAQ,2EAA2E,CACtG,CAAC;oBACJ,CAAC;oBAAC,MAAM,CAAC;wBACP,yDAAyD;wBACzD,6DAA6D;oBAC/D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,6DAA6D;QAC7D,sEAAsE;QACtE,mEAAmE;QACnE,mDAAmD;QACnD,kEAAkE;QAClE,gEAAgE;QAChE,uDAAuD;QACvD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,CAAC,MAAM,UAAU,CAAC,sBAAsB,CAAC,CAEtD,CAAC;YACT,IAAI,YAAY,EAAE,CAAC;gBACjB,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;oBACnC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;YACnE,yDAAyD;QAC3D,CAAC;QAED,sEAAsE;QACtE,uEAAuE;QACvE,uCAAuC;QACvC,wBAAwB,EAAE,CAAC;QAC3B,wBAAwB,EAAE,CAAC;QAC3B,mCAAmC,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,EAAE,0BAA0B,EAAE,GAClC,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YAC7C,MAAM,EAAE,yBAAyB,EAAE,GACjC,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAC5C,yBAAyB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC5C,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,sBAAsB,gBAAgB,EACzC,0BAA0B,EAAE,CAC7B,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;QAED,MAAM,CAAC,GAAG,sBAAsB,CAAC;QAEjC,mEAAmE;QACnE,sEAAsE;QACtE,uEAAuE;QACvE,8EAA8E;QAC9E,MAAM,EAAE,+BAA+B,EAAE,GACvC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACxC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,+BAA+B,EAAE,CAAC,CAAC;QAE1D,uEAAuE;QACvE,mEAAmE;QACnE,sEAAsE;QACtE,oEAAoE;QACpE,0BAA0B;QAC1B,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;aACvD,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;QAC3D,MAAM,YAAY,GAChB,+DAA+D,CAAC;QAClE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,KAAK,CAAC,GAAG,EAAE,QAAQ;gBACjB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAClE,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO;YACrE,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE,CAGjD,CAAC;YACF,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAEhC,mEAAmE;YACnE,kEAAkE;YAClE,oEAAoE;YACpE,iEAAiE;YACjE,IAAI,aAAa,GAAkB,IAAI,CAAC;YACxC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAAE,aAAa,GAAG,MAAM,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,uDAAuD;oBACvD,8DAA8D;oBAC9D,8DAA8D;oBAC9D,4DAA4D;oBAC5D,mBAAmB;oBACnB,IAAI,YAAY,EAAE,CAAC;wBACjB,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;4BAAE,aAAa,GAAG,MAAM,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;4BAAE,aAAa,GAAG,MAAM,CAAC;oBACxD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,mEAAmE;YACnE,+DAA+D;YAC/D,gEAAgE;YAChE,qDAAqD;YACrD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC7B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,IAAI,aAAa,EAAE,CAAC;oBAClB,iBAAiB,CACf,KAAK,EACL,6BAA6B,EAC7B,aAAa,CACd,CAAC;oBACF,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC3C,iBAAiB,CACf,KAAK,EACL,kCAAkC,EAClC,MAAM,CACP,CAAC;oBACF,iBAAiB,CACf,KAAK,EACL,8BAA8B,EAC9B,wCAAwC,CACzC,CAAC;oBACF,iBAAiB,CACf,KAAK,EACL,8BAA8B,EAC9B,kFAAkF,CACnF,CAAC;gBACJ,CAAC;gBACD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,iEAAiE;YACjE,gEAAgE;YAChE,gEAAgE;YAChE,2BAA2B;YAC3B,IAAI,CAAC,aAAa;gBAAE,OAAO;YAC3B,iBAAiB,CAAC,KAAK,EAAE,6BAA6B,EAAE,aAAa,CAAC,CAAC;YACvE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3C,iBAAiB,CAAC,KAAK,EAAE,kCAAkC,EAAE,MAAM,CAAC,CAAC;YACrE,iBAAiB,CACf,KAAK,EACL,8BAA8B,EAC9B,wCAAwC,CACzC,CAAC;YACF,iBAAiB,CACf,KAAK,EACL,8BAA8B,EAC9B,kFAAkF,CACnF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,0EAA0E;QAC1E,uEAAuE;QACvE,sEAAsE;QACtE,oDAAoD;QACpD,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3D,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhD,UAAU;QACV,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAEzD,MAAM;QACN,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC;YACnD,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO;QACP,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,OAAO,EACX,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM;aAC5C,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,iBAAiB,EACrB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;YACzD,qEAAqE;YACrE,mEAAmE;YACnE,sEAAsE;YACtE,iEAAiE;YACjE,0DAA0D;YAC1D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,OAAO,EAAE,KAAK,CAAC;YAEjC,OAAO,qBAAqB,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBACrD,4DAA4D;gBAC5D,IAAI,CAAC;oBACH,MAAM,EAAE,yBAAyB,EAAE,GACjC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;oBAC3C,MAAM,KAAK,GAAG,MAAM,yBAAyB,EAAE,CAAC;oBAChD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBACrB,OAAO;4BACL,GAAG,SAAS;4BACZ,UAAU,EAAE,IAAI;4BAChB,oBAAoB,EAAE,IAAI;4BAC1B,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS;4BACtC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM;4BACxC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO;4BAC3C,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO;yBAC5C,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,uDAAuD;gBACzD,CAAC;gBACD,kEAAkE;gBAClE,gEAAgE;gBAChE,gEAAgE;gBAChE,kEAAkE;gBAClE,+BAA+B;gBAC/B,IAAI,CAAC;oBACH,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,MAAM,GAAG,yBAAyB,SAAS,EAAE,CAAC;wBACpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;wBACxC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;4BACjD,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;4BAC5C,OAAO;gCACL,GAAG,SAAS;gCACZ,UAAU,EAAE,KAAK;gCACjB,oBAAoB,EAAE,KAAK;gCAC3B,mBAAmB,EAAE,KAAK;gCAC1B,MAAM,EAAE,SAAS;gCACjB,OAAO,EAAE,SAAS;gCAClB,OAAO,EAAE,SAAS;gCAClB,YAAY,EAAE;oCACZ,OAAO,EAAE,MAAM,CAAC,OAAiB;oCACjC,EAAE,EACA,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;wCAC3B,CAAC,CAAE,MAAM,CAAC,EAAa;wCACvB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;iCACjB;6BACF,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,iEAAiE;gBACnE,CAAC;gBACD,yDAAyD;gBACzD,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,sBAAsB,CAAC,CAAC;oBAC9D,IAAI,YAAY,EAAE,CAAC;wBACjB,OAAO;4BACL,GAAG,SAAS;4BACZ,UAAU,EAAE,KAAK;4BACjB,oBAAoB,EAAE,KAAK;4BAC3B,mBAAmB,EAAE,KAAK;4BAC1B,MAAM,EAAE,SAAS;4BACjB,OAAO,EAAE,SAAS;4BAClB,OAAO,EAAE,SAAS;yBACnB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,mDAAmD;gBACrD,CAAC;gBACD,sEAAsE;gBACtE,sEAAsE;gBACtE,oEAAoE;gBACpE,8DAA8D;gBAC9D,4DAA4D;gBAC5D,IAAI,SAAS,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;oBACnD,OAAO;wBACL,GAAG,SAAS;wBACZ,UAAU,EAAE,KAAK;wBACjB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,SAAS;wBAClB,OAAO,EAAE,SAAS;qBACnB,CAAC;gBACJ,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QAEF,+DAA+D;QAC/D,0EAA0E;QAC1E,oEAAoE;QACpE,kEAAkE;QAClE,8DAA8D;QAC9D,iEAAiE;QACjE,6DAA6D;QAC7D,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,kBAAkB,EACtB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;YAC9C,CAAC;YACD,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YACnE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACjD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CACH,CAAC;QAEF,4EAA4E;QAC5E,4DAA4D;QAC5D,MAAM,0BAA0B,GAAG,kCAAkC,CAAC;QAEtE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,cAAc,EAClB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAQ,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;YAC9C,CAAC;YACD,+DAA+D;YAC/D,+DAA+D;YAC/D,iEAAiE;YACjE,kEAAkE;YAClE,8DAA8D;YAC9D,+CAA+C;YAC/C,IACE,OAAO,CAAC,KAAK,KAAK,mBAAmB;gBACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;gBACrC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,OAAO,EACjC,CAAC;gBACD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;YAClE,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;YAChC,qEAAqE;YACrE,sEAAsE;YACtE,yEAAyE;YACzE,sEAAsE;YACtE,sEAAsE;YACtE,iFAAiF;YACjF,OAAO,qBAAqB,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,GACpD,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,MAAM,aAAa,GACjB,CAAC,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,IAAI,SAAS,CAAC;gBAC7D,mEAAmE;gBACnE,qEAAqE;gBACrE,2DAA2D;gBAC3D,oDAAoD;gBACpD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;wBACnC,MAAM;wBACN,SAAS,EAAE,0BAA0B;wBACrC,UAAU,EACR,OAAO,IAAI,EAAE,UAAU,KAAK,QAAQ;4BAClC,CAAC,CAAC,IAAI,CAAC,UAAU;4BACjB,CAAC,CAAC,SAAS;wBACf,SAAS;wBACT,MAAM,EAAE,aAAa;qBACtB,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO;wBACL,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB;qBAC7D,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QAEF,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,mBAAmB,EACvB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YAED,kEAAkE;YAClE,gEAAgE;YAChE,mEAAmE;YACnE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;YAC9C,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,GAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,EACzD,SAAS,CAAC,KAAK,CAAC,CACjB,CAAC;YAEF,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC/D,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO;oBACL,KAAK,EACH,mFAAmF;iBACtF,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEzD,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;YAC9D,CAAC;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEpD,kEAAkE;YAClE,kEAAkE;YAClE,cAAc;YACd,EAAE;YACF,oEAAoE;YACpE,oEAAoE;YACpE,uDAAuD;YACvD,+DAA+D;YAC/D,qEAAqE;YACrE,iEAAiE;YACjE,sEAAsE;YACtE,IAAI,UAAU,GAAkB,IAAI,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,EAAE,uBAAuB,EAAE,GAC/B,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,MAAM,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC3C,UAAU;oBACV,SAAS;oBACT,MAAM;oBACN,OAAO;oBACP,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,UAAU,GAAI,GAAa,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpD,OAAO,CAAC,KAAK,CACX,mDAAmD,EACnD,UAAU,CACX,CAAC;YACJ,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,kEAAkE;gBAClE,iEAAiE;gBACjE,kEAAkE;gBAClE,IAAI,CAAC;oBACH,MAAM,UAAU,CAAC,yBAAyB,OAAO,CAAC,KAAK,EAAE,EAAE;wBACzD,OAAO,EAAE,UAAU;wBACnB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;qBACf,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,KAAK,CACX,2DAA2D,EAC1D,WAAqB,EAAE,OAAO,IAAI,WAAW,CAC/C,CAAC;gBACJ,CAAC;gBACD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAC;gBACrE,OAAO,qCAAqC,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC;YAED,mEAAmE;YACnE,gEAAgE;YAChE,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,yBAAyB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;YAED,MAAM,UAAU,GAAG,qBAAqB,CACtC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,EAC1C,KAAK,CACN,CAAC;YACF,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAC;YACrE,OAAO,gCAAgC,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC,CAAC,CACH,CAAC;QAEF,qEAAqE;QACrE,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,uEAAuE;QACvE,+DAA+D;QAC/D,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,qBAAqB,EACzB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACnC,CAAC;YAED,wDAAwD;YACxD,IAAI,CAAC;gBACH,MAAM,EAAE,wBAAwB,EAAE,GAChC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,MAAM,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EACH,oFAAoF;oBACtF,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC,CACH,CAAC;QAEF,iEAAiE;QACjE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,qBAAqB,EACzB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACnC,CAAC;YAED,OAAO,qBAAqB,CAC1B,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,EAC/D,KAAK,IAAI,EAAE;gBACT,MAAM,EAAE,yBAAyB,EAAE,YAAY,EAAE,GAC/C,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC1C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO;wBACL,KAAK,EACH,0EAA0E;qBAC7E,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAIlC,CAAC;gBACF,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;oBACvB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;gBAC9C,CAAC;gBACD,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,gCAAgC,CAAC;gBACnE,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,OAAO,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EACrE;wBACE,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;4BAClC,aAAa,EAAE,UAAU,KAAK,CAAC,UAAU,EAAE;yBAC5C;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,WAAW,EAAE;gCACX,UAAU,EAAE,IAAI,CAAC,WAAW;6BAC7B;4BACD,UAAU,EAAE,IAAI,CAAC,UAAU;yBAC5B,CAAC;qBACH,CACF,CAAC;oBACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;wBACZ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;wBAC1D,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBACrC,OAAO;4BACL,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;yBAC9D,CAAC;oBACJ,CAAC;oBACD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC1B,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO;wBACL,KAAK,EAAE,YAAY,CACjB,GAAG,EAAE,OAAO,IAAI,wCAAwC,EACxD,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CACpC;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,0DAA0D;QAC1D,MAAM,gBAAgB,GAAmB;YACvC,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,4BAA4B,EAAE;YAC9D;gBACE,GAAG,EAAE,6BAA6B;gBAClC,KAAK,EACH,yEAAyE;aAC5E;YACD,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9D,GAAG,EAAE,MAAM;gBACX,KAAK;aACN,CAAC,CAAC;SACJ,CAAC;QACF,CAAC;YACC,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;YAElE,qEAAqE;YACrE,kEAAkE;YAClE,MAAM,qBAAqB,GAAG,GAAgB,EAAE;gBAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC/B,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,EAAE,CAAC;oBACzC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gCAC1C,IAAI,KAAK,EAAE,GAAG;oCAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BACtC,CAAC;wBACH,CAAC;wBACD,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;4BACvC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;4BAChC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;wBACjC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YAEF,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,aAAa,EACjB,kBAAkB,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;gBAC/B,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;gBAClC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD,CAAC,CAAC,CACJ,CACF,CAAC;YAEF,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,WAAW,EACf,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;gBAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;oBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;gBACzC,CAAC;gBAED,+DAA+D;gBAC/D,iEAAiE;gBACjE,gEAAgE;gBAChE,+DAA+D;gBAC/D,4DAA4D;gBAC5D,0DAA0D;gBAC1D,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBAC5B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO;wBACL,KAAK,EACH,0JAA0J;qBAC7J,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAEhB,CAAC;gBAEF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;gBAC1C,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS;oBAClC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC5B,GAAG,qBAAqB,EAAE;iBAC3B,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;oBACzB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACtB,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;oBAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAC5B,CAAC;gBACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;wBACzB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;wBACtB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAC/D,CAAC;oBACF,OAAO;wBACL,KAAK,EAAE,aAAa;4BAClB,CAAC,CAAC,8DAA8D;4BAChE,CAAC,CAAC,mCAAmC;qBACxC,CAAC;gBACJ,CAAC;gBAED,4DAA4D;gBAC5D,+DAA+D;gBAC/D,iEAAiE;gBACjE,IAAI,CAAC;oBACH,MAAM,KAAK,GACR,IAAwC,EAAE,KAAK,IAAI,MAAM,CAAC;oBAC7D,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACvD,MAAM,OAAO,GACX,KAAK,KAAK,KAAK;wBACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;wBAClC,CAAC,CAAC,aAAa;4BACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;4BAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;oBACzC,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACzC,CAAC;gBAAC,MAAM,CAAC;oBACP,iCAAiC;gBACnC,CAAC;gBAED,iCAAiC;gBACjC,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC3B,CAAC;gBAED,gEAAgE;gBAChE,IAAI,CAAC;oBACH,MAAM,MAAM,GAA2B,EAAE,CAAC;oBAC1C,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,QAAQ;wBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBAC3D,MAAM,QAAQ,GACX,CAAC,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAG/B,IAAI,EAAE,CAAC;oBAClB,MAAM,UAAU,CAAC,oBAAoB,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;gBACrE,CAAC;gBAAC,MAAM,CAAC;oBACP,0BAA0B;gBAC5B,CAAC;gBAED,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,yEAAyE;QACzE,wEAAwE;QACxE,4DAA4D;QAC5D,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,sBAAsB,EAC1B,kBAAkB,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,cAAc,CAAC,CAExC,CAAC;gBACT,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3C,OAAO;wBACL,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAG,MAA6B,CAAC,MAAM;wBAC7C,MAAM,EAAE,UAAmB;qBAC5B,CAAC;gBACJ,CAAC;gBACD,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACjD,IAAI,KAAK,IAAI,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;wBACjD,OAAO;4BACL,UAAU,EAAE,IAAI;4BAChB,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,MAAM,EAAE,KAAc;4BACtB,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;yBACjC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,iEAAiE;gBACjE,iEAAiE;gBACjE,iEAAiE;gBACjE,yDAAyD;gBACzD,MAAM,gBAAgB,GAAG,MAAM,2BAA2B,EAAE,CAAC;gBAC7D,IAAI,gBAAgB,EAAE,CAAC;oBACrB,OAAO;wBACL,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,gBAAgB,CAAC,IAAI;wBAC7B,MAAM,EAAE,aAAsB;wBAC9B,MAAM,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;qBAC5C,CAAC;gBACJ,CAAC;gBACD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;gBACvC,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO;wBACL,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,QAAQ,CAAC,IAAI;wBACrB,MAAM,EAAE,KAAc;wBACtB,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;qBACpC,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC,CAAC,CACH,CAAC;QAEF,uEAAuE;QACvE,uEAAuE;QACvE,0CAA0C;QAC1C,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,0BAA0B,EAC9B,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACnC,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;gBACpC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,oEAAoE;QACpE,wCAAwC;QACxC,kEAAkE;QAClE,sEAAsE;QACtE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,QAAQ,EACZ,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACnC,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,GAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,EACzD,UAAU,CACX,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAC5C,CAAC;YACF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC9D,OAAO,eAAe,CAAC;gBACrB,UAAU,EAAE,OAAO,CAAC,KAAK;gBACzB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,UAAU;aAC7C,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QAEF,mEAAmE;QACnE,kEAAkE;QAClE,yEAAyE;QACzE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,qBAAqB,EACzB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAC;YAC7C,yEAAyE;YACzE,yEAAyE;YACzE,2EAA2E;YAC3E,yEAAyE;YACzE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,OAAO,EAAE,KAAK,CAAC;YACjC,IAAI,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,EAAE,wBAAwB,EAAE,GAChC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClE,iBAAiB,GAAG,SAAS;oBAC3B,CAAC,CAAC,MAAM,qBAAqB,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC;oBACrD,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YACD,6DAA6D;YAC7D,qEAAqE;YACrE,oEAAoE;YACpE,iEAAiE;YACjE,MAAM,kBAAkB,GAAG,MAAM,EAAE,EAAE,KAAK,SAAS,CAAC;YACpD,MAAM,UAAU,GAAG,kBAAkB;gBACnC,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,iBAAiB,CAAC;YAClC,MAAM,cAAc,GAAG,kBAAkB;gBACvC,CAAC,CAAC,iBAAiB;oBACjB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;oBACvC,CAAC,CAAC,IAAI;gBACR,CAAC,CAAC,MAAM;oBACN,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;oBACtC,CAAC,CAAC,iBAAiB;wBACjB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,CAAC,CAAC,IAAI,CAAC;YACb,OAAO;gBACL,UAAU;gBACV,cAAc;gBACd,SAAS,EAAE,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/C,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,UAAU,EAAE,CAAC,CAAC,YAAY,EAAE;iBAC7B,CAAC,CAAC;gBACH,iBAAiB;aAClB,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,cAAc,EAClB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YACvC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACnC,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAC7D,UAAU,CAAC;gBACT,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI;gBACvB,UAAU,EAAE,SAAS;aACtB,CAAC,CACH,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;gBACL,KAAK,EACH,4GAA4G;aAC/G,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,oEAAoE;QACpE,gEAAgE;QAChE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,mBAAmB,EACvB,4BAA4B,EAAE,CAC/B,CAAC;QAEF,oEAAoE;QACpE,kEAAkE;QAClE,kEAAkE;QAClE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,yBAAyB,EAC7B,iCAAiC,EAAE,CACpC,CAAC;QAEF,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;QACtD,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAEjE,oEAAoE;QACpE,gFAAgF;QAChF,oEAAoE;QACpE,qEAAqE;QACrE,oEAAoE;QACpE,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;QACtD,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;QACtD,MAAM,iBAAiB,GAAG,uBAAuB,EAAE,CAAC;QAEpD,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,UAAU,EACd,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC;iBACzC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;iBACnB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,kCAAkC;YAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,yCAAyC;YACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC9C,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAED,4CAA4C;YAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAChC,CAAC,CAAC,CACH,CAAC;QAEF,qEAAqE;QACrE,4DAA4D;QAC5D,4CAA4C;QAC5C,+CAA+C;QAC/C,+CAA+C;QAC/C,0CAA0C;QAC1C,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAE3E,uEAAuE;QACvE,IAAI,CAAC;YACH,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,GACjD,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACpC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAClE,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACpC,sBAAsB,EAAE,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAE3D,oDAAoD;YACpD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACxE,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;QAED,qEAAqE;QACrE,4CAA4C;QAC5C,iCAAiC;QACjC,iCAAiC;QACjC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAE7D,qEAAqE;QACrE,2EAA2E;QAC3E,oEAAoE;QACpE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,cAAc,EAClB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC;iBACzC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;iBACnB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAEvB,kEAAkE;YAClE,iEAAiE;YACjE,6DAA6D;YAC7D,2DAA2D;YAC3D,gDAAgD;YAChD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;YACtC,CAAC;YAED,IAAI,QAAQ,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAClD,IAAI,CAAC;oBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBACvD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAGpD,CAAC;oBACF,yDAAyD;oBACzD,sDAAsD;oBACtD,IAAI,CACF,kBAAkB,EAClB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,EACzB;wBACE,KAAK,EAAE,OAAO,CAAC,KAAK;qBACrB,CACF,CAAC;oBACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBACtB,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,2BAA2B,EAAE,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC5B,MAAM,EAAE,qBAAqB,EAAE,YAAY,EAAE,GAC3C,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;gBACxC,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAC1D,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,YAAY,CACrD,CAAC;gBACF,MAAM,QAAQ,GAAG,oCAAoC,CAAC;gBACtD,MAAM,WAAW,GAAG,SAAS;qBAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;qBAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACT,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACxC,IAAI,CAAC,KAAK;wBACR,OAAO;4BACL,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;4BACxD,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,WAAW,EAAE,UAAmB;4BAChC,OAAO,EAAE,KAAK;4BACd,IAAI,EAAE,SAAkB;4BACxB,IAAI,EAAE,CAAC,CAAC,OAAO;yBAChB,CAAC;oBACJ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAA2B,EAAE,CAAC;oBACxC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;4BAAE,SAAS;wBACxB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;wBACnC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBAClC,IACE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;4BACtC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;4BAEtC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACrB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;oBACD,OAAO;wBACL,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;wBACxD,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,UAAU;wBAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;wBAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;wBACjC,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,IAAI;qBACL,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACL,OAAO,WAAW,CAAC;YACrB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,4BAA4B,EAAE,CAAC;YACjE,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,oEAAoE;QACpE,gEAAgE;QAEhE,sEAAsE;QACtE,oEAAoE;QACpE,qEAAqE;QACrE,qEAAqE;QACrE,EAAE;QACF,mEAAmE;QACnE,6DAA6D;QAC7D,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,WAAW,EACf,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,MAAM,GACV,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACnC,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,aAAa,GAChB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAEhC,IAAI,SAAS,CAAC;YAE9B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC;gBAC5C,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC/D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACtB,CAAC;YAED,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QACzC,CAAC,CAAC,CACH,CAAC;QAEF,uEAAuE;QACvE,sEAAsE;QACtE,iFAAiF;QACjF,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,SAAS,EACb,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC;iBAC3C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;iBACnB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;gBACrC,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,UAAU,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAC3C,CAAC;gBACF,OAAO,EAAE,KAAK,EAAG,IAAY,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;YACjD,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;oBACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;gBACnC,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,EAAE,KAAK,EAAE,GAAG,IAA0B,CAAC;gBAC7C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;gBAChD,CAAC;gBACD,MAAM,UAAU,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACtB,CAAC;YAED,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QACzC,CAAC,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,iEAAiE;YACjE,sEAAsE;YACtE,qEAAqE;YACrE,gEAAgE;YAChE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,4BAA4B,EAChC,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;gBAC1C,MAAM,EAAE,GACN,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;gBACzD,CAAC;gBACD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,IAAI,MAAM,KAAK,KAAK;wBAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACtD,IAAI,MAAM,KAAK,QAAQ;wBAAE,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACN,IAAI,MAAM,KAAK,KAAK;wBAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;oBACpD,IAAI,MAAM,KAAK,KAAK;wBAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;oBACpD,IAAI,MAAM,KAAK,QAAQ;wBAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5D,CAAC;gBACD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC,CAAC,CACH,CAAC;YAEF,mEAAmE;YACnE,uEAAuE;YACvE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CACpB,GAAG,CAAC,oBAAoB,EACxB,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;gBAC1C,MAAM,GAAG,GACP,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtE,kDAAkD;gBAClD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;oBAAE,OAAO;gBAC5C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;gBAC1D,CAAC;gBACD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,MAAM,KAAK,KAAK;oBAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,MAAM,KAAK,KAAK;oBAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,MAAM,KAAK,QAAQ;oBAAE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACzC,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB,sBAAsB,EAAE,CAAC","sourcesContent":["import { getH3App, awaitBootstrap } from \"./framework-request-handler.js\";\nimport {\n defineEventHandler,\n setResponseStatus,\n setResponseHeader,\n getMethod,\n} from \"h3\";\nimport type { H3Event } from \"h3\";\nimport path from \"node:path\";\nimport { createPollHandler } from \"./poll.js\";\nimport { createSSEHandler } from \"./sse.js\";\nimport { upsertEnvFile } from \"./create-server.js\";\nimport type { EnvKeyConfig } from \"./create-server.js\";\nimport { readBody } from \"./h3-helpers.js\";\nimport {\n BUILDER_ENV_KEYS,\n BUILDER_STATE_PARAM,\n buildBuilderCliAuthUrl,\n createBuilderBrowserCallbackErrorPage,\n createBuilderBrowserCallbackPage,\n getBuilderBrowserStatusForEvent,\n resolveSafePreviewUrl,\n runBuilderAgent,\n signBuilderCallbackState,\n verifyBuilderCallbackState,\n} from \"./builder-browser.js\";\nimport {\n getState,\n putState,\n deleteState,\n listComposeDrafts,\n getComposeDraft,\n putComposeDraft,\n deleteComposeDraft,\n deleteAllComposeDrafts,\n} from \"../application-state/handlers.js\";\nimport { getSetting, putSetting, deleteSetting } from \"../settings/store.js\";\nimport {\n getUserSetting,\n putUserSetting,\n deleteUserSetting,\n} from \"../settings/user-settings.js\";\nimport { getSession, isDevEnvironment, DEV_MODE_USER_EMAIL } from \"./auth.js\";\nimport { isLocalDatabase } from \"../db/client.js\";\nimport { getOrigin } from \"./google-oauth.js\";\nimport { findWorkspaceRoot } from \"../scripts/utils.js\";\nimport { listOnboardingSteps } from \"../onboarding/registry.js\";\nimport {\n uploadFile,\n getActiveFileUploadProvider,\n listFileUploadProviders,\n} from \"../file-upload/index.js\";\nimport { readMultipartFormData } from \"h3\";\nimport {\n createListSecretsHandler,\n createWriteSecretHandler,\n createTestSecretHandler,\n createAdHocSecretHandler,\n} from \"../secrets/routes.js\";\nimport { registerFrameworkSecrets } from \"../secrets/register-framework-secrets.js\";\nimport { registerBuiltinProviders } from \"../tracking/providers.js\";\nimport { registerBuiltinNotificationChannels } from \"../notifications/channels.js\";\nimport { createNotificationsHandler } from \"../notifications/routes.js\";\nimport { createProgressHandler } from \"../progress/routes.js\";\nimport { createTranscribeVoiceHandler } from \"./transcribe-voice.js\";\nimport { runWithRequestContext } from \"./request-context.js\";\nimport { createVoiceProvidersStatusHandler } from \"./voice-providers-status.js\";\nimport { PROVIDER_ENV_META } from \"../agent/engine/provider-env-vars.js\";\nimport {\n isAgentEngineSettingConfigured,\n getAgentEngineEntry,\n detectEngineFromEnv,\n detectEngineFromUserSecrets,\n isStoredEngineUsable,\n} from \"../agent/engine/registry.js\";\n\n/**\n * The base path prefix for all framework-level routes.\n * All agent-native core routes live under this namespace to avoid\n * collisions with template-specific `/api/*` routes.\n */\nexport const FRAMEWORK_ROUTE_PREFIX = \"/_agent-native\";\n\n/**\n * Whether deployment-wide `process.env` writes (and rehydration from the\n * unscoped `persisted-env-vars` settings row) are safe on this deployment.\n *\n * Allowed only when:\n * - we're running against a local SQLite-only database in a development\n * environment (no shared-tenant exposure), OR\n * - the operator has explicitly opted in via\n * `AGENT_NATIVE_ALLOW_ENV_VAR_WRITES=1` (single-tenant self-hosted).\n *\n * On any hosted multi-tenant deploy this returns false: env vars are\n * deployment-wide globals and one tenant could otherwise overwrite Stripe /\n * OpenAI / Sentry keys for every other tenant. Per-org credentials must use\n * the per-user/org `app_secrets` store via `saveCredential()` instead.\n */\nfunction isEnvVarWriteAllowed(): boolean {\n if (process.env.AGENT_NATIVE_ALLOW_ENV_VAR_WRITES === \"1\") return true;\n return isDevEnvironment() && isLocalDatabase();\n}\n\nfunction normalizeAppBasePath(value: string | undefined): string {\n if (!value || value === \"/\") return \"\";\n const trimmed = value.trim();\n if (!trimmed || trimmed === \"/\") return \"\";\n return `/${trimmed.replace(/^\\/+/, \"\").replace(/\\/+$/, \"\")}`;\n}\n\nfunction stripAppBasePath(pathname: string): string {\n const basePath = normalizeAppBasePath(\n process.env.VITE_APP_BASE_PATH || process.env.APP_BASE_PATH,\n );\n if (!basePath) return pathname;\n if (pathname === basePath) return \"/\";\n if (pathname.startsWith(`${basePath}/`)) {\n return pathname.slice(basePath.length) || \"/\";\n }\n return pathname;\n}\n\nfunction redactValues(text: string, values: Array<string | null | undefined>) {\n let out = text;\n for (const value of values) {\n if (value) out = out.split(value).join(\"[redacted]\");\n }\n return out;\n}\n\ntype NitroPluginDef = (nitroApp: any) => void | Promise<void>;\n\nexport interface CoreRoutesPluginOptions {\n /** Route path for the SSE endpoint. Default: \"/_agent-native/events\" */\n sseRoute?: string;\n /** Disable the SSE endpoint entirely. */\n disableSSE?: boolean;\n /** Disable the /_agent-native/ping health check. */\n disablePing?: boolean;\n /** Disable the /_agent-native/application-state routes. */\n disableAppState?: boolean;\n /** Env key configuration. Enables env-status and env-vars routes. */\n envKeys?: EnvKeyConfig[];\n}\n\n/**\n * Creates a Nitro plugin that mounts all standard agent-native framework routes.\n *\n * All routes are mounted under `/_agent-native/` to avoid collisions\n * with template-specific routes.\n *\n * Routes:\n * GET /_agent-native/poll — polling endpoint for change detection\n * GET /_agent-native/events (or custom) — SSE endpoint for real-time sync\n * GET /_agent-native/ping — health check\n * GET /_agent-native/env-status — env key configuration status (when envKeys provided)\n * POST /_agent-native/env-vars — save env vars to .env (when envKeys provided)\n * GET /_agent-native/application-state/:key — read application state\n * PUT /_agent-native/application-state/:key — write application state\n * DELETE /_agent-native/application-state/:key — delete application state\n * GET /_agent-native/application-state/compose — list compose drafts\n * DELETE /_agent-native/application-state/compose — delete all compose drafts\n * GET /_agent-native/application-state/compose/:id — get compose draft\n * PUT /_agent-native/application-state/compose/:id — upsert compose draft\n * DELETE /_agent-native/application-state/compose/:id — delete compose draft\n */\nexport function createCoreRoutesPlugin(\n options: CoreRoutesPluginOptions = {},\n): NitroPluginDef {\n return async (nitroApp: any) => {\n // No-op when called from inside the bootstrap (auto-mount path).\n // Otherwise wait so other default plugins finish mounting first.\n await awaitBootstrap(nitroApp);\n\n // Restore env vars from the settings table. On serverless, .env\n // writes don't persist across invocations — the DB is the durable\n // store. Only set keys that are currently empty so explicit env\n // vars (Netlify dashboard, process-level) always win.\n //\n // GATED: only rehydrate into `process.env` on local-dev SQLite (or\n // with the explicit single-tenant opt-in). On a shared-DB hosted\n // multi-tenant deploy the `persisted-env-vars` row is deployment-wide\n // global state — pushing user-supplied values into `process.env` from\n // it would let any one tenant's writes (or a stale dev seed) leak\n // into every other tenant's process. The opt-out scrub of legacy\n // BUILDER_* values still runs unconditionally so existing rows on\n // multi-tenant deploys self-heal, but new env-var writes never land\n // in `process.env` outside the allowed contexts.\n try {\n const persisted = (await getSetting(\"persisted-env-vars\")) as Record<\n string,\n string\n > | null;\n if (persisted) {\n const builderKeys = new Set<string>(BUILDER_ENV_KEYS);\n const writesAllowed = isEnvVarWriteAllowed();\n let scrubbed = 0;\n for (const [k, v] of Object.entries(persisted)) {\n if (builderKeys.has(k)) {\n scrubbed++;\n continue;\n }\n if (writesAllowed && typeof v === \"string\" && !process.env[k]) {\n process.env[k] = v;\n }\n }\n if (scrubbed > 0) {\n try {\n const cleaned: Record<string, string> = {};\n for (const [k, v] of Object.entries(persisted)) {\n if (!builderKeys.has(k)) cleaned[k] = v;\n }\n await putSetting(\"persisted-env-vars\", cleaned);\n console.warn(\n `[core] Removed ${scrubbed} legacy BUILDER_* key(s) from persisted-env-vars (cross-tenant leak fix).`,\n );\n } catch {\n // Couldn't rewrite the row — the skip-on-rehydrate above\n // is the load-bearing protection. We'll try again next boot.\n }\n }\n }\n } catch {\n // DB not ready yet — skip\n }\n\n // Honor Builder disconnect. Nitro's dev env-runner preserves\n // `process.env` across `.env` file reloads inside the same worker, so\n // deleting BUILDER_PRIVATE_KEY in the disconnect handler can bleed\n // back through an env-runner restart. We persist a\n // `builder-disconnected` flag in SQL and scrub BUILDER_* on every\n // plugin init while the flag is set. The flag is cleared by the\n // Builder cli-auth callback when the user re-connects.\n try {\n const disconnected = (await getSetting(\"builder-disconnected\")) as {\n at?: number;\n } | null;\n if (disconnected) {\n for (const key of BUILDER_ENV_KEYS) {\n delete process.env[key];\n }\n }\n } catch {\n // DB not ready — skip; the disconnect flag will be enforced on the\n // next plugin boot once the settings table is reachable.\n }\n\n // Register framework-level secrets (OPENAI_API_KEY for composer voice\n // transcription, etc.). Each registration is guarded so templates that\n // already registered the same key win.\n registerFrameworkSecrets();\n registerBuiltinProviders();\n registerBuiltinNotificationChannels();\n\n try {\n const { createObservabilityHandler } =\n await import(\"../observability/routes.js\");\n const { ensureObservabilityTables } =\n await import(\"../observability/store.js\");\n ensureObservabilityTables().catch(() => {});\n getH3App(nitroApp).use(\n `${FRAMEWORK_ROUTE_PREFIX}/observability`,\n createObservabilityHandler(),\n );\n } catch {\n // Observability module not available — skip\n }\n\n const P = FRAMEWORK_ROUTE_PREFIX;\n\n // Security response headers — emitted on every framework response.\n // Mounted before route handlers so 4xx/5xx error pages also carry the\n // headers. Routes that need to relax a specific header (e.g. the tools\n // /render route allowing same-origin framing) override via setResponseHeader.\n const { createSecurityHeadersMiddleware } =\n await import(\"./security-headers.js\");\n getH3App(nitroApp).use(createSecurityHeadersMiddleware());\n\n // CORS for framework routes. Desktop tray apps (Tauri/Electron) run on\n // their own dev origin (e.g. localhost:1420) and make credentialed\n // requests against the template's server at a different port. We echo\n // the exact origin + Allow-Credentials so same-site localhost ports\n // can cross-send cookies.\n const allowlist = (process.env.CORS_ALLOWED_ORIGINS ?? \"\")\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n const isProduction = process.env.NODE_ENV === \"production\";\n const LOCALHOST_RE =\n /^https?:\\/\\/(localhost|127\\.0\\.0\\.1|tauri\\.localhost)(:\\d+)?$/;\n getH3App(nitroApp).use(\n defineEventHandler((event) => {\n const pathname = stripAppBasePath(\n event.url?.pathname ??\n String(event.node?.req?.url ?? event.path ?? \"/\").split(\"?\")[0],\n );\n if (!pathname.startsWith(P) && !pathname.startsWith(\"/api/\")) return;\n const reqHeaders = (event.node?.req?.headers ?? {}) as Record<\n string,\n string | string[] | undefined\n >;\n const originRaw = reqHeaders[\"origin\"];\n const origin = Array.isArray(originRaw) ? originRaw[0] : originRaw;\n const method = getMethod(event);\n\n // Decide whether this origin is allowed. We never fall back to the\n // first allowlist entry — that previously echoed `Access-Control-\n // Allow-Origin: <unrelated-allowed-origin>` for disallowed callers,\n // which is permissive enough that some clients followed through.\n let allowedOrigin: string | null = null;\n if (origin) {\n if (allowlist.length > 0) {\n if (allowlist.includes(origin)) allowedOrigin = origin;\n } else {\n // No allowlist configured. In production we only allow\n // localhost-style origins (desktop tray dev usage); in dev we\n // allow any origin echo. This prevents a fresh deploy without\n // CORS_ALLOWED_ORIGINS from accepting credentialed requests\n // from any origin.\n if (isProduction) {\n if (LOCALHOST_RE.test(origin)) allowedOrigin = origin;\n } else {\n if (LOCALHOST_RE.test(origin)) allowedOrigin = origin;\n }\n }\n }\n\n // Reject preflights from disallowed cross-origin callers BEFORE\n // returning 204. Previously the OPTIONS short-circuit returned 204\n // with no ACAO header, which the browser then treats as a CORS\n // failure — but also short-circuited any further checks. Now we\n // explicitly 403 disallowed cross-origin preflights.\n if (method === \"OPTIONS\") {\n if (origin && !allowedOrigin) {\n setResponseStatus(event, 403);\n return \"\";\n }\n if (allowedOrigin) {\n setResponseHeader(\n event,\n \"Access-Control-Allow-Origin\",\n allowedOrigin,\n );\n setResponseHeader(event, \"Vary\", \"Origin\");\n setResponseHeader(\n event,\n \"Access-Control-Allow-Credentials\",\n \"true\",\n );\n setResponseHeader(\n event,\n \"Access-Control-Allow-Methods\",\n \"GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS\",\n );\n setResponseHeader(\n event,\n \"Access-Control-Allow-Headers\",\n \"Content-Type,Authorization,X-Requested-With,X-Request-Source,X-Agent-Native-CSRF\",\n );\n }\n setResponseStatus(event, 204);\n return \"\";\n }\n\n // Non-preflight requests: only set CORS response headers when we\n // have an allowed origin. Same-origin / no-origin requests fall\n // through without explicit CORS headers (browser treats them as\n // same-origin by default).\n if (!allowedOrigin) return;\n setResponseHeader(event, \"Access-Control-Allow-Origin\", allowedOrigin);\n setResponseHeader(event, \"Vary\", \"Origin\");\n setResponseHeader(event, \"Access-Control-Allow-Credentials\", \"true\");\n setResponseHeader(\n event,\n \"Access-Control-Allow-Methods\",\n \"GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS\",\n );\n setResponseHeader(\n event,\n \"Access-Control-Allow-Headers\",\n \"Content-Type,Authorization,X-Requested-With,X-Request-Source,X-Agent-Native-CSRF\",\n );\n }),\n );\n\n // Defense-in-depth CSRF check for state-changing /_agent-native/* routes.\n // Mounted AFTER the CORS layer so disallowed-origin OPTIONS preflights\n // 403 first (rather than being rejected on a stale cookie heuristic).\n // See `csrf.ts` for the threat model and allowlist.\n const { createCsrfMiddleware } = await import(\"./csrf.js\");\n getH3App(nitroApp).use(createCsrfMiddleware(P));\n\n // Polling\n getH3App(nitroApp).use(`${P}/poll`, createPollHandler());\n\n // SSE\n if (!options.disableSSE) {\n const sseRoute = options.sseRoute ?? `${P}/events`;\n getH3App(nitroApp).use(sseRoute, createSSEHandler());\n }\n\n // Ping\n if (!options.disablePing) {\n getH3App(nitroApp).use(\n `${P}/ping`,\n defineEventHandler(() => ({\n message: process.env.PING_MESSAGE ?? \"pong\",\n })),\n );\n }\n\n getH3App(nitroApp).use(\n `${P}/builder/status`,\n defineEventHandler(async (event) => {\n const envStatus = getBuilderBrowserStatusForEvent(event);\n // Read session once so we can establish per-user request context for\n // credential resolution. Without this, resolveBuilderCredentials()\n // calls getRequestUserEmail() on an empty AsyncLocalStorage store and\n // falls through to process.env — causing the connection state to\n // flicker between requests depending on stale env values.\n const session = await getSession(event).catch(() => null);\n const userEmail = session?.email;\n\n return runWithRequestContext({ userEmail }, async () => {\n // Check per-user credentials first (stored in app_secrets).\n try {\n const { resolveBuilderCredentials } =\n await import(\"./credential-provider.js\");\n const creds = await resolveBuilderCredentials();\n if (creds.privateKey) {\n return {\n ...envStatus,\n configured: true,\n privateKeyConfigured: true,\n publicKeyConfigured: !!creds.publicKey,\n userId: creds.userId || envStatus.userId,\n orgName: creds.orgName || envStatus.orgName,\n orgKind: creds.orgKind || envStatus.orgKind,\n };\n }\n } catch {\n // Secrets table not ready — fall through to env status\n }\n // Surface a recent OAuth callback failure so the parent's polling\n // stops with a clear message instead of timing out at 5min. The\n // callback handler writes a `builder-connect-error:<email>` row\n // when `writeBuilderCredentials` throws; this read self-clears so\n // the message only fires once.\n try {\n if (userEmail) {\n const errKey = `builder-connect-error:${userEmail}`;\n const errRow = await getSetting(errKey);\n if (errRow && typeof errRow.message === \"string\") {\n await deleteSetting(errKey).catch(() => {});\n return {\n ...envStatus,\n configured: false,\n privateKeyConfigured: false,\n publicKeyConfigured: false,\n userId: undefined,\n orgName: undefined,\n orgKind: undefined,\n connectError: {\n message: errRow.message as string,\n at:\n typeof errRow.at === \"number\"\n ? (errRow.at as number)\n : Date.now(),\n },\n };\n }\n }\n } catch {\n // settings store unavailable — fall through to legacy/env status\n }\n // Honor legacy disconnect flag for existing deployments.\n try {\n const disconnected = await getSetting(\"builder-disconnected\");\n if (disconnected) {\n return {\n ...envStatus,\n configured: false,\n privateKeyConfigured: false,\n publicKeyConfigured: false,\n userId: undefined,\n orgName: undefined,\n orgKind: undefined,\n };\n }\n } catch {\n // DB not reachable — fall back to env-only status.\n }\n // For authenticated non-local users who have no per-user credentials,\n // explicitly return not-configured rather than deploy-level env keys.\n // This is consistent with resolveBuilderCredential()'s design which\n // refuses the env fallback for authenticated users to prevent\n // cross-tenant credential leakage in shared-DB deployments.\n if (userEmail && userEmail !== DEV_MODE_USER_EMAIL) {\n return {\n ...envStatus,\n configured: false,\n privateKeyConfigured: false,\n publicKeyConfigured: false,\n userId: undefined,\n orgName: undefined,\n orgKind: undefined,\n };\n }\n return envStatus;\n });\n }),\n );\n\n // Lightweight 302 to the Builder CLI-auth URL. Lets clients do\n // `window.open('/_agent-native/builder/connect', '_blank')` synchronously\n // inside a click handler, avoiding the popup-blocker downgrade that\n // happens when an await sits before window.open. We mint a signed\n // CSRF state here and embed it in the callback URL we hand to\n // Builder; the callback handler verifies it before accepting any\n // keys. See `signBuilderCallbackState` for the threat model.\n getH3App(nitroApp).use(\n `${P}/builder/connect`,\n defineEventHandler(async (event) => {\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Authentication required\" };\n }\n const state = signBuilderCallbackState(session.email);\n const cliAuthUrl = buildBuilderCliAuthUrl(getOrigin(event), state);\n setResponseStatus(event, 302);\n setResponseHeader(event, \"Location\", cliAuthUrl);\n return \"\";\n }),\n );\n\n // Hardcoded for the early preview — later this will come from workspace/org\n // config so each team can point at its own Builder project.\n const DEFAULT_BUILDER_PROJECT_ID = \"274d28fec94b48f2b2d68f2274d390eb\";\n\n getH3App(nitroApp).use(\n `${P}/builder/run`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n const body = await readBody(event).catch(() => ({}) as any);\n const prompt = typeof body?.prompt === \"string\" ? body.prompt : \"\";\n if (!prompt.trim()) {\n setResponseStatus(event, 400);\n return { error: \"prompt is required\" };\n }\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Authentication required\" };\n }\n // `local@localhost` is the dev/local-mode bypass session. In a\n // hosted production deploy it means either AUTH_MODE=local was\n // misconfigured or AUTH_DISABLED=true is in use — either way the\n // caller isn't a named user we should spend a Builder private key\n // on. Allow it only when the environment explicitly opts into\n // local mode (dev, tests, or AUTH_MODE=local).\n if (\n session.email === DEV_MODE_USER_EMAIL &&\n process.env.NODE_ENV === \"production\" &&\n process.env.AUTH_MODE !== \"local\"\n ) {\n setResponseStatus(event, 401);\n return { error: \"A signed-in user is required to run Builder\" };\n }\n const userEmail = session.email;\n // Wrap in runWithRequestContext so resolveBuilderCredential() inside\n // runBuilderAgent() resolves per-user app_secrets rather than falling\n // through to process.env — the same pattern the /builder/status endpoint\n // uses. Without this, per-user Builder keys stored in app_secrets are\n // invisible to the run path and the call throws \"Builder keys are not\n // configured\" even though the status endpoint correctly reports configured=true.\n return runWithRequestContext({ userEmail }, async () => {\n const { resolveBuilderCredential: resolveBuilderCred } =\n await import(\"./credential-provider.js\");\n const builderUserId =\n (await resolveBuilderCred(\"BUILDER_USER_ID\")) || undefined;\n // Server-controlled projectId — don't let clients target arbitrary\n // Builder projects with our private key. When this feature graduates\n // past the hardcoded preview, the projectId will come from\n // workspace/org config, still resolved server-side.\n try {\n const result = await runBuilderAgent({\n prompt,\n projectId: DEFAULT_BUILDER_PROJECT_ID,\n branchName:\n typeof body?.branchName === \"string\"\n ? body.branchName\n : undefined,\n userEmail,\n userId: builderUserId,\n });\n return result;\n } catch (e) {\n setResponseStatus(event, 500);\n return {\n error: e instanceof Error ? e.message : \"Builder run failed\",\n };\n }\n });\n }),\n );\n\n getH3App(nitroApp).use(\n `${P}/builder/callback`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"GET\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n\n // Session blocks anonymous callers; the signed state below blocks\n // CSRF (session cookies are SameSite=None;Secure for the iframe\n // editor, so they ride along on attacker-crafted top-level links).\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Authentication required\" };\n }\n\n const requestUrl = new URL(\n `${event.url?.pathname || \"/\"}${event.url?.search || \"\"}`,\n getOrigin(event),\n );\n\n const state = requestUrl.searchParams.get(BUILDER_STATE_PARAM);\n if (!verifyBuilderCallbackState(state, session.email)) {\n setResponseStatus(event, 403);\n return {\n error:\n \"Invalid or expired connect token. Restart the Builder connect flow from Settings.\",\n };\n }\n\n const privateKey = requestUrl.searchParams.get(\"p-key\");\n const publicKey = requestUrl.searchParams.get(\"api-key\");\n\n if (!privateKey || !publicKey) {\n setResponseStatus(event, 400);\n return { error: \"Missing Builder credentials in callback\" };\n }\n\n const userId = requestUrl.searchParams.get(\"user-id\");\n const orgName = requestUrl.searchParams.get(\"org-name\");\n const orgKind = requestUrl.searchParams.get(\"kind\");\n\n // Store per-user in app_secrets so each user's Builder connection\n // is independent. No more shared env vars that the last connector\n // overwrites.\n //\n // Failure handling: a silent catch here (returning the success page\n // anyway) was Midhun's bug on 2026-04-28 — popup said \"yay\", parent\n // window polled `/builder/status` for 5 minutes seeing\n // configured:false, never got a real error. Now we surface the\n // failure two ways: (a) a settings row that the next /builder/status\n // poll picks up, and (b) postMessage from the error page itself,\n // wired into the popup HTML, so the parent stops polling immediately.\n let writeError: string | null = null;\n try {\n const { writeBuilderCredentials } =\n await import(\"./credential-provider.js\");\n await writeBuilderCredentials(session.email, {\n privateKey,\n publicKey,\n userId,\n orgName,\n orgKind,\n });\n } catch (err) {\n writeError = (err as Error)?.message ?? String(err);\n console.error(\n \"[builder] Failed to persist per-user credentials:\",\n writeError,\n );\n }\n\n if (writeError) {\n // Best-effort signal to /builder/status. If putSetting also fails\n // (entire DB unreachable) the popup's postMessage still notifies\n // the parent. If both fail the parent times out at 5min as today.\n try {\n await putSetting(`builder-connect-error:${session.email}`, {\n message: writeError,\n at: Date.now(),\n });\n } catch (settingsErr) {\n console.error(\n \"[builder] Couldn't even record connect-error to settings:\",\n (settingsErr as Error)?.message ?? settingsErr,\n );\n }\n setResponseStatus(event, 500);\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n return createBuilderBrowserCallbackErrorPage(writeError);\n }\n\n // Clear any legacy disconnect flag and any prior connect-error row\n // (so a successful retry doesn't surface the previous failure).\n try {\n await deleteSetting(\"builder-disconnected\");\n } catch {\n // DB not ready — proceed\n }\n try {\n await deleteSetting(`builder-connect-error:${session.email}`);\n } catch {\n // No prior error row — fine\n }\n\n const previewUrl = resolveSafePreviewUrl(\n requestUrl.searchParams.get(\"preview-url\"),\n event,\n );\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n return createBuilderBrowserCallbackPage(previewUrl);\n }),\n );\n\n // POST /_agent-native/builder/disconnect — revoke the stored Builder\n // credentials so the next turn falls back to BYO / env detection. Mirrors\n // the callback handler's three write locations: the template `.env` file,\n // the in-process `process.env`, and the `persisted-env-vars` settings row\n // (rehydrated on serverless cold starts). All three must be cleared to\n // avoid a \"still connected after disconnect\" state on restart.\n getH3App(nitroApp).use(\n `${P}/builder/disconnect`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"unauthorized\" };\n }\n\n // Delete per-user Builder credentials from app_secrets.\n try {\n const { deleteBuilderCredentials } =\n await import(\"./credential-provider.js\");\n await deleteBuilderCredentials(session.email);\n } catch (err) {\n setResponseStatus(event, 500);\n return {\n ok: false,\n error:\n \"Could not remove Builder credentials — your connection is unchanged. Please retry.\",\n cause: err instanceof Error ? err.message : String(err),\n };\n }\n\n return { ok: true };\n }),\n );\n\n // Proxy to Builder's agents-run API for background code changes.\n getH3App(nitroApp).use(\n `${P}/builder/agents-run`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"unauthorized\" };\n }\n\n return runWithRequestContext(\n { userEmail: session.email, orgId: session.orgId ?? undefined },\n async () => {\n const { resolveBuilderCredentials: resolveCreds } =\n await import(\"./credential-provider.js\");\n const creds = await resolveCreds();\n if (!creds.privateKey || !creds.publicKey) {\n setResponseStatus(event, 400);\n return {\n error:\n \"Builder not connected. Connect Builder in Setup to use background agent.\",\n };\n }\n const body = (await readBody(event)) as {\n userMessage?: string;\n branchName?: string;\n projectUrl?: string;\n };\n if (!body?.userMessage) {\n setResponseStatus(event, 400);\n return { error: \"userMessage is required\" };\n }\n const apiHost =\n process.env.BUILDER_API_HOST || \"https://ai-services.builder.io\";\n try {\n const res = await fetch(\n `${apiHost}/agents/run?apiKey=${encodeURIComponent(creds.publicKey)}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${creds.privateKey}`,\n },\n body: JSON.stringify({\n userMessage: {\n userPrompt: body.userMessage,\n },\n branchName: body.branchName,\n }),\n },\n );\n if (!res.ok) {\n const err = await res.text().catch(() => \"Unknown error\");\n setResponseStatus(event, res.status);\n return {\n error: redactValues(err, [creds.privateKey, creds.publicKey]),\n };\n }\n return await res.json();\n } catch (err: any) {\n setResponseStatus(event, 500);\n return {\n error: redactValues(\n err?.message || \"Failed to reach Builder agents-run API\",\n [creds.privateKey, creds.publicKey],\n ),\n };\n }\n },\n );\n }),\n );\n\n // Env key management — framework keys are always included\n const frameworkEnvKeys: EnvKeyConfig[] = [\n { key: \"ENABLE_BUILDER\", label: \"Enable Builder.io features\" },\n {\n key: \"AGENT_ENGINE_PREFER_BYO_KEY\",\n label:\n \"Prefer BYO LLM key over Builder gateway (default: false — gateway wins)\",\n },\n ...Object.values(PROVIDER_ENV_META).map(({ envVar, label }) => ({\n key: envVar,\n label,\n })),\n ];\n {\n const envKeys = [...frameworkEnvKeys, ...(options.envKeys ?? [])];\n\n // Onboarding form fields are resolved per-request so late-registered\n // steps (and template overrides) are picked up without a restart.\n const collectOnboardingKeys = (): Set<string> => {\n const keys = new Set<string>();\n for (const step of listOnboardingSteps()) {\n for (const method of step.methods) {\n if (method.kind === \"form\") {\n for (const field of method.payload.fields) {\n if (field?.key) keys.add(field.key);\n }\n }\n if (method.kind === \"builder-cli-auth\") {\n keys.add(\"BUILDER_PRIVATE_KEY\");\n keys.add(\"BUILDER_PUBLIC_KEY\");\n }\n }\n }\n return keys;\n };\n\n getH3App(nitroApp).use(\n `${P}/env-status`,\n defineEventHandler(() =>\n envKeys.map((cfg) => ({\n key: cfg.key,\n label: cfg.label,\n required: cfg.required ?? false,\n configured: !!process.env[cfg.key],\n ...(cfg.helpText ? { helpText: cfg.helpText } : {}),\n })),\n ),\n );\n\n getH3App(nitroApp).use(\n `${P}/env-vars`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n\n // Env vars are deployment-wide globals, not per-tenant. On any\n // shared-DB multi-tenant deploy, allowing authenticated users to\n // write here lets one tenant overwrite Stripe / OpenAI / Sentry\n // keys for every other tenant. Disable the endpoint outside of\n // local-dev SQLite or an explicit single-tenant opt-in, and\n // direct callers to the per-org credential store instead.\n if (!isEnvVarWriteAllowed()) {\n setResponseStatus(event, 403);\n return {\n error:\n \"env-vars endpoint disabled on multi-tenant deployments. Use saveCredential(key, value, { userEmail, orgId, scope: 'org' }) to store per-org credentials.\",\n };\n }\n\n const body = await readBody(event);\n const { vars } = body as {\n vars?: Array<{ key: string; value: string }>;\n };\n\n if (!Array.isArray(vars) || vars.length === 0) {\n setResponseStatus(event, 400);\n return { error: \"vars array required\" };\n }\n\n const allowedKeys = new Set<string>([\n ...envKeys.map((k) => k.key),\n ...collectOnboardingKeys(),\n ]);\n\n const filtered = vars.filter(\n (v) =>\n typeof v.key === \"string\" &&\n allowedKeys.has(v.key) &&\n typeof v.value === \"string\" &&\n v.value.trim().length > 0,\n );\n if (filtered.length === 0) {\n setResponseStatus(event, 400);\n const rejectedEmpty = vars.some(\n (v) =>\n typeof v.key === \"string\" &&\n allowedKeys.has(v.key) &&\n (typeof v.value !== \"string\" || v.value.trim().length === 0),\n );\n return {\n error: rejectedEmpty\n ? \"Env values must be non-empty — refusing to clear a saved key\"\n : \"No recognized env keys in request\",\n };\n }\n\n // Write to .env file. When inside a workspace, write to the\n // workspace root .env so keys are shared across every app. The\n // per-app .env still wins at load time if it also defines a key.\n try {\n const scope =\n (body as { scope?: \"workspace\" | \"app\" })?.scope ?? \"auto\";\n const workspaceRoot = findWorkspaceRoot(process.cwd());\n const envPath =\n scope === \"app\"\n ? path.join(process.cwd(), \".env\")\n : workspaceRoot\n ? path.join(workspaceRoot, \".env\")\n : path.join(process.cwd(), \".env\");\n await upsertEnvFile(envPath, filtered);\n } catch {\n // Edge runtime — skip file write\n }\n\n // Update process.env immediately\n for (const { key, value } of filtered) {\n process.env[key] = value;\n }\n\n // Persist to settings table for serverless cold-start recovery.\n try {\n const envMap: Record<string, string> = {};\n for (const { key, value } of filtered) envMap[key] = value;\n const existing =\n ((await getSetting(\"persisted-env-vars\")) as Record<\n string,\n string\n > | null) ?? {};\n await putSetting(\"persisted-env-vars\", { ...existing, ...envMap });\n } catch {\n // DB not ready yet — skip\n }\n\n return { saved: filtered.map((v) => v.key) };\n }),\n );\n }\n\n // GET /_agent-native/agent-engine/status — reports whether an engine\n // is configured (settings row, settings+env, or auto-detected from env).\n // The agent-chat UI uses this to skip the onboarding gate for providers\n // not in the env-status list (OpenRouter, Groq, Ollama, …).\n getH3App(nitroApp).use(\n `${P}/agent-engine/status`,\n defineEventHandler(async () => {\n try {\n const stored = (await getSetting(\"agent-engine\")) as {\n engine?: string;\n } | null;\n if (isAgentEngineSettingConfigured(stored)) {\n return {\n configured: true,\n engine: (stored as { engine: string }).engine,\n source: \"settings\" as const,\n };\n }\n if (stored && typeof stored.engine === \"string\") {\n const entry = getAgentEngineEntry(stored.engine);\n if (entry && isStoredEngineUsable(stored, entry)) {\n return {\n configured: true,\n engine: stored.engine,\n source: \"env\" as const,\n envVar: entry.requiredEnvVars[0],\n };\n }\n }\n // Per-user app_secrets — a user who connected Builder (or pasted\n // their own provider key) may not have any deploy-level env vars\n // set, so check their per-user secret store before reporting \"no\n // engine configured\" and re-showing the onboarding gate.\n const detectedFromUser = await detectEngineFromUserSecrets();\n if (detectedFromUser) {\n return {\n configured: true,\n engine: detectedFromUser.name,\n source: \"app_secrets\" as const,\n envVar: detectedFromUser.requiredEnvVars[0],\n };\n }\n const detected = detectEngineFromEnv();\n if (detected) {\n return {\n configured: true,\n engine: detected.name,\n source: \"env\" as const,\n envVar: detected.requiredEnvVars[0],\n };\n }\n } catch {}\n return { configured: false };\n }),\n );\n\n // POST /_agent-native/agent-engine/disconnect — clear the agent-engine\n // setting. Env vars are left alone so the next chat turn falls back to\n // resolveEngine's env/default resolution.\n getH3App(nitroApp).use(\n `${P}/agent-engine/disconnect`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"unauthorized\" };\n }\n try {\n await deleteSetting(\"agent-engine\");\n return { ok: true };\n } catch (err) {\n setResponseStatus(event, 500);\n return {\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n };\n }\n }),\n );\n\n // ─── Usage & cost summary ────────────────────────────────────────\n // GET /_agent-native/usage?sinceDays=30\n // Returns spend broken down by label, model, app, and day for the\n // current user. Powers the Usage section in the agent settings panel.\n getH3App(nitroApp).use(\n `${P}/usage`,\n defineEventHandler(async (event: H3Event) => {\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"unauthorized\" };\n }\n const sinceDaysParam = new URL(\n `${event.url?.pathname || \"/\"}${event.url?.search || \"\"}`,\n \"http://x\",\n ).searchParams.get(\"sinceDays\");\n const sinceDays = Math.max(\n 1,\n Math.min(365, Number(sinceDaysParam) || 30),\n );\n const { getUsageSummary } = await import(\"../usage/store.js\");\n return getUsageSummary({\n ownerEmail: session.email,\n sinceMs: Date.now() - sinceDays * 86_400_000,\n });\n }),\n );\n\n // ─── File upload primitive ──────────────────────────────────────\n // GET /_agent-native/file-upload/status — report active provider\n // POST /_agent-native/file-upload — upload a file, return { url }\n getH3App(nitroApp).use(\n `${P}/file-upload/status`,\n defineEventHandler(async (event) => {\n const active = getActiveFileUploadProvider();\n // resolveBuilderPrivateKey() reads per-user credentials from app_secrets\n // (DB), which requires request context (AsyncLocalStorage) to know which\n // user to scope by. Without runWithRequestContext() the ALS store is empty\n // and it falls back to process.env only — missing OAuth-connected users.\n const session = await getSession(event).catch(() => null);\n const userEmail = session?.email;\n let builderConfigured = !!process.env.BUILDER_PRIVATE_KEY;\n try {\n const { resolveBuilderPrivateKey } =\n await import(\"./credential-provider.js\");\n const resolve = () => resolveBuilderPrivateKey().then((k) => !!k);\n builderConfigured = userEmail\n ? await runWithRequestContext({ userEmail }, resolve)\n : await resolve();\n } catch {\n // fall back to env check above\n }\n // When the builder builtin is selected via env var, its sync\n // isConfigured() doesn't reflect per-user OAuth credentials. Use the\n // async builderConfigured check so the status accurately represents\n // whether this specific user can actually upload (thread 7 fix).\n const isBuilderEnvActive = active?.id === \"builder\";\n const configured = isBuilderEnvActive\n ? builderConfigured\n : !!active || builderConfigured;\n const activeProvider = isBuilderEnvActive\n ? builderConfigured\n ? { id: \"builder\", name: \"Builder.io\" }\n : null\n : active\n ? { id: active.id, name: active.name }\n : builderConfigured\n ? { id: \"builder\", name: \"Builder.io\" }\n : null;\n return {\n configured,\n activeProvider,\n providers: listFileUploadProviders().map((p) => ({\n id: p.id,\n name: p.name,\n configured: p.isConfigured(),\n })),\n builderConfigured,\n };\n }),\n );\n\n getH3App(nitroApp).use(\n `${P}/file-upload`,\n defineEventHandler(async (event: H3Event) => {\n if (getMethod(event) !== \"POST\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n const parts = await readMultipartFormData(event);\n const filePart = parts?.find((p) => p.name === \"file\");\n if (!filePart?.data) {\n setResponseStatus(event, 400);\n return { error: \"No file uploaded\" };\n }\n\n const session = await getSession(event);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Unauthorized\" };\n }\n const userEmail = session.email;\n const result = await runWithRequestContext({ userEmail }, () =>\n uploadFile({\n data: filePart.data,\n filename: filePart.filename,\n mimeType: filePart.type,\n ownerEmail: userEmail,\n }),\n );\n\n if (result) {\n setResponseStatus(event, 201);\n return result;\n }\n\n setResponseStatus(event, 503);\n return {\n error:\n \"No file upload provider configured. Connect Builder.io in Settings → File uploads, or register a provider.\",\n };\n }),\n );\n\n // ─── Voice transcription (Whisper) ───────────────────────────────\n // POST /_agent-native/transcribe-voice — multipart audio → text\n getH3App(nitroApp).use(\n `${P}/transcribe-voice`,\n createTranscribeVoiceHandler(),\n );\n\n // ─── Voice provider status ───────────────────────────────────────\n // GET /_agent-native/voice-providers/status — which providers are\n // configured for the current user (powers the Settings UI pills).\n getH3App(nitroApp).use(\n `${P}/voice-providers/status`,\n createVoiceProvidersStatusHandler(),\n );\n\n // ─── Ad-hoc secrets (user-created keys) ────────────────────────────\n // Must mount before the generic /secrets handler to avoid shadowing.\n const adHocSecretHandler = createAdHocSecretHandler();\n getH3App(nitroApp).use(`${P}/secrets/adhoc`, adHocSecretHandler);\n\n // ─── Secrets registry ────────────────────────────────────────────\n // GET /_agent-native/secrets — list registered secrets + status\n // POST /_agent-native/secrets/:key — write a secret value\n // DELETE /_agent-native/secrets/:key — remove a secret value\n // POST /_agent-native/secrets/:key/test — re-run the validator\n const listSecretsHandler = createListSecretsHandler();\n const writeSecretHandler = createWriteSecretHandler();\n const testSecretHandler = createTestSecretHandler();\n\n getH3App(nitroApp).use(\n `${P}/secrets`,\n defineEventHandler(async (event: H3Event) => {\n const pathname = (event.url?.pathname || \"\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n const parts = pathname ? pathname.split(\"/\") : [];\n\n // Collection root — list handler.\n if (parts.length === 0) {\n return listSecretsHandler(event);\n }\n\n // /:key/test — re-validate stored value.\n if (parts.length === 2 && parts[1] === \"test\") {\n return testSecretHandler(event);\n }\n\n // /:key — write / delete a specific secret.\n if (parts.length === 1) {\n return writeSecretHandler(event);\n }\n\n setResponseStatus(event, 404);\n return { error: \"Not found\" };\n }),\n );\n\n // ─── Notifications inbox ──────────────────────────────────────────\n // GET /_agent-native/notifications[?unread&limit&before]\n // GET /_agent-native/notifications/count\n // POST /_agent-native/notifications/:id/read\n // POST /_agent-native/notifications/read-all\n // DELETE /_agent-native/notifications/:id\n getH3App(nitroApp).use(`${P}/notifications`, createNotificationsHandler());\n\n // ─── Tools (mini-app runtime + proxy) ───────────────────────────────\n try {\n const { ensureToolsTables, registerToolsShareable } =\n await import(\"../tools/store.js\");\n const { createToolsHandler } = await import(\"../tools/routes.js\");\n ensureToolsTables().catch(() => {});\n registerToolsShareable();\n getH3App(nitroApp).use(`${P}/tools`, createToolsHandler());\n\n // Tool extension-point slots — sub-system of tools.\n const { ensureSlotTables } = await import(\"../tools/slots/store.js\");\n const { createSlotsHandler } = await import(\"../tools/slots/routes.js\");\n ensureSlotTables().catch(() => {});\n getH3App(nitroApp).use(`${P}/slots`, createSlotsHandler());\n } catch {\n // Tools module not available — skip\n }\n\n // ─── Agent run progress ───────────────────────────────────────────\n // GET /_agent-native/runs[?active&limit]\n // GET /_agent-native/runs/:id\n // DELETE /_agent-native/runs/:id\n getH3App(nitroApp).use(`${P}/runs`, createProgressHandler());\n\n // ─── Automations API ──────────────────────────────────────────────\n // GET /_agent-native/automations — list all automations (parsed triggers)\n // POST /_agent-native/automations/fire-test — emit test.event.fired\n getH3App(nitroApp).use(\n `${P}/automations`,\n defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n const pathname = (event.url?.pathname || \"\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n\n // Auth check applies to every method. Without this, any anonymous\n // caller could `POST /fire-test` to emit unowned events that fan\n // out across every tenant's matching trigger (the dispatcher\n // short-circuits its owner check when `eventMeta.owner` is\n // undefined). See audit 12 / fire-test finding.\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Unauthenticated\" };\n }\n\n if (pathname === \"fire-test\" && method === \"POST\") {\n try {\n const { emit } = await import(\"../event-bus/index.js\");\n const body = (await readBody(event).catch(() => ({}))) as Record<\n string,\n unknown\n >;\n // Scope the test event to the current user so only their\n // automations fire, not those owned by other tenants.\n emit(\n \"test.event.fired\",\n { data: body.data ?? {} },\n {\n owner: session.email,\n },\n );\n return { ok: true };\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Failed to emit test event\" };\n }\n }\n\n if (method !== \"GET\") {\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }\n\n try {\n const owner = session.email;\n const { resourceListAllOwners, SHARED_OWNER } =\n await import(\"../resources/store.js\");\n const allResources = await resourceListAllOwners(\"jobs/\");\n const resources = allResources.filter(\n (r) => r.owner === owner || r.owner === SHARED_OWNER,\n );\n const FRONT_RE = /^---\\n([\\s\\S]*?)\\n---\\n?([\\s\\S]*)$/;\n const automations = resources\n .filter((r) => r.path.endsWith(\".md\") && !r.path.endsWith(\".keep\"))\n .map((r) => {\n const match = r.content.match(FRONT_RE);\n if (!match)\n return {\n id: r.id,\n name: r.path.replace(/^jobs\\//, \"\").replace(/\\.md$/, \"\"),\n path: r.path,\n owner: r.owner,\n triggerType: \"schedule\" as const,\n enabled: false,\n mode: \"agentic\" as const,\n body: r.content,\n };\n const yaml = match[1];\n const body = match[2].trim();\n const meta: Record<string, string> = {};\n for (const line of yaml.split(\"\\n\")) {\n const ci = line.indexOf(\":\");\n if (ci === -1) continue;\n const k = line.slice(0, ci).trim();\n let v = line.slice(ci + 1).trim();\n if (\n (v.startsWith('\"') && v.endsWith('\"')) ||\n (v.startsWith(\"'\") && v.endsWith(\"'\"))\n )\n v = v.slice(1, -1);\n meta[k] = v;\n }\n return {\n id: r.id,\n name: r.path.replace(/^jobs\\//, \"\").replace(/\\.md$/, \"\"),\n path: r.path,\n owner: r.owner,\n triggerType: meta.triggerType || \"schedule\",\n event: meta.event,\n schedule: meta.schedule,\n condition: meta.condition,\n mode: meta.mode || \"agentic\",\n domain: meta.domain,\n enabled: meta.enabled !== \"false\",\n lastStatus: meta.lastStatus,\n lastRun: meta.lastRun,\n lastError: meta.lastError,\n createdBy: meta.createdBy,\n body,\n };\n });\n return automations;\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Failed to list automations\" };\n }\n }),\n );\n\n // ─── Application State CRUD ──────────────────────────────────────\n // Auto-mounted so templates don't need boilerplate route files.\n\n // ─── User-scoped settings store ────────────────────────────────────\n // GET /_agent-native/settings/:key — read current user's value\n // PUT /_agent-native/settings/:key — write current user's value\n // DELETE /_agent-native/settings/:key — clear current user's value\n //\n // Keys are auto-prefixed with `u:<email>:` so each user gets their\n // own row — no leakage between sessions sharing the same DB.\n getH3App(nitroApp).use(\n `${P}/settings`,\n defineEventHandler(async (event: H3Event) => {\n const rawKey =\n (event.url?.pathname || \"\").replace(/^\\/+/, \"\").split(\"/\")[0] || \"\";\n const key = rawKey.replace(/[^a-zA-Z0-9_-]/g, \"\");\n if (!key) {\n setResponseStatus(event, 404);\n return { error: \"Settings key required\" };\n }\n\n const session = await getSession(event);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"unauthorized\" };\n }\n\n const method = getMethod(event);\n const requestSource =\n (event.node?.req?.headers?.[\"x-request-source\"] as\n | string\n | undefined) || undefined;\n\n if (method === \"GET\") {\n const value = await getUserSetting(session.email, key);\n if (!value) {\n setResponseStatus(event, 404);\n return { error: `No setting for ${key}` };\n }\n return value;\n }\n\n if (method === \"PUT\") {\n const body = await readBody(event);\n await putUserSetting(session.email, key, body, { requestSource });\n return body;\n }\n\n if (method === \"DELETE\") {\n await deleteUserSetting(session.email, key, { requestSource });\n return { ok: true };\n }\n\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }),\n );\n\n // ─── Avatar routes ──────────────────────────────────────────────────\n // GET /_agent-native/avatar/:email — fetch any user's avatar (public)\n // PUT /_agent-native/avatar — update current user's avatar (auth required)\n getH3App(nitroApp).use(\n `${P}/avatar`,\n defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n const emailParam = (event.url?.pathname || \"\")\n .replace(/^\\/+/, \"\")\n .split(\"/\")[0];\n\n if (method === \"GET\") {\n if (!emailParam) {\n setResponseStatus(event, 400);\n return { error: \"email required\" };\n }\n const data = await getSetting(\n `avatar:${decodeURIComponent(emailParam)}`,\n );\n return { image: (data as any)?.image ?? null };\n }\n\n if (method === \"PUT\") {\n const session = await getSession(event);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"unauthorized\" };\n }\n const body = await readBody(event);\n const { image } = body as { image?: string };\n if (!image || !image.startsWith(\"data:image/\")) {\n setResponseStatus(event, 400);\n return { error: \"image (data URL) required\" };\n }\n await putSetting(`avatar:${session.email}`, { image });\n return { ok: true };\n }\n\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }),\n );\n\n if (!options.disableAppState) {\n // Compose draft routes (more specific path, mounted first so the\n // generic app-state matcher below doesn't shadow them). The framework\n // strips the mount prefix from event.url.pathname before calling us,\n // so we just see e.g. `/abc-123` (id) or `/` (collection root).\n getH3App(nitroApp).use(\n `${P}/application-state/compose`,\n defineEventHandler(async (event: H3Event) => {\n const id =\n (event.url?.pathname || \"\").replace(/^\\/+/, \"\").split(\"/\")[0] || \"\";\n if (event.context) {\n event.context.params = { ...event.context.params, id };\n }\n const method = getMethod(event);\n if (!id) {\n if (method === \"GET\") return listComposeDrafts(event);\n if (method === \"DELETE\") return deleteAllComposeDrafts(event);\n } else {\n if (method === \"GET\") return getComposeDraft(event);\n if (method === \"PUT\") return putComposeDraft(event);\n if (method === \"DELETE\") return deleteComposeDraft(event);\n }\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }),\n );\n\n // Generic application state — match `/application-state/:key` only\n // (NOT `/application-state/compose/...` which the handler above owns).\n getH3App(nitroApp).use(\n `${P}/application-state`,\n defineEventHandler(async (event: H3Event) => {\n const key =\n (event.url?.pathname || \"\").replace(/^\\/+/, \"\").split(\"/\")[0] || \"\";\n // Skip — compose handler above already handled it\n if (key === \"compose\" || key === \"\") return;\n if (event.context) {\n event.context.params = { ...event.context.params, key };\n }\n const method = getMethod(event);\n if (method === \"GET\") return getState(event);\n if (method === \"PUT\") return putState(event);\n if (method === \"DELETE\") return deleteState(event);\n setResponseStatus(event, 405);\n return { error: \"Method not allowed\" };\n }),\n );\n }\n };\n}\n\n/**\n * Default core routes plugin — mount with no configuration needed.\n *\n * Usage in templates:\n * ```ts\n * // server/plugins/core-routes.ts\n * export { defaultCoreRoutesPlugin as default } from \"@agent-native/core/server\";\n * ```\n */\nexport const defaultCoreRoutesPlugin: NitroPluginDef = createCoreRoutesPlugin();\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createApp,\n createRouter,\n defineEventHandler,\n getMethod,\n getRequestHeader,\n setResponseHeader,\n setResponseStatus,\n type H3Event,\n} from \"h3\";\nimport path from \"path\";\nimport { agentEnv } from \"../shared/agent-env.js\";\nimport { readBody } from \"../server/h3-helpers.js\";\nimport { isDevEnvironment } from \"./auth.js\";\nimport { isLocalDatabase } from \"../db/client.js\";\n\n/**\n * Mirror of `isEnvVarWriteAllowed` in core-routes-plugin.ts. See the comment\n * there — env vars are deployment-wide globals and writes from authenticated\n * users would let one tenant overwrite shared Stripe / OpenAI / Sentry keys\n * for every other tenant on shared-DB hosted templates.\n */\nfunction isEnvVarWriteAllowed(): boolean {\n if (process.env.AGENT_NATIVE_ALLOW_ENV_VAR_WRITES === \"1\") return true;\n return isDevEnvironment() && isLocalDatabase();\n}\n\nexport interface EnvKeyConfig {\n /** Environment variable name (e.g. \"HUBSPOT_ACCESS_TOKEN\") */\n key: string;\n /** Human-readable label (e.g. \"HubSpot\") */\n label: string;\n /** Whether this key is required for the app to function */\n required?: boolean;\n /** Optional UI hint shown next to the field describing where to find this value. */\n helpText?: string;\n}\n\nexport interface CreateServerOptions {\n /** CORS options. Ignored (H3 handles CORS via middleware). Default: enabled. */\n cors?: Record<string, unknown> | false;\n /** JSON body parser limit. Kept for API compatibility (H3 uses readBody). */\n jsonLimit?: string;\n /** Custom ping message. Default: reads PING_MESSAGE env var, falls back to \"pong\" */\n pingMessage?: string;\n /** Disable the /_agent-native/ping health check. Default: false */\n disablePing?: boolean;\n /** Env key configuration for the settings UI. Enables /_agent-native/env-status and /_agent-native/env-vars routes. */\n envKeys?: EnvKeyConfig[];\n}\n\n/**\n * Parse a .env file into key-value pairs, preserving comments and empty lines for roundtrip.\n */\nfunction parseEnvFile(content: string): Map<string, string> {\n const vars = new Map<string, string>();\n for (const line of content.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) continue;\n const eqIndex = trimmed.indexOf(\"=\");\n if (eqIndex === -1) continue;\n const key = trimmed.slice(0, eqIndex).trim();\n let value = trimmed.slice(eqIndex + 1).trim();\n // Strip surrounding quotes\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n value = value.slice(1, -1);\n }\n vars.set(key, value);\n }\n return vars;\n}\n\n/**\n * Upsert vars into a .env file, preserving existing structure.\n */\nexport async function upsertEnvFile(\n envPath: string,\n vars: Array<{ key: string; value: string }>,\n): Promise<void> {\n // Sanitize: reject values that could inject additional env vars\n for (const { key, value } of vars) {\n if (/[\\n\\r\\0]/.test(value)) {\n throw new Error(\n `Invalid env var value for ${key}: must not contain newlines or control characters`,\n );\n }\n }\n\n const fs = await import(\"fs\");\n\n let content = \"\";\n try {\n content = fs.readFileSync(envPath, \"utf-8\");\n } catch {\n // File doesn't exist yet\n }\n\n const lines = content.split(\"\\n\");\n const remaining = new Map(vars.map((v) => [v.key, v.value]));\n\n // Update existing lines in place\n const updated = lines.map((line) => {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) return line;\n const eqIndex = trimmed.indexOf(\"=\");\n if (eqIndex === -1) return line;\n const key = trimmed.slice(0, eqIndex).trim();\n if (remaining.has(key)) {\n const value = remaining.get(key)!;\n remaining.delete(key);\n return `${key}=${value}`;\n }\n return line;\n });\n\n // Append new vars\n for (const [key, value] of remaining) {\n updated.push(`${key}=${value}`);\n }\n\n // Ensure trailing newline\n let result = updated.join(\"\\n\");\n if (!result.endsWith(\"\\n\")) result += \"\\n\";\n\n try {\n fs.mkdirSync(path.dirname(envPath), { recursive: true });\n fs.writeFileSync(envPath, result);\n } catch {\n // Edge runtimes don't have writable filesystem — skip silently\n }\n}\n\nexport interface CreateServerResult {\n app: ReturnType<typeof createApp>;\n router: ReturnType<typeof createRouter>;\n}\n\n/**\n * Create a pre-configured H3 app with standard agent-native setup:\n * - CORS headers via middleware\n * - /_agent-native/ping health check\n * - /_agent-native/env-status and /_agent-native/env-vars (when envKeys is provided)\n *\n * Returns { app, router } — mount routes on `router`.\n */\nexport function createServer(\n options: CreateServerOptions = {},\n): CreateServerResult {\n const app = createApp({\n onError(error, event) {\n // Suppress connection-reset errors — client disconnected mid-request (tab close, reload)\n const err = error as NodeJS.ErrnoException;\n const code = err?.code || (err?.cause as NodeJS.ErrnoException)?.code;\n if (code === \"ECONNRESET\" || code === \"ECONNABORTED\") return;\n if (err?.message === \"aborted\") return;\n console.error(\n `[agent-native] Server error: ${event.method} ${event.path}`,\n error,\n );\n },\n });\n\n // CORS middleware\n if (options.cors !== false) {\n const allowedOrigins = process.env.CORS_ALLOWED_ORIGINS\n ? process.env.CORS_ALLOWED_ORIGINS.split(\",\").map((o) => o.trim())\n : null;\n const isProduction = process.env.NODE_ENV === \"production\";\n\n /**\n * Localhost-style origins that we treat as same-trust in development.\n * When CORS_ALLOWED_ORIGINS is unset we still allow these (desktop tray\n * windows on a sibling port, the docs site at localhost:5173, etc.) but\n * in production an unset allowlist means no cross-origin credentials.\n */\n const LOCALHOST_RE =\n /^https?:\\/\\/(localhost|127\\.0\\.0\\.1|tauri\\.localhost)(:\\d+)?$/;\n\n app.use(\n defineEventHandler((event) => {\n const requestOrigin = getRequestHeader(event, \"origin\");\n const method = getMethod(event);\n\n /**\n * Decide whether the requesting origin is allowed. We never fall back\n * to \"the first allowlist entry\" when the origin isn't in the list —\n * that previously sent `Access-Control-Allow-Origin: <other-origin>`\n * with credentials enabled to attacker-controlled origins, which was\n * permissive enough that some clients followed through with the\n * credentialed request.\n */\n let allowedOrigin: string | null = null;\n if (allowedOrigins && allowedOrigins.length > 0) {\n if (requestOrigin && allowedOrigins.includes(requestOrigin)) {\n allowedOrigin = requestOrigin;\n }\n // Origin not in the explicit allowlist — emit no ACAO header.\n } else if (requestOrigin) {\n // No allowlist configured. In production we refuse credentialed\n // cross-origin requests except from localhost (desktop tray app\n // dev usage); in dev we allow any origin echo.\n if (isProduction) {\n if (LOCALHOST_RE.test(requestOrigin)) {\n allowedOrigin = requestOrigin;\n }\n // else: production + no allowlist + non-localhost origin → no ACAO\n } else {\n allowedOrigin = requestOrigin;\n }\n }\n // No origin header at all (same-origin fetch, server-to-server) and\n // no allowlist → fall through with `*`-equivalent behaviour: omit\n // ACAO entirely and let the browser apply its same-origin default.\n\n if (allowedOrigin) {\n setResponseHeader(\n event,\n \"Access-Control-Allow-Origin\",\n allowedOrigin,\n );\n setResponseHeader(event, \"Vary\", \"Origin\");\n // A specific origin means we can honor credentialed requests\n // (fetch with `credentials: \"include\"` — used by desktop tray\n // apps that share a same-site cookie with the web app). The\n // wildcard `*` is spec-incompatible with credentials, so only\n // set this when we're echoing a concrete origin.\n setResponseHeader(event, \"Access-Control-Allow-Credentials\", \"true\");\n } else if (!requestOrigin) {\n // No origin header — preserve the legacy permissive behaviour for\n // tools/scripts that hit the API directly (no credentialed CORS\n // semantics apply when there's no Origin).\n setResponseHeader(event, \"Access-Control-Allow-Origin\", \"*\");\n }\n\n setResponseHeader(\n event,\n \"Access-Control-Allow-Methods\",\n \"GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS\",\n );\n setResponseHeader(\n event,\n \"Access-Control-Allow-Headers\",\n \"Content-Type,Authorization,X-Requested-With,X-Request-Source,X-Agent-Native-CSRF\",\n );\n\n if (method === \"OPTIONS\") {\n // Reject preflights from disallowed cross-origin callers. We only\n // 204 if either (a) there was no Origin header (same-origin or\n // direct script invocation) or (b) the origin was in the allowlist\n // / dev fallback above. Otherwise we 403 so the browser surfaces\n // a hard CORS failure rather than blindly retrying with credentials.\n if (requestOrigin && !allowedOrigin) {\n return new Response(null, { status: 403 });\n }\n return new Response(null, { status: 204 });\n }\n }),\n );\n }\n\n const router = createRouter();\n app.use(router);\n\n // Health check\n if (!options.disablePing) {\n router.get(\n \"/_agent-native/ping\",\n defineEventHandler(() => {\n const message =\n options.pingMessage ?? process.env.PING_MESSAGE ?? \"pong\";\n return { message };\n }),\n );\n }\n\n // Env key management routes\n if (options.envKeys) {\n const envKeys = options.envKeys;\n\n router.get(\n \"/_agent-native/env-status\",\n defineEventHandler(() => {\n return envKeys.map((cfg) => ({\n key: cfg.key,\n label: cfg.label,\n required: cfg.required ?? false,\n configured: !!process.env[cfg.key],\n ...(cfg.helpText ? { helpText: cfg.helpText } : {}),\n }));\n }),\n );\n\n router.post(\n \"/_agent-native/env-vars\",\n defineEventHandler(async (event: H3Event) => {\n // Env vars are deployment-wide globals — see isEnvVarWriteAllowed\n // above. Disable the endpoint on any multi-tenant deploy.\n if (!isEnvVarWriteAllowed()) {\n setResponseStatus(event, 403);\n return {\n error:\n \"env-vars endpoint disabled on multi-tenant deployments. Use saveCredential(key, value, { userEmail, orgId, scope: 'org' }) to store per-org credentials.\",\n };\n }\n\n const body = await readBody(event);\n const { vars } = body as {\n vars?: Array<{ key: string; value: string }>;\n };\n\n if (!Array.isArray(vars) || vars.length === 0) {\n setResponseStatus(event, 400);\n return { error: \"vars array required\" };\n }\n\n // Only allow keys that are in the env config\n const allowedKeys = new Set(envKeys.map((k) => k.key));\n const filtered = vars.filter((v) => allowedKeys.has(v.key));\n if (filtered.length === 0) {\n setResponseStatus(event, 400);\n return { error: \"No recognized env keys in request\" };\n }\n\n // Write to .env file\n const envPath = path.join(process.cwd(), \".env\");\n await upsertEnvFile(envPath, filtered);\n\n // Update process.env so the app picks up the new values immediately\n for (const { key, value } of filtered) {\n process.env[key] = value;\n }\n\n // Notify parent (Builder or frame) via postMessage\n agentEnv.setVars(filtered);\n\n return { saved: filtered.map((v) => v.key) };\n }),\n );\n }\n\n return { app, router };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"credential-provider.js","sourceRoot":"","sources":["../../src/server/credential-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-provider.js","sourceRoot":"","sources":["../../src/server/credential-provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Credential provider abstraction.\n *\n * Every feature that needs an external credential (Anthropic API key,\n * Google OAuth tokens, OpenAI key, Slack bot token, etc.) should go through\n * one of the resolve*() helpers here instead of reading `process.env`\n * directly. That way the same feature can work in three modes:\n *\n * 1. User set their own key in .env → use it directly\n * 2. User connected Builder via `/cli-auth` → route through Builder proxy\n * 3. Neither → throw FeatureNotConfigured\n *\n * Templates catch FeatureNotConfigured and show a \"Connect Builder (1 click) /\n * set up your own key (guide)\" card.\n *\n * Today these helpers are used by the Builder-hosted LLM gateway, and the\n * shape is meant to grow to cover future managed credential integrations\n * (e.g. additional Builder-hosted services) without rewrites.\n */\n\nimport { getRequestUserEmail } from \"./request-context.js\";\nimport { DEV_MODE_USER_EMAIL } from \"./auth.js\";\n\nexport class FeatureNotConfiguredError extends Error {\n readonly requiredCredential: string;\n readonly builderConnectUrl?: string;\n readonly byokDocsUrl?: string;\n\n constructor(opts: {\n requiredCredential: string;\n message?: string;\n builderConnectUrl?: string;\n byokDocsUrl?: string;\n }) {\n super(\n opts.message ??\n `Feature requires credential \"${opts.requiredCredential}\". Connect Builder or set your own key.`,\n );\n this.name = \"FeatureNotConfiguredError\";\n this.requiredCredential = opts.requiredCredential;\n this.builderConnectUrl = opts.builderConnectUrl;\n this.byokDocsUrl = opts.byokDocsUrl;\n }\n}\n\n/**\n * Deployment-level credential fallback for single-tenant/local operation.\n * Multi-tenant call sites must gate this explicitly before calling.\n */\nexport function readDeployCredentialEnv(key: string): string | undefined {\n return process.env[key] || undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Per-user Builder credential resolution\n//\n// Builder keys are stored per-user in `app_secrets` (scope=user,\n// scopeId=email). The OAuth callback writes them there; the status/disconnect\n// endpoints read/delete them. `process.env` is the deployment-level fallback\n// (e.g. a single BUILDER_PRIVATE_KEY set in Netlify).\n// ---------------------------------------------------------------------------\n\nexport async function resolveBuilderCredential(\n key: string,\n): Promise<string | null> {\n const email = getRequestUserEmail();\n if (email) {\n try {\n const { readAppSecret } = await import(\"../secrets/storage.js\");\n const secret = await readAppSecret({\n key,\n scope: \"user\",\n scopeId: email,\n });\n if (secret) return secret.value;\n } catch {\n // Secrets table not ready — fall through to the env-fallback decision below\n }\n // Refuse the deploy-level env fallback for authenticated users in a\n // multi-tenant context. In a hosted shared-DB deploy `process.env.BUILDER_*`\n // would silently identify every user as whoever set the deploy-level keys —\n // exactly the cross-tenant leak we hit on the analytics demo (KVesta Space,\n // 2026-04). Per-user creds live in `app_secrets`; users without their own\n // connection get null here and see the \"Connect Builder\" prompt. The\n // local-dev session (`local@localhost`) is the only authenticated context\n // where the env fallback is safe — it identifies a single-user dev box.\n if (email !== DEV_MODE_USER_EMAIL) {\n return null;\n }\n }\n return readDeployCredentialEnv(key) || null;\n}\n\n/**\n * Resolve the current user's Builder private key.\n * Checks per-user app_secrets first, then falls back to process.env.\n */\nexport async function resolveBuilderPrivateKey(): Promise<string | null> {\n return resolveBuilderCredential(\"BUILDER_PRIVATE_KEY\");\n}\n\n/**\n * Resolve the current user's Builder auth header.\n * Returns `\"Bearer <key>\"` or null.\n */\nexport async function resolveBuilderAuthHeader(): Promise<string | null> {\n const key = await resolveBuilderPrivateKey();\n return key ? `Bearer ${key}` : null;\n}\n\n/**\n * Check whether the current user has a Builder private key configured\n * (per-user or deployment-level).\n */\nexport async function resolveHasBuilderPrivateKey(): Promise<boolean> {\n return !!(await resolveBuilderPrivateKey());\n}\n\n/**\n * Resolve all per-user Builder credentials. Used by the status endpoint\n * and agent-chat-plugin to get orgName, userId, etc.\n */\nexport async function resolveBuilderCredentials(): Promise<{\n privateKey: string | null;\n publicKey: string | null;\n userId: string | null;\n orgName: string | null;\n orgKind: string | null;\n}> {\n const [privateKey, publicKey, userId, orgName, orgKind] = await Promise.all([\n resolveBuilderCredential(\"BUILDER_PRIVATE_KEY\"),\n resolveBuilderCredential(\"BUILDER_PUBLIC_KEY\"),\n resolveBuilderCredential(\"BUILDER_USER_ID\"),\n resolveBuilderCredential(\"BUILDER_ORG_NAME\"),\n resolveBuilderCredential(\"BUILDER_ORG_KIND\"),\n ]);\n return { privateKey, publicKey, userId, orgName, orgKind };\n}\n\n/**\n * Write Builder credentials for the current user to per-user app_secrets.\n */\nexport async function writeBuilderCredentials(\n email: string,\n creds: {\n privateKey: string;\n publicKey: string;\n userId?: string | null;\n orgName?: string | null;\n orgKind?: string | null;\n },\n): Promise<void> {\n const { writeAppSecret } = await import(\"../secrets/storage.js\");\n const entries: Array<{ key: string; value: string }> = [\n { key: \"BUILDER_PRIVATE_KEY\", value: creds.privateKey },\n { key: \"BUILDER_PUBLIC_KEY\", value: creds.publicKey },\n ];\n if (creds.userId) {\n entries.push({ key: \"BUILDER_USER_ID\", value: creds.userId });\n }\n if (creds.orgName) {\n entries.push({ key: \"BUILDER_ORG_NAME\", value: creds.orgName });\n }\n if (creds.orgKind) {\n entries.push({ key: \"BUILDER_ORG_KIND\", value: creds.orgKind });\n }\n await Promise.all(\n entries.map(({ key, value }) =>\n writeAppSecret({ key, value, scope: \"user\", scopeId: email }),\n ),\n );\n}\n\n/**\n * Delete Builder credentials for the current user from app_secrets.\n */\nexport async function deleteBuilderCredentials(email: string): Promise<void> {\n const { deleteAppSecret } = await import(\"../secrets/storage.js\");\n const keys = [\n \"BUILDER_PRIVATE_KEY\",\n \"BUILDER_PUBLIC_KEY\",\n \"BUILDER_USER_ID\",\n \"BUILDER_ORG_NAME\",\n \"BUILDER_ORG_KIND\",\n ];\n await Promise.all(\n keys.map((key) =>\n deleteAppSecret({ key, scope: \"user\", scopeId: email }).catch(() => {}),\n ),\n );\n}\n\n// ---------------------------------------------------------------------------\n// Generic per-user secret resolution\n//\n// New consumers should prefer this over reading `process.env.X` directly.\n// User-pasted secrets live in `app_secrets` (encrypted, scope=user); the\n// settings UI / onboarding panels write here. Deploy-level env vars are\n// the fallback for unauthenticated/CLI/background contexts where there's\n// no user to scope by — never the silent fallback for an authenticated\n// request, since on a multi-tenant deploy that would silently identify\n// every user as whoever set the deploy-level key (KVesta Space, 2026-04).\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve a per-user secret. Reads from `app_secrets` first (scoped by\n * the current request's authenticated user); falls back to `process.env`\n * only for unauthenticated/CLI/background contexts.\n */\nexport async function resolveSecret(key: string): Promise<string | null> {\n const email = getRequestUserEmail();\n if (email && email !== DEV_MODE_USER_EMAIL) {\n try {\n const { readAppSecret } = await import(\"../secrets/storage.js\");\n const secret = await readAppSecret({\n key,\n scope: \"user\",\n scopeId: email,\n });\n if (secret?.value) return secret.value;\n } catch {\n // Secrets table not ready — treat as missing.\n }\n // Authenticated multi-tenant context: never fall back to process.env.\n // The deploy-level value would silently impersonate the actual key\n // owner across every tenant.\n return null;\n }\n // Unauthenticated / local-dev / CLI / background context: env fallback\n // is safe because there's no user to mis-identify.\n return process.env[key] || null;\n}\n\n// ---------------------------------------------------------------------------\n// Synchronous helpers — env-only fallbacks for contexts where per-user\n// lookup isn't possible (sync isConfigured checks, CLI scripts).\n// ---------------------------------------------------------------------------\n\n/** True when a Builder private key is configured at the deployment level. */\nexport function hasBuilderPrivateKey(): boolean {\n return !!process.env.BUILDER_PRIVATE_KEY;\n}\n\n/** The origin for Builder-proxied API calls. Overridable for testing. */\nexport function getBuilderProxyOrigin(): string {\n return (\n process.env.BUILDER_PROXY_ORIGIN ||\n process.env.AIR_HOST ||\n process.env.BUILDER_API_HOST ||\n \"https://ai-services.builder.io\"\n );\n}\n\n/**\n * Base URL for the public Builder LLM gateway (distinct from the internal\n * proxy origin above — the public gateway lives at api.builder.io/codegen,\n * while the internal origin is ai-services.builder.io).\n * Override via BUILDER_GATEWAY_BASE_URL for staging / testing.\n */\nexport function getBuilderGatewayBaseUrl(): string {\n return (\n process.env.BUILDER_GATEWAY_BASE_URL ||\n \"https://api.builder.io/codegen/gateway/v1\"\n );\n}\n\n/** Authorization header value for Builder-proxied calls (env-only). */\nexport function getBuilderAuthHeader(): string | null {\n const key = process.env.BUILDER_PRIVATE_KEY;\n return key ? `Bearer ${key}` : null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"csrf.js","sourceRoot":"","sources":["../../src/server/csrf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csrf.js","sourceRoot":"","sources":["../../src/server/csrf.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Defense-in-depth CSRF check for framework state-changing routes.\n *\n * Threat model: action endpoints (`/_agent-native/actions/*`), tool endpoints\n * (`/_agent-native/tools/*`), and a handful of other state-changing\n * `/_agent-native/*` routes use the better-auth session cookie, which is\n * configured with `SameSite=None; Secure; Partitioned` so the iframe editor\n * (and other cross-site embeds) can authenticate. `SameSite=None` means the\n * browser ships the session cookie on top-level form POSTs from any origin —\n * which is exactly the precondition for classic cross-site request forgery.\n *\n * The browser still gates \"non-simple\" requests behind a CORS preflight, so\n * an attacker who has to send `Content-Type: application/json` is forced\n * through OPTIONS, which our CORS middleware (`create-server.ts`) rejects\n * for disallowed origins. But the simple-request bypass (`Content-Type:\n * text/plain` on a `<form enctype=\"text/plain\">` POST, or `multipart/form-data`)\n * never preflights — the browser delivers it cross-origin with cookies.\n *\n * Mitigation: this middleware rejects any state-changing\n * (`POST/PUT/PATCH/DELETE`) request to `/_agent-native/*` that\n *\n * 1. carries the auth-cookie pattern (any cookie at all is a heuristic\n * good-enough proxy — we don't want to deny anonymous fetches), AND\n * 2. is NOT clearly same-origin / first-party. We trust:\n * - `Sec-Fetch-Site: same-origin` (sent by every modern browser on\n * same-origin fetch — Chrome/Firefox/Safari/Edge all support it).\n * - `X-Agent-Native-CSRF` custom header. Custom headers force a\n * preflight, so an attacker can't add one cross-origin.\n * - `Content-Type: application/json` request body. Same logic — JSON\n * Content-Type is a non-simple request that triggers preflight.\n *\n * Why the existing CORS check isn't enough: a simple-request POST never\n * preflights, so the browser sends it through and only blocks the *response*\n * from being readable cross-origin. The state change (delete-account, write\n * SQL, etc.) happens server-side regardless. We need a server-side check that\n * proves first-party intent before running the action.\n *\n * Opt-out marker: a handful of routes legitimately accept cross-origin POSTs\n * — webhook endpoints (Slack, Telegram, email), the public A2A endpoint\n * (`/_agent-native/a2a`), the integrations process-task self-fire, and so on.\n * Those are listed in `CSRF_ALLOWLIST_PREFIXES` below; if you add a new\n * cross-origin-callable route, add it there.\n */\n\nimport {\n defineEventHandler,\n getMethod,\n getRequestHeader,\n setResponseStatus,\n} from \"h3\";\n\n/**\n * Path prefixes (relative to the framework prefix `/_agent-native`) that are\n * allowed to receive cross-origin state-changing POSTs without first-party\n * markers. These are signed/authenticated through other mechanisms (HMAC,\n * JWT, internal token) so they don't need cookie-based CSRF protection.\n */\nconst CSRF_ALLOWLIST_PREFIXES = [\n // Integration webhooks — verified by HMAC against a per-integration secret.\n \"/integrations/\",\n // A2A JSON-RPC endpoints — verified by signed JWT (when A2A_SECRET set) or\n // explicitly opt-in unauthenticated (handled at the A2A layer).\n \"/a2a\",\n // Better Auth's own login/sign-in/social-callback routes. Better Auth\n // ships its own CSRF protection (Origin/Sec-Fetch checks on its handlers)\n // and cookies are needed for the OAuth callback round-trip.\n \"/auth/\",\n // Stripe / Paddle / billing webhooks dropped in by templates.\n \"/billing/webhook\",\n // Public share endpoints — read-only and never cookie-driven, but kept\n // here so a templated POST (e.g. comment-on-public-recording) doesn't 403.\n \"/share/\",\n // OAuth callbacks (Builder, Google, Slack, Notion, Zoom). These get a\n // `code` query param via top-level navigation — they DO ride the session\n // cookie and they SHOULD validate state, but the framework can't see the\n // state token. Each callback handler is responsible for its own CSRF\n // check (signed state tokens).\n \"/oauth/\",\n // Builder's CLI-auth callback — uses the BUILDER_STATE_PARAM signed token\n // to authenticate the round-trip; framework CSRF check would block it.\n \"/builder/callback\",\n];\n\nconst STATE_CHANGING_METHODS = new Set([\"POST\", \"PUT\", \"PATCH\", \"DELETE\"]);\n\n/**\n * Decide whether a request is \"first-party enough\" to trust as not-CSRF.\n * Any of the following make a request non-CSRF:\n *\n * - `Sec-Fetch-Site: same-origin` (or `none` for top-level navigations\n * to our own pages — but state-changing methods don't ship `none`).\n * - `X-Agent-Native-CSRF` header (any value, even \"1\"). This is a custom\n * header so the browser forces a preflight cross-origin, which our\n * CORS layer rejects for disallowed origins.\n * - `Content-Type: application/json` (case-insensitive). JSON content\n * type is a non-simple request that triggers preflight.\n *\n * We accept ANY of these — the goal is \"did the request come through a\n * channel the browser would have preflighted\", not a strict-mode token.\n */\nfunction looksFirstParty(event: any): boolean {\n const sfs = getRequestHeader(event, \"sec-fetch-site\");\n if (sfs === \"same-origin\" || sfs === \"same-site\" || sfs === \"none\") {\n return true;\n }\n if (getRequestHeader(event, \"x-agent-native-csrf\")) {\n return true;\n }\n const contentType = getRequestHeader(event, \"content-type\");\n if (\n contentType &&\n typeof contentType === \"string\" &&\n contentType.toLowerCase().includes(\"application/json\")\n ) {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true when the request carries any cookie. We use \"has any cookie\"\n * as a coarse heuristic for \"the browser is going to attach the session\n * cookie\" — anonymous tools (curl, server-to-server) typically don't send\n * cookies, so they bypass this check entirely.\n */\nfunction requestHasCookies(event: any): boolean {\n const cookie = getRequestHeader(event, \"cookie\");\n return typeof cookie === \"string\" && cookie.trim().length > 0;\n}\n\n/**\n * Path passed in is the full request URL pathname (e.g. `/_agent-native/actions/foo`).\n * `frameworkPrefix` should be the framework route prefix without trailing slash,\n * e.g. `/_agent-native`.\n */\nfunction isOnAllowlist(pathname: string, frameworkPrefix: string): boolean {\n if (!pathname.startsWith(frameworkPrefix)) return false;\n const sub = pathname.slice(frameworkPrefix.length);\n for (const allowed of CSRF_ALLOWLIST_PREFIXES) {\n if (sub.startsWith(allowed)) return true;\n }\n return false;\n}\n\n/**\n * Create the framework CSRF middleware.\n *\n * Mount this BEFORE any state-changing route handler. The middleware\n * - lets every non-state-changing method through (GET/HEAD/OPTIONS).\n * - lets requests without cookies through (anonymous/server tools).\n * - lets allowlisted paths through (webhooks, A2A, OAuth callbacks).\n * - lets first-party-shaped requests through (custom header, JSON\n * Content-Type, or `Sec-Fetch-Site: same-origin`).\n * - rejects everything else with 403.\n */\nexport function createCsrfMiddleware(\n frameworkPrefix: string = \"/_agent-native\",\n) {\n return defineEventHandler((event) => {\n const method = getMethod(event);\n if (!STATE_CHANGING_METHODS.has(method)) return undefined;\n\n const pathname = event.url?.pathname ?? \"\";\n if (!pathname.startsWith(frameworkPrefix)) return undefined;\n if (isOnAllowlist(pathname, frameworkPrefix)) return undefined;\n\n // No cookie = no risk of confused-deputy CSRF on the session cookie.\n if (!requestHasCookies(event)) return undefined;\n\n if (looksFirstParty(event)) return undefined;\n\n setResponseStatus(event, 403);\n return {\n error:\n \"CSRF check failed: state-changing requests must include a same-origin marker. Set Content-Type: application/json or X-Agent-Native-CSRF: 1.\",\n };\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../src/server/date-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAU,EAAE,EAAW;IAC1D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC;IAChE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC7D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAW;IACzC,OAAO,oBAAoB,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../src/server/date-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAU,EAAE,EAAW;IAC1D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC;IAChE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC7D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAW;IACzC,OAAO,oBAAoB,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC;AACtE,CAAC","sourcesContent":["/**\n * Timezone-aware date helpers for actions.\n *\n * The motivating case: a user at 6pm PT logs a meal. If the server computes\n * \"today\" with `new Date()`, it sees UTC (already past midnight) and stores\n * the entry as tomorrow. `todayInTimezone()` formats today in the caller's\n * timezone instead.\n *\n * Prefer `todayInTimezone()` over inline `new Date().toISOString().slice(0,10)`\n * or `new Date().getFullYear()` constructions when storing a `YYYY-MM-DD` date\n * column that represents the user's local day.\n */\nimport { getRequestTimezone } from \"./request-context.js\";\n\n/**\n * Format a `Date` as `YYYY-MM-DD` in the given IANA timezone.\n *\n * Uses `Intl.DateTimeFormat` with the `en-CA` locale because it natively\n * emits `YYYY-MM-DD` order, which avoids reassembling parts by hand. Falls\n * back to the host timezone if `tz` is omitted.\n */\nexport function formatDateInTimezone(date: Date, tz?: string): string {\n const parts = new Intl.DateTimeFormat(\"en-CA\", {\n timeZone: tz,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).formatToParts(date);\n const y = parts.find((p) => p.type === \"year\")?.value ?? \"1970\";\n const m = parts.find((p) => p.type === \"month\")?.value ?? \"01\";\n const d = parts.find((p) => p.type === \"day\")?.value ?? \"01\";\n return `${y}-${m}-${d}`;\n}\n\n/**\n * Return today's date as `YYYY-MM-DD` in the given IANA timezone.\n * If `tz` is omitted, falls back to `getRequestTimezone()` (set from the\n * `x-user-timezone` header on action requests), then to the host timezone.\n */\nexport function todayInTimezone(tz?: string): string {\n return formatDateInTimezone(new Date(), tz ?? getRequestTimezone());\n}\n"]}