firebase-tools 15.0.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/accountExporter.js +3 -5
- package/lib/accountImporter.js +4 -5
- package/lib/api.js +3 -3
- package/lib/apiv2.js +9 -13
- package/lib/appUtils.js +33 -36
- package/lib/appdistribution/client.js +4 -8
- package/lib/appdistribution/distribution.js +4 -4
- package/lib/appdistribution/options-parser-util.js +8 -9
- package/lib/appdistribution/types.js +2 -2
- package/lib/appdistribution/yaml_helper.js +33 -17
- package/lib/apphosting/app.js +8 -13
- package/lib/apphosting/backend.js +34 -24
- package/lib/apphosting/config.js +14 -14
- package/lib/apphosting/githubConnections.js +38 -35
- package/lib/apphosting/localbuilds.js +4 -6
- package/lib/apphosting/repo.js +24 -20
- package/lib/apphosting/rollout.js +12 -5
- package/lib/apphosting/secrets/dialogs.js +9 -9
- package/lib/apphosting/secrets/index.js +9 -11
- package/lib/apphosting/utils.js +2 -3
- package/lib/apphosting/yaml.js +12 -11
- package/lib/apptesting/ensureProjectConfigured.js +1 -2
- package/lib/apptesting/invokeTests.js +2 -3
- package/lib/apptesting/parseTestFiles.js +5 -6
- package/lib/apptesting/types.js +2 -2
- package/lib/archiveDirectory.js +1 -2
- package/lib/auth.js +36 -40
- package/lib/bin/cli.js +2 -3
- package/lib/bin/mcp.js +47 -10
- package/lib/checkMinRequiredVersion.js +1 -2
- package/lib/checkValidTargetFilters.js +1 -2
- package/lib/command.js +6 -9
- package/lib/commands/appdistribution-testers-list.js +2 -3
- package/lib/commands/apphosting-backends-list.js +4 -6
- package/lib/commands/apphosting-builds-create.js +2 -3
- package/lib/commands/apphosting-builds-get.js +1 -2
- package/lib/commands/apphosting-rollouts-list.js +1 -2
- package/lib/commands/apps-init.js +1 -1
- package/lib/commands/{apptesting-execute.js → apptesting-wata.js} +3 -4
- package/lib/commands/crashlytics-symbols-upload.js +2 -2
- package/lib/commands/dataconnect-execute.js +4 -4
- package/lib/commands/dataconnect-sdk-generate.js +5 -6
- package/lib/commands/dataconnect-services-list.js +7 -8
- package/lib/commands/dataconnect-sql-diff.js +1 -2
- package/lib/commands/dataconnect-sql-migrate.js +4 -3
- package/lib/commands/dataconnect-sql-setup.js +2 -2
- package/lib/commands/dataconnect-sql-shell.js +5 -1
- package/lib/commands/emulators-start.js +1 -2
- package/lib/commands/ext-configure.js +6 -4
- package/lib/commands/ext-dev-list.js +2 -3
- package/lib/commands/ext-dev-upload.js +2 -2
- package/lib/commands/ext-export.js +1 -1
- package/lib/commands/ext-info.js +2 -3
- package/lib/commands/ext-install.js +5 -7
- package/lib/commands/firestore-backups-list.js +1 -2
- package/lib/commands/firestore-backups-schedules-list.js +1 -2
- package/lib/commands/firestore-indexes-list.js +1 -2
- package/lib/commands/firestore-utils.js +1 -2
- package/lib/commands/functions-artifacts-setpolicy.js +1 -2
- package/lib/commands/functions-config-export.js +2 -3
- package/lib/commands/hosting-channel-deploy.js +2 -2
- package/lib/commands/hosting-clone.js +2 -3
- package/lib/commands/hosting-sites-create.js +1 -1
- package/lib/commands/index.js +2 -3
- package/lib/commands/init.js +4 -5
- package/lib/commands/internaltesting-functions-discover.js +1 -1
- package/lib/commands/login.js +4 -5
- package/lib/commands/logout.js +3 -3
- package/lib/commands/projects-create.js +1 -1
- package/lib/commands/remoteconfig-experiments-list.js +2 -3
- package/lib/commands/remoteconfig-get.js +1 -1
- package/lib/commands/remoteconfig-rollback.js +1 -2
- package/lib/commands/remoteconfig-rollouts-list.js +2 -3
- package/lib/commands/remoteconfig-versions-list.js +3 -4
- package/lib/commands/use.js +3 -3
- package/lib/config.js +4 -5
- package/lib/crashlytics/buildToolsJarHelper.js +3 -5
- package/lib/crashlytics/events.js +4 -7
- package/lib/crashlytics/filters.js +10 -12
- package/lib/crashlytics/issues.js +2 -3
- package/lib/crashlytics/notes.js +3 -4
- package/lib/crashlytics/reports.js +21 -15
- package/lib/crashlytics/types.js +7 -7
- package/lib/crashlytics/utils.js +4 -4
- package/lib/database/api.js +2 -3
- package/lib/database/import.js +4 -4
- package/lib/database/metadata.js +5 -6
- package/lib/database/rulesConfig.js +2 -3
- package/lib/dataconnect/build.js +10 -13
- package/lib/dataconnect/checkIam.js +1 -2
- package/lib/dataconnect/client.js +15 -18
- package/lib/dataconnect/dataplaneClient.js +6 -6
- package/lib/dataconnect/ensureApis.js +2 -3
- package/lib/dataconnect/errors.js +8 -11
- package/lib/dataconnect/filters.js +2 -3
- package/lib/dataconnect/freeTrial.js +3 -4
- package/lib/dataconnect/graphqlError.js +5 -8
- package/lib/dataconnect/load.js +10 -11
- package/lib/dataconnect/names.js +14 -18
- package/lib/dataconnect/prompts.js +1 -2
- package/lib/dataconnect/provisionCloudSql.js +13 -17
- package/lib/dataconnect/schemaMigration.js +60 -27
- package/lib/dataconnect/types.js +10 -12
- package/lib/dataconnect/webhook.js +3 -3
- package/lib/defaultCredentials.js +3 -4
- package/lib/deploy/apphosting/deploy.js +2 -3
- package/lib/deploy/apphosting/prepare.js +3 -5
- package/lib/deploy/apphosting/release.js +1 -1
- package/lib/deploy/apphosting/util.js +1 -2
- package/lib/deploy/database/deploy.js +1 -2
- package/lib/deploy/database/prepare.js +1 -2
- package/lib/deploy/database/release.js +1 -2
- package/lib/deploy/dataconnect/context.js +15 -4
- package/lib/deploy/dataconnect/deploy.js +5 -6
- package/lib/deploy/dataconnect/prepare.js +7 -9
- package/lib/deploy/dataconnect/release.js +7 -10
- package/lib/deploy/extensions/deploy.js +7 -9
- package/lib/deploy/extensions/deploymentSummary.js +6 -7
- package/lib/deploy/extensions/planner.js +15 -18
- package/lib/deploy/extensions/prepare.js +9 -11
- package/lib/deploy/extensions/release.js +10 -12
- package/lib/deploy/extensions/secrets.js +8 -11
- package/lib/deploy/extensions/tasks.js +6 -8
- package/lib/deploy/extensions/v2FunctionHelper.js +2 -3
- package/lib/deploy/extensions/validate.js +1 -2
- package/lib/deploy/firestore/deploy.js +3 -5
- package/lib/deploy/firestore/prepare.js +2 -3
- package/lib/deploy/firestore/release.js +3 -4
- package/lib/deploy/functions/backend.js +52 -42
- package/lib/deploy/functions/build.js +41 -15
- package/lib/deploy/functions/cache/applyHash.js +3 -5
- package/lib/deploy/functions/cache/hash.js +4 -5
- package/lib/deploy/functions/cel.js +3 -3
- package/lib/deploy/functions/checkIam.js +8 -8
- package/lib/deploy/functions/containerCleaner.js +10 -6
- package/lib/deploy/functions/deploy.js +6 -8
- package/lib/deploy/functions/ensure.js +6 -9
- package/lib/deploy/functions/functionsDeployHelper.js +10 -11
- package/lib/deploy/functions/params.js +10 -10
- package/lib/deploy/functions/prepare.js +41 -36
- package/lib/deploy/functions/prepareFunctionsUpload.js +24 -10
- package/lib/deploy/functions/pricing.js +3 -3
- package/lib/deploy/functions/prompts.js +7 -10
- package/lib/deploy/functions/release/executor.js +5 -6
- package/lib/deploy/functions/release/fabricator.js +76 -29
- package/lib/deploy/functions/release/index.js +23 -14
- package/lib/deploy/functions/release/planner.js +15 -14
- package/lib/deploy/functions/release/reporter.js +20 -20
- package/lib/deploy/functions/release/sourceTokenScraper.js +4 -5
- package/lib/deploy/functions/remoteSource.js +3 -4
- package/lib/deploy/functions/runtimes/discovery/index.js +9 -12
- package/lib/deploy/functions/runtimes/discovery/parsing.js +2 -3
- package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +29 -10
- package/lib/deploy/functions/runtimes/index.js +1 -2
- package/lib/deploy/functions/runtimes/node/index.js +18 -9
- package/lib/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.js +2 -2
- package/lib/deploy/functions/runtimes/node/validate.js +1 -2
- package/lib/deploy/functions/runtimes/node/versioning.js +6 -7
- package/lib/deploy/functions/runtimes/python/index.js +12 -12
- package/lib/deploy/functions/runtimes/supported/index.js +5 -6
- package/lib/deploy/functions/services/auth.js +49 -36
- package/lib/deploy/functions/services/database.js +1 -2
- package/lib/deploy/functions/services/dataconnect.js +16 -2
- package/lib/deploy/functions/services/firebaseAlerts.js +1 -2
- package/lib/deploy/functions/services/firestore.js +3 -5
- package/lib/deploy/functions/services/index.js +2 -2
- package/lib/deploy/functions/services/remoteConfig.js +1 -2
- package/lib/deploy/functions/services/storage.js +3 -5
- package/lib/deploy/functions/services/testLab.js +1 -2
- package/lib/deploy/functions/triggerRegionHelper.js +1 -2
- package/lib/deploy/functions/validate.js +12 -11
- package/lib/deploy/hosting/convertConfig.js +38 -22
- package/lib/deploy/hosting/deploy.js +4 -7
- package/lib/deploy/hosting/hashcache.js +2 -3
- package/lib/deploy/hosting/prepare.js +14 -14
- package/lib/deploy/hosting/release.js +1 -2
- package/lib/deploy/index.js +7 -8
- package/lib/deploy/lifecycleHooks.js +3 -5
- package/lib/deploy/remoteconfig/deploy.js +1 -1
- package/lib/deploy/remoteconfig/functions.js +5 -6
- package/lib/deploy/remoteconfig/prepare.js +2 -3
- package/lib/deploy/remoteconfig/release.js +2 -2
- package/lib/deploy/storage/deploy.js +1 -1
- package/lib/deploy/storage/prepare.js +1 -1
- package/lib/deploy/storage/release.js +1 -1
- package/lib/deploymentTool.js +5 -6
- package/lib/detectProjectRoot.js +1 -2
- package/lib/downloadUtils.js +2 -3
- package/lib/emulator/adminSdkConfig.js +2 -3
- package/lib/emulator/apphosting/config.js +1 -2
- package/lib/emulator/apphosting/developmentServer.js +3 -3
- package/lib/emulator/apphosting/serve.js +20 -14
- package/lib/emulator/auth/cloudFunctions.js +2 -3
- package/lib/emulator/auth/errors.js +2 -2
- package/lib/emulator/auth/handlers.js +3 -4
- package/lib/emulator/auth/index.js +6 -6
- package/lib/emulator/auth/operations.js +171 -129
- package/lib/emulator/auth/server.js +30 -22
- package/lib/emulator/auth/state.js +26 -36
- package/lib/emulator/auth/utils.js +12 -13
- package/lib/emulator/commandUtils.js +20 -20
- package/lib/emulator/controller.js +32 -29
- package/lib/emulator/databaseEmulator.js +1 -2
- package/lib/emulator/dataconnect/pgliteServer.js +48 -104
- package/lib/emulator/dataconnectEmulator.js +6 -9
- package/lib/emulator/download.js +2 -3
- package/lib/emulator/downloadableEmulatorInfo.json +31 -31
- package/lib/emulator/downloadableEmulators.js +49 -24
- package/lib/emulator/emulatorLogger.js +19 -4
- package/lib/emulator/env.js +6 -8
- package/lib/emulator/eventarcEmulator.js +2 -3
- package/lib/emulator/eventarcEmulatorUtils.js +3 -6
- package/lib/emulator/extensions/postinstall.js +1 -2
- package/lib/emulator/extensions/validation.js +4 -7
- package/lib/emulator/extensionsEmulator.js +6 -9
- package/lib/emulator/functionsEmulator.js +89 -46
- package/lib/emulator/functionsEmulatorRuntime.js +1 -1
- package/lib/emulator/functionsEmulatorShared.js +30 -30
- package/lib/emulator/functionsEmulatorShell.js +4 -6
- package/lib/emulator/functionsEmulatorUtils.js +8 -9
- package/lib/emulator/functionsRuntimeWorker.js +18 -9
- package/lib/emulator/hub.js +41 -34
- package/lib/emulator/hubClient.js +1 -1
- package/lib/emulator/initEmulators.js +2 -3
- package/lib/emulator/loggingEmulator.js +2 -2
- package/lib/emulator/portUtils.js +4 -5
- package/lib/emulator/registry.js +10 -4
- package/lib/emulator/shared/request.js +1 -2
- package/lib/emulator/storage/apis/firebase.js +16 -20
- package/lib/emulator/storage/apis/gcloud.js +6 -9
- package/lib/emulator/storage/apis/shared.js +1 -2
- package/lib/emulator/storage/crc.js +2 -3
- package/lib/emulator/storage/files.js +18 -41
- package/lib/emulator/storage/metadata.js +10 -4
- package/lib/emulator/storage/multipart.js +1 -2
- package/lib/emulator/storage/rfc.js +1 -2
- package/lib/emulator/storage/rules/config.js +1 -2
- package/lib/emulator/storage/rules/manager.js +3 -5
- package/lib/emulator/storage/rules/runtime.js +15 -13
- package/lib/emulator/storage/rules/types.js +2 -2
- package/lib/emulator/storage/rules/utils.js +5 -6
- package/lib/emulator/storage/server.js +1 -2
- package/lib/emulator/storage/upload.js +3 -4
- package/lib/emulator/taskQueue.js +11 -4
- package/lib/emulator/tasksEmulator.js +11 -12
- package/lib/emulator/types.js +6 -6
- package/lib/emulator/ui.js +6 -1
- package/lib/ensureApiEnabled.js +7 -9
- package/lib/env.js +2 -3
- package/lib/error.js +11 -13
- package/lib/errorOut.js +1 -2
- package/lib/experiments.js +15 -18
- package/lib/extensions/askUserForEventsConfig.js +12 -13
- package/lib/extensions/askUserForParam.js +11 -12
- package/lib/extensions/change-log.js +4 -5
- package/lib/extensions/checkProjectBilling.js +1 -2
- package/lib/extensions/diagnose.js +1 -2
- package/lib/extensions/displayExtensionInfo.js +25 -32
- package/lib/extensions/emulator/optionsHelper.js +6 -8
- package/lib/extensions/emulator/specHelper.js +15 -16
- package/lib/extensions/emulator/triggerHelper.js +3 -5
- package/lib/extensions/etags.js +2 -3
- package/lib/extensions/export.js +7 -9
- package/lib/extensions/extensionsApi.js +23 -29
- package/lib/extensions/extensionsHelper.js +52 -80
- package/lib/extensions/listExtensions.js +3 -5
- package/lib/extensions/localHelper.js +5 -5
- package/lib/extensions/manifest.js +15 -16
- package/lib/extensions/metricsUtils.js +3 -4
- package/lib/extensions/paramHelper.js +21 -18
- package/lib/extensions/provisioningHelper.js +17 -21
- package/lib/extensions/publishHelpers.js +1 -2
- package/lib/extensions/publisherApi.js +11 -13
- package/lib/extensions/refs.js +6 -7
- package/lib/extensions/runtimes/common.js +18 -19
- package/lib/extensions/runtimes/node.js +5 -6
- package/lib/extensions/secretsUtils.js +8 -8
- package/lib/extensions/tos.js +7 -8
- package/lib/extensions/types.js +3 -3
- package/lib/extensions/updateHelper.js +6 -7
- package/lib/extensions/utils.js +6 -8
- package/lib/extensions/versionHelper.js +1 -2
- package/lib/extensions/warnings.js +6 -8
- package/lib/fetchMOTD.js +1 -2
- package/lib/fetchWebSetup.js +3 -4
- package/lib/filterTargets.js +1 -2
- package/lib/firebaseConfigValidate.js +2 -3
- package/lib/firestore/api-sort.js +8 -9
- package/lib/firestore/api-types.js +15 -15
- package/lib/firestore/api.js +15 -13
- package/lib/firestore/backupUtils.js +3 -3
- package/lib/firestore/checkDatabaseType.js +1 -2
- package/lib/firestore/delete.js +1 -2
- package/lib/firestore/encodeFirestoreValue.js +1 -2
- package/lib/firestore/fsConfig.js +1 -2
- package/lib/firestore/options.js +1 -1
- package/lib/firestore/util.js +5 -6
- package/lib/firestore/validator.js +4 -5
- package/lib/frameworks/angular/index.js +14 -15
- package/lib/frameworks/angular/utils.js +21 -23
- package/lib/frameworks/astro/index.js +7 -7
- package/lib/frameworks/astro/utils.js +4 -6
- package/lib/frameworks/compose/discover/filesystem.js +3 -3
- package/lib/frameworks/compose/discover/frameworkMatcher.js +4 -5
- package/lib/frameworks/compose/discover/index.js +1 -2
- package/lib/frameworks/compose/discover/runtime/node.js +8 -11
- package/lib/frameworks/compose/driver/docker.js +3 -5
- package/lib/frameworks/compose/driver/hooks.js +2 -2
- package/lib/frameworks/compose/driver/index.js +2 -2
- package/lib/frameworks/compose/driver/local.js +2 -3
- package/lib/frameworks/compose/index.js +5 -7
- package/lib/frameworks/constants.js +3 -3
- package/lib/frameworks/express/index.js +7 -8
- package/lib/frameworks/flutter/index.js +6 -7
- package/lib/frameworks/flutter/utils.js +4 -5
- package/lib/frameworks/index.js +21 -22
- package/lib/frameworks/next/constants.js +5 -2
- package/lib/frameworks/next/index.js +34 -32
- package/lib/frameworks/next/utils.js +40 -39
- package/lib/frameworks/nuxt/index.js +9 -9
- package/lib/frameworks/nuxt/utils.js +4 -6
- package/lib/frameworks/nuxt2/index.js +7 -7
- package/lib/frameworks/sveltekit/index.js +6 -8
- package/lib/frameworks/utils.js +26 -24
- package/lib/frameworks/vite/index.js +8 -9
- package/lib/fsAsync.js +1 -2
- package/lib/fsutils.js +5 -6
- package/lib/functional.js +11 -11
- package/lib/functions/artifacts.js +25 -22
- package/lib/functions/ensureTargeted.js +1 -2
- package/lib/functions/env.js +13 -14
- package/lib/functions/functionslog.js +2 -3
- package/lib/functions/projectConfig.js +29 -33
- package/lib/functions/python.js +10 -4
- package/lib/functions/secrets.js +32 -18
- package/lib/functionsConfig.js +14 -14
- package/lib/functionsConfigClone.js +1 -2
- package/lib/functionsShellCommandAction.js +2 -3
- package/lib/gcp/apphosting.js +43 -28
- package/lib/gcp/apptesting.js +2 -2
- package/lib/gcp/artifactregistry.js +5 -5
- package/lib/gcp/auth.js +11 -13
- package/lib/gcp/cloudbilling.js +4 -5
- package/lib/gcp/cloudbuild.js +10 -11
- package/lib/gcp/cloudfunctions.js +61 -45
- package/lib/gcp/cloudfunctionsv2.js +81 -43
- package/lib/gcp/cloudlogging.js +2 -4
- package/lib/gcp/cloudmonitoring.js +7 -7
- package/lib/gcp/cloudscheduler.js +12 -14
- package/lib/gcp/cloudsql/cloudsqladmin.js +19 -21
- package/lib/gcp/cloudsql/connect.js +14 -9
- package/lib/gcp/cloudsql/fbToolsAuthClient.js +5 -3
- package/lib/gcp/cloudsql/interactive.js +2 -3
- package/lib/gcp/cloudsql/permissions.js +8 -8
- package/lib/gcp/cloudsql/permissionsSetup.js +9 -9
- package/lib/gcp/cloudtasks.js +19 -18
- package/lib/gcp/computeEngine.js +1 -2
- package/lib/gcp/devConnect.js +32 -29
- package/lib/gcp/docker.js +2 -4
- package/lib/gcp/eventarc.js +5 -5
- package/lib/gcp/firedata.js +4 -4
- package/lib/gcp/firestore.js +16 -16
- package/lib/gcp/iam.js +11 -12
- package/lib/gcp/identityPlatform.js +4 -5
- package/lib/gcp/k8s.js +1 -2
- package/lib/gcp/location.js +2 -2
- package/lib/gcp/proto.js +10 -11
- package/lib/gcp/pubsub.js +4 -5
- package/lib/gcp/resourceManager.js +5 -5
- package/lib/gcp/rules.js +13 -14
- package/lib/gcp/run.js +24 -31
- package/lib/gcp/runv2.js +39 -27
- package/lib/gcp/secretManager.js +60 -39
- package/lib/gcp/serviceusage.js +8 -4
- package/lib/gcp/storage.js +22 -20
- package/lib/gemini/fdcExperience.js +5 -5
- package/lib/getDefaultDatabaseInstance.js +2 -4
- package/lib/getDefaultHostingSite.js +3 -4
- package/lib/getProjectNumber.js +1 -2
- package/lib/hosting/api.js +32 -36
- package/lib/hosting/cloudRunProxy.js +2 -3
- package/lib/hosting/config.js +17 -17
- package/lib/hosting/expireUtils.js +3 -3
- package/lib/hosting/functionsProxy.js +1 -2
- package/lib/hosting/implicitInit.js +1 -2
- package/lib/hosting/initMiddleware.js +1 -2
- package/lib/hosting/interactive.js +1 -2
- package/lib/hosting/proxy.js +3 -5
- package/lib/hosting/runTags.js +8 -11
- package/lib/init/features/account.js +1 -2
- package/lib/init/features/ailogic/index.js +3 -5
- package/lib/init/features/ailogic/utils.js +6 -8
- package/lib/init/features/aitools/claude.js +1 -2
- package/lib/init/features/aitools/cursor.js +1 -2
- package/lib/init/features/aitools/gemini.js +1 -1
- package/lib/init/features/aitools/promptUpdater.js +10 -12
- package/lib/init/features/aitools.js +1 -2
- package/lib/init/features/apphosting.js +3 -4
- package/lib/init/features/apptesting/index.js +9 -9
- package/lib/init/features/database.js +4 -5
- package/lib/init/features/dataconnect/create_app.js +3 -4
- package/lib/init/features/dataconnect/index.js +25 -22
- package/lib/init/features/dataconnect/resolver.js +6 -10
- package/lib/init/features/dataconnect/sdk.js +31 -24
- package/lib/init/features/emulators.js +7 -6
- package/lib/init/features/extensions/index.js +3 -5
- package/lib/init/features/firestore/index.js +7 -9
- package/lib/init/features/firestore/indexes.js +2 -2
- package/lib/init/features/firestore/rules.js +3 -3
- package/lib/init/features/functions/index.js +3 -5
- package/lib/init/features/functions/javascript.js +1 -2
- package/lib/init/features/functions/npm-dependencies.js +1 -2
- package/lib/init/features/functions/python.js +1 -2
- package/lib/init/features/functions/typescript.js +1 -2
- package/lib/init/features/genkit/index.js +44 -18
- package/lib/init/features/hosting/github.js +6 -8
- package/lib/init/features/hosting/index.js +10 -13
- package/lib/init/features/project.js +4 -7
- package/lib/init/features/remoteconfig.js +1 -2
- package/lib/init/features/storage.js +3 -5
- package/lib/init/index.js +4 -7
- package/lib/init/spawn.js +7 -9
- package/lib/listFiles.js +1 -2
- package/lib/loadCJSON.js +1 -2
- package/lib/localFunction.js +14 -15
- package/lib/logError.js +1 -2
- package/lib/logger.js +7 -7
- package/lib/management/apps.js +22 -22
- package/lib/management/database.js +11 -12
- package/lib/management/projects.js +57 -56
- package/lib/management/provisioning/errorHandler.js +3 -5
- package/lib/management/provisioning/provision.js +15 -9
- package/lib/management/studio.js +2 -3
- package/lib/mcp/errors.js +4 -4
- package/lib/mcp/index.js +47 -45
- package/lib/mcp/prompt.js +1 -2
- package/lib/mcp/prompts/core/consult.js +2 -3
- package/lib/mcp/prompts/crashlytics/connect.js +15 -122
- package/lib/mcp/prompts/dataconnect/schema.js +3 -3
- package/lib/mcp/prompts/index.js +8 -10
- package/lib/mcp/resource.js +3 -15
- package/lib/mcp/resources/guides/app_id.js +39 -0
- package/lib/mcp/resources/guides/crashlytics_connect.js +51 -0
- package/lib/mcp/resources/guides/crashlytics_investigations.js +51 -0
- package/lib/mcp/resources/guides/crashlytics_issues.js +42 -0
- package/lib/mcp/resources/guides/crashlytics_reports.js +112 -0
- package/lib/mcp/resources/index.js +11 -3
- package/lib/mcp/tool.js +3 -15
- package/lib/mcp/tools/apphosting/fetch_logs.js +3 -4
- package/lib/mcp/tools/apphosting/list_backends.js +1 -1
- package/lib/mcp/tools/auth/get_users.js +5 -16
- package/lib/mcp/tools/core/create_android_sha.js +4 -1
- package/lib/mcp/tools/core/get_environment.js +7 -4
- package/lib/mcp/tools/core/get_sdk_config.js +4 -5
- package/lib/mcp/tools/core/get_security_rules.js +1 -2
- package/lib/mcp/tools/core/init.js +2 -2
- package/lib/mcp/tools/core/logout.js +1 -1
- package/lib/mcp/tools/core/read_resources.js +2 -2
- package/lib/mcp/tools/core/validate_security_rules.js +1 -2
- package/lib/mcp/tools/crashlytics/events.js +43 -19
- package/lib/mcp/tools/crashlytics/index.js +1 -6
- package/lib/mcp/tools/crashlytics/issues.js +33 -12
- package/lib/mcp/tools/crashlytics/reports.js +66 -117
- package/lib/mcp/tools/dataconnect/list_services.js +2 -3
- package/lib/mcp/tools/firestore/converter.js +3 -5
- package/lib/mcp/tools/firestore/delete_document.js +1 -1
- package/lib/mcp/tools/functions/get_logs.js +14 -12
- package/lib/mcp/tools/functions/list_functions.js +1 -1
- package/lib/mcp/tools/index.js +67 -50
- package/lib/mcp/util/apptesting/availability.js +1 -2
- package/lib/mcp/util/availability.js +1 -2
- package/lib/mcp/util/crashlytics/availability.js +1 -2
- package/lib/mcp/util/dataconnect/compile.js +7 -6
- package/lib/mcp/util/dataconnect/converter.js +7 -10
- package/lib/mcp/util/dataconnect/emulator.js +1 -2
- package/lib/mcp/util.js +9 -11
- package/lib/messaging/sendMessage.js +1 -2
- package/lib/metaprogramming.js +1 -2
- package/lib/operation-poller.js +2 -2
- package/lib/profileReport.js +6 -6
- package/lib/profiler.js +1 -2
- package/lib/projectPath.js +1 -2
- package/lib/projectUtils.js +5 -6
- package/lib/prompt.js +22 -13
- package/lib/rc.js +5 -7
- package/lib/remoteconfig/deleteExperiment.js +1 -2
- package/lib/remoteconfig/deleteRollout.js +1 -2
- package/lib/remoteconfig/get.js +2 -3
- package/lib/remoteconfig/getExperiment.js +2 -2
- package/lib/remoteconfig/getRollout.js +2 -2
- package/lib/remoteconfig/interfaces.js +1 -1
- package/lib/remoteconfig/listExperiments.js +2 -2
- package/lib/remoteconfig/listRollouts.js +2 -2
- package/lib/remoteconfig/publish.js +1 -2
- package/lib/remoteconfig/rollback.js +1 -2
- package/lib/remoteconfig/versionslist.js +1 -2
- package/lib/requireAuth.js +4 -6
- package/lib/requireConfig.js +5 -8
- package/lib/requireDatabaseInstance.js +2 -2
- package/lib/requireHostingSite.js +1 -2
- package/lib/requireInteractive.js +1 -1
- package/lib/requirePermissions.js +1 -2
- package/lib/requireTosAcceptance.js +1 -2
- package/lib/responseToError.js +1 -2
- package/lib/rtdb.js +2 -3
- package/lib/rulesDeploy.js +3 -4
- package/lib/serve/functions.js +9 -1
- package/lib/serve/hosting.js +4 -5
- package/lib/serve/index.js +1 -2
- package/lib/shortenUrl.js +1 -2
- package/lib/templates.js +3 -4
- package/lib/throttler/throttler.js +3 -3
- package/lib/timeout.js +2 -3
- package/lib/track.js +23 -14
- package/lib/tsconfig.publish.tsbuildinfo +1 -0
- package/lib/unzip.js +2 -3
- package/lib/utils.js +62 -63
- package/lib/vsCodeUtils.js +2 -3
- package/package.json +6 -6
- package/templates/extensions/typescript/index.ts +1 -1
- package/templates/extensions/typescript/package.lint.json +1 -1
- package/templates/extensions/typescript/package.nolint.json +1 -1
- package/templates/extensions/typescript/tsconfig.json +2 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.batch_get_events = exports.list_events = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const tool_1 = require("../../tool");
|
|
6
4
|
const js_yaml_1 = require("js-yaml");
|
|
5
|
+
const zod_1 = require("zod");
|
|
7
6
|
const events_1 = require("../../../crashlytics/events");
|
|
8
|
-
const types_1 = require("../../../crashlytics/types");
|
|
9
7
|
const filters_1 = require("../../../crashlytics/filters");
|
|
10
|
-
const
|
|
8
|
+
const types_1 = require("../../../crashlytics/types");
|
|
9
|
+
const app_id_1 = require("../../resources/guides/app_id");
|
|
10
|
+
const tool_1 = require("../../tool");
|
|
11
11
|
const DUMP_OPTIONS = { lineWidth: 200 };
|
|
12
12
|
function formatFrames(origFrames, maxFrames = 20) {
|
|
13
13
|
const frames = origFrames || [];
|
|
@@ -33,7 +33,9 @@ function formatFrames(origFrames, maxFrames = 20) {
|
|
|
33
33
|
return formatted;
|
|
34
34
|
}
|
|
35
35
|
function toText(event) {
|
|
36
|
-
|
|
36
|
+
if (!event) {
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
37
39
|
const result = {};
|
|
38
40
|
for (const [key, value] of Object.entries(event)) {
|
|
39
41
|
if (key === "logs") {
|
|
@@ -46,7 +48,7 @@ function toText(event) {
|
|
|
46
48
|
const breadcrumbs = value || [];
|
|
47
49
|
const slicedBreadcrumbs = breadcrumbs.length > 10 ? breadcrumbs.slice(-10) : breadcrumbs;
|
|
48
50
|
const breadcrumbLines = slicedBreadcrumbs.map((b) => {
|
|
49
|
-
const paramString = Object.entries(b
|
|
51
|
+
const paramString = Object.entries(b?.params || {})
|
|
50
52
|
.map(([k, v]) => `${k}: ${v}`)
|
|
51
53
|
.join(", ");
|
|
52
54
|
const params = paramString ? ` { ${paramString} }` : "";
|
|
@@ -56,7 +58,7 @@ function toText(event) {
|
|
|
56
58
|
}
|
|
57
59
|
else if (key === "threads") {
|
|
58
60
|
let threads = value || [];
|
|
59
|
-
if (
|
|
61
|
+
if (event.issue?.errorType === types_1.ErrorType.FATAL || event.issue?.errorType === types_1.ErrorType.ANR) {
|
|
60
62
|
threads = threads.filter((t) => t.crashed || t.blamed);
|
|
61
63
|
}
|
|
62
64
|
const threadStrings = threads.map((thread) => {
|
|
@@ -109,13 +111,24 @@ exports.list_events = (0, tool_1.tool)("crashlytics", {
|
|
|
109
111
|
requiresAuth: true,
|
|
110
112
|
},
|
|
111
113
|
}, async ({ appId, filter, pageSize }) => {
|
|
112
|
-
|
|
113
|
-
if (!appId)
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
const result = { content: [] };
|
|
115
|
+
if (!appId) {
|
|
116
|
+
result.isError = true;
|
|
117
|
+
result.content.push({ type: "text", text: "Must specify 'appId' parameter" });
|
|
118
|
+
result.content.push({ type: "text", text: app_id_1.RESOURCE_CONTENT });
|
|
119
|
+
}
|
|
120
|
+
if (!filter || (!filter.issueId && !filter.issueVariantId)) {
|
|
121
|
+
result.isError = true;
|
|
122
|
+
result.content.push({
|
|
123
|
+
type: "text",
|
|
124
|
+
text: `Must specify 'filter.issueId' or 'filter.issueVariantId' parameters.`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (result.content.length > 0) {
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
117
130
|
const response = await (0, events_1.listEvents)(appId, filter, pageSize);
|
|
118
|
-
const eventsContent =
|
|
131
|
+
const eventsContent = response.events?.map((e) => toText(e)) || [];
|
|
119
132
|
return {
|
|
120
133
|
content: [{ type: "text", text: (0, js_yaml_1.dump)(eventsContent, DUMP_OPTIONS) }],
|
|
121
134
|
};
|
|
@@ -139,13 +152,24 @@ exports.batch_get_events = (0, tool_1.tool)("crashlytics", {
|
|
|
139
152
|
requiresAuth: true,
|
|
140
153
|
},
|
|
141
154
|
}, async ({ appId, names }) => {
|
|
142
|
-
|
|
143
|
-
if (!appId)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
155
|
+
const result = { content: [] };
|
|
156
|
+
if (!appId) {
|
|
157
|
+
result.isError = true;
|
|
158
|
+
result.content.push({ type: "text", text: "Must specify 'appId' parameter." });
|
|
159
|
+
result.content.push({ type: "text", text: app_id_1.RESOURCE_CONTENT });
|
|
160
|
+
}
|
|
161
|
+
if (!names || names.length === 0) {
|
|
162
|
+
result.isError = true;
|
|
163
|
+
result.content.push({
|
|
164
|
+
type: "text",
|
|
165
|
+
text: "Must provide event resource names in name parameter.",
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if (result.content.length > 0) {
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
147
171
|
const response = await (0, events_1.batchGetEvents)(appId, names);
|
|
148
|
-
const eventsContent =
|
|
172
|
+
const eventsContent = response.events?.map((e) => toText(e)) || [];
|
|
149
173
|
return {
|
|
150
174
|
content: [{ type: "text", text: (0, js_yaml_1.dump)(eventsContent, DUMP_OPTIONS) }],
|
|
151
175
|
};
|
|
@@ -12,11 +12,6 @@ exports.crashlyticsTools = [
|
|
|
12
12
|
events_1.list_events,
|
|
13
13
|
events_1.batch_get_events,
|
|
14
14
|
notes_1.list_notes,
|
|
15
|
-
reports_1.
|
|
16
|
-
reports_1.get_top_variants,
|
|
17
|
-
reports_1.get_top_versions,
|
|
18
|
-
reports_1.get_top_apple_devices,
|
|
19
|
-
reports_1.get_top_android_devices,
|
|
20
|
-
reports_1.get_top_operating_systems,
|
|
15
|
+
reports_1.get_report,
|
|
21
16
|
issues_1.update_issue,
|
|
22
17
|
];
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.update_issue = exports.get_issue = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
-
const
|
|
5
|
+
const filters_1 = require("../../../crashlytics/filters");
|
|
6
6
|
const issues_1 = require("../../../crashlytics/issues");
|
|
7
7
|
const types_1 = require("../../../crashlytics/types");
|
|
8
|
-
const
|
|
8
|
+
const tool_1 = require("../../tool");
|
|
9
9
|
const util_1 = require("../../util");
|
|
10
|
+
const app_id_1 = require("../../resources/guides/app_id");
|
|
10
11
|
exports.get_issue = (0, tool_1.tool)("crashlytics", {
|
|
11
12
|
name: "get_issue",
|
|
12
13
|
description: `Gets data for a Crashlytics issue, which can be used as a starting point for debugging.`,
|
|
@@ -22,10 +23,19 @@ exports.get_issue = (0, tool_1.tool)("crashlytics", {
|
|
|
22
23
|
requiresAuth: true,
|
|
23
24
|
},
|
|
24
25
|
}, async ({ appId, issueId }) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
const result = { content: [] };
|
|
27
|
+
if (!appId) {
|
|
28
|
+
result.isError = true;
|
|
29
|
+
result.content.push({ type: "text", text: "Must specify 'appId' parameter" });
|
|
30
|
+
result.content.push({ type: "text", text: app_id_1.RESOURCE_CONTENT });
|
|
31
|
+
}
|
|
32
|
+
if (!issueId) {
|
|
33
|
+
result.isError = true;
|
|
34
|
+
result.content.push({ type: "text", text: "Must specify 'issueId' parameter." });
|
|
35
|
+
}
|
|
36
|
+
if (result.content.length > 0) {
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
29
39
|
return (0, util_1.toContent)(await (0, issues_1.getIssue)(appId, issueId));
|
|
30
40
|
});
|
|
31
41
|
exports.update_issue = (0, tool_1.tool)("crashlytics", {
|
|
@@ -46,11 +56,22 @@ exports.update_issue = (0, tool_1.tool)("crashlytics", {
|
|
|
46
56
|
requiresAuth: true,
|
|
47
57
|
},
|
|
48
58
|
}, async ({ appId, issueId, state }) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
59
|
+
const result = { content: [] };
|
|
60
|
+
if (!appId) {
|
|
61
|
+
result.isError = true;
|
|
62
|
+
result.content.push({ type: "text", text: "Must specify 'appId' parameter" });
|
|
63
|
+
result.content.push({ type: "text", text: app_id_1.RESOURCE_CONTENT });
|
|
64
|
+
}
|
|
65
|
+
if (!issueId) {
|
|
66
|
+
result.isError = true;
|
|
67
|
+
result.content.push({ type: "text", text: "Must specify 'issueId' parameter." });
|
|
68
|
+
}
|
|
69
|
+
if (!state) {
|
|
70
|
+
result.isError = true;
|
|
71
|
+
result.content.push({ type: "text", text: "Must specify 'state' parameter" });
|
|
72
|
+
}
|
|
73
|
+
if (result.content.length > 0) {
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
55
76
|
return (0, util_1.toContent)(await (0, issues_1.updateIssue)(appId, issueId, state));
|
|
56
77
|
});
|
|
@@ -1,129 +1,78 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const util_1 = require("../../util");
|
|
6
|
-
const reports_1 = require("../../../crashlytics/reports");
|
|
3
|
+
exports.get_report = void 0;
|
|
4
|
+
const js_yaml_1 = require("js-yaml");
|
|
7
5
|
const filters_1 = require("../../../crashlytics/filters");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (additionalPrompt) {
|
|
26
|
-
reportResponse.usage = (reportResponse.usage || "").concat("\n", additionalPrompt);
|
|
27
|
-
}
|
|
28
|
-
return (0, util_1.toContent)(reportResponse);
|
|
6
|
+
const reports_1 = require("../../../crashlytics/reports");
|
|
7
|
+
const tool_1 = require("../../tool");
|
|
8
|
+
const app_id_1 = require("../../resources/guides/app_id");
|
|
9
|
+
const DUMP_OPTIONS = { lineWidth: 200 };
|
|
10
|
+
const REPORT_ERROR_CONTENT = `
|
|
11
|
+
Must specify the desired report:
|
|
12
|
+
* TOP_ISSUES - metrics grouped by *issue*.
|
|
13
|
+
* TOP_VARIANTS - metrics grouped by issue *variant*
|
|
14
|
+
* TOP_VERSIONS - metrics grouped by *version*
|
|
15
|
+
* TOP_OPERATING_SYSTEMS - metrics grouped by *operating system*
|
|
16
|
+
* TOP_ANDROID_DEVICES - metrics grouped by *device*
|
|
17
|
+
* TOP_APPLE_DEVICES - metrics grouped by *device*
|
|
18
|
+
`.trim();
|
|
19
|
+
function toText(response, filters) {
|
|
20
|
+
const result = {
|
|
21
|
+
name: response.name || "",
|
|
22
|
+
filters: (0, js_yaml_1.dump)(filters, DUMP_OPTIONS),
|
|
29
23
|
};
|
|
24
|
+
for (const [key, value] of Object.entries(response)) {
|
|
25
|
+
if (key === "name") {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
result[key] = (0, js_yaml_1.dump)(value, DUMP_OPTIONS);
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
30
31
|
}
|
|
31
|
-
exports.
|
|
32
|
-
name: "
|
|
33
|
-
description: `Use this to
|
|
34
|
-
|
|
35
|
-
Only counts events matching the given filters.`,
|
|
36
|
-
inputSchema: reports_1.ReportInputSchema,
|
|
37
|
-
annotations: {
|
|
38
|
-
title: "Get Crashlytics Top Issues Report",
|
|
39
|
-
readOnlyHint: true,
|
|
40
|
-
},
|
|
41
|
-
_meta: {
|
|
42
|
-
requiresAuth: true,
|
|
43
|
-
},
|
|
44
|
-
}, getReportContent(reports_1.CrashlyticsReport.TopIssues, `The crashlytics_batch_get_event tool can retrieve the sample events in this response.
|
|
45
|
-
Pass the sampleEvent in the names field.
|
|
46
|
-
The crashlytics_list_events tool can retrieve a list of events for an issue in this response.
|
|
47
|
-
Pass the issue.id in the filter.issueId field.`));
|
|
48
|
-
exports.get_top_variants = (0, tool_1.tool)("crashlytics", {
|
|
49
|
-
name: "get_top_variants",
|
|
50
|
-
description: `Counts events and distinct impacted users, grouped by issue *variant*.
|
|
51
|
-
Groups are sorted by event count, in descending order.
|
|
52
|
-
Only counts events matching the given filters.`,
|
|
53
|
-
inputSchema: reports_1.ReportInputSchema,
|
|
54
|
-
annotations: {
|
|
55
|
-
title: "Get Crashlytics Top Variants Report",
|
|
56
|
-
readOnlyHint: true,
|
|
57
|
-
},
|
|
58
|
-
_meta: {
|
|
59
|
-
requiresAuth: true,
|
|
60
|
-
},
|
|
61
|
-
}, getReportContent(reports_1.CrashlyticsReport.TopVariants, `The crashlytics_get_top_issues tool can report the top issues for the variants in this response.
|
|
62
|
-
Pass the variant.displayName in the filter.variantDisplayNames field.
|
|
63
|
-
The crashlytics_list_events tool can retrieve a list of events for a variant in this response.`));
|
|
64
|
-
exports.get_top_versions = (0, tool_1.tool)("crashlytics", {
|
|
65
|
-
name: "get_top_versions",
|
|
66
|
-
description: `Counts events and distinct impacted users, grouped by *version*.
|
|
67
|
-
Groups are sorted by event count, in descending order.
|
|
68
|
-
Only counts events matching the given filters.`,
|
|
32
|
+
exports.get_report = (0, tool_1.tool)("crashlytics", {
|
|
33
|
+
name: "get_report",
|
|
34
|
+
description: `Use this to request numerical reports from Crashlytics. The result aggregates the sum of events and impacted users, grouped by a dimension appropriate for that report. Agents must read the [Firebase Crashlytics Reports Guide](firebase://guides/crashlytics/reports) using the \`firebase_read_resources\` tool before calling to understand criticial prerequisites for requesting reports and how to interpret the results.
|
|
35
|
+
`.trim(),
|
|
69
36
|
inputSchema: reports_1.ReportInputSchema,
|
|
70
37
|
annotations: {
|
|
71
|
-
title: "Get Crashlytics
|
|
38
|
+
title: "Get Crashlytics Report",
|
|
72
39
|
readOnlyHint: true,
|
|
73
40
|
},
|
|
74
41
|
_meta: {
|
|
75
42
|
requiresAuth: true,
|
|
76
43
|
},
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
Pass the device.displayName in the filter.deviceDisplayNames field.
|
|
113
|
-
The crashlytics_list_events tool can retrieve a list of events for a device in this response.`));
|
|
114
|
-
exports.get_top_operating_systems = (0, tool_1.tool)("crashlytics", {
|
|
115
|
-
name: "get_top_operating_systems",
|
|
116
|
-
description: `Counts events and distinct impacted users, grouped by *operating system*.
|
|
117
|
-
Groups are sorted by event count, in descending order.
|
|
118
|
-
Only counts events matching the given filters.`,
|
|
119
|
-
inputSchema: reports_1.ReportInputSchema,
|
|
120
|
-
annotations: {
|
|
121
|
-
title: "Get Crashlytics Top Operating Systems Report",
|
|
122
|
-
readOnlyHint: true,
|
|
123
|
-
},
|
|
124
|
-
_meta: {
|
|
125
|
-
requiresAuth: true,
|
|
126
|
-
},
|
|
127
|
-
}, getReportContent(reports_1.CrashlyticsReport.TopOperatingSystems, `The crashlytics_get_top_issues tool can report the top issues for the operating systems in this response.
|
|
128
|
-
Pass the operatingSystem.displayName in the filter.operatingSystemDisplayNames field.
|
|
129
|
-
The crashlytics_list_events tool can retrieve a list of events for an operating system in this response.`));
|
|
44
|
+
}, async ({ appId, report, pageSize, filter }) => {
|
|
45
|
+
const result = { content: [] };
|
|
46
|
+
if (!report) {
|
|
47
|
+
result.isError = true;
|
|
48
|
+
result.content.push({ type: "text", text: `Error: ${REPORT_ERROR_CONTENT}` });
|
|
49
|
+
}
|
|
50
|
+
if (!appId) {
|
|
51
|
+
result.isError = true;
|
|
52
|
+
result.content.push({ type: "text", text: "Must specify 'appId' parameter" });
|
|
53
|
+
result.content.push({ type: "text", text: app_id_1.RESOURCE_CONTENT });
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
filter = (0, filters_1.validateEventFilters)(filter || {});
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
result.isError = true;
|
|
60
|
+
result.content.push({ type: "text", text: `Error: ${error.message}` });
|
|
61
|
+
}
|
|
62
|
+
if (result.content.length > 0) {
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
const reportResponse = (0, reports_1.simplifyReport)(await (0, reports_1.getReport)(report, appId, filter, pageSize));
|
|
66
|
+
reportResponse.usage =
|
|
67
|
+
reportResponse.groups && reportResponse.groups.length
|
|
68
|
+
? reportResponse.usage || ""
|
|
69
|
+
: "This report response contains no results.";
|
|
70
|
+
return {
|
|
71
|
+
content: [
|
|
72
|
+
{
|
|
73
|
+
type: "text",
|
|
74
|
+
text: (0, js_yaml_1.dump)(toText(reportResponse, filter), DUMP_OPTIONS),
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
};
|
|
78
|
+
});
|
|
@@ -68,15 +68,14 @@ exports.list_services = (0, tool_1.tool)("dataconnect", {
|
|
|
68
68
|
const remoteOnlyServices = Array.from(serviceInfos.values()).filter((s) => !s.local);
|
|
69
69
|
const output = [];
|
|
70
70
|
function includeDeployedServiceInfo(deployed) {
|
|
71
|
-
|
|
72
|
-
if ((_a = deployed.schemas) === null || _a === void 0 ? void 0 : _a.length) {
|
|
71
|
+
if (deployed.schemas?.length) {
|
|
73
72
|
output.push(`### Schemas`);
|
|
74
73
|
for (const s of deployed.schemas) {
|
|
75
74
|
clearCCFEFields(s);
|
|
76
75
|
output.push((0, js_yaml_1.dump)(s));
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
|
-
if (
|
|
78
|
+
if (deployed.connectors?.length) {
|
|
80
79
|
output.push(`### Connectors`);
|
|
81
80
|
for (const c of deployed.connectors) {
|
|
82
81
|
clearCCFEFields(c);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.convertInputToValue = convertInputToValue;
|
|
4
|
+
exports.firestoreDocumentToJson = firestoreDocumentToJson;
|
|
4
5
|
const logger_1 = require("../../../logger");
|
|
5
6
|
function convertInputToValue(inputValue) {
|
|
6
7
|
if (inputValue === null) {
|
|
@@ -47,9 +48,7 @@ function convertInputToValue(inputValue) {
|
|
|
47
48
|
}
|
|
48
49
|
return { nullValue: null };
|
|
49
50
|
}
|
|
50
|
-
exports.convertInputToValue = convertInputToValue;
|
|
51
51
|
function firestoreValueToJson(firestoreValue) {
|
|
52
|
-
var _a, _b;
|
|
53
52
|
if ("nullValue" in firestoreValue)
|
|
54
53
|
return null;
|
|
55
54
|
if ("booleanValue" in firestoreValue)
|
|
@@ -77,7 +76,7 @@ function firestoreValueToJson(firestoreValue) {
|
|
|
77
76
|
value: [firestoreValue.geoPointValue.latitude, firestoreValue.geoPointValue.longitude],
|
|
78
77
|
};
|
|
79
78
|
if ("arrayValue" in firestoreValue)
|
|
80
|
-
return
|
|
79
|
+
return firestoreValue.arrayValue.values?.map((v) => firestoreValueToJson(v)) ?? [];
|
|
81
80
|
if ("mapValue" in firestoreValue) {
|
|
82
81
|
const map = firestoreValue.mapValue.fields || {};
|
|
83
82
|
const obj = {};
|
|
@@ -100,4 +99,3 @@ function firestoreDocumentToJson(firestoreDoc) {
|
|
|
100
99
|
}
|
|
101
100
|
return result;
|
|
102
101
|
}
|
|
103
|
-
exports.firestoreDocumentToJson = firestoreDocumentToJson;
|
|
@@ -38,7 +38,7 @@ exports.delete_document = (0, tool_1.tool)("firestore", {
|
|
|
38
38
|
return (0, util_1.mcpError)(`None of the specified documents were found in project '${projectId}'`);
|
|
39
39
|
}
|
|
40
40
|
const firestoreDelete = new delete_1.FirestoreDelete(projectId, path, {
|
|
41
|
-
databaseId: database
|
|
41
|
+
databaseId: database ?? "(default)",
|
|
42
42
|
urlPrefix: emulatorUrl,
|
|
43
43
|
});
|
|
44
44
|
await firestoreDelete.execute();
|
|
@@ -86,8 +86,8 @@ exports.get_logs = (0, tool_1.tool)("functions", {
|
|
|
86
86
|
requiresProject: true,
|
|
87
87
|
},
|
|
88
88
|
}, async ({ function_names, page_size, order, page_token, min_severity, start_time, end_time, filter }, { projectId }) => {
|
|
89
|
-
const resolvedOrder =
|
|
90
|
-
const resolvedPageSize = page_size
|
|
89
|
+
const resolvedOrder = order?.toLowerCase() === "asc" ? "asc" : "desc";
|
|
90
|
+
const resolvedPageSize = page_size ?? 50;
|
|
91
91
|
const normalizedSelectors = normalizeFunctionSelectors(function_names);
|
|
92
92
|
const filterParts = [(0, functionslog_1.getApiFilter)(normalizedSelectors)];
|
|
93
93
|
if (min_severity) {
|
|
@@ -115,18 +115,20 @@ exports.get_logs = (0, tool_1.tool)("functions", {
|
|
|
115
115
|
try {
|
|
116
116
|
const { entries, nextPageToken } = await (0, cloudlogging_1.listEntries)(projectId, combinedFilter, resolvedPageSize, resolvedOrder, page_token);
|
|
117
117
|
const formattedEntries = entries.map((entry) => {
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
const payload = (_k = (_j = (_h = (_g = entry.textPayload) !== null && _g !== void 0 ? _g : entry.jsonPayload) !== null && _h !== void 0 ? _h : entry.protoPayload) !== null && _j !== void 0 ? _j : entry.labels) !== null && _k !== void 0 ? _k : null;
|
|
118
|
+
const functionName = entry.resource?.labels?.function_name ?? entry.resource?.labels?.service_name ?? null;
|
|
119
|
+
const payload = entry.textPayload ?? entry.jsonPayload ?? entry.protoPayload ?? entry.labels ?? null;
|
|
121
120
|
return {
|
|
122
|
-
timestamp:
|
|
123
|
-
severity:
|
|
121
|
+
timestamp: entry.timestamp ?? entry.receiveTimestamp ?? null,
|
|
122
|
+
severity: entry.severity ?? "DEFAULT",
|
|
124
123
|
function: functionName,
|
|
125
|
-
message:
|
|
124
|
+
message: entry.textPayload ??
|
|
125
|
+
(entry.jsonPayload ? JSON.stringify(entry.jsonPayload) : undefined) ??
|
|
126
|
+
(entry.protoPayload ? JSON.stringify(entry.protoPayload) : undefined) ??
|
|
127
|
+
"",
|
|
126
128
|
payload,
|
|
127
129
|
log_name: entry.logName,
|
|
128
|
-
trace:
|
|
129
|
-
span_id:
|
|
130
|
+
trace: entry.trace ?? null,
|
|
131
|
+
span_id: entry.spanId ?? null,
|
|
130
132
|
};
|
|
131
133
|
});
|
|
132
134
|
const response = {
|
|
@@ -134,7 +136,7 @@ exports.get_logs = (0, tool_1.tool)("functions", {
|
|
|
134
136
|
order: resolvedOrder,
|
|
135
137
|
page_size: resolvedPageSize,
|
|
136
138
|
entries: resolvedOrder === "asc" ? formattedEntries : formattedEntries.reverse(),
|
|
137
|
-
next_page_token: nextPageToken
|
|
139
|
+
next_page_token: nextPageToken ?? null,
|
|
138
140
|
has_more: Boolean(nextPageToken),
|
|
139
141
|
};
|
|
140
142
|
if (!entries.length) {
|
|
@@ -145,7 +147,7 @@ exports.get_logs = (0, tool_1.tool)("functions", {
|
|
|
145
147
|
return (0, util_1.toContent)(response);
|
|
146
148
|
}
|
|
147
149
|
catch (err) {
|
|
148
|
-
const errMsg = (0, error_1.getErrMsg)(
|
|
150
|
+
const errMsg = (0, error_1.getErrMsg)(err?.original || err, "Failed to retrieve Cloud Logging entries.");
|
|
149
151
|
return (0, util_1.mcpError)(errMsg);
|
|
150
152
|
}
|
|
151
153
|
});
|
|
@@ -42,7 +42,7 @@ exports.list_functions = (0, tool_1.tool)("functions", {
|
|
|
42
42
|
return (0, util_1.toContent)(formattedList);
|
|
43
43
|
}
|
|
44
44
|
catch (err) {
|
|
45
|
-
const errMsg = (0, error_1.getErrMsg)(
|
|
45
|
+
const errMsg = (0, error_1.getErrMsg)(err?.original || err, "Failed to list functions.");
|
|
46
46
|
return (0, util_1.mcpError)(errMsg);
|
|
47
47
|
}
|
|
48
48
|
});
|