Skip to content

Add improvements to local build / zip deploy#9925

Draft
falahat wants to merge 13 commits intozip-deployfrom
zip_deploy_aryanf
Draft

Add improvements to local build / zip deploy#9925
falahat wants to merge 13 commits intozip-deployfrom
zip_deploy_aryanf

Conversation

@falahat
Copy link

@falahat falahat commented Feb 13, 2026

Description

Scenarios Tested

Sample Commands

@google-cla
Copy link

google-cla bot commented Feb 13, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @falahat, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a suite of enhancements across Firebase CLI's local development, deployment, and integration capabilities. It focuses on improving the developer experience for App Hosting, Cloud Functions, and the VSCode extension, while also expanding the CLI's functionality for managing Firebase Authentication and integrating with AI agents. The changes aim to provide more robust error handling, better configuration management, and streamlined workflows for various Firebase services.

Highlights

  • Firebase VSCode Extension Improvements: The Firebase VSCode extension received significant updates, including enhanced GraphQL error reporting with debug details and workarounds, support for multiple Data Connect schemas, and refined code lens behavior for GraphQL operations. Dependency versions for firebase-tools and graphql were also updated.
  • Auth Deployment and Configuration: New functionality has been added to deploy Firebase Authentication providers directly via firebase.json configuration. This includes support for anonymous, email/password, and Google Sign-In providers, streamlining the setup and deployment of authentication features.
  • Cloud Functions Enhancements: Cloud Functions now support dart3 runtime and include new DataConnectGraphqlTrigger for integrating with Data Connect services. The deployment process for Cloud Functions has been optimized, and timeout validation has been improved across different trigger types and platforms.
  • App Hosting Local Build Improvements: The local build process for App Hosting has been enhanced to correctly inject Firebase configuration and environment variables into the build environment, ensuring better local development parity with deployed environments. Symlinks are now ignored during source archiving.
  • Next.js Vulnerability Check: A new check has been implemented for Next.js projects using the App Directory to detect and warn about CVE-2025-66478, prompting users to upgrade to patched versions or downgrade to stable releases.
  • MCP Server and AI Agent Integration: A new 'julesbot' agent has been introduced with subagents for spam detection, issue labeling, complexity scoring, and issue type detection. The MCP server now supports explicit tool enabling via --tools and includes new prompts for generating Firestore and Storage security rules.
  • Emulator Updates: The Firestore, Pub/Sub, and Data Connect emulators have been updated to newer versions. The Auth emulator now supports importing/exporting multi-tenant data, and the Java version requirement for emulators has been updated to JDK 21+.
  • CLI OAuth Project Quota Error Handling: The CLI now intercepts and provides a generic error message for quota errors related to the CLI's internal OAuth project, preventing confusing messages for end-users.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .agent/skills/update-pubsub-emulator/SKILL.md
    • Added documentation for updating the Pub/Sub emulator.
  • .eslintignore
    • Added julesbot and .agent directories to the ignore list.
  • .github/PULL_REQUEST_TEMPLATE.md
    • Updated a link from master to main in the contributing guidelines.
  • .github/dependabot.yml
    • Added github-actions ecosystem to Dependabot configuration for weekly updates.
  • .gitignore
    • Added .env to the ignore list.
  • .prettierignore
    • Added /.agent to the ignore list.
  • CHANGELOG.md
    • Removed an entry related to an MCP server fix.
  • CONTRIBUTING.md
    • Updated references from master branch to main branch.
  • firebase-vscode/CHANGELOG.md
    • Updated internal firebase-tools dependency to 15.5.1.
    • Surfaced Compiler error/warnings at the right diagnosis level.
    • Updated internal firebase-tools dependency to 15.4.0.
    • Rendered GraphQL error debug details and error code in the execution panel nicely.
    • Language server now recognizes multiple schemas.
    • Updated internal firebase-tools dependency to 15.3.1.
    • Fixed data connect emulator discovery bugs.
    • Updated internal firebase-tools dependency to 15.0.0.
    • Fixed common code lens rendering issues, including not showing 'Generate query' in schema files or for comments within an operation, and showing 'Add Data'/'View Data' for specific type directives.
    • Fixed integration test for recent variables panel changes.
    • Updated internal firebase-tools dependency to 14.27.0.
  • firebase-vscode/common/graphql.ts
    • Removed isExecutionResult function.
  • firebase-vscode/common/messaging/protocol.ts
    • Imported GraphqlError and GraphqlResponseError types.
    • Updated DataConnectResults interface to use ExecutionResults for more detailed error handling.
  • firebase-vscode/package-lock.json
    • Updated firebase-dataconnect-vscode version to 2.1.1.
    • Updated graphql dependency to 16.12.0 (local file reference).
    • Removed @puppeteer/browsers, chromium-bidi, devtools-protocol from @wdio/cli and @wdio/globals node_modules.
    • Added call-bind-apply-helpers, call-bound, dunder-proto, math-intrinsics, get-proto, side-channel-list, side-channel-map, side-channel-weakmap dependencies.
    • Updated various other dependencies including call-bind, define-data-property, es-define-property, es-object-atoms, get-intrinsic, gopd, has-symbols, object-inspect, qs, set-function-length.
  • firebase-vscode/package.json
    • Updated extension version to 2.1.1.
    • Updated schema validation URLs from master to main.
    • Updated graphql dependency to 16.12.0 (local file reference).
    • Added overrides for qs dependency to version ~6.14.1.
  • firebase-vscode/src/core/emulators.ts
    • Modified runStartEmulators to check if emulators are already running before attempting to start them.
    • Refactored areEmulatorsRunning logic to directly check the status of running CLI emulators.
  • firebase-vscode/src/data-connect/code-lens-provider.ts
    • Refactored code lens logic to filter out schema files and comments within GraphQL operations.
    • Added logic to conditionally show 'Add data' for @table types and 'Read data' for @table or @view types.
  • firebase-vscode/src/data-connect/config.ts
    • Imported secondarySchemaYamls.
    • Added secondarySchemaDirs getter to retrieve paths for secondary schemas.
    • Updated relativeSchemaPaths to include both main and secondary schemas.
  • firebase-vscode/src/data-connect/core-compiler.ts
    • Imported path and new GraphqlError, WarningLevel types.
    • Updated convertGQLErrorToDiagnostic to use GraphqlError and warningLevel for diagnostic severity.
    • Added warningLevelToDiagnosticSeverity function to map warning levels to VSCode diagnostic severities.
  • firebase-vscode/src/data-connect/execution/execution-store.ts
    • Updated ExecutionItem interface to use ExecutionResults for storing execution outcomes.
  • firebase-vscode/src/data-connect/execution/execution.ts
    • Removed buildClientSchema, validate, parse imports from graphql.
    • Updated GraphQL execution handling to process GraphqlResponse and GraphqlResponseError types, providing more granular error details.
  • firebase-vscode/src/data-connect/language-client.ts
    • Updated schema paths to include all relativeSchemaPaths from the Data Connect configuration.
  • firebase-vscode/src/data-connect/service.ts
    • Removed handleProdResponse and handleEmulatorResponse functions.
    • Modified executeGraphQL to directly return the ClientResponse object, logging analytics usage internally.
  • firebase-vscode/src/data-connect/terminal.ts
    • Imported EmulatorHub.
    • Modified startEmulators command to always include --project flag, using EmulatorHub.MISSING_PROJECT_PLACEHOLDER if no project is selected.
    • Removed startEmulatorsTaskBroker.
  • firebase-vscode/src/test/integration/fishfood/exeuction-missing-variables.ts
    • Updated test case to verify auto-addition of missing variables instead of prompting the user.
  • firebase-vscode/src/test/utils/page_objects/execution.ts
    • Changed the webview title from 'Configuration' to 'Parameters' in runInConfigurationContext.
  • firebase-vscode/src/utils/find_comments.ts
    • Modified findCommentsBlocks to filter out comments located inside GraphQL operations and associate comments with their respective operations.
  • firebase-vscode/webpack.common.js
    • Removed commented-out sections related to copying uncompiled JS files for functions and hosting deploys.
  • firebase-vscode/webviews/data-connect/DataConnectExecutionResultsApp.tsx
    • Removed the file.
  • firebase-vscode/webviews/data-connect/data-connect-execution-results.entry.scss
    • Added new CSS styles for displaying GraphQL execution errors, including error containers, headers, paths, debug details, workarounds, and error codes.
  • firebase-vscode/webviews/data-connect/data-connect-execution-results.entry.tsx
    • Rewrote the DataConnectExecutionResultsApp component to display detailed GraphQL execution results and errors using the new ExecutionResults interface.
  • firebase-vscode/webviews/data-connect/data-connect.entry.tsx
    • Removed the file.
  • julesbot/.gitignore
    • Added new .gitignore file for julesbot, ignoring virtual environments, logs, and other generated files.
  • julesbot/README.md
    • Added new README.md for julesbot, detailing local setup and running instructions.
  • julesbot/issue_to_jules_agent/init.py
    • Added new init.py file for julesbot's main agent.
  • julesbot/issue_to_jules_agent/agent.py
    • Added new agent.py for julesbot, defining root agent and subagents for spam detection, labeling, complexity scoring, and issue type detection, and a tool for creating Jules sessions.
  • julesbot/issue_to_jules_agent/subagents/complexity_scoping_agent/init.py
    • Added new init.py for julesbot's complexity scoping subagent.
  • julesbot/issue_to_jules_agent/subagents/complexity_scoping_agent/agent.py
    • Added new agent.py for julesbot's complexity scoping subagent, defining the agent and its output schema.
  • julesbot/issue_to_jules_agent/subagents/complexity_scoping_agent/prompt.py
    • Added new prompt.py for julesbot's complexity scoping subagent, defining the agent's instructions.
  • julesbot/issue_to_jules_agent/subagents/issue_type_agent/init.py
    • Added new init.py for julesbot's issue type subagent.
  • julesbot/issue_to_jules_agent/subagents/issue_type_agent/agent.py
    • Added new agent.py for julesbot's issue type subagent, defining the agent and its output schema.
  • julesbot/issue_to_jules_agent/subagents/issue_type_agent/prompt.py
    • Added new prompt.py for julesbot's issue type subagent, defining the agent's instructions.
  • julesbot/issue_to_jules_agent/subagents/label_agent/init.py
    • Added new init.py for julesbot's label subagent.
  • julesbot/issue_to_jules_agent/subagents/label_agent/agent.py
    • Added new agent.py for julesbot's label subagent, defining the agent, input, and output schemas.
  • julesbot/issue_to_jules_agent/subagents/label_agent/prompt.py
    • Added new prompt.py for julesbot's label subagent, defining available labels and agent instructions.
  • julesbot/issue_to_jules_agent/subagents/spam_agent/init.py
    • Added new init.py for julesbot's spam detection subagent.
  • julesbot/issue_to_jules_agent/subagents/spam_agent/agent.py
    • Added new agent.py for julesbot's spam detection subagent, defining the agent and its output schema.
  • julesbot/issue_to_jules_agent/subagents/spam_agent/prompt.py
    • Added new prompt.py for julesbot's spam detection subagent, defining the agent's instructions and examples.
  • julesbot/issues_call.py
    • Added new issues_call.py script for running the julesbot agent with GitHub issue details.
  • package.json
    • Updated firebase-tools version to 15.6.0.
    • Added mcpName field.
    • Updated @inquirer/prompts to 7.10.1.
    • Updated @modelcontextprotocol/sdk to 1.24.0.
    • Added es2020 dependency.
    • Updated glob to 10.5.0.
    • Updated js-yaml to 3.14.2.
    • Updated jsonwebtoken to 9.0.2.
    • Removed tar dependency.
    • Updated @types/node to 25.0.3.
    • Updated typescript to 5.3.3.
    • Added hono override to 4.11.4.
  • schema/firebase-config.json
    • Added dart3 to ActiveRuntime and runtime enums.
    • Added AuthConfig definition for Firebase Authentication providers, including anonymous, email/password, and Google Sign-In configurations.
  • scripts/agent-evals/package-lock.json
    • Updated node-pty to 1.1.0.
    • Removed nan dependency.
    • Added node-addon-api dependency.
    • Updated @types/node to 20.19.27.
    • Updated typescript to 5.9.3.
  • scripts/agent-evals/package.json
    • Updated node-pty to 1.1.0.
    • Updated @types/node to ^20.0.0.
    • Updated typescript to ^5.3.3.
  • scripts/agent-evals/src/mock/mock-tools-main.ts
    • Added eslint-disable-next-line @typescript-eslint/unbound-method comment.
  • scripts/agent-evals/src/mock/mocks/get-environment-mock.ts
    • Added isBillingEnabled: true to the base environment config.
  • scripts/agent-evals/src/mock/mocks/next-js-with-project-mock.ts
    • Added isBillingEnabled: true to the environment config.
  • scripts/agent-evals/templates/next-app-hello-world/package-lock.json
    • Updated next to 16.0.7.
    • Updated react to 19.2.1.
    • Updated react-dom to 19.2.1.
    • Updated eslint-config-next to 16.0.7.
  • scripts/agent-evals/templates/next-app-hello-world/package.json
    • Updated react to 19.2.1.
    • Updated react-dom to 19.2.1.
    • Updated next to 16.0.7.
    • Updated eslint-config-next to 16.0.7.
  • scripts/build/Dockerfile
    • Updated base Node.js image from node:20 to node:22.
    • Updated npm to version 11.9.
  • scripts/client-integration-tests/tests.ts
    • Increased timeout for deployHosting test to 20 seconds.
  • scripts/emulator-import-export-tests/tests.ts
    • Added a new test case to verify import/export functionality for multi-tenant Auth data.
  • scripts/emulator-tests/functionsEmulatorRuntime.spec.ts
    • Removed the _InitializeFunctionsConfigHelper() describe block and its associated tests.
  • scripts/emulator-tests/unzipEmulators.spec.ts
    • Changed fs.promises.rmdir to fs.promises.rm for directory cleanup.
    • Increased timeout for should unzip a ui emulator zip file and should unzip a pubsub emulator zip file tests to 60 seconds.
  • scripts/lint-changed-files.ts
    • Changed the default comparison branch from master to main.
  • scripts/publish.sh
    • Added git diff and npm -v commands before npm version.
    • Changed git push origin master to git push origin main.
    • Changed release notes creation to hub release create --draft.
    • Added a call to ./scripts/update-server-json-version.sh to update the MCP registry version.
  • scripts/publish/cloudbuild.yaml
    • Added GITHUB_TOKEN to publish.sh and pipeline.js commands.
    • Added a message to review draft release notes after publishing.
  • scripts/publish/firebase-docker-image/Dockerfile
    • Updated Java Development Kit (JDK) from openjdk11-jre to openjdk21-jre-headless.
    • Added npm update after npm install.
    • Removed rm -rf /var/cache/apk/* from the emulator setup step.
  • scripts/publish/firebase-docker-image/package.json
    • Added overrides for tar to ^7.5.4, diff to ^4.0.4, and hono to ^4.11.7.
  • scripts/test-functions-env.js
    • Removed execSync call for dotenv.
  • scripts/update-server-json-version.sh
    • Added new script to update the firebase-tools version in src/mcp/server.json.
  • scripts/webframeworks-deploy-tests/nextjs/package.json
    • Updated next to 16.1.1.
    • Updated react to 19.2.1.
    • Updated react-dom to 19.2.1.
    • Updated eslint-config-next to 16.0.8.
  • scripts/webframeworks-deploy-tests/nextjs/tsconfig.json
    • Changed jsx compiler option from preserve to react-jsx.
    • Added .next/dev/types/**/*.ts to the include array.
  • scripts/webframeworks-deploy-tests/tests.ts
    • Removed a rewrite rule from the firebase.json configuration.
    • Updated the expected x-nextjs-stale-time header value from 4294967294 to 300.
    • Modified assertions for ISR, SSR, and image tests to check for <body> tag presence in addition to specific content.
    • Updated expected static chunk patterns to match new Next.js build outputs.
    • Added _clientMiddlewareManifest.json and _not-found.html to the list of expected deployed files.
  • src/api.ts
    • Updated apphostingOrigin from a staging URL to the production firebaseapphosting.googleapis.com.
  • src/apiv2.spec.ts
    • Added a test case to verify that CLI OAuth project quota errors are intercepted and a generic error is thrown.
  • src/apiv2.ts
    • Imported isFirebaseMcp and detectAIAgent.
    • Modified User-Agent and X-Client-Version headers to include agent name and platform information.
    • Added CLI_OAUTH_PROJECT_NUMBER constant.
    • Implemented error interception for CLI OAuth project quota errors, replacing specific messages with a generic internal error message.
    • Modified debug logging for quota headers to include x-goog-user-project.
  • src/appUtils.ts
    • Refactored detectApps to use Promise.all for parallel file detection and processing, improving performance.
  • src/appdistribution/client.ts
    • Added displayName as an optional parameter to the createReleaseTest method.
  • src/appdistribution/types.ts
    • Added displayName?: string to the ReleaseTest interface.
  • src/apphosting/backend.ts
    • Imported logger.
    • Added ensureAppHostingServiceAgentRoles function to ensure the App Hosting service agent has the storage.objectViewer role.
    • Modified ensureAppHostingComputeServiceAccount to use projectId directly in the permission check.
    • Changed the default runtime for new backends to nodejs22.
  • src/apphosting/config.spec.ts
    • Added a test for splitEnvVars to ensure numeric environment variable values are correctly stringified.
  • src/apphosting/config.ts
    • Imported basename.
    • Added splitEnvVars function to separate environment variables into build-time and runtime-only categories.
    • Added getAppHostingConfiguration function to load and merge multiple apphosting.yaml files based on specified options.
  • src/apphosting/githubConnections.ts
    • Changed type check for match.groups from undefined to "undefined".
    • Updated prompt.checkbox and prompt.search calls to use generic type arguments for better type safety.
  • src/apphosting/localbuilds.ts
    • Added env: EnvMap parameter to the localBuild function.
    • Implemented logic to inject provided environment variables into process.env before executing the local build and restore the original process.env afterwards.
  • src/apphosting/repo.ts
    • Changed type check for match.groups from undefined to "undefined".
    • Updated prompt.search call to use a generic type argument for better type safety.
  • src/apphosting/rollout.ts
    • Removed a trailing period from an error message for consistency.
  • src/apphosting/secrets/dialogs.ts
    • Updated prompt.checkbox call to use a generic type argument for better type safety.
  • src/apphosting/utils.ts
    • Imported WebConfig.
    • Added getAutoinitEnvVars function to generate environment variables required for Firebase JS SDK auto-initialization.
  • src/apptesting/invokeTests.spec.ts
    • Updated testCase structure to use steps directly instead of nested instructions.steps.
    • Changed successCriteria to finalScreenAssertion in test case definitions.
  • src/apptesting/parseTestFiles.spec.ts
    • Updated testName to displayName in test definitions.
    • Added id and prerequisiteTestCaseId fields to expected test case invocations.
    • Added new test suites for handling prerequisite test cases, including merging steps, detecting non-existent prerequisites, and identifying circular dependencies.
  • src/apptesting/parseTestFiles.ts
    • Modified parseTestFiles to make targetUri optional.
    • Implemented logic to resolve and merge steps from prerequisite test cases, including detection of circular dependencies.
  • src/apptesting/types.ts
    • Updated TestStep interface to use finalScreenAssertion instead of successCriteria.
    • Updated TestCase interface to include optional id, optional startUri, steps directly, and optional prerequisiteTestCaseId.
    • Removed the Instructions interface.
  • src/archiveDirectory.spec.ts
    • Added a test case to verify that archiveDirectory correctly ignores symlinks when specified.
  • src/archiveDirectory.ts
    • Removed the type option from ArchiveOptions, defaulting to zip archiving.
    • Removed the tarDirectory function.
    • Modified zipDirectory to explicitly ignore symlinks during recursive directory reading.
  • src/bin/cli.ts
    • Moved enableExperimentsFromCliEnvVariable() call to an earlier point.
    • Changed process.exitCode check to be more robust.
    • Refactored command loading logic to dynamically load commands only when they are explicitly requested or when help is displayed, improving CLI startup performance.
  • src/bin/mcp.ts
    • Reordered imports for better organization.
    • Added HELP_TEXT for the mcp command, detailing its usage and options.
    • Introduced --tools option to explicitly enable specific tools, bypassing auto-detection.
    • Modified activeFeatures and enabledTools parsing to trim whitespace.
  • src/command.ts
    • Added CommandModule interface and isCommandModule type guard for dynamic command loading.
    • Modified CLIClient interface to allow dynamic properties.
    • Added useConsoleLoggers() call for Too many arguments error when not in JSON or MCP mode.
  • src/commands/apptesting-wata.ts
    • Renamed from src/commands/apptesting-execute.ts.
  • src/commands/apptesting.ts
    • Added new command apptesting:execute to run mobile automated tests written in natural language driven by AI.
  • src/commands/dataconnect-compile.ts
    • Added new command dataconnect:compile to compile Data Connect schema, connector config, and GQL files.
  • src/commands/dataconnect-execute.ts
    • Changed pickService to pickOneService for selecting a single Data Connect service.
    • Updated GraphQL execution error handling to provide more robust and detailed error messages, including status codes and specific GraphQL errors.
  • src/commands/dataconnect-sdk-generate.ts
    • Changed loadAll to pickServices for loading Data Connect services.
    • Added --service and --location options to filter services for SDK generation.
    • Updated loadAllWithSDKs to utilize the new service and location filtering options.
  • src/commands/dataconnect-sql-diff.ts
    • Changed pickService to pickOneService for selecting a single Data Connect service.
    • Added --service and --location options to filter services for SQL diff.
  • src/commands/dataconnect-sql-grant.ts
    • Changed pickService to pickOneService for selecting a single Data Connect service.
    • Added --service and --location options to filter services for SQL grant.
    • Updated error messages for missing role/email options and modified the return value.
  • src/commands/dataconnect-sql-migrate.ts
    • Changed pickService to pickOneService for selecting a single Data Connect service.
    • Added --service and --location options to filter services for SQL migration.
  • src/commands/dataconnect-sql-setup.ts
    • Changed pickService to pickOneService for selecting a single Data Connect service.
    • Added --service and --location options to filter services for SQL setup.
  • src/commands/dataconnect-sql-shell.ts
    • Changed pickService to pickOneService for selecting a single Data Connect service.
    • Added --service and --location options to filter services for SQL shell.
  • src/commands/deploy.ts
    • Added auth to VALID_DEPLOY_TARGETS and TARGET_PERMISSIONS.
  • src/commands/firestore-backups-list.ts
    • Changed the return value for --json output to listBackupsResponse, exposing more details including unreachable backups.
  • src/commands/firestore-databases-create.spec.ts
    • Added realtimeUpdatesMode, firestoreDataAccessMode, and mongodbCompatibleDataAccessMode to the mock database response.
    • Added extensive test cases to verify the behavior of --firestore-data-access, --mongodb-compatible-data-access, and --realtime-updates options, including default values and interactions between them.
  • src/commands/firestore-databases-create.ts
    • Added --realtime-updates, --firestore-data-access, and --mongodb-compatible-data-access options for creating Firestore databases.
    • Implemented validation and default logic for these new options, ensuring correct configuration based on database edition and other access modes.
  • src/commands/firestore-databases-update.ts
    • Changed DatabaseDeleteProtectionStateOption and PointInTimeRecoveryEnablementOption to the more general EnablementOption.
    • Updated validation logic to use the new validateEnablementOption function.
  • src/commands/functions-config-clone.ts
    • Added functionsConfig.ensureLegacyRuntimeConfigCommandsEnabled as a before hook.
    • Changed logFunctionsConfigDeprecationWarning to functionsConfig.logFunctionsConfigDeprecationWarning.
  • src/commands/functions-config-export.ts
    • Rewrote the command to export functions runtime configuration as a JSON secret to Google Cloud Secret Manager.
    • Added --secret option to specify the secret name and --force to bypass prompts.
    • Included new before hooks for authentication, API enablement, and permissions.
    • Provided detailed instructions and code examples for migrating existing functions to use the new secret-based configuration.
  • src/commands/functions-config-get.ts
    • Changed logFunctionsConfigDeprecationWarning to functionsConfig.logFunctionsConfigDeprecationWarning.
  • src/commands/functions-config-set.ts
    • Added functionsConfig.ensureLegacyRuntimeConfigCommandsEnabled as a before hook.
    • Changed logFunctionsConfigDeprecationWarning to functionsConfig.logFunctionsConfigDeprecationWarning.
  • src/commands/functions-config-unset.ts
    • Added functionsConfig.ensureLegacyRuntimeConfigCommandsEnabled as a before hook.
    • Changed logFunctionsConfigDeprecationWarning to functionsConfig.logFunctionsConfigDeprecationWarning.
  • src/commands/help.ts
    • Modified client.getCommand to handle cases where commandName is undefined.
  • src/commands/index.ts
    • Refactored command loading to implement lazy loading, improving CLI startup performance.
    • Changed client.appdistribution.testers.delete to client.appdistribution.testers.remove.
    • Changed client.auth.upload to client.auth.import.
    • Added client.dataconnect.compile command.
    • Added client.apptesting.wata command.
  • src/commands/init.ts
    • Added auth to the list of available initialization choices.
    • Conditionally added dataconnect:resolver to choices if the fdcwebhooks experiment is enabled.
  • src/commands/remoteconfig-versions-list.spec.ts
    • Added new test file for remoteconfig:versions:list command, including tests for printVersionsTable with various inputs.
  • src/commands/remoteconfig-versions-list.ts
    • Extracted the table printing logic into a new printVersionsTable function for reusability and testability.
  • src/commands/use.ts
    • Updated prompt.select call to use a generic type argument for better type safety.
  • src/config.ts
    • Removed parseBoltRules import.
    • Added auth to Config.MATERIALIZE_TARGETS.
    • Modified .bolt file handling to throw a FirebaseError indicating that .bolt rules are no longer supported.
  • src/crashlytics/filters.ts
    • Updated ApplicationIdSchema description for clarity.
    • Changed uuid to UUID in IssueIdSchema description.
    • Modified validateEventFilters to automatically set intervalEndTime if intervalStartTime is provided but intervalEndTime is missing.
  • src/crashlytics/reports.spec.ts
    • Updated CrashlyticsReport.TopIssues to CrashlyticsReport.TOP_ISSUES for consistency with enum naming.
  • src/crashlytics/reports.ts
    • Reordered CrashlyticsReport enum and ReportInputSchema definition.
    • Added FirebaseError import.
    • Added reportName validation in getReport function.
  • src/dataconnect/client.spec.ts
    • Updated deleteSchema test to use the full schema name as the argument.
  • src/dataconnect/client.ts
    • Increased masterTimeout for upsertSchema and upsertConnector operations to 60 seconds.
    • Modified deleteSchema function to accept the full schema resource name directly.
  • src/dataconnect/load.ts
    • Refactored pickService into pickOneService to explicitly pick a single service.
    • Introduced pickServices to allow selection of multiple Data Connect services based on service ID and location filters.
  • src/dataconnect/prompts.spec.ts
    • Added new test suite for promptDeleteSchema to verify schema deletion with user confirmation.
  • src/dataconnect/prompts.ts
    • Added promptDeleteSchema function to prompt the user for deletion of unused schemas.
  • src/dataconnect/schemaMigration.spec.ts
    • Added new test file for serviceNameFromSchema function, covering various schema name formats.
  • src/dataconnect/schemaMigration.ts
    • Added upsertSecondarySchema function to handle upserting secondary schemas, including error handling for invalid connectors.
    • Modified getIdentifiers to use the new serviceNameFromSchema function.
    • Added serviceNameFromSchema utility function to extract the service name from a schema resource name.
  • src/dataconnect/types.ts
    • Added LOG_ONLY to the WarningLevel type.
    • Expanded GraphqlErrorExtensions to include code and debugDetails.
    • Changed GraphqlResponse.errors type to GraphqlError[].
    • Updated GraphqlResponseError interface to be more flexible in parsing error responses from different sources.
    • Added secondarySchemaYamls function to retrieve secondary schema YAML configurations.
  • src/deploy/apphosting/args.ts
    • Added env: Env[] to the LocalBuild interface.
  • src/deploy/apphosting/deploy.spec.ts
    • Changed createArchiveStub to createTarArchiveStub for clarity.
    • Updated expected archive file extensions from .zip to .tar.gz.
    • Added env: [] to the LocalBuild interface in context initialization.
  • src/deploy/apphosting/deploy.ts
    • Added iamConfiguration with uniformBucketLevelAccess: { enabled: true } to bucket creation requests.
    • Changed createArchive to util.createTarArchive.
  • src/deploy/apphosting/prepare.spec.ts
    • Imported managementApps.
    • Added a test case to verify that Firebase configuration is correctly injected into the local build environment when an appId is present.
  • src/deploy/apphosting/prepare.ts
    • Imported AppHostingYamlConfig, EnvMap, WebConfig, Env, getAppHostingConfiguration, splitEnvVars, getProjectNumber, managementApps, getAutoinitEnvVars.
    • Added ensureAppHostingServiceAgentRoles to ensure necessary IAM roles for the App Hosting service agent.
    • Implemented logic to split environment variables from apphosting.yaml into build and runtime components.
    • Added functionality to inject Firebase web app configuration into the local build environment if an appId is associated with the backend.
  • src/deploy/apphosting/release.ts
    • Updated buildInput.config.env to merge environment variables from both buildConfig.env and localBuild.env.
  • src/deploy/apphosting/util.spec.ts
    • Added new test file for createTarArchive utility function, verifying inclusion of apphosting.yaml and handling of its absence.
  • src/deploy/apphosting/util.ts
    • Imported APPHOSTING_YAML_FILE_REGEX.
    • Modified createTarArchive to include apphosting.yaml and related configuration files from the project root when archiving a subdirectory.
    • Ensured symlinks are ignored during recursive directory reading.
  • src/deploy/auth/deploy.spec.ts
    • Added new test file for auth deployment, covering scenarios like skipping deployment and provisioning auth providers.
  • src/deploy/auth/deploy.ts
    • Added new file implementing the deployment logic for Firebase Authentication providers based on firebase.json configuration.
  • src/deploy/auth/index.ts
    • Added new file exporting prepare, deploy, and release functions for auth deployment.
  • src/deploy/auth/prepare.spec.ts
    • Added new test file for auth prepare phase, covering scenarios like skipping, using existing web apps, and creating a default web app.
  • src/deploy/auth/prepare.ts
    • Added new file implementing the prepare logic for Firebase Authentication, ensuring a Firebase Web App exists for provisioning.
  • src/deploy/auth/release.ts
    • Added new file with a no-op release function for auth deployment.
  • src/deploy/database/prepare.ts
    • Removed parseBoltRules import.
    • Modified .bolt rule parsing to throw a FirebaseError indicating that .bolt rules are no longer supported.
  • src/deploy/dataconnect/release.spec.ts
    • Added promptDeleteSchemaStub to mock schema deletion prompts.
    • Added test cases to verify that unused schemas are prompted for deletion during release.
  • src/deploy/dataconnect/release.ts
    • Imported Schema, listSchemas, promptDeleteSchema, and upsertSecondarySchema.
    • Modified the release process to handle upserting secondary schemas and to prompt the user for deletion of any unused schemas.
  • src/deploy/functions/backend.spec.ts
    • Changed containerConcurrency to maxInstanceRequestConcurrency in endpoint definitions.
    • Added a test case to verify correct population of multiple specified Data Connect HTTPS invokers.
    • Removed tests related to attemptDeadlineSeconds for scheduled functions.
  • src/deploy/functions/backend.ts
    • Added DataConnectGraphqlTrigger and DataConnectGraphqlTriggered interfaces for Data Connect HTTPS triggers.
    • Added isDataConnectGraphqlTriggered type guard.
    • Removed attemptDeadlineSeconds from ScheduleTrigger interface.
    • Added baseImageUri, command, and args fields to Endpoint for Cloud Run platform (no-build path).
    • Added maybeDeterministicCloudRunUri function to return deterministic Cloud Run URIs for HTTPS functions.
  • src/deploy/functions/build.spec.ts
    • Changed containerConcurrency to maxInstanceRequestConcurrency in endpoint definitions.
    • Added a test case to verify correct population of multiple specified Data Connect HTTPS invokers.
    • Removed tests related to attemptDeadlineSeconds for scheduled functions.
  • src/deploy/functions/build.ts
    • Added DataConnectGraphqlTrigger interface and DataConnectGraphqlTriggered type.
    • Included DataConnectGraphqlTriggered in the Triggered union type.
    • Added isDataConnectGraphqlTriggered type guard.
    • Changed FunctionsPlatform type to include "run".
    • Added baseImageUri, command, and args fields to Endpoint interface.
    • Removed attemptDeadlineSeconds from ScheduleTrigger interface.
  • src/deploy/functions/checkIam.ts
    • Modified checkHttpIam to include isDataConnectGraphqlTriggered in filtering and to exclude functions with platform === "run".
  • src/deploy/functions/deploy.spec.ts
    • Changed the experiment name from runfunctions to functionsrunapionly.
    • Updated expected archive file extensions from .zip to .tar.gz in GCS upload tests.
  • src/deploy/functions/deploy.ts
    • Imported path.
    • Changed the experiment name from runfunctions to functionsrunapionly.
    • Modified the object path for GCS upload to use path.extname for the source file.
  • src/deploy/functions/prepare.ts
    • Imported path.
    • Modified prepareFunctionsUpload calls to handle gcfv2 and run platforms, including additionalSources and exportType.
    • Added validate.checkFiltersIntegrity to ensure all filters match at least one endpoint.
  • src/deploy/functions/prepareFunctionsUpload.ts
    • Changed pipeAsync to return Promise<void>.
    • Added projectDir, additionalSources, and options parameters to packageSource and prepareFunctionsUpload.
    • Modified packageSource to support tar.gz export type and include additionalSources in the archive.
    • Added error handling for FirebaseError in packageSource.
  • src/deploy/functions/pricing.ts
    • Updated V2_REGION_TO_TIER with new regions, expanding pricing tier coverage for GCFv2.
  • src/deploy/functions/release/fabricator.spec.ts
    • Imported runV2NS.
    • Added runv2 stub for Cloud Run V2 API interactions.
    • Added tests for createRunFunction, updateRunFunction, and deleteRunFunction to verify Cloud Run service management.
    • Added tests for dataConnectGraphqlTrigger invokers, ensuring correct P4SA and custom invoker settings.
  • src/deploy/functions/release/fabricator.ts
    • Imported runV2 and getDataConnectP4SA.
    • Implemented createRunFunction, updateRunFunction, deleteRunFunction, and setInvoker methods for managing Cloud Run functions.
    • Added logic to automatically include the Firebase Data Connect P4SA as an invoker for dataConnectGraphqlTrigger functions.
  • src/deploy/functions/release/index.ts
    • Imported getProjectNumber.
    • Modified printTriggerUrls to accept projectNumber and to correctly handle isDataConnectGraphqlTriggered for deterministic Cloud Run URIs.
  • src/deploy/functions/release/planner.ts
    • Added isDataConnectGraphqlTriggered to triggerType in checkForIllegalUpdate for Data Connect HTTPS triggers.
  • src/deploy/functions/release/reporter.ts
    • Added isDataConnectGraphqlTriggered to triggerTag for Data Connect HTTPS triggers.
  • src/deploy/functions/runtimes/dart.ts
    • Added new file implementing a Dart runtime delegate for no-build deployments, including basic YAML validation and build discovery.
  • src/deploy/functions/runtimes/discovery/v1alpha1.spec.ts
    • Added test cases for dataConnectGraphqlTriggers, including invalid values and incompatibility with 1st gen functions.
    • Added tests to verify copying of baseImageUri, command, and args fields for no-build functions.
    • Removed attemptDeadlineSeconds from scheduled trigger tests.
  • src/deploy/functions/runtimes/discovery/v1alpha1.ts
    • Added Partial<build.DataConnectGraphqlTriggered> to WireEndpoint type.
    • Added baseImageUri, command, and args as optional fields to WireEndpoint.
    • Added validation for dataConnectGraphqlTrigger.
    • Removed attemptDeadlineSeconds from ScheduleTrigger.
  • src/deploy/functions/runtimes/index.ts
    • Imported dart and experiments.
    • Conditionally added dart.tryCreateDelegate to the list of runtime factories if the functionsrunapionly experiment is enabled.
  • src/deploy/functions/runtimes/node/extractTriggers.js
    • Removed the file.
  • src/deploy/functions/runtimes/node/extractTriggers.spec.js
    • Removed the file.
  • src/deploy/functions/runtimes/node/index.spec.ts
    • Added new test suite for discoverBuild to verify SDK version compatibility checks, including throwing errors for old SDK versions and proceeding for valid/invalid versions.
  • src/deploy/functions/runtimes/node/index.ts
    • Removed parseTriggers import and its fallback logic.
    • Modified discoverBuild to throw a FirebaseError if the firebase-functions SDK version is too old.
  • src/deploy/functions/runtimes/node/parseTriggers.spec.ts
    • Removed the file.
  • src/deploy/functions/runtimes/node/parseTriggers.ts
    • Removed the file.
  • src/deploy/functions/runtimes/node/triggerParser.js
    • Removed the file.
  • src/deploy/functions/runtimes/node/versioning.spec.ts
    • Updated the minimum SDK version checks in tests to reflect the new 3.20.0 requirement.
  • src/deploy/functions/runtimes/node/versioning.ts
    • Updated MIN_SDK_VERSION to 3.20.0 and adjusted the corresponding warning message.
  • src/deploy/functions/runtimes/supported/index.ts
    • Changed the return type of latest to unknown as RuntimeOf<T> & Runtime for broader compatibility.
  • src/deploy/functions/runtimes/supported/types.ts
    • Added "dart" to the Language type.
  • src/deploy/functions/services/dataconnect.spec.ts
    • Added new test suite for getDataConnectP4SA, verifying correct service account generation for autopush, staging, and production environments.
  • src/deploy/functions/services/dataconnect.ts
    • Imported dataconnectOrigin.
    • Added constants for autopush, staging, and production Data Connect P4SA domains.
    • Added getDataConnectP4SA function to retrieve the correct P4SA email based on the Data Connect API origin.
  • src/deploy/functions/validate.spec.ts
    • Added a test case for scheduled functions with a timeout exceeding 1800 seconds.
    • Added new test suite for validateTimeoutConfig, covering various trigger types, platforms, and timeout limits.
    • Added new test suite for checkFiltersIntegrity, verifying filter matching against endpoints and throwing errors for unmatched filters.
  • src/deploy/functions/validate.ts
    • Imported EndpointFilter, endpointMatchesFilter, getFunctionLabel.
    • Defined new constants for maximum timeout seconds across different GCF versions and trigger types.
    • Added DEFAULT_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS and MAX_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS.
    • Implemented validateScheduledTimeout to warn about scheduled functions with timeouts exceeding the Cloud Scheduler attempt deadline.
    • Added validateTimeoutConfig to enforce timeout limits for all function types.
    • Added checkFiltersIntegrity to ensure that all specified filters match at least one function endpoint.
  • src/deploy/hosting/uploader.spec.ts
    • Added new test file for the Uploader class, verifying its initialization and file hashing/uploading process.
  • src/deploy/hosting/uploader.ts
    • Changed res.response.headers to res.response.headers.raw() for more accurate logging of raw HTTP headers during file uploads.
  • src/deploy/index.ts
    • Imported AuthTarget.
    • Added auth: AuthTarget to the TARGETS object, enabling authentication deployment.
  • src/downloadUtils.ts
    • Changed the Promise constructor for writeStream.on("finish", resolve) to explicitly return void and use an arrow function for resolve().
  • src/emulator/apphosting/config.spec.ts
    • Refactored apphostingYamlConfig variables to be initialized within beforeEach for better test isolation and clarity.
  • src/emulator/apphosting/config.ts
    • Removed direct imports for basename, APPHOSTING_BASE_YAML_FILE, etc.
    • Modified getLocalAppHostingConfiguration to utilize the new getAppHostingConfiguration function from ../../apphosting/config.
  • src/emulator/apphosting/serve.ts
    • Imported getAutoinitEnvVars.
    • Modified the start function to use getAutoinitEnvVars for injecting Firebase configuration into the emulator's environment variables.
  • src/emulator/auth/README.md
    • Updated GitHub repository links from master to main.
  • src/emulator/auth/emailLink.spec.ts
    • Changed the expected type of creation_time in JWT metadata from string to number.
  • src/emulator/auth/index.ts
    • Modified the importFromFile logic to iterate through accounts-tenantId.json files, enabling support for importing multi-tenant Auth data.
  • src/emulator/auth/operations.ts
    • Modified batchGet to query users from specific tenants if a tenantId is provided in the query parameters.
    • Changed the expected type of creation_time and last_sign_in_time in JWT metadata from string to number.
  • src/emulator/auth/state.ts
    • Changed the default assignment for oneAccountPerEmail from !update.signIn?.allowDuplicateEmails ?? true to !update.signIn?.allowDuplicateEmails.
  • src/emulator/commandUtils.ts
    • Updated the JAVA_DEPRECATION_WARNING message to reflect that Java versions before 21 are no longer supported.
  • src/emulator/controller.ts
    • Modified the Java version check to throw a FirebaseError if the Java version is below 21, instead of logging a warning.
  • src/emulator/databaseEmulator.ts
    • Removed parseBoltRules import.
    • Removed the logic for parsing .bolt rules, as they are no longer supported.
  • src/emulator/dataconnect/pgliteServer.ts
    • Changed filterResponse to getMessages.
    • Renamed PGliteExtendedQueryPatch to PGliteLoggerPatch.
    • Added logging for frontend and backend messages to pglite-debug.log.
  • src/emulator/dataconnectEmulator.ts
    • Removed the comment maxOpenConnections: 1 and updated the explanation, indicating that multiple connections are now supported for transactional operations.
  • src/emulator/downloadableEmulatorInfo.json
    • Updated Firestore emulator version to 1.20.2 with new expected size and checksums.
    • Updated Pub/Sub emulator version to 0.8.27 with new expected size and checksums.
    • Updated Data Connect emulator versions for Darwin, Darwin ARM64, Win32, and Linux to 3.1.3 with new expected sizes and checksums.
  • src/emulator/functionsEmulator.ts
    • Removed jsonwebtoken import.
    • Removed tokenFromAuthHeader function.
    • Removed the special handling for callable function auth headers.
  • src/emulator/functionsEmulatorRuntime.ts
    • Removed fs and jwt imports.
    • Removed CallableHandler type definition.
    • Updated the minimum required firebase-functions SDK version to 3.16.0.
    • Removed initializeRuntimeConfig and initializeFunctionsConfigHelper calls.
  • src/emulator/functionsEmulatorShared.ts
    • Removed HttpConstants class.
    • Added isDataConnectGraphqlTriggered to emulatedFunctionsFromEndpoints for Data Connect HTTPS triggers.
  • src/emulator/hub.ts
    • Removed the version compatibility check for the emulator locator.
    • Removed the explicit call to deleteLocatorFile in stop.
    • Added pid to the Locator interface.
    • Implemented a process check for existing hub instances and added cleanup logic for the locator file on process exit.
  • src/emulator/hubExport.ts
    • Imported Tenant.
    • Modified auth export logic to retrieve and export accounts from all tenants, creating separate accounts-tenantId.json files.
  • src/ensureApiEnabled.spec.ts
    • Updated x-goog-quota-user header to x-goog-user-project in nock matchers for API calls.
  • src/ensureApiEnabled.ts
    • Updated x-goog-quota-user header to x-goog-user-project in API client headers for consistency with Google Cloud API best practices.
  • src/env.ts
    • Added detectAIAgent function to identify if the CLI is invoked by a coding agent based on environment variables.
  • src/experiments.ts
    • Updated the fullDescription for functionsv2deployoptimizations.
    • Added legacyRuntimeConfigCommands experiment to expose deprecated functions.config() CLI commands.
  • src/extensions/extensionsHelper.ts
    • Updated prompt.select calls to use generic type arguments for better type safety.
    • Removed explicit type: "zip" from archiveDirectory call, relying on the default zip archiving.
  • src/firebaseConfig.ts
    • Added AuthConfig interface for Firebase Authentication provider configurations.
    • Included auth?: AuthConfig in the FirebaseConfig type.
  • src/firestore/api-types.ts
    • Imported FirebaseError.
    • Renamed DatabaseDeleteProtectionStateOption to EnablementOption.
    • Removed PointInTimeRecoveryEnablementOption.
    • Added RealtimeUpdatesMode and DataAccessMode enums.
    • Included realtimeUpdatesMode, firestoreDataAccessMode, and mongodbCompatibleDataAccessMode in DatabaseReq, CreateDatabaseReq, and DatabaseResp interfaces.
    • Added validateEnablementOption function for validating enablement flag values.
  • src/firestore/api.ts
    • Added realtimeUpdatesMode, firestoreDataAccessMode, and mongodbCompatibleDataAccessMode to the createDatabase request payload.
  • src/firestore/options.ts
    • Updated deleteProtection and pointInTimeRecoveryEnablement types to types.EnablementOption.
    • Added realtimeUpdates, firestoreDataAccess, and mongodbCompatibleDataAccess as new options.
  • src/firestore/pretty-print.spec.ts
    • Added realtimeUpdatesMode, firestoreDataAccessMode, and mongodbCompatibleDataAccessMode to the mock database response for testing.
  • src/frameworks/constants.ts
    • Updated VALID_ENGINES.node to include Node.js versions [20, 22, 24].
  • src/frameworks/next/index.ts
    • Imported coerce.
    • Imported isUsingAppDirectory, getNextVersionRaw, and isNextJsVersionVulnerable.
    • Added a critical vulnerability check for Next.js versions when using the App Directory, throwing an error if a vulnerable version is detected.
  • src/frameworks/next/utils.spec.ts
    • Added new test suites for getNextVersionRaw and isNextJsVersionVulnerable, covering various Next.js versions and their vulnerability status.
  • src/frameworks/next/utils.ts
    • Imported lt, gte, prerelease, and parse from semver.
    • Added getNextVersionRaw function to retrieve the exact Next.js version string.
    • Added isNextJsVersionVulnerable function to check if a Next.js version is affected by CVE-2025-66478.
  • src/fsAsync.spec.ts
    • Added a test case to verify that readdirRecursive correctly ignores symlinks when the ignoreSymlinks option is set.
  • src/fsAsync.ts
    • Added ignoreSymlinks?: boolean to ReaddirRecursiveOpts interface.
    • Modified readdirRecursiveHelper to filter out symbolic links based on the ignoreSymlinks option.
  • src/functions/deprecationWarnings.ts
    • Removed the file.
  • src/functions/runtimeConfigExport.spec.ts
    • Removed the file.
  • src/functions/runtimeConfigExport.ts
    • Removed the file.
  • src/functionsConfig.ts
    • Imported experiments and logWarningToStderr.
    • Added LEGACY_RUNTIME_CONFIG_EXPERIMENT constant.
    • Defined FUNCTIONS_CONFIG_DEPRECATION_MESSAGE and LEGACY_GUIDANCE_MESSAGE.
    • Added getFunctionsConfigDeprecationMessage, logFunctionsConfigDeprecationWarning, and ensureLegacyRuntimeConfigCommandsEnabled functions to manage legacy runtime config commands.
  • src/gcp/cloudbilling.ts
    • Added retries: 3 and 429 to retryCodes for checkBillingEnabled and listBillingAccounts API calls.
  • src/gcp/cloudfunctionsv2.ts
    • Added deployment-fdcgraphql label to gcfFunction.labels for DataConnectGraphqlTriggered functions.
    • Added logic to set dataConnectGraphqlTrigger for deployment-fdcgraphql labeled functions in endpointFromFunction.
  • src/gcp/cloudscheduler.spec.ts
    • Added tests for jobFromEndpoint to verify copying of optional fields and syncing attemptDeadline with timeoutSeconds for v2 endpoints, including capping and flooring logic.
  • src/gcp/cloudscheduler.ts
    • Imported DEFAULT_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS and MAX_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS.
    • Modified jobFromEndpoint to sync attemptDeadline with timeoutSeconds for v2 endpoints, applying capping and flooring logic within Cloud Scheduler's limits.
  • src/gcp/cloudsql/cloudsqladmin.ts
    • Updated DEFAULT_DATABASE_VERSION to POSTGRES_17.
  • src/gcp/cloudsql/connect.ts
    • Removed connectionTimeoutMillis: 1000 from pg.Pool options.
  • src/gcp/iam.spec.ts
    • Updated x-goog-quota-user to x-goog-user-project in nock match headers.
    • Added new test suite for service account management functions, including create, get, create key, delete, and list keys.
  • src/gcp/iam.ts
    • Updated x-goog-quota-user to x-goog-user-project in testResourceIamPermissions headers.
    • Changed projects/${projectId} to ${projectId} for testIamPermissions quota user.
  • src/gcp/rules.ts
    • Added resourceName as an optional parameter to getLatestRulesetName.
  • src/gcp/serviceusage.ts
    • Updated x-goog-quota-user to x-goog-user-project in headers for generateServiceIdentity and pollOperation.
  • src/gcp/storage.ts
    • Made lifecycle and iamConfiguration optional in UpsertBucketRequest and CreateBucketRequest.
    • Added logic to patch iamConfiguration if uniformBucketLevelAccess is not enabled on an existing managed bucket.
    • Added iamConfiguration to the patch object when updating an existing unmanaged bucket.
  • src/gemini/fdcExperience.ts
    • Removed ChatExperienceResponse import.
    • Removed GEMINI_IN_FIREBASE_EXPERIENCE constant.
    • Removed chatWithFirebase function.
  • src/gemini/types.ts
    • Removed ChatExperienceResponse interface.
  • src/handlePreviewToggles.ts
    • Removed the file.
  • src/index.ts
    • Imported isCommandModule and CLIClient.
    • Refactored client.getCommand to dynamically load commands.
    • Modified program.action to handle dynamic command loading and allow unknown options.
  • src/init/features/auth.ts
    • Added new file implementing askQuestions and actuate functions for Firebase Authentication setup.
  • src/init/features/database.ts
    • Updated prompt.select call to use a generic type argument for better type safety.
  • src/init/features/dataconnect/index.ts
    • Added init_resolver to the Source type.
  • src/init/features/dataconnect/resolver.spec.ts
    • Added new test file for Data Connect resolver initialization, covering schema addition, question prompting, and actuation.
  • src/init/features/dataconnect/resolver.ts
    • Added new file implementing askQuestions and actuate functions for Data Connect custom resolver setup.
  • src/init/features/dataconnect/sdk.ts
    • Added validation to the app selection checkbox to ensure at least one app is chosen.
  • src/init/features/firestore/indexes.ts
    • Changed info.writeRules to info.writeIndexes for clarity.
  • src/init/features/functions.spec.ts
    • Updated references from doSetup to askQuestions and actuate.
    • Modified assertions for askWriteProjectFileStub to use to.have.members for order-independent checks.
  • src/init/features/functions/index.ts
    • Renamed doSetup to askQuestions.
    • Added actuate function to perform the actual setup actions.
    • Modified initNewCodebase and overwriteCodebase to no longer take config as a parameter.
    • Modified languageSetup to conditionally offer Python as a language choice only if Data Connect resolvers are not being set up.
  • src/init/features/functions/javascript.ts
    • Imported templateWithSubbedResolverId.
    • Added GRAPH_INDEX_TEMPLATE, PACKAGE_GRAPH_LINTING_TEMPLATE, and PACKAGE_GRAPH_NO_LINTING_TEMPLATE.
    • Modified setup to use graph-specific templates if a Data Connect resolver is being configured.
  • src/init/features/functions/typescript.ts
    • Imported templateWithSubbedResolverId.
    • Added GRAPH_INDEX_TEMPLATE, PACKAGE_GRAPH_LINTING_TEMPLATE, and PACKAGE_GRAPH_NO_LINTING_TEMPLATE.
    • Modified setup to use graph-specific templates if a Data Connect resolver is being configured.
  • src/init/features/functions/utils.ts
    • Added new file implementing templateWithSubbedResolverId function for substituting resolver IDs in templates.
  • src/init/features/genkit/index.spec.ts
    • Updated references from doSetup to askQuestions in test descriptions.
    • Modified functionsStub.doSetup to functionsStub.askQuestions and functionsStub.actuate.
  • src/init/features/genkit/index.ts
    • Changed functionsSetup to functions.askQuestions and functions.actuate.
  • src/init/features/hosting/github.ts
    • Updated comment link from master to main.
  • src/init/features/index.ts
    • Changed functions export to functionsAskQuestions and functionsActuate.
    • Added dataconnectResolverAskQuestions, DataconnectResolverInfo, and dataconnectResolverActuate exports.
    • Added authAskQuestions, authActuate, and AuthInfo exports.
  • src/init/features/project.ts
    • Added setup.projectNumber = pm.projectNumber; to store the project number in the setup object.
  • src/init/features/storage/index.ts
    • Renamed from src/init/features/storage.ts.
    • Imported getRulesFromConsole.
    • Added logic to download existing Storage Security Rules from the Firebase console if available.
  • src/init/features/storage/rules.ts
    • Added new file implementing getRulesFromConsole function to fetch Storage Security Rules from the console.
  • src/init/index.ts
    • Added projectNumber to the Setup interface.
    • Added dataconnectResolver and auth to the SetupInfo interface.
    • Added dataconnect:resolver and auth to the featuresList.
  • src/mcp/CONTRIBUTING.md
    • Updated GitHub repository links from master to main.
  • src/mcp/README.md
    • Updated the table of tools, prompts, and resources to reflect new additions and changes.
    • Removed dataconnect_generate_schema and dataconnect_generate_operation tools.
    • Added crashlytics_get_report and functions_list_functions tools.
    • Added firestore:generate_security_rules and storage:generate_security_rules prompts.
    • Added app_id_guide, crashlytics_investigations_guide, crashlytics_issues_guide, and crashlytics_reports_guide resources.
    • Updated descriptions for firebase_get_environment, firebase_init, and firebase:consult prompts.
  • src/mcp/errors.ts
    • Removed requireGeminiToS and GEMINI_TOS_ERROR.
  • src/mcp/index.ts
    • Reordered imports for better organization.
    • Imported checkBillingEnabled.
    • Added enabledTools to the constructor options.
    • Modified detectProjectSetup to return early if activeFeatures or enabledTools are explicitly set.
    • Modified _createMcpContext to include isBillingEnabled.
    • Modified getAvailableTools and getAvailablePrompts to consider enabledTools and detectedFeatures.
  • src/mcp/prompt.spec.ts
    • Modified tests for isAvailable to use runtime resolution for availability checks.
  • src/mcp/prompt.ts
    • Modified isAvailable to resolve the availability check function at runtime, allowing for more flexible testing and mocking.
  • src/mcp/prompts/core/consult.ts
    • Removed the file.
  • src/mcp/prompts/core/index.ts
    • Removed consult from corePrompts.
  • src/mcp/prompts/core/init.ts
    • Updated the prompt for backend services to remove hosting deployment details.
    • Added new instructions for deploying web applications using the Firebase MCP Server's deploy prompt.
  • src/mcp/prompts/crashlytics/connect.ts
    • Updated prompt content to reference new resource guides (app_id, crashlytics/reports, crashlytics/issues, crashlytics/investigations) and provide clearer instructions for connecting to Crashlytics.
  • src/mcp/prompts/firestore/generate_security_rules.ts
    • Added new file implementing a prompt for generating Firestore security rules and unit tests, including a detailed workflow and output format.
  • src/mcp/prompts/firestore/index.ts
    • Added new file exporting firestorePrompts and including generateSecurityRules.
  • src/mcp/prompts/index.spec.ts
    • Added new test file for availablePrompts, verifying prompt filtering based on active and detected features.
  • src/mcp/prompts/index.ts
    • Added firestorePrompts and storagePrompts to the prompts object.
    • Modified availablePrompts to prioritize activeFeatures and fallback to detectedFeatures.
  • src/mcp/prompts/storage/generate_security_rules.ts
    • Added new file implementing a prompt for generating Firebase Storage security rules and unit tests, including a detailed workflow and output format.
  • src/mcp/prompts/storage/index.ts
    • Added new file exporting storagePrompts and including generateSecurityRules.
  • src/mcp/resources/guides/app_id.ts
    • Added new file implementing the app_id_guide resource, providing instructions for obtaining Firebase App IDs.
  • src/mcp/resources/guides/crashlytics_connect.ts
    • Added new file implementing the crashlytics_connect_guide resource, guiding agents on connecting to Firebase Crashlytics.
  • src/mcp/resources/guides/crashlytics_investigations.ts
    • Added new file implementing the crashlytics_investigations_guide resource, detailing how to diagnose and fix Crashlytics issues.
  • src/mcp/resources/guides/crashlytics_issues.ts
    • Added new file implementing the crashlytics_issues_guide resource, providing guidance on displaying and prioritizing Crashlytics issues.
  • src/mcp/resources/guides/crashlytics_reports.ts
    • Added new file implementing the crashlytics_reports_guide resource, detailing how to request and interpret Crashlytics reports.
  • src/mcp/resources/guides/init_auth.ts
    • Updated content for the auth initialization guide to include firebase.json configuration for providers and instructions to run firebase deploy --only auth.
  • src/mcp/resources/guides/init_backend.ts
    • Updated content for the backend initialization guide, removing hosting deployment and adding explicit instructions for deploying web applications via the MCP Server's deploy prompt.
  • src/mcp/resources/index.ts
    • Added app_id_guide, crashlytics_connect_guide, crashlytics_investigations_guide, crashlytics_issues_guide, and crashlytics_reports_guide to available resources.
  • src/mcp/resources/templates/init/dataconnect/secondary_schema.gql
    • Added new file with a sample secondary schema for Data Connect custom resolvers.
  • src/mcp/resources/templates/init/functions/javascript/index-ongraphrequest.js
    • Added new file with sample JavaScript code for functions with onGraphRequest.
  • src/mcp/resources/templates/init/functions/javascript/package-ongraphrequest.lint.json
    • Added new file with package.json configuration for JavaScript functions with onGraphRequest and linting.
  • src/mcp/resources/templates/init/functions/javascript/package-ongraphrequest.nolint.json
    • Added new file with package.json configuration for JavaScript functions with onGraphRequest and no linting.
  • src/mcp/resources/templates/init/functions/typescript/index-ongraphrequest.ts
    • Added new file with sample TypeScript code for functions with onGraphRequest.
  • src/mcp/resources/templates/init/functions/typescript/package-ongraphrequest.lint.json
    • Added new file with package.json configuration for TypeScript functions with onGraphRequest and linting.
  • src/mcp/resources/templates/init/functions/typescript/package-ongraphrequest.nolint.json
    • Added new file with package.json configuration for TypeScript functions with onGraphRequest and no linting.
  • src/mcp/resources/templates/init/functions/typescript/tsconfig.json
    • Updated target compiler option to es2020.
  • src/mcp/resources/templates/init/storage/rules.ts
    • Added new file with sample Storage Security Rules.
  • src/mcp/server.json
    • Updated firebase-tools version to 15.6.0.
  • src/mcp/tool.spec.ts
    • Modified tests for isAvailable to use runtime resolution for availability checks.
  • src/mcp/tool.ts
    • Modified isAvailable to resolve the availability check function at runtime, allowing for more flexible testing and mocking.
  • src/mcp/tools/crashlytics/get_report.ts
    • Added CrashlyticsReportSchema to ReportInputSchema.
  • src/mcp/tools/crashlytics/index.ts
    • Added get_report tool to Crashlytics tools.
  • src/mcp/tools/dataconnect/build.ts
    • Changed pickService to pickOneService.
  • src/mcp/tools/dataconnect/execute.ts
    • Changed pickService to pickOneService.
  • src/mcp/tools/dataconnect/generate_operation.ts
    • Removed the file.
  • src/mcp/tools/dataconnect/generate_schema.ts
    • Removed the file.
  • src/mcp/tools/dataconnect/index.ts
    • Removed generate_schema and generate_operation tools.
    • Added build tool to Data Connect tools.
  • src/mcp/tools/firebase/get_environment.ts
    • Added isBillingEnabled to the environment response.
  • src/mcp/tools/firebase/init.ts
    • Changed doSetup to askQuestions and actuate.
    • Added dataconnect:resolver and auth to the list of available features for initialization.
  • src/mcp/tools/firebase/list_apps.ts
    • Added platform as an optional argument to filter apps by platform.
  • src/mcp/tools/firebase/update_environment.ts
    • Added isBillingEnabled to the updateEnvironment arguments.
  • src/mcp/tools/functions/index.ts
    • Added list_functions tool to functions tools.
  • src/mcp/tools/functions/list_functions.ts
    • Added new file implementing the functions_list_functions tool to list deployed functions.
  • src/mcp/tools/index.spec.ts
    • Added new test file for availableTools, verifying tool filtering based on active, detected, and enabled features.
  • src/mcp/tools/index.ts
    • Added functionsTools, firestoreTools, and storageTools.
    • Modified availableTools to filter tools based on enabledTools if provided, otherwise using activeFeatures or detectedFeatures.
  • src/mcp/tools/tool_list.ts
    • Added new file listing all available tools with their descriptions.
  • src/mcp/types.ts
    • Added isBillingEnabled to McpContext interface.
    • Added enabledTools to ClientConfig interface.
    • Added functions, firestore, and storage to SERVER_FEATURES.
  • src/mcp/util/availability.ts
    • Imported checkBillingEnabled.
    • Added checkFunctionsAvailable, checkFirestoreAvailable, and checkStorageAvailable functions for feature availability checks.
  • src/mcp/util/index.ts
    • Imported checkBillingEnabled.
  • src/mcp/util/project.ts
    • Imported checkBillingEnabled.
  • src/mcp/util/sdk.ts
    • Imported checkBillingEnabled.
  • src/parseBoltRules.ts
    • Removed the file.
  • src/projectUtils.ts
    • Added getProjectNumber function to retrieve the project number.
  • src/templates.ts
    • Added new templates for JavaScript and TypeScript functions with onGraphRequest.
    • Added new template for Data Connect secondary schema (secondary_schema.gql).
  • src/test/fixtures/loadCJSON/invalid.cjson
    • Added new file with invalid CJSON content for testing.
  • src/test/fixtures/loadCJSON/nonexistent.cjson
    • Added new file for testing non-existent CJSON files.
  • src/test/fixtures/loadCJSON/valid.cjson
    • Added new file with valid CJSON content for testing.
  • src/test/integration/frameworks/next.spec.ts
    • Updated x-nextjs-stale-time header value in tests.
  • src/test/integration/functions.spec.ts
    • Updated firebase-functions SDK version check in tests.
  • src/test/integration/init.spec.ts
    • Updated functions.doSetup to functions.askQuestions and functions.actuate.
  • src/test/integration/mcp.spec.ts
    • Added tests for the mcp --tools option.
  • src/test/integration/project.spec.ts
    • Updated firebase-functions SDK version check in tests.
  • src/test/integration/storage.spec.ts
    • Updated storage.doSetup to storage.askQuestions and storage.actuate.
  • src/test/integration/webframeworks.spec.ts
    • Updated x-nextjs-stale-time header value in tests.
  • src/test/test-helpers.ts
    • Added expectThrowsAsync helper function.
  • src/track.ts
    • Added project_status to trackGA4 parameters.
  • src/utils.ts
    • Imported getProjectNumber.
    • Added getProjectNumber to utils.getProjectId.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/node-test.yml
Activity
  • falahat created this pull request.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces substantial improvements to the local build and deployment process for App Hosting. Key changes include full support for deploying local builds, switching to .tar.gz for source archives, automatic injection of Firebase SDK configuration for local builds, and enhancing security by enabling Uniform Bucket-Level Access on source buckets. The code is well-structured, with good refactoring to improve modularity and reuse. I've identified a potential issue with how locallyBuiltSource is being set and a minor point for improvement. Overall, this is a great enhancement.

userStorageUri: context.backendStorageUris[backendId],
rootDirectory: context.backendConfigs[backendId].rootDir,
locallyBuiltSource: true, // generalize
locallyBuiltSource: true, // generalize
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The locallyBuiltSource flag is hardcoded to true, which seems incorrect for backends that are deployed from source but not pre-built locally (i.e., where cfg.localBuild is false). For those cases, the backend service should perform the build, so locallyBuiltSource should be false. The value should be determined based on whether the backend was configured for a local build.

Suggested change
locallyBuiltSource: true, // generalize
locallyBuiltSource: !!context.backendLocalBuilds[backendId],

const zippedSourcePath = await createTarArchive(cfg, rootDir, builtAppDir);
const zippedSourcePath = await util.createTarArchive(cfg, rootDir, builtAppDir);
logLabeledBullet(
"apphosting....",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The log label "apphosting...." appears to have extra dots. For consistency with other logs, it should probably be "apphosting".

Suggested change
"apphosting....",
"apphosting",

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant