{"version":3,"file":"index-NwCCMEvM.js","sources":["../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/react/jsx-runtime.js","../../node_modules/react-dom/client.js","../../src/types/helpers.ts","../../src/types/modal.ts","../../src/types/ux.ts","../../src/schema/factory.ts","../../src/schema/schema.ts","../../src/config/index.ts","../../src/debug/index.ts","../../src/fx/index.ts","../../src/hal/index.ts","../../src/token/jwt-parser.ts","../../src/token/index.ts","../../src/api/index.ts","../../src/loaders/index.ts","../../node_modules/starfx/esm/react.js","../../src/react/index.ts","../../src/routes/index.ts","../../node_modules/@stripe/stripe-js/dist/pure.mjs","../../src/billing/index.ts","../../src/auth/loader.ts","../../src/reset-store/index.ts","../../src/tuna/index.ts","../../src/auth/token.ts","../../src/auth/webauthn.ts","../../src/auth/login.ts","../../src/auth/logout.ts","../../src/hubspot/index.ts","../../src/users/serializers.ts","../../src/users/selectors.ts","../../src/organizations/index.ts","../../src/users/effects.ts","../../src/users/index.ts","../../src/auth/organization.ts","../../src/auth/signup.ts","../../src/auth/verify-email.ts","../../src/auth/elevate.ts","../../src/auth/saml.ts","../../src/auth/scim.ts","../../src/auth/pass.ts","../../src/auth/otp.ts","../../src/auth/membership.ts","../../src/source/index.ts","../../src/string-utils/index.ts","../../src/deploy/container/utils.ts","../../src/deploy/stack/index.ts","../../src/deploy/environment/index.ts","../../src/deploy/service/index.ts","../../src/deploy/operation/index.ts","../../src/deploy/app/utils.ts","../../src/deploy/app/index.ts","../../src/date/index.ts","../../src/deploy/certificate/index.ts","../../src/deploy/database/index.ts","../../src/deploy/endpoint/index.ts","../../src/deploy/service-sizing-policy/index.ts","../../src/deploy/log-drain/index.ts","../../src/deploy/database-images/index.ts","../../src/deploy/metric-drain/index.ts","../../src/secrets/index.ts","../../__vite-browser-external","../../node_modules/dotenv/lib/main.js","../../src/deploy/configuration/index.ts","../../src/deploy/app-service-definitions/index.ts","../../src/deploy/plan/index.ts","../../src/deploy/activity/index.ts","../../src/roles/index.ts","../../src/deploy/permission/index.ts","../../src/deploy/release/index.ts","../../src/deploy/container/index.ts","../../src/deploy/vpc-peer/index.ts","../../src/deploy/vpn-tunnel/index.ts","../../src/deploy/code-scan-result/index.ts","../../src/sort/index.ts","../../src/deploy/backup/index.ts","../../src/deploy/backup-retention-policy/index.ts","../../src/deploy/database-credential/index.ts","../../src/deploy/activity-report/index.ts","../../src/deploy/image/index.ts","../../src/deploy/disk/index.ts","../../src/deploy/support/index.ts","../../src/deploy/cost/calc.ts","../../src/deploy/cost/index.ts","../../src/deploy/custom-resource/index.ts","../../src/deploy/dashboard/index.ts","../../src/deploy/edge/index.ts","../../src/deploy/integration/index.ts","../../src/deploy/llm-integration/index.ts","../../src/deploy/manual_scale_recommendation/index.ts","../../src/deploy/entities.ts","../../src/deployment/index.ts","../../src/deploy/search/index.ts","../../src/system-status/index.ts","../../src/bootup/index.ts","../../src/redirect-path/index.ts","../../src/ui/shared/loading.tsx","../../src/ui/shared/group.tsx","../../src/ui/shared/icons.tsx","../../src/ui/shared/tokens.ts","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","../../node_modules/@floating-ui/core/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../../src/ui/shared/tooltip.tsx","../../src/ui/shared/button.tsx","../../src/ui/shared/external-link.tsx","../../src/status-variant/index.ts","../../src/ui/shared/banner.tsx","../../src/ui/shared/form-group.tsx","../../src/ui/shared/detail-page-section.tsx","../../src/ui/shared/table.tsx","../../src/ui/shared/load-resources.tsx","../../src/ui/shared/select.tsx","../../src/ui/shared/select-stacks.tsx","../../src/ui/shared/select-environments.tsx","../../src/ui/shared/input.tsx","../../src/ui/shared/action-list-view.tsx","../../src/ui/shared/box.tsx","../../src/ui/shared/breadcrumbs.tsx","../../src/ui/shared/tabs.tsx","../../src/ui/shared/detail-page-header-view.tsx","../../src/ui/shared/resource-list-view.tsx","../../src/ui/shared/aptible-logo.tsx","../../src/nav/index.ts","../../src/ui/hooks/use-trial-notice.ts","../../src/ui/shared/link.tsx","../../src/ui/shared/org-picker.tsx","../../src/ui/shared/org-requirements.tsx","../../src/ui/hooks/use-current-user.ts","../../src/ui/hooks/use-visibility.ts","../../src/ui/hooks/use-poller.ts","../../src/ui/hooks/use-latest-code-results.ts","../../src/ui/hooks/use-env-ops-poller.ts","../../src/ui/hooks/use-project-ops.ts","../../src/ui/hooks/use-validator.ts","../../src/ssh-keys/index.ts","../../src/ui/hooks/use-ssh-key-required.ts","../../src/ui/hooks/use-env-editor.ts","../../src/ui/hooks/use-paginate.ts","../../src/invitations/invitations.ts","../../src/ui/hooks/use-invitation.ts","../../src/ui/hooks/use-paginate-backups.ts","../../src/ui/hooks/use-paginated-activity-reports.ts","../../src/ui/hooks/use-users-for-role.ts","../../src/ui/hooks/use-paginate-operations.ts","../../src/ui/hooks/use-database-scaler.ts","../../src/ui/shared/user-menu.tsx","../../src/ui/shared/application-sidebar.tsx","../../src/ui/shared/settings-sidebar.tsx","../../src/ui/shared/progress.tsx","../../src/ui/shared/code.tsx","../../src/ui/shared/cost-estimate-tooltip.tsx","../../src/ui/shared/docker.tsx","../../src/ui/shared/git.tsx","../../src/ui/shared/operation-status.tsx","../../src/ui/shared/resource-table.tsx","../../src/ui/shared/app/app-list.tsx","../../src/ui/shared/copy.tsx","../../src/ui/shared/pill.tsx","../../src/ui/shared/scale-recs.tsx","../../src/ui/shared/app/services-detail.tsx","../../src/ui/shared/app/endpoint-selector.tsx","../../src/ui/shared/pre-code.tsx","../../src/ui/shared/app/config.tsx","../../src/ui/shared/db/database-list.tsx","../../src/ui/shared/db/backup-list.tsx","../../src/id/index.ts","../../src/validator/index.ts","../../src/ui/shared/db/creator-form.tsx","../../src/ui/shared/db/selector.tsx","../../src/ui/shared/endpoint/util.tsx","../../src/ui/shared/endpoint/endpoint-list.tsx","../../src/ui/shared/db/endpoints-detail.tsx","../../src/ui/shared/secret.tsx","../../src/ui/shared/db/credential.tsx","../../src/ui/shared/db/scale-options.tsx","../../src/environment-table/index.ts","../../src/ui/shared/environment/environment-list.tsx","../../src/ui/shared/key-value.tsx","../../src/ui/shared/environment/backup-retention-policy-view.tsx","../../src/ui/shared/role.tsx","../../src/ui/shared/environment/perms.tsx","../../src/ui/shared/verify-email/resend-verification-email-form.tsx","../../src/ui/shared/modal-portal.tsx","../../src/ui/shared/how-it-works-footer.tsx","../../src/ui/shared/plan.tsx","../../src/ui/shared/log-viewer.tsx","../../src/ui/shared/activity.tsx","../../src/ui/shared/permission.tsx","../../src/ui/shared/status-box.tsx","../../src/ui/shared/resource-group-box.tsx","../../src/ui/shared/active-operation-notice.tsx","../../src/ui/shared/footer.tsx","../../src/ui/shared/stack.tsx","../../src/ui/shared/progress-project.tsx","../../src/ui/shared/add-ssh-key.tsx","../../src/ui/shared/cert.tsx","../../src/ui/shared/cert-selector.tsx","../../src/ui/shared/onboarding-link.tsx","../../src/ui/shared/csv.tsx","../../src/ui/shared/metrics-controls.tsx","../../src/ui/shared/cookie-notice.tsx","../../src/metric-tunnel/index.ts","../../src/ui/shared/container-metrics-chart.tsx","../../src/ui/shared/container-metrics-table.tsx","../../src/feedback/index.ts","../../src/ui/shared/env-editor.tsx","../../src/ui/shared/app-auto-deploy-guide.tsx","../../src/ui/shared/deployments-table.tsx","../../src/ui/shared/source.tsx","../../src/ui/shared/service-pricing-calc.tsx","../../src/ui/shared/us-states.ts","../../src/ui/shared/countries.ts","../../src/ui/shared/last-scale.tsx","../../src/notice/index.ts","../../src/ui/shared/notice.tsx","../../src/ui/layouts/auth-required.tsx","../../src/ui/layouts/elevate-required.tsx","../../src/search/index.ts","../../src/ui/layouts/app-sidebar-layout.tsx","../../src/ui/layouts/app-detail-layout.tsx","../../src/ui/shared/db/database-eol-notice.tsx","../../src/ui/layouts/database-detail-layout.tsx","../../src/ui/layouts/environment-detail-layout.tsx","../../src/ui/layouts/hero-bg-layout.tsx","../../src/ui/layouts/error-boundary.tsx","../../src/ui/layouts/operation-detail-layout.tsx","../../src/ui/layouts/perm-required.tsx","../../src/ui/layouts/stack-detail-layout.tsx","../../src/ui/layouts/endpoint-detail-layout.tsx","../../src/ui/layouts/cert-detail-layout.tsx","../../src/ui/layouts/settings-layout.tsx","../../src/ui/layouts/service-detail-layout.tsx","../../src/ui/layouts/role-detail.tsx","../../src/ui/layouts/get-started-layout.tsx","../../src/ui/layouts/source-detail-layout.tsx","../../src/ui/pages/not-found.tsx","../../src/ui/pages/login.tsx","../../src/ui/pages/signup.tsx","../../src/ui/pages/create-org.tsx","../../src/ui/pages/elevate.tsx","../../src/mfa/index.ts","../../src/ui/pages/settings-security.tsx","../../src/ui/pages/settings-ssh.tsx","../../src/ui/pages/settings-otp-setup.tsx","../../src/ui/pages/settings-otp-recovery-codes.tsx","../../src/ui/pages/settings-add-security-key.tsx","../../src/ui/pages/settings-team.tsx","../../src/ui/pages/settings-team-members.tsx","../../src/ui/pages/settings-team-members-edit.tsx","../../src/ui/pages/settings-team-contacts.tsx","../../src/ui/pages/settings-team-sso.tsx","../../src/ui/pages/settings-team-pending-invites.tsx","../../src/ui/pages/settings-team-roles.tsx","../../src/ui/pages/role-detail.tsx","../../src/ui/pages/role-detail-members.tsx","../../src/ui/pages/role-detail-environments.tsx","../../src/ui/pages/role-detail-settings.tsx","../../src/ui/pages/settings-team-invite.tsx","../../src/auth/accept-invitation.ts","../../src/ui/pages/team-accept-invite.tsx","../../src/ui/pages/stack-detail.tsx","../../src/ui/pages/app-detail-service-metrics.tsx","../../src/ui/pages/app-detail-service-scale.tsx","../../src/ui/pages/app-detail-service-settings.tsx","../../src/ui/pages/deploy.tsx","../../src/ui/pages/environment-detail.tsx","../../src/ui/pages/environment-detail-activity-reports.tsx","../../src/ui/pages/apps.tsx","../../src/ui/pages/databases.tsx","../../src/ui/pages/logout.tsx","../../src/ui/pages/settings.tsx","../../src/ui/pages/app-detail-activity.tsx","../../src/ui/pages/app-detail-endpoints.tsx","../../src/ui/pages/app-detail-services.tsx","../../src/ui/pages/app-detail-settings.tsx","../../src/ui/pages/app-detail-service.tsx","../../src/ui/pages/app-detail-ci-cd.tsx","../../src/ui/pages/app-detail-deps.tsx","../../src/ui/pages/app-detail-deployments.tsx","../../src/ui/pages/database-detail-activity.tsx","../../src/ui/pages/database-detail-backups.tsx","../../src/ui/pages/database-detail-endpoints.tsx","../../src/ui/pages/database-detail-cluster.tsx","../../src/ui/pages/database-detail-scale.tsx","../../src/ui/pages/database-detail-settings.tsx","../../src/ui/pages/database-detail-creds.tsx","../../src/ui/pages/database-create-endpoint.tsx","../../src/ui/pages/database-detail.tsx","../../src/ui/pages/database-detail-metrics.tsx","../../src/ui/pages/services.tsx","../../src/ui/pages/verify-email.tsx","../../src/ui/pages/environment-detail-activity.tsx","../../src/ui/pages/environment-detail-backups.tsx","../../src/ui/pages/environment-detail-certificates.tsx","../../src/ui/pages/environment-detail-integrations.tsx","../../src/ui/pages/environment-detail-apps.tsx","../../src/ui/pages/environment-detail-databases.tsx","../../src/ui/pages/environment-detail-security.tsx","../../src/ui/pages/environment-detail-settings.tsx","../../src/ui/pages/environments.tsx","../../src/ui/pages/error.tsx","../../src/ui/pages/forgot-pass.tsx","../../src/ui/pages/billing-method.tsx","../../src/ui/pages/impersonate.tsx","../../src/ui/pages/plans.tsx","../../src/ui/pages/sso.tsx","../../src/ui/pages/activity.tsx","../../src/ui/pages/deployments.tsx","../../src/stack-table/index.ts","../../src/ui/pages/stacks.tsx","../../src/ui/pages/stack-detail-environments.tsx","../../src/ui/pages/stack-detail-vpn-tunnels.tsx","../../src/ui/pages/stack-detail-vpc-peering.tsx","../../src/ui/pages/search.tsx","../../src/ui/pages/endpoint-detail.tsx","../../src/ui/pages/endpoint-detail-setup.tsx","../../src/ui/pages/endpoint-detail-activity.tsx","../../src/ui/pages/endpoint-detail-settings.tsx","../../src/ui/pages/home.tsx","../../src/ui/pages/app-create-endpoint.tsx","../../src/ui/pages/create-env-app.tsx","../../src/ui/pages/create-database.tsx","../../src/ui/pages/operation-detail.tsx","../../src/ui/pages/styles.tsx","../../src/ui/pages/backup-restore.tsx","../../src/ui/pages/cert-detail.tsx","../../src/ui/pages/cert-detail-apps.tsx","../../src/ui/pages/cert-detail-endpoints.tsx","../../src/ui/pages/cert-detail-settings.tsx","../../src/ui/pages/environment-detail-create-cert.tsx","../../src/ui/pages/create-metric-drain.tsx","../../src/ui/pages/create-log-drain.tsx","../../node_modules/@mintlify/widget-react/dist/widget-react.js","../../src/ui/pages/support.tsx","../../src/ui/pages/diagnostics.tsx","../../node_modules/clsx/dist/clsx.mjs","../../node_modules/date-fns/toDate.mjs","../../node_modules/date-fns/constructFrom.mjs","../../node_modules/date-fns/addDays.mjs","../../node_modules/date-fns/addMonths.mjs","../../node_modules/date-fns/addMilliseconds.mjs","../../node_modules/date-fns/constants.mjs","../../node_modules/date-fns/addHours.mjs","../../node_modules/date-fns/_lib/defaultOptions.mjs","../../node_modules/date-fns/startOfWeek.mjs","../../node_modules/date-fns/startOfISOWeek.mjs","../../node_modules/date-fns/getISOWeekYear.mjs","../../node_modules/date-fns/startOfDay.mjs","../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../../node_modules/date-fns/differenceInCalendarDays.mjs","../../node_modules/date-fns/startOfISOWeekYear.mjs","../../node_modules/date-fns/addMinutes.mjs","../../node_modules/date-fns/addQuarters.mjs","../../node_modules/date-fns/addSeconds.mjs","../../node_modules/date-fns/addWeeks.mjs","../../node_modules/date-fns/addYears.mjs","../../node_modules/date-fns/max.mjs","../../node_modules/date-fns/min.mjs","../../node_modules/date-fns/isSameDay.mjs","../../node_modules/date-fns/isDate.mjs","../../node_modules/date-fns/isValid.mjs","../../node_modules/date-fns/differenceInCalendarMonths.mjs","../../node_modules/date-fns/getQuarter.mjs","../../node_modules/date-fns/differenceInCalendarQuarters.mjs","../../node_modules/date-fns/differenceInCalendarYears.mjs","../../node_modules/date-fns/differenceInDays.mjs","../../node_modules/date-fns/endOfDay.mjs","../../node_modules/date-fns/endOfMonth.mjs","../../node_modules/date-fns/startOfQuarter.mjs","../../node_modules/date-fns/startOfMonth.mjs","../../node_modules/date-fns/endOfYear.mjs","../../node_modules/date-fns/startOfYear.mjs","../../node_modules/date-fns/endOfWeek.mjs","../../node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../../node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../../node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../../node_modules/date-fns/locale/en-US/_lib/localize.mjs","../../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../../node_modules/date-fns/locale/en-US/_lib/match.mjs","../../node_modules/date-fns/locale/en-US.mjs","../../node_modules/date-fns/getDayOfYear.mjs","../../node_modules/date-fns/getISOWeek.mjs","../../node_modules/date-fns/getWeekYear.mjs","../../node_modules/date-fns/startOfWeekYear.mjs","../../node_modules/date-fns/getWeek.mjs","../../node_modules/date-fns/_lib/addLeadingZeros.mjs","../../node_modules/date-fns/_lib/format/lightFormatters.mjs","../../node_modules/date-fns/_lib/format/formatters.mjs","../../node_modules/date-fns/_lib/format/longFormatters.mjs","../../node_modules/date-fns/_lib/protectedTokens.mjs","../../node_modules/date-fns/format.mjs","../../node_modules/date-fns/getDate.mjs","../../node_modules/date-fns/getDay.mjs","../../node_modules/date-fns/getDaysInMonth.mjs","../../node_modules/date-fns/getDefaultOptions.mjs","../../node_modules/date-fns/getHours.mjs","../../node_modules/date-fns/getISODay.mjs","../../node_modules/date-fns/getMinutes.mjs","../../node_modules/date-fns/getMonth.mjs","../../node_modules/date-fns/getSeconds.mjs","../../node_modules/date-fns/getTime.mjs","../../node_modules/date-fns/getYear.mjs","../../node_modules/date-fns/isAfter.mjs","../../node_modules/date-fns/isBefore.mjs","../../node_modules/date-fns/isEqual.mjs","../../node_modules/date-fns/transpose.mjs","../../node_modules/date-fns/parse/_lib/Setter.mjs","../../node_modules/date-fns/parse/_lib/Parser.mjs","../../node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","../../node_modules/date-fns/parse/_lib/constants.mjs","../../node_modules/date-fns/parse/_lib/utils.mjs","../../node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","../../node_modules/date-fns/setWeek.mjs","../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","../../node_modules/date-fns/setISOWeek.mjs","../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","../../node_modules/date-fns/setDay.mjs","../../node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","../../node_modules/date-fns/setISODay.mjs","../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","../../node_modules/date-fns/parse/_lib/parsers.mjs","../../node_modules/date-fns/parse.mjs","../../node_modules/date-fns/isSameMonth.mjs","../../node_modules/date-fns/isSameQuarter.mjs","../../node_modules/date-fns/isSameYear.mjs","../../node_modules/date-fns/isWithinInterval.mjs","../../node_modules/date-fns/subDays.mjs","../../node_modules/date-fns/parseISO.mjs","../../node_modules/date-fns/setMonth.mjs","../../node_modules/date-fns/set.mjs","../../node_modules/date-fns/setHours.mjs","../../node_modules/date-fns/setMinutes.mjs","../../node_modules/date-fns/setQuarter.mjs","../../node_modules/date-fns/setSeconds.mjs","../../node_modules/date-fns/setYear.mjs","../../node_modules/date-fns/subMonths.mjs","../../node_modules/date-fns/subQuarters.mjs","../../node_modules/date-fns/subWeeks.mjs","../../node_modules/date-fns/subYears.mjs","../../node_modules/react-datepicker/node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../../node_modules/react-datepicker/dist/es/index.js","../../src/ui/shared/select-apps.tsx","../../src/ui/pages/diagnostics-create.tsx","../../src/aptible-ai/index.ts","../../node_modules/react-use-websocket/dist/lib/constants.js","../../node_modules/react-use-websocket/dist/lib/globals.js","../../node_modules/react-use-websocket/dist/lib/socket-io.js","../../node_modules/react-use-websocket/dist/lib/heartbeat.js","../../node_modules/react-use-websocket/dist/lib/manage-subscribers.js","../../node_modules/react-use-websocket/dist/lib/util.js","../../node_modules/react-use-websocket/dist/lib/attach-listener.js","../../node_modules/react-use-websocket/dist/lib/attach-shared-listeners.js","../../node_modules/react-use-websocket/dist/lib/create-or-join.js","../../node_modules/react-use-websocket/dist/lib/get-url.js","../../node_modules/react-use-websocket/dist/lib/proxy.js","../../node_modules/react-use-websocket/dist/lib/use-websocket.js","../../node_modules/react-use-websocket/dist/lib/use-socket-io.js","../../node_modules/react-use-websocket/dist/lib/use-event-source.js","../../node_modules/react-use-websocket/dist/index.js","../../src/ui/hooks/use-dashboard.ts","../../src/ui/shared/diagnostics/hover.tsx","../../src/chart/chartjs-plugin-annotations.ts","../../src/chart/chartjs-plugin-vertical-line.ts","../../src/ui/shared/diagnostics/line-chart.tsx","../../src/ui/shared/llm.tsx","../../src/ui/shared/diagnostics/messages.tsx","../../src/ui/shared/diagnostics/operations-timeline.tsx","../../src/ui/shared/diagnostics/resource.tsx","../../src/ui/pages/diagnostics-detail.tsx","../../src/ui/pages/org-picker.tsx","../../src/ui/pages/endpoints.tsx","../../src/ui/pages/app-detail.tsx","../../src/ui/pages/stack-detail-hids.tsx","../../src/ui/pages/app-detail-config.tsx","../../src/ui/pages/create-stack.tsx","../../src/ui/pages/sso-token-cli.tsx","../../src/ui/pages/endpoint-detail-credential.tsx","../../src/ui/pages/app-deploy-get-started.tsx","../../src/ui/pages/app-deploy-resume.tsx","../../src/projects/index.ts","../../src/ui/pages/app-deploy-status.tsx","../../src/ui/pages/app-deploy-with-git.tsx","../../src/ui/pages/app-deploy-with-github.tsx","../../src/ui/pages/app-deploy-configure.tsx","../../src/ui/pages/get-started.tsx","../../src/ui/pages/otp-reset-verify.tsx","../../src/ui/pages/deployment-detail.tsx","../../src/ui/pages/deployment-detail-logs.tsx","../../src/ui/pages/deployment-detail-config.tsx","../../src/ui/pages/sources.tsx","../../src/ui/pages/source-detail.tsx","../../src/ui/pages/settings-team-roles-create.tsx","../../src/ui/pages/settings-team-scim.tsx","../../src/ui/pages/custom-resources.tsx","../../node_modules/@dagrejs/graphlib/lib/graph.js","../../node_modules/@dagrejs/graphlib/lib/version.js","../../node_modules/@dagrejs/graphlib/lib/index.js","../../node_modules/@dagrejs/graphlib/lib/json.js","../../node_modules/@dagrejs/graphlib/lib/alg/components.js","../../node_modules/@dagrejs/graphlib/lib/data/priority-queue.js","../../node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js","../../node_modules/@dagrejs/graphlib/lib/alg/dijkstra-all.js","../../node_modules/@dagrejs/graphlib/lib/alg/tarjan.js","../../node_modules/@dagrejs/graphlib/lib/alg/find-cycles.js","../../node_modules/@dagrejs/graphlib/lib/alg/floyd-warshall.js","../../node_modules/@dagrejs/graphlib/lib/alg/topsort.js","../../node_modules/@dagrejs/graphlib/lib/alg/is-acyclic.js","../../node_modules/@dagrejs/graphlib/lib/alg/dfs.js","../../node_modules/@dagrejs/graphlib/lib/alg/postorder.js","../../node_modules/@dagrejs/graphlib/lib/alg/preorder.js","../../node_modules/@dagrejs/graphlib/lib/alg/prim.js","../../node_modules/@dagrejs/graphlib/lib/alg/index.js","../../node_modules/@dagrejs/graphlib/index.js","../../node_modules/@dagrejs/dagre/lib/data/list.js","../../node_modules/@dagrejs/dagre/lib/greedy-fas.js","../../node_modules/@dagrejs/dagre/lib/util.js","../../node_modules/@dagrejs/dagre/lib/acyclic.js","../../node_modules/@dagrejs/dagre/lib/normalize.js","../../node_modules/@dagrejs/dagre/lib/rank/util.js","../../node_modules/@dagrejs/dagre/lib/rank/feasible-tree.js","../../node_modules/@dagrejs/dagre/lib/rank/network-simplex.js","../../node_modules/@dagrejs/dagre/lib/rank/index.js","../../node_modules/@dagrejs/dagre/lib/parent-dummy-chains.js","../../node_modules/@dagrejs/dagre/lib/nesting-graph.js","../../node_modules/@dagrejs/dagre/lib/add-border-segments.js","../../node_modules/@dagrejs/dagre/lib/coordinate-system.js","../../node_modules/@dagrejs/dagre/lib/order/init-order.js","../../node_modules/@dagrejs/dagre/lib/order/cross-count.js","../../node_modules/@dagrejs/dagre/lib/order/barycenter.js","../../node_modules/@dagrejs/dagre/lib/order/resolve-conflicts.js","../../node_modules/@dagrejs/dagre/lib/order/sort.js","../../node_modules/@dagrejs/dagre/lib/order/sort-subgraph.js","../../node_modules/@dagrejs/dagre/lib/order/build-layer-graph.js","../../node_modules/@dagrejs/dagre/lib/order/add-subgraph-constraints.js","../../node_modules/@dagrejs/dagre/lib/order/index.js","../../node_modules/@dagrejs/dagre/lib/position/bk.js","../../node_modules/@dagrejs/dagre/lib/position/index.js","../../node_modules/@dagrejs/dagre/lib/layout.js","../../node_modules/@dagrejs/dagre/lib/debug.js","../../node_modules/@dagrejs/dagre/lib/version.js","../../node_modules/@dagrejs/dagre/index.js","../../node_modules/classcat/index.js","../../node_modules/d3-dispatch/src/dispatch.js","../../node_modules/d3-selection/src/namespaces.js","../../node_modules/d3-selection/src/namespace.js","../../node_modules/d3-selection/src/creator.js","../../node_modules/d3-selection/src/selector.js","../../node_modules/d3-selection/src/selection/select.js","../../node_modules/d3-selection/src/array.js","../../node_modules/d3-selection/src/selectorAll.js","../../node_modules/d3-selection/src/selection/selectAll.js","../../node_modules/d3-selection/src/matcher.js","../../node_modules/d3-selection/src/selection/selectChild.js","../../node_modules/d3-selection/src/selection/selectChildren.js","../../node_modules/d3-selection/src/selection/filter.js","../../node_modules/d3-selection/src/selection/sparse.js","../../node_modules/d3-selection/src/selection/enter.js","../../node_modules/d3-selection/src/constant.js","../../node_modules/d3-selection/src/selection/data.js","../../node_modules/d3-selection/src/selection/exit.js","../../node_modules/d3-selection/src/selection/join.js","../../node_modules/d3-selection/src/selection/merge.js","../../node_modules/d3-selection/src/selection/order.js","../../node_modules/d3-selection/src/selection/sort.js","../../node_modules/d3-selection/src/selection/call.js","../../node_modules/d3-selection/src/selection/nodes.js","../../node_modules/d3-selection/src/selection/node.js","../../node_modules/d3-selection/src/selection/size.js","../../node_modules/d3-selection/src/selection/empty.js","../../node_modules/d3-selection/src/selection/each.js","../../node_modules/d3-selection/src/selection/attr.js","../../node_modules/d3-selection/src/window.js","../../node_modules/d3-selection/src/selection/style.js","../../node_modules/d3-selection/src/selection/property.js","../../node_modules/d3-selection/src/selection/classed.js","../../node_modules/d3-selection/src/selection/text.js","../../node_modules/d3-selection/src/selection/html.js","../../node_modules/d3-selection/src/selection/raise.js","../../node_modules/d3-selection/src/selection/lower.js","../../node_modules/d3-selection/src/selection/append.js","../../node_modules/d3-selection/src/selection/insert.js","../../node_modules/d3-selection/src/selection/remove.js","../../node_modules/d3-selection/src/selection/clone.js","../../node_modules/d3-selection/src/selection/datum.js","../../node_modules/d3-selection/src/selection/on.js","../../node_modules/d3-selection/src/selection/dispatch.js","../../node_modules/d3-selection/src/selection/iterator.js","../../node_modules/d3-selection/src/selection/index.js","../../node_modules/d3-selection/src/select.js","../../node_modules/d3-selection/src/sourceEvent.js","../../node_modules/d3-selection/src/pointer.js","../../node_modules/d3-drag/src/noevent.js","../../node_modules/d3-drag/src/nodrag.js","../../node_modules/d3-drag/src/constant.js","../../node_modules/d3-drag/src/event.js","../../node_modules/d3-drag/src/drag.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/transform/parse.js","../../node_modules/d3-interpolate/src/transform/index.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-timer/src/timer.js","../../node_modules/d3-timer/src/timeout.js","../../node_modules/d3-transition/src/transition/schedule.js","../../node_modules/d3-transition/src/interrupt.js","../../node_modules/d3-transition/src/selection/interrupt.js","../../node_modules/d3-transition/src/transition/tween.js","../../node_modules/d3-transition/src/transition/interpolate.js","../../node_modules/d3-transition/src/transition/attr.js","../../node_modules/d3-transition/src/transition/attrTween.js","../../node_modules/d3-transition/src/transition/delay.js","../../node_modules/d3-transition/src/transition/duration.js","../../node_modules/d3-transition/src/transition/ease.js","../../node_modules/d3-transition/src/transition/easeVarying.js","../../node_modules/d3-transition/src/transition/filter.js","../../node_modules/d3-transition/src/transition/merge.js","../../node_modules/d3-transition/src/transition/on.js","../../node_modules/d3-transition/src/transition/remove.js","../../node_modules/d3-transition/src/transition/select.js","../../node_modules/d3-transition/src/transition/selectAll.js","../../node_modules/d3-transition/src/transition/selection.js","../../node_modules/d3-transition/src/transition/style.js","../../node_modules/d3-transition/src/transition/styleTween.js","../../node_modules/d3-transition/src/transition/text.js","../../node_modules/d3-transition/src/transition/textTween.js","../../node_modules/d3-transition/src/transition/transition.js","../../node_modules/d3-transition/src/transition/end.js","../../node_modules/d3-transition/src/transition/index.js","../../node_modules/d3-ease/src/cubic.js","../../node_modules/d3-transition/src/selection/transition.js","../../node_modules/d3-transition/src/selection/index.js","../../node_modules/d3-zoom/src/constant.js","../../node_modules/d3-zoom/src/event.js","../../node_modules/d3-zoom/src/transform.js","../../node_modules/d3-zoom/src/noevent.js","../../node_modules/d3-zoom/src/zoom.js","../../node_modules/@xyflow/system/dist/esm/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/traditional.mjs","../../node_modules/zustand/esm/shallow.mjs","../../node_modules/@xyflow/react/dist/esm/index.js","../../src/ui/shared/dependency-graph.tsx","../../src/ui/pages/custom-resource-detail.tsx","../../src/ui/pages/settings-team-diagnostics-integrations.tsx","../../src/ui/pages/settings-team-diagnostics-integrations-add.tsx","../../src/ui/pages/settings-team-diagnostics-integrations-edit.tsx","../../src/ui/pages/settings-team-llm-integrations.tsx","../../src/ui/pages/settings-team-llm-integrations-add.tsx","../../src/ui/pages/settings-team-llm-integrations-edit.tsx","../../src/ui/layouts/deployment-detail-layout.tsx","../../src/ui/pages/app-detail-diagnostics.tsx","../../src/ui/pages/environment-detail-endpoints.tsx","../../src/github-integration/index.ts","../../src/ui/pages/github-integration.tsx","../../src/ui/pages/settings-profile.tsx","../../src/ui/pages/sources-setup.tsx","../../src/app/tuna.tsx","../../src/app/router.tsx","../../src/app/app.tsx","../../src/modal/index.ts","../../src/theme/index.ts","../../src/app/packages.ts","../../src/app/store.ts","../../src/app/client.tsx","../../src/app/sentry.ts","../../src/app/init.ts"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","// https://stackoverflow.com/a/47636222\nexport const excludesFalse = (n?: T): n is T => Boolean(n);\n\n// https://stackoverflow.com/a/72311590\nexport type DeepPartial = {\n [K in keyof T]?: T[K] extends object ? DeepPartial : T[K];\n};\n\nexport interface Action {\n type: T;\n}\n\nexport interface AnyAction extends Action {\n [key: string]: any;\n}\n\nexport interface ActionWithPayload

\n extends Action {\n payload: P;\n}\n\nexport interface MapEntity {\n [key: string]: E | undefined;\n}\n\nexport interface Timestamps {\n createdAt: string;\n updatedAt: string;\n}\n","export enum ModalType {\n NONE = \"\",\n}\n\nexport interface ModalState {\n type: ModalType;\n props: any;\n}\n","export enum NoticeType {\n NONE = \"\",\n BackupRPNotice = \"backup-rp-notice\",\n}\n","import {\n type BillingDetail,\n type Config,\n type DeployActivePlan,\n type DeployActivityReport,\n type DeployApp,\n type DeployAppConfig,\n type DeployBackup,\n type DeployBackupRetentionPolicy,\n type DeployCertificate,\n type DeployContainer,\n type DeployCost,\n type DeployCostRates,\n type DeployCustomResource,\n type DeployDashboard,\n type DeployDatabase,\n type DeployDatabaseCredential,\n type DeployDatabaseImage,\n type DeployDisk,\n type DeployEdge,\n type DeployEndpoint,\n type DeployEnvironment,\n type DeployEnvironmentStats,\n type DeployImage,\n type DeployIntegration,\n type DeployLlmIntegration,\n type DeployLogDrain,\n type DeployMetricDrain,\n type DeployOperation,\n type DeployPlan,\n type DeployRelease,\n type DeployService,\n type DeployServiceDefinition,\n type DeployServiceSizingPolicy,\n type DeploySource,\n type DeployStack,\n type DeployVpcPeer,\n type DeployVpnTunnel,\n type Deployment,\n type GithubIntegration,\n type InstanceClass,\n type Invitation,\n type ManualScaleRecommendation,\n type Membership,\n ModalType,\n type Organization,\n type Otp,\n type Permission,\n type Role,\n type Theme,\n type Token,\n type User,\n} from \"@app/types\";\n\nexport const DEFAULT_INSTANCE_CLASS: InstanceClass = \"m5\";\n\nexport const defaultConfig = (e: Partial = {}): Config => {\n return {\n isProduction: import.meta.env.PROD,\n isDev: import.meta.env.DEV,\n isTest: false,\n appUrl: import.meta.env.VITE_APP_URL || \"\",\n authUrl: import.meta.env.VITE_AUTH_URL || \"\",\n billingUrl: import.meta.env.VITE_BILLING_URL || \"\",\n apiUrl: import.meta.env.VITE_API_URL || \"\",\n metricTunnelUrl: import.meta.env.VITE_METRIC_TUNNEL_URL || \"\",\n portalUrl: import.meta.env.VITE_PORTAL_URL || \"\",\n aptibleAiUrl: import.meta.env.VITE_APTIBLE_AI_URL || \"\",\n sentryDsn: import.meta.env.VITE_SENTRY_DSN || \"\",\n origin: (import.meta.env.VITE_ORIGIN as any) || \"app\",\n betaFeatureOrgIds:\n import.meta.env.VITE_FEATURE_BETA_ORG_IDS ||\n \"df0ee681-9e02-4c28-8916-3b215d539b08\",\n tokenHeaderOrgIds:\n import.meta.env.VITE_TOKEN_HEADER_ORG_IDS ||\n \"df0ee681-9e02-4c28-8916-3b215d539b08\",\n diagnosticsPocOrgIds: import.meta.env.VITE_DIAGNOSTICS_POC_ORG_IDS || \"\",\n legacyDashboardUrl:\n import.meta.env.VITE_LEGACY_DASHBOARD_URL ||\n \"https://dashboard.aptible.com\",\n mintlifyChatKey:\n import.meta.env.VITE_MINTLIFY_CHAT_KEY ||\n \"mint_dsc_XXXXXXXXXXXXXXXXXXXXXXXX\",\n stripePublishableKey:\n import.meta.env.VITE_STRIPE_PUBLISHABLE_KEY ||\n \"pk_test_eiw5HXHTAgTwyNnV9I5ruCrA\",\n ...e,\n };\n};\n\nexport const defaultDeployApp = (a: Partial = {}): DeployApp => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n handle: \"\",\n gitRepo: \"\",\n createdAt: now,\n updatedAt: now,\n deploymentMethod: \"\",\n status: \"unknown\",\n environmentId: \"\",\n currentConfigurationId: \"\",\n currentDeploymentId: \"\",\n currentImageId: \"\",\n currentSourceId: \"\",\n ...a,\n };\n};\n\nexport const defaultDeployAppConfig = (\n a: Partial = {},\n): DeployAppConfig => {\n return {\n id: \"\",\n env: {},\n appId: \"\",\n ...a,\n };\n};\n\nexport const defaultDeployCertificate = (\n c: Partial = {},\n): DeployCertificate => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n commonName: \"\",\n certificateBody: \"\",\n notBefore: now,\n notAfter: now,\n issuerCountry: \"\",\n issuerOrganization: \"\",\n issuerWebsite: \"\",\n issuerCommonName: \"\",\n subjectCountry: \"\",\n subjectState: \"\",\n subjectLocale: \"\",\n subjectOrganization: \"\",\n acme: false,\n leafCertificate: \"\",\n certificateChain: \"\",\n sha256Fingerprint: \"\",\n trusted: false,\n selfSigned: true,\n subjectAlternativeNames: [],\n privateKeyAlgorithm: \"\",\n privateKey: \"\",\n createdAt: now,\n updatedAt: now,\n environmentId: \"\",\n ...c,\n };\n};\n\nexport const defaultDeployEndpoint = (\n e: Partial = {},\n): DeployEndpoint => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n status: \"pending\",\n acme: false,\n acmeConfiguration: null,\n acmeDnsChallengeHost: \"\",\n acmeStatus: \"pending\",\n containerExposedPorts: [],\n containerPort: \"\",\n containerPorts: [],\n default: false,\n dockerName: \"\",\n externalHost: \"\",\n externalHttpPort: \"\",\n externalHttpsPort: \"\",\n internal: false,\n ipWhitelist: [],\n platform: \"elb\",\n type: \"unknown\",\n tokenHeader: undefined,\n createdAt: now,\n updatedAt: now,\n userDomain: \"\",\n virtualDomain: \"\",\n serviceId: \"\",\n certificateId: \"\",\n ...e,\n };\n};\n\nexport const defaultDeployEnvironment = (\n e: Partial = {},\n): DeployEnvironment => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n organizationId: \"\",\n handle: \"Unknown\",\n createdAt: now,\n updatedAt: now,\n type: \"development\",\n activated: true,\n totalAppCount: 0,\n totalDatabaseCount: 0,\n sweetnessStack: \"\",\n stackId: \"\",\n onboardingStatus: \"unknown\",\n ...e,\n };\n};\n\nexport const defaultDeployEnvironmentStats = (\n e: Partial = {},\n): DeployEnvironmentStats => {\n return {\n id: \"\",\n containerCount: 0,\n domainCount: 0,\n totalDiskSize: 0,\n appContainerCount: 0,\n databaseContainerCount: 0,\n totalBackupSize: 0,\n ...e,\n };\n};\n\nexport const defaultDeployServiceDefinition = (\n e: Partial = {},\n): DeployServiceDefinition => {\n const now = new Date().toISOString();\n return {\n createdAt: now,\n updatedAt: now,\n id: \"\",\n appId: \"\",\n command: \"\",\n processType: \"\",\n ...e,\n };\n};\n\nexport const defaultDeployStack = (\n s: Partial = {},\n): DeployStack => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n organizationId: \"\",\n name: \"\",\n region: \"\",\n default: false,\n public: false,\n createdAt: now,\n updatedAt: now,\n outboundIpAddresses: [],\n memoryLimits: false,\n cpuLimits: false,\n intrusionDetection: false,\n exposeIntrusionDetectionReports: false,\n allowCInstanceProfile: false,\n allowMInstanceProfile: false,\n allowRInstanceProfile: false,\n allowTInstanceProfile: false,\n allowGranularContainerSizes: false,\n verticalAutoscaling: false,\n horizontalAutoscaling: false,\n internalDomain: \"aptible.in\",\n defaultDomain: \"on-aptible.com\",\n selfHosted: false,\n awsAccountId: \"\",\n ...s,\n };\n};\n\nexport const defaultDeployDisk = (d: Partial = {}): DeployDisk => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n attached: true,\n availabilityZone: \"\",\n baselineIops: 0,\n databaseId: \"\",\n provisionedIops: 3000,\n createdAt: now,\n updatedAt: now,\n currentKmsArn: \"\",\n device: \"\",\n ebsVolumeId: \"\",\n ebsVolumeType: \"\",\n ec2InstanceId: \"\",\n environmentId: \"\",\n filesystem: \"\",\n handle: \"\",\n host: \"\",\n size: 10,\n keyBytes: 32,\n ...d,\n };\n};\n\nexport const defaultDeployDatabase = (\n d: Partial = {},\n): DeployDatabase => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n databaseImageId: \"\",\n status: \"pending\",\n handle: \"\",\n connectionUrl: \"\",\n createdAt: now,\n updatedAt: now,\n currentKmsArn: \"\",\n dockerRepo: \"\",\n provisioned: false,\n enableBackups: true,\n type: \"\",\n environmentId: \"\",\n serviceId: \"\",\n diskId: \"\",\n initializeFrom: \"\",\n portMapping: [],\n ...d,\n };\n};\n\nexport const defaultDatabaseCredential = (\n p: Partial = {},\n): DeployDatabaseCredential => {\n return {\n id: \"\",\n databaseId: \"\",\n connectionUrl: \"\",\n type: \"\",\n default: false,\n ...p,\n };\n};\n\nexport const defaultDeployDatabaseImage = (\n db: Partial = {},\n): DeployDatabaseImage => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n default: false,\n description: \"\",\n discoverable: false,\n dockerRepo: \"\",\n eolAt: \"\",\n type: \"\",\n version: \"\",\n visible: true,\n createdAt: now,\n updatedAt: now,\n ...db,\n };\n};\n\nexport const defaultDeployService = (\n s: Partial = {},\n): DeployService => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n appId: \"\",\n databaseId: \"\",\n environmentId: \"\",\n serviceSizingPolicyId: \"\",\n handle: \"\",\n dockerRef: \"\",\n dockerRepo: \"\",\n processType: \"\",\n command: \"\",\n containerCount: 0,\n containerMemoryLimitMb: 512,\n currentReleaseId: \"\",\n instanceClass: DEFAULT_INSTANCE_CLASS,\n forceZeroDowntime: false,\n naiveHealthCheck: false,\n createdAt: now,\n updatedAt: now,\n ...s,\n };\n};\n\nexport const defaultDeployLogDrain = (\n ld: Partial = {},\n): DeployLogDrain => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n handle: \"\",\n drainType: \"tail\",\n drainHost: \"\",\n drainPort: \"\",\n drainUsername: \"\",\n drainPassword: \"\",\n url: \"\",\n loggingToken: \"\",\n drainApps: false,\n drainProxies: false,\n drainEphemeralSessions: false,\n drainDatabases: false,\n environmentId: \"\",\n databaseId: \"\",\n backendChannel: \"\",\n createdAt: now,\n updatedAt: now,\n status: \"pending\",\n ...ld,\n };\n};\n\nexport const defaultDeployMetricDrain = (\n md: Partial = {},\n): DeployMetricDrain => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n handle: \"\",\n drainType: \"\",\n agggregatorCaCertificate: \"\",\n aggregatorCaPrivateKeyBlob: \"\",\n aggregatorHost: \"\",\n aggregatorPortMapping: [],\n aggregatorInstanceId: \"\",\n aggregatorDockerName: \"\",\n aggregatorAllocation: [],\n drainConfiguration: {},\n environmentId: \"\",\n databaseId: \"\",\n createdAt: now,\n updatedAt: now,\n status: \"pending\",\n ...md,\n };\n};\n\nexport const defaultDeployOperation = (\n op: Partial = {},\n): DeployOperation => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n environmentId: \"\",\n codeScanResultId: \"\",\n resourceId: \"\",\n resourceType: \"unknown\",\n type: \"unknown\",\n status: \"unknown\",\n createdAt: now,\n updatedAt: now,\n gitRef: \"\",\n dockerRef: \"\",\n instanceProfile: \"\",\n containerCount: -1,\n containerSize: -1,\n diskSize: 0,\n encryptedEnvJsonNew: \"\",\n destinationRegion: \"\",\n cancelled: false,\n aborted: false,\n automated: false,\n immediate: false,\n provisionedIops: 0,\n ebsVolumeType: \"\",\n encryptedStackSettings: \"\",\n userName: \"unknown\",\n userEmail: \"\",\n env: {},\n note: \"\",\n ...op,\n };\n};\n\nexport const defaultPlan = (c: Partial = {}): DeployPlan => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n automatedBackupLimitPerDb: 0,\n complianceDashboardAccess: false,\n containerMemoryLimit: 0,\n costCents: 0,\n cpuAllowedProfiles: 0,\n createdAt: now,\n diskLimit: 0,\n environmentLimit: undefined,\n ephemeralSessionLimit: 0,\n includedContainerMb: 0,\n includedDiskGb: 0,\n includedVhosts: 0,\n manualBackupLimitPerDb: 0,\n name: \"none\",\n updatedAt: now,\n vhostLimit: 0,\n horizontalAutoscaling: false,\n verticalAutoscaling: false,\n ...c,\n };\n};\n\nexport const defaultActivePlan = (\n c: Partial = {},\n): DeployActivePlan => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n automatedBackupLimitPerDb: 0,\n availablePlans: [\"starter\", \"development\", \"growth\", \"scale\", \"production\"],\n complianceDashboardAccess: false,\n containerMemoryLimit: 0,\n costCents: 0,\n cpuAllowedProfiles: 0,\n createdAt: now,\n diskLimit: 0,\n environmentLimit: undefined,\n ephemeralSessionLimit: 0,\n includedContainerMb: 0,\n includedDiskGb: 0,\n includedVhosts: 0,\n manualBackupLimitPerDb: 0,\n organizationId: \"\",\n updatedAt: now,\n vhostLimit: 0,\n horizontalAutoscaling: false,\n verticalAutoscaling: false,\n planId: \"\",\n ...c,\n };\n};\n\nexport const defaultPermission = (r: Partial = {}): Permission => {\n return {\n id: \"\",\n scope: \"unknown\",\n environmentId: \"\",\n roleId: \"\",\n inheritedFrom: \"\",\n ...r,\n };\n};\n\nexport const defaultDeployRelease = (\n r: Partial = {},\n): DeployRelease => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n dockerRef: \"\",\n dockerRepo: \"\",\n createdAt: now,\n updatedAt: now,\n serviceId: \"\",\n ...r,\n };\n};\n\nexport const defaultDeployContainer = (\n c: Partial = {},\n): DeployContainer => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n awsInstanceId: \"\",\n dockerName: \"\",\n host: \"\",\n layer: \"\",\n memoryLimit: 0,\n port: 0,\n portMapping: [],\n status: \"\",\n createdAt: now,\n updatedAt: now,\n releaseId: \"\",\n ...c,\n };\n};\n\nexport const defaultDeployVpcPeer = (\n s: Partial = {},\n): DeployVpcPeer => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n connectionId: \"\",\n connectionStatus: \"\",\n description: \"\",\n peerAccountId: \"\",\n peerVpcId: \"\",\n createdAt: now,\n updatedAt: now,\n stackId: \"\",\n ...s,\n };\n};\n\nexport const defaultDeployVpnTunnel = (\n s: Partial = {},\n): DeployVpnTunnel => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n handle: \"\",\n phase1Alg: \"\",\n phase1DhGroup: \"\",\n phase1Lifetime: \"\",\n phase2Alg: \"\",\n phase2DhGroup: \"\",\n phase2Lifetime: \"\",\n ourGateway: \"\",\n ourNetworks: [],\n peerGateway: \"\",\n peerNetworks: [],\n perfectForwardSecrecy: \"\",\n state: \"unknown\",\n auto: \"\",\n tunnelAttributes: {\n connections: {},\n routed_connections: {},\n security_associations: {},\n },\n createdAt: now,\n updatedAt: now,\n stackId: \"\",\n ...s,\n };\n};\n\nexport const defaultDeployBackup = (\n b: Partial = {},\n): DeployBackup => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n databaseHandle: \"\",\n awsRegion: \"\",\n createdByEmail: \"\",\n databaseId: \"\",\n environmentId: \"\",\n createdFromOperationId: \"\",\n copiedFromId: \"\",\n size: 0,\n manual: false,\n createdAt: now,\n ...b,\n };\n};\n\nexport const defaultBackupRp = (\n bk: Partial = {},\n): DeployBackupRetentionPolicy => {\n const now = new Date().toISOString();\n // based on https://github.com/aptible/deploy-api/blob/b537960533f3cb6fb8f57f339de3a46207e70f4b/app/models/backup_retention_policy.rb#L8\n return {\n id: \"\",\n daily: 90,\n monthly: 72,\n yearly: 0,\n makeCopy: true,\n keepFinal: true,\n environmentId: \"\",\n createdAt: now,\n ...bk,\n };\n};\n\nexport const defaultDeployActivityReport = (\n ld: Partial = {},\n): DeployActivityReport => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n startsAt: now,\n endsAt: now,\n filename: \"\",\n environmentId: \"\",\n createdAt: now,\n updatedAt: now,\n ...ld,\n };\n};\n\nexport const defaultDeployImage = (\n img: Partial = {},\n): DeployImage => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n gitRepo: \"\",\n gitRef: \"Not used\",\n dockerRepo: \"\",\n exposedPorts: [],\n dockerRef: \"\",\n createdAt: now,\n updatedAt: now,\n ...img,\n };\n};\n\nexport const defaultServiceSizingPolicy = (\n m: Partial = {},\n): DeployServiceSizingPolicy => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n environmentId: \"\",\n autoscaling: \"vertical\",\n scalingEnabled: false,\n defaultPolicy: false,\n metricLookbackSeconds: 300,\n percentile: 99,\n postScaleUpCooldownSeconds: 60,\n postScaleDownCooldownSeconds: 300,\n postReleaseCooldownSeconds: 60,\n memCpuRatioRThreshold: 4,\n memCpuRatioCThreshold: 2,\n memScaleUpThreshold: 0.9,\n memScaleDownThreshold: 0.75,\n minimumMemory: 2048,\n maximumMemory: null,\n minContainers: 2,\n maxContainers: 4,\n minCpuThreshold: 0.1,\n maxCpuThreshold: 0.9,\n scaleUpStep: 1,\n scaleDownStep: 1,\n createdAt: now,\n updatedAt: now,\n ...m,\n };\n};\n\nexport const defaultInvitation = (i?: Partial): Invitation => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n email: \"\",\n createdAt: now,\n updatedAt: now,\n organizationId: \"\",\n organizationName: \"\",\n inviterName: \"\",\n roleName: \"\",\n expired: false,\n ...i,\n };\n};\n\nexport const defaultOrganization = (\n o: Partial = {},\n): Organization => ({\n id: \"\",\n name: \"\",\n billingDetailId: \"\",\n ssoEnforced: false,\n updatedAt: new Date().toISOString(),\n reauthRequired: false,\n address: \"\",\n city: \"\",\n zip: \"\",\n state: \"\",\n securityAlertEmail: \"\",\n opsAlertEmail: \"\",\n emergencyPhone: \"\",\n primaryPhone: \"\",\n ...o,\n});\n\nexport const defaultOtp = (o: Partial = {}): Otp => {\n return {\n id: \"\",\n uri: \"\",\n recoveryCodesUrl: \"\",\n currentUrl: \"\",\n ...o,\n };\n};\n\nexport const defaultToken = (t: Partial = {}): Token => {\n return {\n tokenId: \"\",\n accessToken: \"\",\n userUrl: \"\",\n actorUrl: \"\",\n ...t,\n };\n};\n\nexport const defaultUser = (u: Partial = {}): User => {\n return {\n id: \"\",\n name: \"Aptible\",\n email: \"\",\n otpEnabled: false,\n superuser: false,\n readOnlyImpersonate: false,\n username: \"\",\n verified: false,\n currentOtpId: \"\",\n externalId: \"\",\n selectedOrganizationId: \"\",\n createdAt: new Date().toISOString(),\n ...u,\n };\n};\n\nexport const defaultBillingDetail = (\n bt: Partial = {},\n): BillingDetail => {\n return {\n id: \"\",\n paymentMethodUrl: \"\",\n organizationDetailsJson: {},\n ...bt,\n };\n};\n\nexport const defaultTheme = (): Theme => {\n if (typeof window === \"undefined\") {\n return \"light\";\n }\n if (typeof window.matchMedia !== \"function\") {\n return \"light\";\n }\n\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n};\n\nexport const defaultModal = () => {\n return {\n type: ModalType.NONE,\n props: {} as any,\n };\n};\n\nexport const defaultRole = (r: Partial = {}): Role => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n organizationId: \"\",\n name: \"\",\n type: \"platform_user\",\n scimCreated: false,\n createdAt: now,\n updatedAt: now,\n ...r,\n };\n};\n\nexport const defaultMembership = (m: Partial = {}): Membership => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n userId: \"\",\n roleId: \"\",\n privileged: false,\n createdAt: now,\n updatedAt: now,\n ...m,\n };\n};\n\nexport const defaultDeployment = (a: Partial = {}): Deployment => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n dockerImage: \"\",\n dockerRepositoryUrl: \"\",\n status: \"unknown\",\n gitRepositoryUrl: \"\",\n gitRef: \"\",\n gitCommitSha: \"\",\n gitCommitUrl: \"\",\n gitCommitMessage: \"\",\n gitCommitTimestamp: \"\",\n createdAt: now,\n updatedAt: now,\n appId: \"\",\n operationId: \"\",\n imageId: \"\",\n configurationId: \"\",\n sourceId: \"\",\n ...a,\n };\n};\n\nexport const defaultDeploySource = (\n s: Partial = {},\n): DeploySource => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n displayName: \"Unknown\",\n url: \"\",\n createdAt: now,\n updatedAt: now,\n ...s,\n };\n};\n\nexport const defaultGithubIntegration = (\n s: Partial = {},\n): GithubIntegration => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n organizationId: \"\",\n installationId: \"\",\n accountName: \"\",\n avatarUrl: \"\",\n installed: true,\n active: true,\n installationUrl: \"\",\n createdAt: now,\n updatedAt: now,\n ...s,\n };\n};\n\nexport const defaultManualScaleRecommendation = (\n s: Partial = {},\n): ManualScaleRecommendation => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n serviceId: \"\",\n cpuUsage: 0,\n ramUsage: 0,\n ramTarget: 0,\n costSavings: 0,\n recommendedInstanceClass: \"\",\n recommendedContainerMemoryLimitMb: 0,\n instanceClassAtTime: \"\",\n containerMemoryLimitMbAtTime: 0,\n metricPercentile: 0,\n createdAt: now,\n ...s,\n };\n};\n\nexport const defaultCost = (s: Partial = {}): DeployCost => {\n return {\n id: \"\",\n estCost: 0,\n resourceType: \"\",\n ...s,\n };\n};\n\nexport const defaultCostRates = (\n s: Partial = {},\n): DeployCostRates => {\n return {\n hids_cost_per_month: 0.02,\n vpn_tunnel_cost_per_month: 99.0,\n stack_cost_per_month: 499.0,\n backup_cost_gb_per_month: 0.02,\n disk_cost_gb_per_month: 0.2,\n disk_iops_cost_per_month: 0.01,\n vhost_cost_per_hour: 0.06,\n m_class_gb_per_hour: 0.08,\n c_class_gb_per_hour: 0.1,\n r_class_gb_per_hour: 0.05,\n ...s,\n };\n};\n\nexport const defaultDeployDashboard = (\n s: Partial = {},\n): DeployDashboard => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n name: \"\",\n organizationId: \"\",\n resourceId: \"\",\n resourceType: \"\",\n symptoms: \"\",\n rangeBegin: \"\",\n rangeEnd: \"\",\n observationTimestamp: \"\",\n data: {},\n createdAt: now,\n updatedAt: now,\n ...s,\n };\n};\n\nexport const defaultDeployCustomResource = (\n cr: Partial = {},\n): DeployCustomResource => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n handle: \"\",\n resourceType: \"\",\n organizationId: \"\",\n data: {},\n createdAt: now,\n updatedAt: now,\n ...cr,\n };\n};\n\nexport const defaultDeployEdge = (e: Partial = {}): DeployEdge => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n relationshipType: \"\",\n sourceResourceId: \"\",\n sourceResourceType: \"custom_resource\",\n destinationResourceId: \"\",\n destinationResourceType: \"custom_resource\",\n createdAt: now,\n updatedAt: now,\n ...e,\n };\n};\n\nexport const defaultDeployIntegration = (\n i: Partial = {},\n): DeployIntegration => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n type: \"ElasticsearchIntegration\", // Default type\n organizationId: \"\",\n awsRoleArn: \"\",\n apiKey: \"\",\n appKey: \"\",\n host: \"\",\n port: \"\",\n username: \"\",\n database: \"\",\n createdAt: now,\n updatedAt: now,\n ...i,\n };\n};\n\nexport const defaultDeployLlmIntegration = (\n i: Partial = {},\n): DeployLlmIntegration => {\n const now = new Date().toISOString();\n return {\n id: \"\",\n providerType: \"OpenaiIntegration\", // Default type\n organizationId: \"\",\n apiKey: \"\",\n baseUrl: \"\",\n openaiOrganization: \"\",\n apiVersion: \"\",\n awsAccessKeyId: \"\",\n awsSecretAccessKey: \"\",\n awsRegion: \"\",\n createdAt: now,\n updatedAt: now,\n ...i,\n };\n};\n","import {\n type BillingDetail,\n type ContainerMetrics,\n type EmbeddedMap,\n type Feedback,\n type ModalState,\n ModalType,\n type Nav,\n NoticeType,\n type ResourceStats,\n type Role,\n type U2fDevice,\n} from \"@app/types\";\nimport { createSchema, slice } from \"starfx\";\nimport * as factory from \"./factory\";\n\nexport const [schema, initialState] = createSchema({\n cache: slice.table(),\n loaders: slice.loaders(),\n env: slice.obj(factory.defaultConfig()),\n feedback: slice.obj({\n preDeploySurveyAnswered: false,\n freeformFeedbackGiven: false,\n }),\n users: slice.table({ empty: factory.defaultUser() }),\n token: slice.obj(factory.defaultToken()),\n elevatedToken: slice.obj(factory.defaultToken()),\n invitations: slice.table({ empty: factory.defaultInvitation() }),\n entities: slice.table(),\n redirectPath: slice.str(),\n scimToken: slice.str(),\n organizationSelected: slice.str(),\n organizations: slice.table({ empty: factory.defaultOrganization() }),\n u2fDevices: slice.table(),\n otp: slice.obj(factory.defaultOtp()),\n theme: slice.str(\"light\"),\n nav: slice.obj