firebase-tools 15.6.0 → 15.8.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/api.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.storageOrigin = exports.runtimeconfigOrigin = exports.rulesOrigin = exports.resourceManagerOrigin = exports.crashlyticsApiOrigin = exports.messagingApiOrigin = exports.remoteConfigApiOrigin = exports.rtdbMetadataOrigin = exports.rtdbManagementOrigin = exports.realtimeOrigin = exports.extensionsTOSOrigin = exports.extensionsPublisherOrigin = exports.extensionsOrigin = exports.iamOrigin = exports.identityOrigin = exports.hostingOrigin = exports.googleOrigin = exports.pubsubOrigin = exports.cloudTasksOrigin = exports.cloudschedulerOrigin = exports.cloudbuildOrigin = exports.functionsDefaultRegion = exports.runOrigin = exports.functionsV2Origin = exports.functionsOrigin = exports.firestoreOrigin = exports.firestoreOriginOrEmulator = exports.firedataOrigin = exports.firebaseExtensionsRegistryOrigin = exports.firebaseApiOrigin = exports.eventarcOrigin = exports.dynamicLinksKey = exports.dynamicLinksOrigin = exports.consoleOrigin = exports.authManagementOrigin = exports.authOrigin = exports.apphostingGitHubAppInstallationURL = exports.apphostingP4SADomain = exports.apphostingOrigin = exports.appDistributionOrigin = exports.artifactRegistryDomain = exports.developerConnectP4SADomain = exports.developerConnectOrigin = exports.containerRegistryDomain = exports.cloudMonitoringOrigin = exports.cloudloggingOrigin = exports.cloudbillingOrigin = exports.clientSecret = exports.clientId = exports.authProxyOrigin = void 0;
4
- exports.cloudTestingOrigin = exports.appTestingOrigin = exports.cloudAiCompanionOrigin = exports.vertexAIOrigin = exports.cloudSQLAdminOrigin = exports.dataConnectLocalConnString = exports.dataconnectP4SADomain = exports.dataconnectOrigin = exports.githubClientSecret = exports.githubClientId = exports.computeOrigin = exports.secretManagerOrigin = exports.githubApiOrigin = exports.githubOrigin = exports.studioApiOrigin = exports.serviceUsageOrigin = exports.cloudRunApiOrigin = exports.hostingApiOrigin = exports.firebaseStorageOrigin = void 0;
4
+ exports.developerKnowledgeOrigin = exports.cloudTestingOrigin = exports.appTestingOrigin = exports.cloudAiCompanionOrigin = exports.vertexAIOrigin = exports.cloudSQLAdminOrigin = exports.dataConnectLocalConnString = exports.dataconnectP4SADomain = exports.dataconnectOrigin = exports.githubClientSecret = exports.githubClientId = exports.computeOrigin = exports.secretManagerOrigin = exports.githubApiOrigin = exports.githubOrigin = exports.studioApiOrigin = exports.serviceUsageOrigin = exports.cloudRunApiOrigin = exports.hostingApiOrigin = exports.firebaseStorageOrigin = void 0;
5
5
  exports.getScopes = getScopes;
6
6
  exports.setScopes = setScopes;
7
7
  const constants_1 = require("./emulator/constants");
@@ -152,6 +152,8 @@ const appTestingOrigin = () => utils.envOverride("FIREBASE_APP_TESTING_URL", "ht
152
152
  exports.appTestingOrigin = appTestingOrigin;
153
153
  const cloudTestingOrigin = () => utils.envOverride("CLOUD_TESTING_URL", "https://testing.googleapis.com");
154
154
  exports.cloudTestingOrigin = cloudTestingOrigin;
155
+ const developerKnowledgeOrigin = () => utils.envOverride("DEVELOPER_KNOWLEDGE_URL", "https://developerknowledge.googleapis.com");
156
+ exports.developerKnowledgeOrigin = developerKnowledgeOrigin;
155
157
  function getScopes() {
156
158
  return Array.from(commandScopes);
157
159
  }
package/lib/bin/mcp.js CHANGED
@@ -67,7 +67,7 @@ async function mcp() {
67
67
  earlyExit = true;
68
68
  }
69
69
  if (values["generate-tool-list"]) {
70
- console.log((0, index_js_3.markdownDocsOfTools)());
70
+ console.log(await (0, index_js_3.markdownDocsOfTools)());
71
71
  earlyExit = true;
72
72
  }
73
73
  if (values["generate-prompt-list"]) {
@@ -247,6 +247,10 @@ function load(client) {
247
247
  client.dataconnect.compile = loadCommand("dataconnect-compile");
248
248
  client.dataconnect.sdk = {};
249
249
  client.dataconnect.sdk.generate = loadCommand("dataconnect-sdk-generate");
250
+ if (experiments.isEnabled("studioexport")) {
251
+ client.studio = {};
252
+ client.studio.export = loadCommand("studio-export");
253
+ }
250
254
  client.target = loadCommand("target");
251
255
  client.target.apply = loadCommand("target-apply");
252
256
  client.target.clear = loadCommand("target-clear");
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.command = void 0;
4
+ const command_1 = require("../command");
5
+ const logger_1 = require("../logger");
6
+ const experiments = require("../experiments");
7
+ exports.command = new command_1.Command("studio:export")
8
+ .description("export Firebase Studio apps to continue development locally")
9
+ .action(() => {
10
+ experiments.assertEnabled("studioexport", "export Studio apps");
11
+ logger_1.logger.info("Exporting Studio apps to Antigravity...");
12
+ });
@@ -54,36 +54,36 @@
54
54
  },
55
55
  "dataconnect": {
56
56
  "darwin": {
57
- "version": "3.1.3",
58
- "expectedSize": 30753632,
59
- "expectedChecksum": "db15fbb3d596b056390c08d065500c63",
60
- "expectedChecksumSHA256": "f1b98402e9d8497e88a96de6ac80425aee3a61513eccc1fb76b4e387862625ee",
61
- "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-amd64-v3.1.3",
62
- "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.3"
57
+ "version": "3.2.0",
58
+ "expectedSize": 30823264,
59
+ "expectedChecksum": "165dcd011685866ca7a1970b6f2605f0",
60
+ "expectedChecksumSHA256": "a4d0a700ae38172324927c7054e7ade86dbdae87389be1d801665e46d3759451",
61
+ "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-amd64-v3.2.0",
62
+ "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.2.0"
63
63
  },
64
64
  "darwin_arm64": {
65
- "version": "3.1.3",
66
- "expectedSize": 30203330,
67
- "expectedChecksum": "8ac08faf1b797615d91c58f7ea781af0",
68
- "expectedChecksumSHA256": "eb00f5bd3c97c17b617a9ce5f5153d6d9f20bc482e4ac091a6361f9ff3bd8841",
69
- "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-arm64-v3.1.3",
70
- "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.3"
65
+ "version": "3.2.0",
66
+ "expectedSize": 30287890,
67
+ "expectedChecksum": "b1c75fa410033ed93463ab41b2bd8e61",
68
+ "expectedChecksumSHA256": "408c52c857af86df7bcf71b9ab7d9e1eeb29a12f042d79c76000e85f22a2e975",
69
+ "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-arm64-v3.2.0",
70
+ "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.2.0"
71
71
  },
72
72
  "win32": {
73
- "version": "3.1.3",
74
- "expectedSize": 31262208,
75
- "expectedChecksum": "b6723bed0937b1a3fed6fdb64df39f4d",
76
- "expectedChecksumSHA256": "3d213e26ab7ea4cd44083a32d882128e0ff9313a69795d88cb7a9f31042675ff",
77
- "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-windows-amd64-v3.1.3",
78
- "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.3.exe"
73
+ "version": "3.2.0",
74
+ "expectedSize": 31328256,
75
+ "expectedChecksum": "474319dff7a1a1eb364c1b5144ae11f5",
76
+ "expectedChecksumSHA256": "9f3852e35c60bb7adfc2bd24fd2d0a2f815659dbb6fec48bab0bd07bbd7d1651",
77
+ "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-windows-amd64-v3.2.0",
78
+ "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.2.0.exe"
79
79
  },
80
80
  "linux": {
81
- "version": "3.1.3",
82
- "expectedSize": 30679224,
83
- "expectedChecksum": "f1d0f701d8e56669a93f00f1c10a7437",
84
- "expectedChecksumSHA256": "826aa0fcbb28bad7ced433e6386ea1cce2407357a145da7111e800489c6cf3c9",
85
- "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-linux-amd64-v3.1.3",
86
- "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.3"
81
+ "version": "3.2.0",
82
+ "expectedSize": 30744760,
83
+ "expectedChecksum": "dc9f0766287d982a0dabf1e2f90aa726",
84
+ "expectedChecksumSHA256": "82bd05e748526330b94b2d2d797507175ea1251b1760f64bc1d1e904f23c2f22",
85
+ "remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-linux-amd64-v3.2.0",
86
+ "downloadPathRelativeToCacheDir": "dataconnect-emulator-3.2.0"
87
87
  }
88
88
  }
89
89
  }
@@ -145,6 +145,11 @@ exports.ALL_EXPERIMENTS = experiments({
145
145
  default: false,
146
146
  public: false,
147
147
  },
148
+ studioexport: {
149
+ shortDescription: "Enable the experimental studio:export command.",
150
+ default: false,
151
+ public: false,
152
+ },
148
153
  });
149
154
  function isValidExperiment(name) {
150
155
  return Object.keys(exports.ALL_EXPERIMENTS).includes(name);
package/lib/gcp/runv2.js CHANGED
@@ -42,7 +42,7 @@ async function submitBuild(projectId, location, build) {
42
42
  async function updateService(service) {
43
43
  const fieldMask = proto.fieldMasks(service, "labels", "annotations", "tags");
44
44
  fieldMask.push("template.revision");
45
- const res = await client.post(service.name, service, {
45
+ const res = await client.patch(service.name, service, {
46
46
  queryParams: {
47
47
  updateMask: fieldMask.join(","),
48
48
  },
@@ -155,7 +155,8 @@ function endpointFromService(service) {
155
155
  : service.annotations?.["run.googleapis.com/ingress"] === "internal-and-cloud-load-balancing"
156
156
  ? "ALLOW_INTERNAL_AND_GCLB"
157
157
  : "ALLOW_ALL"),
158
- ...(service.annotations?.[exports.TRIGGER_TYPE_ANNOTATION] === "HTTP_TRIGGER"
158
+ ...(!service.annotations?.[exports.TRIGGER_TYPE_ANNOTATION] ||
159
+ service.annotations?.[exports.TRIGGER_TYPE_ANNOTATION] === "HTTP_TRIGGER"
159
160
  ? { httpsTrigger: {} }
160
161
  : {
161
162
  eventTrigger: {
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ONEMCP_SERVERS = void 0;
4
+ const api_1 = require("../../api");
5
+ const onemcp_server_1 = require("./onemcp_server");
6
+ exports.ONEMCP_SERVERS = {
7
+ developerknowledge: new onemcp_server_1.OneMcpServer("developerknowledge", (0, api_1.developerKnowledgeOrigin)(), {
8
+ requiresAuth: true,
9
+ }),
10
+ firestore: new onemcp_server_1.OneMcpServer("firestore", (0, api_1.firestoreOrigin)(), {
11
+ requiresAuth: true,
12
+ requiresProject: true,
13
+ }),
14
+ };
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OneMcpServer = void 0;
4
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
5
+ const apiv2_1 = require("../../apiv2");
6
+ const error_1 = require("../../error");
7
+ const ensureApiEnabled_1 = require("../../ensureApiEnabled");
8
+ class OneMcpServer {
9
+ constructor(feature, serverUrl, meta) {
10
+ this.feature = feature;
11
+ this.serverUrl = serverUrl;
12
+ this.meta = meta;
13
+ this.listClient = new apiv2_1.Client({
14
+ urlPrefix: this.serverUrl,
15
+ auth: false,
16
+ });
17
+ this.callClient = new apiv2_1.Client({
18
+ urlPrefix: this.serverUrl,
19
+ auth: true,
20
+ });
21
+ }
22
+ async listTools() {
23
+ try {
24
+ const res = await this.listClient.post("/mcp", {
25
+ method: "tools/list",
26
+ jsonrpc: "2.0",
27
+ id: 1,
28
+ });
29
+ const parsed = types_js_1.ListToolsResultSchema.parse(res.body.result);
30
+ return parsed.tools.map((mcpTool) => ({
31
+ mcp: {
32
+ ...mcpTool,
33
+ name: `${this.feature}_${mcpTool.name}`,
34
+ _meta: { ...this.meta, feature: this.feature },
35
+ },
36
+ fn: (args, ctx) => this.callTool(mcpTool.name, args, ctx),
37
+ isAvailable: () => Promise.resolve(true),
38
+ }));
39
+ }
40
+ catch (error) {
41
+ throw new error_1.FirebaseError("Failed to fetch remote tools for " + this.serverUrl + ": " + JSON.stringify(error));
42
+ }
43
+ }
44
+ async callTool(toolName, args, ctx) {
45
+ await (0, ensureApiEnabled_1.ensure)(ctx.projectId, this.serverUrl, this.feature, true);
46
+ try {
47
+ const res = await this.callClient.post("/mcp", {
48
+ method: "tools/call",
49
+ params: {
50
+ name: toolName,
51
+ arguments: args,
52
+ },
53
+ jsonrpc: "2.0",
54
+ id: 1,
55
+ }, ctx.projectId
56
+ ? {
57
+ headers: {
58
+ "x-goog-user-project": ctx.projectId,
59
+ },
60
+ }
61
+ : {});
62
+ return types_js_1.CallToolResultSchema.parse(res.body.result);
63
+ }
64
+ catch (error) {
65
+ if (error instanceof error_1.FirebaseError) {
66
+ const firebaseError = error;
67
+ const body = firebaseError.context?.body;
68
+ if (body?.result?.isError) {
69
+ return types_js_1.CallToolResultSchema.parse(body.result);
70
+ }
71
+ }
72
+ throw error;
73
+ }
74
+ }
75
+ }
76
+ exports.OneMcpServer = OneMcpServer;
@@ -21,6 +21,7 @@ const prompts = {
21
21
  apptesting: namespacePrompts(apptesting_1.apptestingPrompts, "apptesting"),
22
22
  apphosting: [],
23
23
  database: [],
24
+ developerknowledge: [],
24
25
  };
25
26
  function namespacePrompts(promptsToNamespace, feature) {
26
27
  return promptsToNamespace.map((p) => {
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getToolsByFeature = getToolsByFeature;
4
+ exports.getRemoteToolsByFeature = getRemoteToolsByFeature;
4
5
  exports.availableTools = availableTools;
5
6
  exports.markdownDocsOfTools = markdownDocsOfTools;
6
- const index_1 = require("./apphosting/index");
7
- const index_2 = require("./apptesting/index");
8
- const index_3 = require("./auth/index");
9
- const index_4 = require("./core/index");
10
- const index_5 = require("./crashlytics/index");
11
- const index_6 = require("./dataconnect/index");
12
- const index_7 = require("./firestore/index");
7
+ const index_1 = require("../onemcp/index");
8
+ const index_2 = require("./apphosting/index");
9
+ const index_3 = require("./apptesting/index");
10
+ const index_4 = require("./auth/index");
11
+ const index_5 = require("./core/index");
12
+ const index_6 = require("./crashlytics/index");
13
+ const index_7 = require("./dataconnect/index");
13
14
  const index_8 = require("./functions/index");
14
15
  const index_9 = require("./messaging/index");
15
16
  const index_10 = require("./realtime_database/index");
@@ -29,37 +30,55 @@ function addFeaturePrefix(feature, tools) {
29
30
  }));
30
31
  }
31
32
  const tools = {
32
- apphosting: addFeaturePrefix("apphosting", index_1.appHostingTools),
33
- apptesting: addFeaturePrefix("apptesting", index_2.apptestingTools),
34
- auth: addFeaturePrefix("auth", index_3.authTools),
35
- core: addFeaturePrefix("firebase", index_4.coreTools),
36
- crashlytics: addFeaturePrefix("crashlytics", index_5.crashlyticsTools),
33
+ apphosting: addFeaturePrefix("apphosting", index_2.appHostingTools),
34
+ apptesting: addFeaturePrefix("apptesting", index_3.apptestingTools),
35
+ auth: addFeaturePrefix("auth", index_4.authTools),
36
+ core: addFeaturePrefix("firebase", index_5.coreTools),
37
+ crashlytics: addFeaturePrefix("crashlytics", index_6.crashlyticsTools),
37
38
  database: addFeaturePrefix("realtimedatabase", index_10.realtimeDatabaseTools),
38
- dataconnect: addFeaturePrefix("dataconnect", index_6.dataconnectTools),
39
- firestore: addFeaturePrefix("firestore", index_7.firestoreTools),
39
+ dataconnect: addFeaturePrefix("dataconnect", index_7.dataconnectTools),
40
40
  functions: addFeaturePrefix("functions", index_8.functionsTools),
41
41
  messaging: addFeaturePrefix("messaging", index_9.messagingTools),
42
42
  remoteconfig: addFeaturePrefix("remoteconfig", index_11.remoteConfigTools),
43
43
  storage: addFeaturePrefix("storage", index_12.storageTools),
44
+ developerknowledge: [],
45
+ firestore: [],
44
46
  };
45
47
  const allToolsMap = new Map(Object.values(tools)
46
48
  .flat()
47
49
  .sort((a, b) => a.mcp.name.localeCompare(b.mcp.name))
48
50
  .map((t) => [t.mcp.name, t]));
49
- function getToolsByName(names) {
51
+ async function getToolsByName(names) {
50
52
  const selectedTools = new Set();
53
+ const remoteTools = new Map((await getRemoteToolsByFeature()).map((t) => [t.mcp.name, t]));
51
54
  for (const toolName of names) {
52
- const tool = allToolsMap.get(toolName);
55
+ const tool = allToolsMap.get(toolName) || remoteTools.get(toolName);
53
56
  if (tool) {
54
57
  selectedTools.add(tool);
55
58
  }
56
59
  }
57
60
  return Array.from(selectedTools);
58
61
  }
59
- function getToolsByFeature(serverFeatures) {
60
- const features = new Set(serverFeatures?.length ? serverFeatures : Object.keys(tools));
62
+ async function getToolsByFeature(serverFeatures) {
63
+ const features = new Set(serverFeatures?.length
64
+ ? serverFeatures
65
+ : Object.keys({ ...tools, ...index_1.ONEMCP_SERVERS }));
61
66
  features.add("core");
62
- return Array.from(features).flatMap((feature) => tools[feature] || []);
67
+ const featureList = Array.from(features);
68
+ const localTools = featureList.flatMap((feature) => tools[feature] || []);
69
+ const remoteTools = await getRemoteToolsByFeature(featureList);
70
+ return [...localTools, ...remoteTools];
71
+ }
72
+ async function getRemoteToolsByFeature(features) {
73
+ const remoteToolsPromises = [];
74
+ const featureSet = new Set(features?.length ? features : Object.keys(index_1.ONEMCP_SERVERS));
75
+ for (const feature of featureSet) {
76
+ const server = index_1.ONEMCP_SERVERS[feature];
77
+ if (server) {
78
+ remoteToolsPromises.push(server.listTools());
79
+ }
80
+ }
81
+ return Promise.all(remoteToolsPromises).then((tools) => tools.flat());
63
82
  }
64
83
  async function availableTools(ctx, activeFeatures, detectedFeatures, enabledTools) {
65
84
  if (enabledTools?.length) {
@@ -68,7 +87,7 @@ async function availableTools(ctx, activeFeatures, detectedFeatures, enabledTool
68
87
  if (activeFeatures?.length) {
69
88
  return getToolsByFeature(activeFeatures);
70
89
  }
71
- const allTools = getToolsByFeature(detectedFeatures);
90
+ const allTools = await getToolsByFeature(detectedFeatures);
72
91
  const availabilities = await Promise.all(allTools.map((t) => {
73
92
  if (t.isAvailable) {
74
93
  return t.isAvailable(ctx);
@@ -77,8 +96,8 @@ async function availableTools(ctx, activeFeatures, detectedFeatures, enabledTool
77
96
  }));
78
97
  return allTools.filter((_, i) => availabilities[i]);
79
98
  }
80
- function markdownDocsOfTools() {
81
- const allTools = getToolsByFeature([]);
99
+ async function markdownDocsOfTools() {
100
+ const allTools = await getToolsByFeature([]);
82
101
  let doc = `
83
102
  | Tool Name | Feature Group | Description |
84
103
  | --------- | ------------- | ----------- |`;
package/lib/mcp/types.js CHANGED
@@ -14,4 +14,5 @@ exports.SERVER_FEATURES = [
14
14
  "apptesting",
15
15
  "apphosting",
16
16
  "database",
17
+ "developerknowledge",
17
18
  ];
@@ -5,7 +5,8 @@ const util_1 = require("../util");
5
5
  const availability_1 = require("./crashlytics/availability");
6
6
  const availability_2 = require("./apptesting/availability");
7
7
  const DEFAULT_AVAILABILITY_CHECKS = {
8
- core: async (ctx) => true,
8
+ core: async () => true,
9
+ developerknowledge: async () => true,
9
10
  firestore: (ctx) => (0, util_1.checkFeatureActive)("firestore", ctx.projectId, { config: ctx.config }),
10
11
  storage: (ctx) => (0, util_1.checkFeatureActive)("storage", ctx.projectId, { config: ctx.config }),
11
12
  dataconnect: (ctx) => (0, util_1.checkFeatureActive)("dataconnect", ctx.projectId, { config: ctx.config }),
package/lib/mcp/util.js CHANGED
@@ -53,6 +53,7 @@ const SERVER_FEATURE_APIS = {
53
53
  apptesting: (0, api_1.appDistributionOrigin)(),
54
54
  apphosting: (0, api_1.apphostingOrigin)(),
55
55
  database: (0, api_1.realtimeOrigin)(),
56
+ developerknowledge: (0, api_1.developerKnowledgeOrigin)(),
56
57
  };
57
58
  const DETECTED_API_FEATURES = {
58
59
  core: undefined,
@@ -67,6 +68,7 @@ const DETECTED_API_FEATURES = {
67
68
  apptesting: undefined,
68
69
  apphosting: undefined,
69
70
  database: undefined,
71
+ developerknowledge: undefined,
70
72
  };
71
73
  async function checkFeatureActive(feature, projectId, options) {
72
74
  if (feature in (options?.config?.data || {}))
@@ -1 +1 @@
1
- {"root":["../src/accountExporter.ts","../src/accountImporter.ts","../src/api.ts","../src/apiv2.ts","../src/appUtils.ts","../src/archiveDirectory.ts","../src/auth.ts","../src/checkMinRequiredVersion.ts","../src/checkValidTargetFilters.ts","../src/command.ts","../src/config.ts","../src/configstore.ts","../src/defaultCredentials.ts","../src/deploymentTool.ts","../src/detectProjectRoot.ts","../src/downloadUtils.ts","../src/dynamicImport.js","../src/ensureApiEnabled.ts","../src/env.ts","../src/error.ts","../src/errorOut.ts","../src/experiments.ts","../src/fetchMOTD.ts","../src/fetchWebSetup.ts","../src/filterTargets.ts","../src/firebaseConfig.ts","../src/firebaseConfigValidate.ts","../src/fsAsync.ts","../src/fsutils.ts","../src/functional.ts","../src/functionsConfig.ts","../src/functionsConfigClone.ts","../src/functionsShellCommandAction.ts","../src/getDefaultDatabaseInstance.ts","../src/getDefaultHostingSite.ts","../src/getProjectNumber.ts","../src/index.ts","../src/listFiles.ts","../src/loadCJSON.ts","../src/localFunction.ts","../src/logError.ts","../src/logger.ts","../src/metaprogramming.ts","../src/operation-poller.ts","../src/options.ts","../src/profileReport.ts","../src/profiler.ts","../src/projectPath.ts","../src/projectUtils.ts","../src/prompt.ts","../src/rc.ts","../src/requireAuth.ts","../src/requireConfig.ts","../src/requireDatabaseInstance.ts","../src/requireHostingSite.ts","../src/requireInteractive.ts","../src/requirePermissions.ts","../src/requireTosAcceptance.ts","../src/responseToError.ts","../src/rtdb.ts","../src/rulesDeploy.ts","../src/scopes.ts","../src/shortenUrl.ts","../src/templates.ts","../src/timeout.ts","../src/track.ts","../src/unzip.ts","../src/utils.ts","../src/vsCodeUtils.ts","../src/appdistribution/client.ts","../src/appdistribution/distribution.ts","../src/appdistribution/options-parser-util.ts","../src/appdistribution/types.ts","../src/appdistribution/yaml_helper.ts","../src/apphosting/app.ts","../src/apphosting/backend.ts","../src/apphosting/config.ts","../src/apphosting/constants.ts","../src/apphosting/githubConnections.ts","../src/apphosting/index.ts","../src/apphosting/localbuilds.ts","../src/apphosting/repo.ts","../src/apphosting/rollout.ts","../src/apphosting/utils.ts","../src/apphosting/yaml.ts","../src/apphosting/secrets/dialogs.ts","../src/apphosting/secrets/index.ts","../src/apptesting/ensureProjectConfigured.ts","../src/apptesting/invokeTests.ts","../src/apptesting/parseTestFiles.ts","../src/apptesting/types.ts","../src/bin/cli.ts","../src/bin/firebase.ts","../src/bin/mcp.ts","../src/commands/appdistribution-distribute.ts","../src/commands/appdistribution-groups-create.ts","../src/commands/appdistribution-groups-delete.ts","../src/commands/appdistribution-groups-list.ts","../src/commands/appdistribution-testcases-export.ts","../src/commands/appdistribution-testcases-import.ts","../src/commands/appdistribution-testers-add.ts","../src/commands/appdistribution-testers-list.ts","../src/commands/appdistribution-testers-remove.ts","../src/commands/apphosting-backends-create.ts","../src/commands/apphosting-backends-delete.ts","../src/commands/apphosting-backends-get.ts","../src/commands/apphosting-backends-list.ts","../src/commands/apphosting-builds-create.ts","../src/commands/apphosting-builds-get.ts","../src/commands/apphosting-repos-create.ts","../src/commands/apphosting-rollouts-create.ts","../src/commands/apphosting-rollouts-list.ts","../src/commands/apphosting-secrets-access.ts","../src/commands/apphosting-secrets-describe.ts","../src/commands/apphosting-secrets-grantaccess.ts","../src/commands/apphosting-secrets-set.ts","../src/commands/apps-android-sha-create.ts","../src/commands/apps-android-sha-delete.ts","../src/commands/apps-android-sha-list.ts","../src/commands/apps-create.ts","../src/commands/apps-init.ts","../src/commands/apps-list.ts","../src/commands/apps-sdkconfig.ts","../src/commands/apptesting-wata.ts","../src/commands/apptesting.ts","../src/commands/auth-export.ts","../src/commands/auth-import.ts","../src/commands/crashlytics-mappingfile-generateid.ts","../src/commands/crashlytics-mappingfile-upload.ts","../src/commands/crashlytics-symbols-upload.ts","../src/commands/database-get.ts","../src/commands/database-import.ts","../src/commands/database-instances-create.ts","../src/commands/database-instances-list.ts","../src/commands/database-profile.ts","../src/commands/database-push.ts","../src/commands/database-remove.ts","../src/commands/database-rules-canary.ts","../src/commands/database-rules-get.ts","../src/commands/database-rules-list.ts","../src/commands/database-rules-release.ts","../src/commands/database-rules-stage.ts","../src/commands/database-set.ts","../src/commands/database-settings-get.ts","../src/commands/database-settings-set.ts","../src/commands/database-update.ts","../src/commands/dataconnect-compile.ts","../src/commands/dataconnect-execute.ts","../src/commands/dataconnect-sdk-generate.ts","../src/commands/dataconnect-services-list.ts","../src/commands/dataconnect-sql-diff.ts","../src/commands/dataconnect-sql-grant.ts","../src/commands/dataconnect-sql-migrate.ts","../src/commands/dataconnect-sql-setup.ts","../src/commands/dataconnect-sql-shell.ts","../src/commands/deploy.ts","../src/commands/emulators-exec.ts","../src/commands/emulators-export.ts","../src/commands/emulators-start.ts","../src/commands/experiments-describe.ts","../src/commands/experiments-disable.ts","../src/commands/experiments-enable.ts","../src/commands/experiments-list.ts","../src/commands/ext-configure.ts","../src/commands/ext-dev-deprecate.ts","../src/commands/ext-dev-init.ts","../src/commands/ext-dev-list.ts","../src/commands/ext-dev-register.ts","../src/commands/ext-dev-undeprecate.ts","../src/commands/ext-dev-upload.ts","../src/commands/ext-dev-usage.ts","../src/commands/ext-export.ts","../src/commands/ext-info.ts","../src/commands/ext-install.ts","../src/commands/ext-list.ts","../src/commands/ext-sdk-install.ts","../src/commands/ext-uninstall.ts","../src/commands/ext-update.ts","../src/commands/ext.ts","../src/commands/firestore-backups-delete.ts","../src/commands/firestore-backups-get.ts","../src/commands/firestore-backups-list.ts","../src/commands/firestore-backups-schedules-create.ts","../src/commands/firestore-backups-schedules-delete.ts","../src/commands/firestore-backups-schedules-list.ts","../src/commands/firestore-backups-schedules-update.ts","../src/commands/firestore-bulkdelete.ts","../src/commands/firestore-databases-clone.ts","../src/commands/firestore-databases-create.ts","../src/commands/firestore-databases-delete.ts","../src/commands/firestore-databases-get.ts","../src/commands/firestore-databases-list.ts","../src/commands/firestore-databases-restore.ts","../src/commands/firestore-databases-update.ts","../src/commands/firestore-delete.ts","../src/commands/firestore-indexes-list.ts","../src/commands/firestore-locations.ts","../src/commands/firestore-operations-cancel.ts","../src/commands/firestore-operations-describe.ts","../src/commands/firestore-operations-list.ts","../src/commands/firestore-utils.ts","../src/commands/functions-artifacts-setpolicy.ts","../src/commands/functions-config-clone.ts","../src/commands/functions-config-export.ts","../src/commands/functions-config-get.ts","../src/commands/functions-config-set.ts","../src/commands/functions-config-unset.ts","../src/commands/functions-delete.ts","../src/commands/functions-deletegcfartifacts.ts","../src/commands/functions-list.ts","../src/commands/functions-log.ts","../src/commands/functions-secrets-access.ts","../src/commands/functions-secrets-describe.ts","../src/commands/functions-secrets-destroy.ts","../src/commands/functions-secrets-get.ts","../src/commands/functions-secrets-prune.ts","../src/commands/functions-secrets-set.ts","../src/commands/functions-shell.ts","../src/commands/help.ts","../src/commands/hosting-channel-create.ts","../src/commands/hosting-channel-delete.ts","../src/commands/hosting-channel-deploy.ts","../src/commands/hosting-channel-list.ts","../src/commands/hosting-channel-open.ts","../src/commands/hosting-clone.ts","../src/commands/hosting-disable.ts","../src/commands/hosting-sites-create.ts","../src/commands/hosting-sites-delete.ts","../src/commands/hosting-sites-get.ts","../src/commands/hosting-sites-list.ts","../src/commands/index.ts","../src/commands/init.ts","../src/commands/internaltesting-frameworks-compose.ts","../src/commands/internaltesting-functions-discover.ts","../src/commands/login-add.ts","../src/commands/login-ci.ts","../src/commands/login-list.ts","../src/commands/login-use.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/mcp.ts","../src/commands/open.ts","../src/commands/projects-addfirebase.ts","../src/commands/projects-create.ts","../src/commands/projects-list.ts","../src/commands/remoteconfig-experiments-delete.ts","../src/commands/remoteconfig-experiments-get.ts","../src/commands/remoteconfig-experiments-list.ts","../src/commands/remoteconfig-get.ts","../src/commands/remoteconfig-rollback.ts","../src/commands/remoteconfig-rollouts-delete.ts","../src/commands/remoteconfig-rollouts-get.ts","../src/commands/remoteconfig-rollouts-list.ts","../src/commands/remoteconfig-versions-list.ts","../src/commands/serve.ts","../src/commands/setup-emulators-database.ts","../src/commands/setup-emulators-dataconnect.ts","../src/commands/setup-emulators-firestore.ts","../src/commands/setup-emulators-pubsub.ts","../src/commands/setup-emulators-storage.ts","../src/commands/setup-emulators-ui.ts","../src/commands/target-apply.ts","../src/commands/target-clear.ts","../src/commands/target-remove.ts","../src/commands/target.ts","../src/commands/use.ts","../src/crashlytics/buildToolsJarHelper.ts","../src/crashlytics/events.ts","../src/crashlytics/filters.ts","../src/crashlytics/issues.ts","../src/crashlytics/notes.ts","../src/crashlytics/reports.ts","../src/crashlytics/types.ts","../src/crashlytics/utils.ts","../src/database/api.ts","../src/database/import.ts","../src/database/listRemote.ts","../src/database/metadata.ts","../src/database/remove.ts","../src/database/removeRemote.ts","../src/database/rulesConfig.ts","../src/database/settings.ts","../src/dataconnect/build.ts","../src/dataconnect/checkIam.ts","../src/dataconnect/client.ts","../src/dataconnect/cloudAICompanionTypes.ts","../src/dataconnect/dataplaneClient.ts","../src/dataconnect/ensureApis.ts","../src/dataconnect/errors.ts","../src/dataconnect/filters.ts","../src/dataconnect/freeTrial.ts","../src/dataconnect/graphqlError.ts","../src/dataconnect/load.ts","../src/dataconnect/names.ts","../src/dataconnect/prompts.ts","../src/dataconnect/provisionCloudSql.ts","../src/dataconnect/schemaMigration.ts","../src/dataconnect/types.ts","../src/dataconnect/webhook.ts","../src/deploy/index.ts","../src/deploy/lifecycleHooks.ts","../src/deploy/apphosting/args.ts","../src/deploy/apphosting/deploy.ts","../src/deploy/apphosting/index.ts","../src/deploy/apphosting/prepare.ts","../src/deploy/apphosting/release.ts","../src/deploy/apphosting/util.ts","../src/deploy/auth/deploy.ts","../src/deploy/auth/index.ts","../src/deploy/auth/prepare.ts","../src/deploy/auth/release.ts","../src/deploy/database/deploy.ts","../src/deploy/database/index.ts","../src/deploy/database/prepare.ts","../src/deploy/database/release.ts","../src/deploy/dataconnect/context.ts","../src/deploy/dataconnect/deploy.ts","../src/deploy/dataconnect/index.ts","../src/deploy/dataconnect/prepare.ts","../src/deploy/dataconnect/release.ts","../src/deploy/extensions/args.ts","../src/deploy/extensions/deploy.ts","../src/deploy/extensions/deploymentSummary.ts","../src/deploy/extensions/errors.ts","../src/deploy/extensions/index.ts","../src/deploy/extensions/planner.ts","../src/deploy/extensions/prepare.ts","../src/deploy/extensions/release.ts","../src/deploy/extensions/secrets.ts","../src/deploy/extensions/tasks.ts","../src/deploy/extensions/v2FunctionHelper.ts","../src/deploy/extensions/validate.ts","../src/deploy/firestore/deploy.ts","../src/deploy/firestore/index.ts","../src/deploy/firestore/prepare.ts","../src/deploy/firestore/release.ts","../src/deploy/functions/args.ts","../src/deploy/functions/backend.ts","../src/deploy/functions/build.ts","../src/deploy/functions/cel.ts","../src/deploy/functions/checkIam.ts","../src/deploy/functions/containerCleaner.ts","../src/deploy/functions/deploy.ts","../src/deploy/functions/ensure.ts","../src/deploy/functions/ensureCloudBuildEnabled.ts","../src/deploy/functions/functionsDeployHelper.ts","../src/deploy/functions/index.ts","../src/deploy/functions/params.ts","../src/deploy/functions/prepare.ts","../src/deploy/functions/prepareFunctionsUpload.ts","../src/deploy/functions/pricing.ts","../src/deploy/functions/prompts.ts","../src/deploy/functions/remoteSource.ts","../src/deploy/functions/triggerRegionHelper.ts","../src/deploy/functions/validate.ts","../src/deploy/functions/cache/applyHash.ts","../src/deploy/functions/cache/hash.ts","../src/deploy/functions/release/executor.ts","../src/deploy/functions/release/fabricator.ts","../src/deploy/functions/release/index.ts","../src/deploy/functions/release/planner.ts","../src/deploy/functions/release/reporter.ts","../src/deploy/functions/release/sourceTokenScraper.ts","../src/deploy/functions/release/timer.ts","../src/deploy/functions/runtimes/dart.ts","../src/deploy/functions/runtimes/index.ts","../src/deploy/functions/runtimes/discovery/index.ts","../src/deploy/functions/runtimes/discovery/mockDiscoveryServer.ts","../src/deploy/functions/runtimes/discovery/parsing.ts","../src/deploy/functions/runtimes/discovery/v1alpha1.ts","../src/deploy/functions/runtimes/node/index.ts","../src/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.ts","../src/deploy/functions/runtimes/node/validate.ts","../src/deploy/functions/runtimes/node/versioning.ts","../src/deploy/functions/runtimes/python/index.ts","../src/deploy/functions/runtimes/supported/index.ts","../src/deploy/functions/runtimes/supported/types.ts","../src/deploy/functions/services/auth.ts","../src/deploy/functions/services/database.ts","../src/deploy/functions/services/dataconnect.ts","../src/deploy/functions/services/firebaseAlerts.ts","../src/deploy/functions/services/firestore.ts","../src/deploy/functions/services/index.ts","../src/deploy/functions/services/remoteConfig.ts","../src/deploy/functions/services/storage.ts","../src/deploy/functions/services/testLab.ts","../src/deploy/hosting/args.ts","../src/deploy/hosting/context.ts","../src/deploy/hosting/convertConfig.ts","../src/deploy/hosting/deploy.ts","../src/deploy/hosting/hashcache.ts","../src/deploy/hosting/index.ts","../src/deploy/hosting/prepare.ts","../src/deploy/hosting/release.ts","../src/deploy/hosting/uploader.ts","../src/deploy/remoteconfig/deploy.ts","../src/deploy/remoteconfig/functions.ts","../src/deploy/remoteconfig/index.ts","../src/deploy/remoteconfig/prepare.ts","../src/deploy/remoteconfig/release.ts","../src/deploy/storage/deploy.ts","../src/deploy/storage/index.ts","../src/deploy/storage/prepare.ts","../src/deploy/storage/release.ts","../src/emulator/ExpressBasedEmulator.ts","../src/emulator/adminSdkConfig.ts","../src/emulator/commandUtils.ts","../src/emulator/constants.ts","../src/emulator/controller.ts","../src/emulator/databaseEmulator.ts","../src/emulator/dataconnectEmulator.ts","../src/emulator/dataconnectToolkitController.ts","../src/emulator/dns.ts","../src/emulator/download.ts","../src/emulator/downloadableEmulators.ts","../src/emulator/emulatorLogger.ts","../src/emulator/env.ts","../src/emulator/eventarcEmulator.ts","../src/emulator/eventarcEmulatorUtils.ts","../src/emulator/extensionsEmulator.ts","../src/emulator/firestoreEmulator.ts","../src/emulator/functionsEmulator.ts","../src/emulator/functionsEmulatorRuntime.ts","../src/emulator/functionsEmulatorShared.ts","../src/emulator/functionsEmulatorShell.ts","../src/emulator/functionsEmulatorUtils.ts","../src/emulator/functionsRuntimeWorker.ts","../src/emulator/hostingEmulator.ts","../src/emulator/hub.ts","../src/emulator/hubClient.ts","../src/emulator/hubExport.ts","../src/emulator/initEmulators.ts","../src/emulator/loggingEmulator.ts","../src/emulator/portUtils.ts","../src/emulator/pubsubEmulator.ts","../src/emulator/registry.ts","../src/emulator/taskQueue.ts","../src/emulator/tasksEmulator.ts","../src/emulator/types.ts","../src/emulator/ui.ts","../src/emulator/workQueue.ts","../src/emulator/apphosting/config.ts","../src/emulator/apphosting/developmentServer.ts","../src/emulator/apphosting/index.ts","../src/emulator/apphosting/serve.ts","../src/emulator/auth/apiSpec.ts","../src/emulator/auth/cloudFunctions.ts","../src/emulator/auth/errors.ts","../src/emulator/auth/handlers.ts","../src/emulator/auth/index.ts","../src/emulator/auth/operations.ts","../src/emulator/auth/schema.ts","../src/emulator/auth/server.ts","../src/emulator/auth/state.ts","../src/emulator/auth/types.ts","../src/emulator/auth/utils.ts","../src/emulator/auth/widget_ui.ts","../src/emulator/dataconnect/pgliteServer.ts","../src/emulator/events/types.ts","../src/emulator/extensions/postinstall.ts","../src/emulator/extensions/validation.ts","../src/emulator/shared/request.ts","../src/emulator/storage/cloudFunctions.ts","../src/emulator/storage/crc.ts","../src/emulator/storage/errors.ts","../src/emulator/storage/files.ts","../src/emulator/storage/index.ts","../src/emulator/storage/metadata.ts","../src/emulator/storage/multipart.ts","../src/emulator/storage/persistence.ts","../src/emulator/storage/rfc.ts","../src/emulator/storage/server.ts","../src/emulator/storage/upload.ts","../src/emulator/storage/apis/firebase.ts","../src/emulator/storage/apis/gcloud.ts","../src/emulator/storage/apis/shared.ts","../src/emulator/storage/rules/config.ts","../src/emulator/storage/rules/expressionValue.ts","../src/emulator/storage/rules/manager.ts","../src/emulator/storage/rules/runtime.ts","../src/emulator/storage/rules/types.ts","../src/emulator/storage/rules/utils.ts","../src/extensions/askUserForEventsConfig.ts","../src/extensions/askUserForParam.ts","../src/extensions/change-log.ts","../src/extensions/checkProjectBilling.ts","../src/extensions/diagnose.ts","../src/extensions/displayExtensionInfo.ts","../src/extensions/etags.ts","../src/extensions/export.ts","../src/extensions/extensionsApi.ts","../src/extensions/extensionsHelper.ts","../src/extensions/listExtensions.ts","../src/extensions/localHelper.ts","../src/extensions/manifest.ts","../src/extensions/metricsTypeDef.ts","../src/extensions/metricsUtils.ts","../src/extensions/paramHelper.ts","../src/extensions/provisioningHelper.ts","../src/extensions/publishHelpers.ts","../src/extensions/publisherApi.ts","../src/extensions/refs.ts","../src/extensions/secretsUtils.ts","../src/extensions/tos.ts","../src/extensions/types.ts","../src/extensions/updateHelper.ts","../src/extensions/utils.ts","../src/extensions/versionHelper.ts","../src/extensions/warnings.ts","../src/extensions/emulator/optionsHelper.ts","../src/extensions/emulator/specHelper.ts","../src/extensions/emulator/triggerHelper.ts","../src/extensions/runtimes/common.ts","../src/extensions/runtimes/node.ts","../src/firestore/api-sort.ts","../src/firestore/api-spec.ts","../src/firestore/api-types.ts","../src/firestore/api.ts","../src/firestore/backupUtils.ts","../src/firestore/checkDatabaseType.ts","../src/firestore/delete.ts","../src/firestore/encodeFirestoreValue.ts","../src/firestore/fsConfig.ts","../src/firestore/options.ts","../src/firestore/pretty-print.ts","../src/firestore/util.ts","../src/firestore/validator.ts","../src/frameworks/constants.ts","../src/frameworks/frameworks.ts","../src/frameworks/index.ts","../src/frameworks/interfaces.ts","../src/frameworks/utils.ts","../src/frameworks/angular/index.ts","../src/frameworks/angular/interfaces.ts","../src/frameworks/angular/utils.ts","../src/frameworks/astro/index.ts","../src/frameworks/astro/utils.ts","../src/frameworks/compose/index.ts","../src/frameworks/compose/interfaces.ts","../src/frameworks/compose/discover/filesystem.ts","../src/frameworks/compose/discover/frameworkMatcher.ts","../src/frameworks/compose/discover/frameworkSpec.ts","../src/frameworks/compose/discover/index.ts","../src/frameworks/compose/discover/mockFileSystem.ts","../src/frameworks/compose/discover/types.ts","../src/frameworks/compose/discover/runtime/node.ts","../src/frameworks/compose/driver/docker.ts","../src/frameworks/compose/driver/hooks.ts","../src/frameworks/compose/driver/index.ts","../src/frameworks/compose/driver/local.ts","../src/frameworks/docs/index.ts","../src/frameworks/express/index.ts","../src/frameworks/flutter/constants.ts","../src/frameworks/flutter/index.ts","../src/frameworks/flutter/utils.ts","../src/frameworks/lit/index.ts","../src/frameworks/next/constants.ts","../src/frameworks/next/index.ts","../src/frameworks/next/interfaces.ts","../src/frameworks/next/utils.ts","../src/frameworks/nuxt/index.ts","../src/frameworks/nuxt/interfaces.ts","../src/frameworks/nuxt/utils.ts","../src/frameworks/nuxt2/index.ts","../src/frameworks/preact/index.ts","../src/frameworks/react/index.ts","../src/frameworks/svelte/index.ts","../src/frameworks/sveltekit/index.ts","../src/frameworks/sveltekit/interfaces.ts","../src/frameworks/vite/index.ts","../src/functions/artifacts.ts","../src/functions/constants.ts","../src/functions/ensureTargeted.ts","../src/functions/env.ts","../src/functions/functionslog.ts","../src/functions/projectConfig.ts","../src/functions/python.ts","../src/functions/secrets.ts","../src/functions/events/index.ts","../src/functions/events/v1.ts","../src/functions/events/v2.ts","../src/gcp/apphosting.ts","../src/gcp/apptesting.ts","../src/gcp/artifactregistry.ts","../src/gcp/auth.ts","../src/gcp/cloudbilling.ts","../src/gcp/cloudbuild.ts","../src/gcp/cloudfunctions.ts","../src/gcp/cloudfunctionsv2.ts","../src/gcp/cloudlogging.ts","../src/gcp/cloudmonitoring.ts","../src/gcp/cloudscheduler.ts","../src/gcp/cloudtasks.ts","../src/gcp/computeEngine.ts","../src/gcp/devConnect.ts","../src/gcp/docker.ts","../src/gcp/eventarc.ts","../src/gcp/firedata.ts","../src/gcp/firestore.ts","../src/gcp/iam.ts","../src/gcp/identityPlatform.ts","../src/gcp/index.ts","../src/gcp/k8s.ts","../src/gcp/location.ts","../src/gcp/proto.ts","../src/gcp/pubsub.ts","../src/gcp/resourceManager.ts","../src/gcp/rules.ts","../src/gcp/run.ts","../src/gcp/runtimeconfig.ts","../src/gcp/runv2.ts","../src/gcp/secretManager.ts","../src/gcp/serviceusage.ts","../src/gcp/storage.ts","../src/gcp/cloudsql/cloudsqladmin.ts","../src/gcp/cloudsql/connect.ts","../src/gcp/cloudsql/fbToolsAuthClient.ts","../src/gcp/cloudsql/interactive.ts","../src/gcp/cloudsql/permissions.ts","../src/gcp/cloudsql/permissionsSetup.ts","../src/gcp/cloudsql/types.ts","../src/gemini/fdcExperience.ts","../src/gemini/types.ts","../src/hosting/api.ts","../src/hosting/cloudRunProxy.ts","../src/hosting/config.ts","../src/hosting/expireUtils.ts","../src/hosting/functionsProxy.ts","../src/hosting/implicitInit.ts","../src/hosting/initMiddleware.ts","../src/hosting/interactive.ts","../src/hosting/options.ts","../src/hosting/proxy.ts","../src/hosting/runTags.ts","../src/init/index.ts","../src/init/spawn.ts","../src/init/features/account.ts","../src/init/features/aitools.ts","../src/init/features/apphosting.ts","../src/init/features/auth.ts","../src/init/features/database.ts","../src/init/features/emulators.ts","../src/init/features/index.ts","../src/init/features/project.ts","../src/init/features/remoteconfig.ts","../src/init/features/ailogic/index.ts","../src/init/features/ailogic/utils.ts","../src/init/features/aitools/claude.ts","../src/init/features/aitools/cursor.ts","../src/init/features/aitools/gemini.ts","../src/init/features/aitools/index.ts","../src/init/features/aitools/promptUpdater.ts","../src/init/features/aitools/studio.ts","../src/init/features/aitools/types.ts","../src/init/features/apptesting/index.ts","../src/init/features/dataconnect/create_app.ts","../src/init/features/dataconnect/index.ts","../src/init/features/dataconnect/resolver.ts","../src/init/features/dataconnect/sdk.ts","../src/init/features/extensions/index.ts","../src/init/features/firestore/index.ts","../src/init/features/firestore/indexes.ts","../src/init/features/firestore/rules.ts","../src/init/features/functions/index.ts","../src/init/features/functions/javascript.ts","../src/init/features/functions/npm-dependencies.ts","../src/init/features/functions/python.ts","../src/init/features/functions/typescript.ts","../src/init/features/functions/utils.ts","../src/init/features/genkit/index.ts","../src/init/features/hosting/github.ts","../src/init/features/hosting/index.ts","../src/init/features/storage/index.ts","../src/init/features/storage/rules.ts","../src/management/apps.ts","../src/management/database.ts","../src/management/projects.ts","../src/management/studio.ts","../src/management/provisioning/errorHandler.ts","../src/management/provisioning/provision.ts","../src/management/provisioning/types.ts","../src/mcp/errors.ts","../src/mcp/index.ts","../src/mcp/logging-transport.ts","../src/mcp/prompt.ts","../src/mcp/resource.ts","../src/mcp/tool.ts","../src/mcp/types.ts","../src/mcp/util.ts","../src/mcp/prompts/index.ts","../src/mcp/prompts/apptesting/index.ts","../src/mcp/prompts/apptesting/run_test.ts","../src/mcp/prompts/core/deploy.ts","../src/mcp/prompts/core/index.ts","../src/mcp/prompts/core/init.ts","../src/mcp/prompts/crashlytics/connect.ts","../src/mcp/prompts/crashlytics/index.ts","../src/mcp/prompts/dataconnect/index.ts","../src/mcp/prompts/dataconnect/schema.ts","../src/mcp/prompts/firestore/generate_security_rules.ts","../src/mcp/prompts/firestore/index.ts","../src/mcp/prompts/storage/generate_security_rules.ts","../src/mcp/prompts/storage/index.ts","../src/mcp/resources/docs.ts","../src/mcp/resources/index.ts","../src/mcp/resources/guides/app_id.ts","../src/mcp/resources/guides/crashlytics_connect.ts","../src/mcp/resources/guides/crashlytics_investigations.ts","../src/mcp/resources/guides/crashlytics_issues.ts","../src/mcp/resources/guides/crashlytics_reports.ts","../src/mcp/resources/guides/init_ai.ts","../src/mcp/resources/guides/init_auth.ts","../src/mcp/resources/guides/init_backend.ts","../src/mcp/resources/guides/init_data_connect.ts","../src/mcp/resources/guides/init_firestore.ts","../src/mcp/resources/guides/init_firestore_rules.ts","../src/mcp/resources/guides/init_hosting.ts","../src/mcp/resources/guides/init_rtdb.ts","../src/mcp/tools/index.ts","../src/mcp/tools/apphosting/fetch_logs.ts","../src/mcp/tools/apphosting/index.ts","../src/mcp/tools/apphosting/list_backends.ts","../src/mcp/tools/apptesting/index.ts","../src/mcp/tools/apptesting/tests.ts","../src/mcp/tools/auth/get_users.ts","../src/mcp/tools/auth/index.ts","../src/mcp/tools/auth/set_sms_region_policy.ts","../src/mcp/tools/auth/update_user.ts","../src/mcp/tools/core/create_android_sha.ts","../src/mcp/tools/core/create_app.ts","../src/mcp/tools/core/create_project.ts","../src/mcp/tools/core/get_environment.ts","../src/mcp/tools/core/get_project.ts","../src/mcp/tools/core/get_sdk_config.ts","../src/mcp/tools/core/get_security_rules.ts","../src/mcp/tools/core/index.ts","../src/mcp/tools/core/init.ts","../src/mcp/tools/core/list_apps.ts","../src/mcp/tools/core/list_projects.ts","../src/mcp/tools/core/login.ts","../src/mcp/tools/core/logout.ts","../src/mcp/tools/core/read_resources.ts","../src/mcp/tools/core/update_environment.ts","../src/mcp/tools/core/validate_security_rules.ts","../src/mcp/tools/crashlytics/events.ts","../src/mcp/tools/crashlytics/index.ts","../src/mcp/tools/crashlytics/issues.ts","../src/mcp/tools/crashlytics/notes.ts","../src/mcp/tools/crashlytics/reports.ts","../src/mcp/tools/dataconnect/compile.ts","../src/mcp/tools/dataconnect/execute.ts","../src/mcp/tools/dataconnect/index.ts","../src/mcp/tools/dataconnect/list_services.ts","../src/mcp/tools/firestore/converter.ts","../src/mcp/tools/firestore/delete_document.ts","../src/mcp/tools/firestore/get_documents.ts","../src/mcp/tools/firestore/index.ts","../src/mcp/tools/firestore/list_collections.ts","../src/mcp/tools/firestore/query_collection.ts","../src/mcp/tools/functions/get_logs.ts","../src/mcp/tools/functions/index.ts","../src/mcp/tools/functions/list_functions.ts","../src/mcp/tools/messaging/index.ts","../src/mcp/tools/messaging/send_message.ts","../src/mcp/tools/realtime_database/get_data.ts","../src/mcp/tools/realtime_database/index.ts","../src/mcp/tools/realtime_database/set_data.ts","../src/mcp/tools/remoteconfig/get_template.ts","../src/mcp/tools/remoteconfig/index.ts","../src/mcp/tools/remoteconfig/update_template.ts","../src/mcp/tools/storage/get_download_url.ts","../src/mcp/tools/storage/index.ts","../src/mcp/util/availability.ts","../src/mcp/util/apptesting/availability.ts","../src/mcp/util/crashlytics/availability.ts","../src/mcp/util/dataconnect/compile.ts","../src/mcp/util/dataconnect/content.ts","../src/mcp/util/dataconnect/converter.ts","../src/mcp/util/dataconnect/emulator.ts","../src/messaging/interfaces.ts","../src/messaging/sendMessage.ts","../src/remoteconfig/deleteExperiment.ts","../src/remoteconfig/deleteRollout.ts","../src/remoteconfig/get.ts","../src/remoteconfig/getExperiment.ts","../src/remoteconfig/getRollout.ts","../src/remoteconfig/interfaces.ts","../src/remoteconfig/listExperiments.ts","../src/remoteconfig/listRollouts.ts","../src/remoteconfig/options.ts","../src/remoteconfig/publish.ts","../src/remoteconfig/rollback.ts","../src/remoteconfig/versionslist.ts","../src/serve/functions.ts","../src/serve/hosting.ts","../src/serve/index.ts","../src/throttler/queue.ts","../src/throttler/stack.ts","../src/throttler/throttler.ts","../src/throttler/errors/retries-exhausted-error.ts","../src/throttler/errors/task-error.ts","../src/throttler/errors/timeout-error.ts","../src/types/extractTriggers.d.ts","../src/types/update-notifier-cjs.d.ts","../src/types/auth/index.d.ts","../src/types/project/index.d.ts","../src/types/proxy/index.d.ts"],"version":"5.9.3"}
1
+ {"root":["../src/accountExporter.ts","../src/accountImporter.ts","../src/api.ts","../src/apiv2.ts","../src/appUtils.ts","../src/archiveDirectory.ts","../src/auth.ts","../src/checkMinRequiredVersion.ts","../src/checkValidTargetFilters.ts","../src/command.ts","../src/config.ts","../src/configstore.ts","../src/defaultCredentials.ts","../src/deploymentTool.ts","../src/detectProjectRoot.ts","../src/downloadUtils.ts","../src/dynamicImport.js","../src/ensureApiEnabled.ts","../src/env.ts","../src/error.ts","../src/errorOut.ts","../src/experiments.ts","../src/fetchMOTD.ts","../src/fetchWebSetup.ts","../src/filterTargets.ts","../src/firebaseConfig.ts","../src/firebaseConfigValidate.ts","../src/fsAsync.ts","../src/fsutils.ts","../src/functional.ts","../src/functionsConfig.ts","../src/functionsConfigClone.ts","../src/functionsShellCommandAction.ts","../src/getDefaultDatabaseInstance.ts","../src/getDefaultHostingSite.ts","../src/getProjectNumber.ts","../src/index.ts","../src/listFiles.ts","../src/loadCJSON.ts","../src/localFunction.ts","../src/logError.ts","../src/logger.ts","../src/metaprogramming.ts","../src/operation-poller.ts","../src/options.ts","../src/profileReport.ts","../src/profiler.ts","../src/projectPath.ts","../src/projectUtils.ts","../src/prompt.ts","../src/rc.ts","../src/requireAuth.ts","../src/requireConfig.ts","../src/requireDatabaseInstance.ts","../src/requireHostingSite.ts","../src/requireInteractive.ts","../src/requirePermissions.ts","../src/requireTosAcceptance.ts","../src/responseToError.ts","../src/rtdb.ts","../src/rulesDeploy.ts","../src/scopes.ts","../src/shortenUrl.ts","../src/templates.ts","../src/timeout.ts","../src/track.ts","../src/unzip.ts","../src/utils.ts","../src/vsCodeUtils.ts","../src/appdistribution/client.ts","../src/appdistribution/distribution.ts","../src/appdistribution/options-parser-util.ts","../src/appdistribution/types.ts","../src/appdistribution/yaml_helper.ts","../src/apphosting/app.ts","../src/apphosting/backend.ts","../src/apphosting/config.ts","../src/apphosting/constants.ts","../src/apphosting/githubConnections.ts","../src/apphosting/index.ts","../src/apphosting/localbuilds.ts","../src/apphosting/repo.ts","../src/apphosting/rollout.ts","../src/apphosting/utils.ts","../src/apphosting/yaml.ts","../src/apphosting/secrets/dialogs.ts","../src/apphosting/secrets/index.ts","../src/apptesting/ensureProjectConfigured.ts","../src/apptesting/invokeTests.ts","../src/apptesting/parseTestFiles.ts","../src/apptesting/types.ts","../src/bin/cli.ts","../src/bin/firebase.ts","../src/bin/mcp.ts","../src/commands/appdistribution-distribute.ts","../src/commands/appdistribution-groups-create.ts","../src/commands/appdistribution-groups-delete.ts","../src/commands/appdistribution-groups-list.ts","../src/commands/appdistribution-testcases-export.ts","../src/commands/appdistribution-testcases-import.ts","../src/commands/appdistribution-testers-add.ts","../src/commands/appdistribution-testers-list.ts","../src/commands/appdistribution-testers-remove.ts","../src/commands/apphosting-backends-create.ts","../src/commands/apphosting-backends-delete.ts","../src/commands/apphosting-backends-get.ts","../src/commands/apphosting-backends-list.ts","../src/commands/apphosting-builds-create.ts","../src/commands/apphosting-builds-get.ts","../src/commands/apphosting-repos-create.ts","../src/commands/apphosting-rollouts-create.ts","../src/commands/apphosting-rollouts-list.ts","../src/commands/apphosting-secrets-access.ts","../src/commands/apphosting-secrets-describe.ts","../src/commands/apphosting-secrets-grantaccess.ts","../src/commands/apphosting-secrets-set.ts","../src/commands/apps-android-sha-create.ts","../src/commands/apps-android-sha-delete.ts","../src/commands/apps-android-sha-list.ts","../src/commands/apps-create.ts","../src/commands/apps-init.ts","../src/commands/apps-list.ts","../src/commands/apps-sdkconfig.ts","../src/commands/apptesting-wata.ts","../src/commands/apptesting.ts","../src/commands/auth-export.ts","../src/commands/auth-import.ts","../src/commands/crashlytics-mappingfile-generateid.ts","../src/commands/crashlytics-mappingfile-upload.ts","../src/commands/crashlytics-symbols-upload.ts","../src/commands/database-get.ts","../src/commands/database-import.ts","../src/commands/database-instances-create.ts","../src/commands/database-instances-list.ts","../src/commands/database-profile.ts","../src/commands/database-push.ts","../src/commands/database-remove.ts","../src/commands/database-rules-canary.ts","../src/commands/database-rules-get.ts","../src/commands/database-rules-list.ts","../src/commands/database-rules-release.ts","../src/commands/database-rules-stage.ts","../src/commands/database-set.ts","../src/commands/database-settings-get.ts","../src/commands/database-settings-set.ts","../src/commands/database-update.ts","../src/commands/dataconnect-compile.ts","../src/commands/dataconnect-execute.ts","../src/commands/dataconnect-sdk-generate.ts","../src/commands/dataconnect-services-list.ts","../src/commands/dataconnect-sql-diff.ts","../src/commands/dataconnect-sql-grant.ts","../src/commands/dataconnect-sql-migrate.ts","../src/commands/dataconnect-sql-setup.ts","../src/commands/dataconnect-sql-shell.ts","../src/commands/deploy.ts","../src/commands/emulators-exec.ts","../src/commands/emulators-export.ts","../src/commands/emulators-start.ts","../src/commands/experiments-describe.ts","../src/commands/experiments-disable.ts","../src/commands/experiments-enable.ts","../src/commands/experiments-list.ts","../src/commands/ext-configure.ts","../src/commands/ext-dev-deprecate.ts","../src/commands/ext-dev-init.ts","../src/commands/ext-dev-list.ts","../src/commands/ext-dev-register.ts","../src/commands/ext-dev-undeprecate.ts","../src/commands/ext-dev-upload.ts","../src/commands/ext-dev-usage.ts","../src/commands/ext-export.ts","../src/commands/ext-info.ts","../src/commands/ext-install.ts","../src/commands/ext-list.ts","../src/commands/ext-sdk-install.ts","../src/commands/ext-uninstall.ts","../src/commands/ext-update.ts","../src/commands/ext.ts","../src/commands/firestore-backups-delete.ts","../src/commands/firestore-backups-get.ts","../src/commands/firestore-backups-list.ts","../src/commands/firestore-backups-schedules-create.ts","../src/commands/firestore-backups-schedules-delete.ts","../src/commands/firestore-backups-schedules-list.ts","../src/commands/firestore-backups-schedules-update.ts","../src/commands/firestore-bulkdelete.ts","../src/commands/firestore-databases-clone.ts","../src/commands/firestore-databases-create.ts","../src/commands/firestore-databases-delete.ts","../src/commands/firestore-databases-get.ts","../src/commands/firestore-databases-list.ts","../src/commands/firestore-databases-restore.ts","../src/commands/firestore-databases-update.ts","../src/commands/firestore-delete.ts","../src/commands/firestore-indexes-list.ts","../src/commands/firestore-locations.ts","../src/commands/firestore-operations-cancel.ts","../src/commands/firestore-operations-describe.ts","../src/commands/firestore-operations-list.ts","../src/commands/firestore-utils.ts","../src/commands/functions-artifacts-setpolicy.ts","../src/commands/functions-config-clone.ts","../src/commands/functions-config-export.ts","../src/commands/functions-config-get.ts","../src/commands/functions-config-set.ts","../src/commands/functions-config-unset.ts","../src/commands/functions-delete.ts","../src/commands/functions-deletegcfartifacts.ts","../src/commands/functions-list.ts","../src/commands/functions-log.ts","../src/commands/functions-secrets-access.ts","../src/commands/functions-secrets-describe.ts","../src/commands/functions-secrets-destroy.ts","../src/commands/functions-secrets-get.ts","../src/commands/functions-secrets-prune.ts","../src/commands/functions-secrets-set.ts","../src/commands/functions-shell.ts","../src/commands/help.ts","../src/commands/hosting-channel-create.ts","../src/commands/hosting-channel-delete.ts","../src/commands/hosting-channel-deploy.ts","../src/commands/hosting-channel-list.ts","../src/commands/hosting-channel-open.ts","../src/commands/hosting-clone.ts","../src/commands/hosting-disable.ts","../src/commands/hosting-sites-create.ts","../src/commands/hosting-sites-delete.ts","../src/commands/hosting-sites-get.ts","../src/commands/hosting-sites-list.ts","../src/commands/index.ts","../src/commands/init.ts","../src/commands/internaltesting-frameworks-compose.ts","../src/commands/internaltesting-functions-discover.ts","../src/commands/login-add.ts","../src/commands/login-ci.ts","../src/commands/login-list.ts","../src/commands/login-use.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/mcp.ts","../src/commands/open.ts","../src/commands/projects-addfirebase.ts","../src/commands/projects-create.ts","../src/commands/projects-list.ts","../src/commands/remoteconfig-experiments-delete.ts","../src/commands/remoteconfig-experiments-get.ts","../src/commands/remoteconfig-experiments-list.ts","../src/commands/remoteconfig-get.ts","../src/commands/remoteconfig-rollback.ts","../src/commands/remoteconfig-rollouts-delete.ts","../src/commands/remoteconfig-rollouts-get.ts","../src/commands/remoteconfig-rollouts-list.ts","../src/commands/remoteconfig-versions-list.ts","../src/commands/serve.ts","../src/commands/setup-emulators-database.ts","../src/commands/setup-emulators-dataconnect.ts","../src/commands/setup-emulators-firestore.ts","../src/commands/setup-emulators-pubsub.ts","../src/commands/setup-emulators-storage.ts","../src/commands/setup-emulators-ui.ts","../src/commands/studio-export.ts","../src/commands/target-apply.ts","../src/commands/target-clear.ts","../src/commands/target-remove.ts","../src/commands/target.ts","../src/commands/use.ts","../src/crashlytics/buildToolsJarHelper.ts","../src/crashlytics/events.ts","../src/crashlytics/filters.ts","../src/crashlytics/issues.ts","../src/crashlytics/notes.ts","../src/crashlytics/reports.ts","../src/crashlytics/types.ts","../src/crashlytics/utils.ts","../src/database/api.ts","../src/database/import.ts","../src/database/listRemote.ts","../src/database/metadata.ts","../src/database/remove.ts","../src/database/removeRemote.ts","../src/database/rulesConfig.ts","../src/database/settings.ts","../src/dataconnect/build.ts","../src/dataconnect/checkIam.ts","../src/dataconnect/client.ts","../src/dataconnect/cloudAICompanionTypes.ts","../src/dataconnect/dataplaneClient.ts","../src/dataconnect/ensureApis.ts","../src/dataconnect/errors.ts","../src/dataconnect/filters.ts","../src/dataconnect/freeTrial.ts","../src/dataconnect/graphqlError.ts","../src/dataconnect/load.ts","../src/dataconnect/names.ts","../src/dataconnect/prompts.ts","../src/dataconnect/provisionCloudSql.ts","../src/dataconnect/schemaMigration.ts","../src/dataconnect/types.ts","../src/dataconnect/webhook.ts","../src/deploy/index.ts","../src/deploy/lifecycleHooks.ts","../src/deploy/apphosting/args.ts","../src/deploy/apphosting/deploy.ts","../src/deploy/apphosting/index.ts","../src/deploy/apphosting/prepare.ts","../src/deploy/apphosting/release.ts","../src/deploy/apphosting/util.ts","../src/deploy/auth/deploy.ts","../src/deploy/auth/index.ts","../src/deploy/auth/prepare.ts","../src/deploy/auth/release.ts","../src/deploy/database/deploy.ts","../src/deploy/database/index.ts","../src/deploy/database/prepare.ts","../src/deploy/database/release.ts","../src/deploy/dataconnect/context.ts","../src/deploy/dataconnect/deploy.ts","../src/deploy/dataconnect/index.ts","../src/deploy/dataconnect/prepare.ts","../src/deploy/dataconnect/release.ts","../src/deploy/extensions/args.ts","../src/deploy/extensions/deploy.ts","../src/deploy/extensions/deploymentSummary.ts","../src/deploy/extensions/errors.ts","../src/deploy/extensions/index.ts","../src/deploy/extensions/planner.ts","../src/deploy/extensions/prepare.ts","../src/deploy/extensions/release.ts","../src/deploy/extensions/secrets.ts","../src/deploy/extensions/tasks.ts","../src/deploy/extensions/v2FunctionHelper.ts","../src/deploy/extensions/validate.ts","../src/deploy/firestore/deploy.ts","../src/deploy/firestore/index.ts","../src/deploy/firestore/prepare.ts","../src/deploy/firestore/release.ts","../src/deploy/functions/args.ts","../src/deploy/functions/backend.ts","../src/deploy/functions/build.ts","../src/deploy/functions/cel.ts","../src/deploy/functions/checkIam.ts","../src/deploy/functions/containerCleaner.ts","../src/deploy/functions/deploy.ts","../src/deploy/functions/ensure.ts","../src/deploy/functions/ensureCloudBuildEnabled.ts","../src/deploy/functions/functionsDeployHelper.ts","../src/deploy/functions/index.ts","../src/deploy/functions/params.ts","../src/deploy/functions/prepare.ts","../src/deploy/functions/prepareFunctionsUpload.ts","../src/deploy/functions/pricing.ts","../src/deploy/functions/prompts.ts","../src/deploy/functions/remoteSource.ts","../src/deploy/functions/triggerRegionHelper.ts","../src/deploy/functions/validate.ts","../src/deploy/functions/cache/applyHash.ts","../src/deploy/functions/cache/hash.ts","../src/deploy/functions/release/executor.ts","../src/deploy/functions/release/fabricator.ts","../src/deploy/functions/release/index.ts","../src/deploy/functions/release/planner.ts","../src/deploy/functions/release/reporter.ts","../src/deploy/functions/release/sourceTokenScraper.ts","../src/deploy/functions/release/timer.ts","../src/deploy/functions/runtimes/dart.ts","../src/deploy/functions/runtimes/index.ts","../src/deploy/functions/runtimes/discovery/index.ts","../src/deploy/functions/runtimes/discovery/mockDiscoveryServer.ts","../src/deploy/functions/runtimes/discovery/parsing.ts","../src/deploy/functions/runtimes/discovery/v1alpha1.ts","../src/deploy/functions/runtimes/node/index.ts","../src/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.ts","../src/deploy/functions/runtimes/node/validate.ts","../src/deploy/functions/runtimes/node/versioning.ts","../src/deploy/functions/runtimes/python/index.ts","../src/deploy/functions/runtimes/supported/index.ts","../src/deploy/functions/runtimes/supported/types.ts","../src/deploy/functions/services/auth.ts","../src/deploy/functions/services/database.ts","../src/deploy/functions/services/dataconnect.ts","../src/deploy/functions/services/firebaseAlerts.ts","../src/deploy/functions/services/firestore.ts","../src/deploy/functions/services/index.ts","../src/deploy/functions/services/remoteConfig.ts","../src/deploy/functions/services/storage.ts","../src/deploy/functions/services/testLab.ts","../src/deploy/hosting/args.ts","../src/deploy/hosting/context.ts","../src/deploy/hosting/convertConfig.ts","../src/deploy/hosting/deploy.ts","../src/deploy/hosting/hashcache.ts","../src/deploy/hosting/index.ts","../src/deploy/hosting/prepare.ts","../src/deploy/hosting/release.ts","../src/deploy/hosting/uploader.ts","../src/deploy/remoteconfig/deploy.ts","../src/deploy/remoteconfig/functions.ts","../src/deploy/remoteconfig/index.ts","../src/deploy/remoteconfig/prepare.ts","../src/deploy/remoteconfig/release.ts","../src/deploy/storage/deploy.ts","../src/deploy/storage/index.ts","../src/deploy/storage/prepare.ts","../src/deploy/storage/release.ts","../src/emulator/ExpressBasedEmulator.ts","../src/emulator/adminSdkConfig.ts","../src/emulator/commandUtils.ts","../src/emulator/constants.ts","../src/emulator/controller.ts","../src/emulator/databaseEmulator.ts","../src/emulator/dataconnectEmulator.ts","../src/emulator/dataconnectToolkitController.ts","../src/emulator/dns.ts","../src/emulator/download.ts","../src/emulator/downloadableEmulators.ts","../src/emulator/emulatorLogger.ts","../src/emulator/env.ts","../src/emulator/eventarcEmulator.ts","../src/emulator/eventarcEmulatorUtils.ts","../src/emulator/extensionsEmulator.ts","../src/emulator/firestoreEmulator.ts","../src/emulator/functionsEmulator.ts","../src/emulator/functionsEmulatorRuntime.ts","../src/emulator/functionsEmulatorShared.ts","../src/emulator/functionsEmulatorShell.ts","../src/emulator/functionsEmulatorUtils.ts","../src/emulator/functionsRuntimeWorker.ts","../src/emulator/hostingEmulator.ts","../src/emulator/hub.ts","../src/emulator/hubClient.ts","../src/emulator/hubExport.ts","../src/emulator/initEmulators.ts","../src/emulator/loggingEmulator.ts","../src/emulator/portUtils.ts","../src/emulator/pubsubEmulator.ts","../src/emulator/registry.ts","../src/emulator/taskQueue.ts","../src/emulator/tasksEmulator.ts","../src/emulator/types.ts","../src/emulator/ui.ts","../src/emulator/workQueue.ts","../src/emulator/apphosting/config.ts","../src/emulator/apphosting/developmentServer.ts","../src/emulator/apphosting/index.ts","../src/emulator/apphosting/serve.ts","../src/emulator/auth/apiSpec.ts","../src/emulator/auth/cloudFunctions.ts","../src/emulator/auth/errors.ts","../src/emulator/auth/handlers.ts","../src/emulator/auth/index.ts","../src/emulator/auth/operations.ts","../src/emulator/auth/schema.ts","../src/emulator/auth/server.ts","../src/emulator/auth/state.ts","../src/emulator/auth/types.ts","../src/emulator/auth/utils.ts","../src/emulator/auth/widget_ui.ts","../src/emulator/dataconnect/pgliteServer.ts","../src/emulator/events/types.ts","../src/emulator/extensions/postinstall.ts","../src/emulator/extensions/validation.ts","../src/emulator/shared/request.ts","../src/emulator/storage/cloudFunctions.ts","../src/emulator/storage/crc.ts","../src/emulator/storage/errors.ts","../src/emulator/storage/files.ts","../src/emulator/storage/index.ts","../src/emulator/storage/metadata.ts","../src/emulator/storage/multipart.ts","../src/emulator/storage/persistence.ts","../src/emulator/storage/rfc.ts","../src/emulator/storage/server.ts","../src/emulator/storage/upload.ts","../src/emulator/storage/apis/firebase.ts","../src/emulator/storage/apis/gcloud.ts","../src/emulator/storage/apis/shared.ts","../src/emulator/storage/rules/config.ts","../src/emulator/storage/rules/expressionValue.ts","../src/emulator/storage/rules/manager.ts","../src/emulator/storage/rules/runtime.ts","../src/emulator/storage/rules/types.ts","../src/emulator/storage/rules/utils.ts","../src/extensions/askUserForEventsConfig.ts","../src/extensions/askUserForParam.ts","../src/extensions/change-log.ts","../src/extensions/checkProjectBilling.ts","../src/extensions/diagnose.ts","../src/extensions/displayExtensionInfo.ts","../src/extensions/etags.ts","../src/extensions/export.ts","../src/extensions/extensionsApi.ts","../src/extensions/extensionsHelper.ts","../src/extensions/listExtensions.ts","../src/extensions/localHelper.ts","../src/extensions/manifest.ts","../src/extensions/metricsTypeDef.ts","../src/extensions/metricsUtils.ts","../src/extensions/paramHelper.ts","../src/extensions/provisioningHelper.ts","../src/extensions/publishHelpers.ts","../src/extensions/publisherApi.ts","../src/extensions/refs.ts","../src/extensions/secretsUtils.ts","../src/extensions/tos.ts","../src/extensions/types.ts","../src/extensions/updateHelper.ts","../src/extensions/utils.ts","../src/extensions/versionHelper.ts","../src/extensions/warnings.ts","../src/extensions/emulator/optionsHelper.ts","../src/extensions/emulator/specHelper.ts","../src/extensions/emulator/triggerHelper.ts","../src/extensions/runtimes/common.ts","../src/extensions/runtimes/node.ts","../src/firestore/api-sort.ts","../src/firestore/api-spec.ts","../src/firestore/api-types.ts","../src/firestore/api.ts","../src/firestore/backupUtils.ts","../src/firestore/checkDatabaseType.ts","../src/firestore/delete.ts","../src/firestore/encodeFirestoreValue.ts","../src/firestore/fsConfig.ts","../src/firestore/options.ts","../src/firestore/pretty-print.ts","../src/firestore/util.ts","../src/firestore/validator.ts","../src/frameworks/constants.ts","../src/frameworks/frameworks.ts","../src/frameworks/index.ts","../src/frameworks/interfaces.ts","../src/frameworks/utils.ts","../src/frameworks/angular/index.ts","../src/frameworks/angular/interfaces.ts","../src/frameworks/angular/utils.ts","../src/frameworks/astro/index.ts","../src/frameworks/astro/utils.ts","../src/frameworks/compose/index.ts","../src/frameworks/compose/interfaces.ts","../src/frameworks/compose/discover/filesystem.ts","../src/frameworks/compose/discover/frameworkMatcher.ts","../src/frameworks/compose/discover/frameworkSpec.ts","../src/frameworks/compose/discover/index.ts","../src/frameworks/compose/discover/mockFileSystem.ts","../src/frameworks/compose/discover/types.ts","../src/frameworks/compose/discover/runtime/node.ts","../src/frameworks/compose/driver/docker.ts","../src/frameworks/compose/driver/hooks.ts","../src/frameworks/compose/driver/index.ts","../src/frameworks/compose/driver/local.ts","../src/frameworks/docs/index.ts","../src/frameworks/express/index.ts","../src/frameworks/flutter/constants.ts","../src/frameworks/flutter/index.ts","../src/frameworks/flutter/utils.ts","../src/frameworks/lit/index.ts","../src/frameworks/next/constants.ts","../src/frameworks/next/index.ts","../src/frameworks/next/interfaces.ts","../src/frameworks/next/utils.ts","../src/frameworks/nuxt/index.ts","../src/frameworks/nuxt/interfaces.ts","../src/frameworks/nuxt/utils.ts","../src/frameworks/nuxt2/index.ts","../src/frameworks/preact/index.ts","../src/frameworks/react/index.ts","../src/frameworks/svelte/index.ts","../src/frameworks/sveltekit/index.ts","../src/frameworks/sveltekit/interfaces.ts","../src/frameworks/vite/index.ts","../src/functions/artifacts.ts","../src/functions/constants.ts","../src/functions/ensureTargeted.ts","../src/functions/env.ts","../src/functions/functionslog.ts","../src/functions/projectConfig.ts","../src/functions/python.ts","../src/functions/secrets.ts","../src/functions/events/index.ts","../src/functions/events/v1.ts","../src/functions/events/v2.ts","../src/gcp/apphosting.ts","../src/gcp/apptesting.ts","../src/gcp/artifactregistry.ts","../src/gcp/auth.ts","../src/gcp/cloudbilling.ts","../src/gcp/cloudbuild.ts","../src/gcp/cloudfunctions.ts","../src/gcp/cloudfunctionsv2.ts","../src/gcp/cloudlogging.ts","../src/gcp/cloudmonitoring.ts","../src/gcp/cloudscheduler.ts","../src/gcp/cloudtasks.ts","../src/gcp/computeEngine.ts","../src/gcp/devConnect.ts","../src/gcp/docker.ts","../src/gcp/eventarc.ts","../src/gcp/firedata.ts","../src/gcp/firestore.ts","../src/gcp/iam.ts","../src/gcp/identityPlatform.ts","../src/gcp/index.ts","../src/gcp/k8s.ts","../src/gcp/location.ts","../src/gcp/proto.ts","../src/gcp/pubsub.ts","../src/gcp/resourceManager.ts","../src/gcp/rules.ts","../src/gcp/run.ts","../src/gcp/runtimeconfig.ts","../src/gcp/runv2.ts","../src/gcp/secretManager.ts","../src/gcp/serviceusage.ts","../src/gcp/storage.ts","../src/gcp/cloudsql/cloudsqladmin.ts","../src/gcp/cloudsql/connect.ts","../src/gcp/cloudsql/fbToolsAuthClient.ts","../src/gcp/cloudsql/interactive.ts","../src/gcp/cloudsql/permissions.ts","../src/gcp/cloudsql/permissionsSetup.ts","../src/gcp/cloudsql/types.ts","../src/gemini/fdcExperience.ts","../src/gemini/types.ts","../src/hosting/api.ts","../src/hosting/cloudRunProxy.ts","../src/hosting/config.ts","../src/hosting/expireUtils.ts","../src/hosting/functionsProxy.ts","../src/hosting/implicitInit.ts","../src/hosting/initMiddleware.ts","../src/hosting/interactive.ts","../src/hosting/options.ts","../src/hosting/proxy.ts","../src/hosting/runTags.ts","../src/init/index.ts","../src/init/spawn.ts","../src/init/features/account.ts","../src/init/features/aitools.ts","../src/init/features/apphosting.ts","../src/init/features/auth.ts","../src/init/features/database.ts","../src/init/features/emulators.ts","../src/init/features/index.ts","../src/init/features/project.ts","../src/init/features/remoteconfig.ts","../src/init/features/ailogic/index.ts","../src/init/features/ailogic/utils.ts","../src/init/features/aitools/claude.ts","../src/init/features/aitools/cursor.ts","../src/init/features/aitools/gemini.ts","../src/init/features/aitools/index.ts","../src/init/features/aitools/promptUpdater.ts","../src/init/features/aitools/studio.ts","../src/init/features/aitools/types.ts","../src/init/features/apptesting/index.ts","../src/init/features/dataconnect/create_app.ts","../src/init/features/dataconnect/index.ts","../src/init/features/dataconnect/resolver.ts","../src/init/features/dataconnect/sdk.ts","../src/init/features/extensions/index.ts","../src/init/features/firestore/index.ts","../src/init/features/firestore/indexes.ts","../src/init/features/firestore/rules.ts","../src/init/features/functions/index.ts","../src/init/features/functions/javascript.ts","../src/init/features/functions/npm-dependencies.ts","../src/init/features/functions/python.ts","../src/init/features/functions/typescript.ts","../src/init/features/functions/utils.ts","../src/init/features/genkit/index.ts","../src/init/features/hosting/github.ts","../src/init/features/hosting/index.ts","../src/init/features/storage/index.ts","../src/init/features/storage/rules.ts","../src/management/apps.ts","../src/management/database.ts","../src/management/projects.ts","../src/management/studio.ts","../src/management/provisioning/errorHandler.ts","../src/management/provisioning/provision.ts","../src/management/provisioning/types.ts","../src/mcp/errors.ts","../src/mcp/index.ts","../src/mcp/logging-transport.ts","../src/mcp/prompt.ts","../src/mcp/resource.ts","../src/mcp/tool.ts","../src/mcp/types.ts","../src/mcp/util.ts","../src/mcp/onemcp/index.ts","../src/mcp/onemcp/onemcp_server.ts","../src/mcp/prompts/index.ts","../src/mcp/prompts/apptesting/index.ts","../src/mcp/prompts/apptesting/run_test.ts","../src/mcp/prompts/core/deploy.ts","../src/mcp/prompts/core/index.ts","../src/mcp/prompts/core/init.ts","../src/mcp/prompts/crashlytics/connect.ts","../src/mcp/prompts/crashlytics/index.ts","../src/mcp/prompts/dataconnect/index.ts","../src/mcp/prompts/dataconnect/schema.ts","../src/mcp/prompts/firestore/generate_security_rules.ts","../src/mcp/prompts/firestore/index.ts","../src/mcp/prompts/storage/generate_security_rules.ts","../src/mcp/prompts/storage/index.ts","../src/mcp/resources/docs.ts","../src/mcp/resources/index.ts","../src/mcp/resources/guides/app_id.ts","../src/mcp/resources/guides/crashlytics_connect.ts","../src/mcp/resources/guides/crashlytics_investigations.ts","../src/mcp/resources/guides/crashlytics_issues.ts","../src/mcp/resources/guides/crashlytics_reports.ts","../src/mcp/resources/guides/init_ai.ts","../src/mcp/resources/guides/init_auth.ts","../src/mcp/resources/guides/init_backend.ts","../src/mcp/resources/guides/init_data_connect.ts","../src/mcp/resources/guides/init_firestore.ts","../src/mcp/resources/guides/init_firestore_rules.ts","../src/mcp/resources/guides/init_hosting.ts","../src/mcp/resources/guides/init_rtdb.ts","../src/mcp/tools/index.ts","../src/mcp/tools/apphosting/fetch_logs.ts","../src/mcp/tools/apphosting/index.ts","../src/mcp/tools/apphosting/list_backends.ts","../src/mcp/tools/apptesting/index.ts","../src/mcp/tools/apptesting/tests.ts","../src/mcp/tools/auth/get_users.ts","../src/mcp/tools/auth/index.ts","../src/mcp/tools/auth/set_sms_region_policy.ts","../src/mcp/tools/auth/update_user.ts","../src/mcp/tools/core/create_android_sha.ts","../src/mcp/tools/core/create_app.ts","../src/mcp/tools/core/create_project.ts","../src/mcp/tools/core/get_environment.ts","../src/mcp/tools/core/get_project.ts","../src/mcp/tools/core/get_sdk_config.ts","../src/mcp/tools/core/get_security_rules.ts","../src/mcp/tools/core/index.ts","../src/mcp/tools/core/init.ts","../src/mcp/tools/core/list_apps.ts","../src/mcp/tools/core/list_projects.ts","../src/mcp/tools/core/login.ts","../src/mcp/tools/core/logout.ts","../src/mcp/tools/core/read_resources.ts","../src/mcp/tools/core/update_environment.ts","../src/mcp/tools/core/validate_security_rules.ts","../src/mcp/tools/crashlytics/events.ts","../src/mcp/tools/crashlytics/index.ts","../src/mcp/tools/crashlytics/issues.ts","../src/mcp/tools/crashlytics/notes.ts","../src/mcp/tools/crashlytics/reports.ts","../src/mcp/tools/dataconnect/compile.ts","../src/mcp/tools/dataconnect/execute.ts","../src/mcp/tools/dataconnect/index.ts","../src/mcp/tools/dataconnect/list_services.ts","../src/mcp/tools/functions/get_logs.ts","../src/mcp/tools/functions/index.ts","../src/mcp/tools/functions/list_functions.ts","../src/mcp/tools/messaging/index.ts","../src/mcp/tools/messaging/send_message.ts","../src/mcp/tools/realtime_database/get_data.ts","../src/mcp/tools/realtime_database/index.ts","../src/mcp/tools/realtime_database/set_data.ts","../src/mcp/tools/remoteconfig/get_template.ts","../src/mcp/tools/remoteconfig/index.ts","../src/mcp/tools/remoteconfig/update_template.ts","../src/mcp/tools/storage/get_download_url.ts","../src/mcp/tools/storage/index.ts","../src/mcp/util/availability.ts","../src/mcp/util/apptesting/availability.ts","../src/mcp/util/crashlytics/availability.ts","../src/mcp/util/dataconnect/compile.ts","../src/mcp/util/dataconnect/content.ts","../src/mcp/util/dataconnect/converter.ts","../src/mcp/util/dataconnect/emulator.ts","../src/messaging/interfaces.ts","../src/messaging/sendMessage.ts","../src/remoteconfig/deleteExperiment.ts","../src/remoteconfig/deleteRollout.ts","../src/remoteconfig/get.ts","../src/remoteconfig/getExperiment.ts","../src/remoteconfig/getRollout.ts","../src/remoteconfig/interfaces.ts","../src/remoteconfig/listExperiments.ts","../src/remoteconfig/listRollouts.ts","../src/remoteconfig/options.ts","../src/remoteconfig/publish.ts","../src/remoteconfig/rollback.ts","../src/remoteconfig/versionslist.ts","../src/serve/functions.ts","../src/serve/hosting.ts","../src/serve/index.ts","../src/throttler/queue.ts","../src/throttler/stack.ts","../src/throttler/throttler.ts","../src/throttler/errors/retries-exhausted-error.ts","../src/throttler/errors/task-error.ts","../src/throttler/errors/timeout-error.ts","../src/types/extractTriggers.d.ts","../src/types/update-notifier-cjs.d.ts","../src/types/auth/index.d.ts","../src/types/project/index.d.ts","../src/types/proxy/index.d.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firebase-tools",
3
- "version": "15.6.0",
3
+ "version": "15.8.0",
4
4
  "description": "Command-Line Interface for Firebase",
5
5
  "main": "./lib/index.js",
6
6
  "mcpName": "io.github.firebase/firebase-mcp",
@@ -1 +1 @@
1
- firebase_functions~=0.1.0
1
+ firebase_functions~=0.5.0
@@ -1,101 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertInputToValue = convertInputToValue;
4
- exports.firestoreDocumentToJson = firestoreDocumentToJson;
5
- const logger_1 = require("../../../logger");
6
- function convertInputToValue(inputValue) {
7
- if (inputValue === null) {
8
- return { nullValue: null };
9
- }
10
- else if (typeof inputValue === "boolean") {
11
- return { booleanValue: inputValue };
12
- }
13
- else if (typeof inputValue === "number") {
14
- if (Number.isInteger(inputValue)) {
15
- return { integerValue: inputValue.toString() };
16
- }
17
- else {
18
- return { doubleValue: inputValue };
19
- }
20
- }
21
- else if (typeof inputValue === "string") {
22
- return { stringValue: inputValue };
23
- }
24
- else if (Array.isArray(inputValue)) {
25
- const arrayValue = {
26
- values: inputValue.map((item) => convertInputToValue(item)),
27
- };
28
- return { arrayValue: arrayValue };
29
- }
30
- else if (typeof inputValue === "object") {
31
- if (inputValue.hasOwnProperty("latitude") &&
32
- typeof inputValue.latitude === "number" &&
33
- inputValue.hasOwnProperty("longitude") &&
34
- typeof inputValue.longitude === "number") {
35
- return { geoPointValue: inputValue };
36
- }
37
- const mapValue = {
38
- fields: {},
39
- };
40
- for (const key in inputValue) {
41
- if (Object.prototype.hasOwnProperty.call(inputValue, key)) {
42
- if (mapValue.fields) {
43
- mapValue.fields[key] = convertInputToValue(inputValue[key]);
44
- }
45
- }
46
- }
47
- return { mapValue: mapValue };
48
- }
49
- return { nullValue: null };
50
- }
51
- function firestoreValueToJson(firestoreValue) {
52
- if ("nullValue" in firestoreValue)
53
- return null;
54
- if ("booleanValue" in firestoreValue)
55
- return firestoreValue.booleanValue;
56
- if ("integerValue" in firestoreValue) {
57
- const num = Number(firestoreValue.integerValue);
58
- if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) {
59
- return firestoreValue.integerValue;
60
- }
61
- return num;
62
- }
63
- if ("doubleValue" in firestoreValue)
64
- return firestoreValue.doubleValue;
65
- if ("timestampValue" in firestoreValue)
66
- return { __type__: "Timestamp", value: firestoreValue.timestampValue };
67
- if ("stringValue" in firestoreValue)
68
- return firestoreValue.stringValue;
69
- if ("bytesValue" in firestoreValue)
70
- return firestoreValue.bytesValue;
71
- if ("referenceValue" in firestoreValue)
72
- return { __type__: "Reference", value: firestoreValue.referenceValue };
73
- if ("geoPointValue" in firestoreValue)
74
- return {
75
- __type__: "GeoPoint",
76
- value: [firestoreValue.geoPointValue.latitude, firestoreValue.geoPointValue.longitude],
77
- };
78
- if ("arrayValue" in firestoreValue)
79
- return firestoreValue.arrayValue.values?.map((v) => firestoreValueToJson(v)) ?? [];
80
- if ("mapValue" in firestoreValue) {
81
- const map = firestoreValue.mapValue.fields || {};
82
- const obj = {};
83
- for (const key of Object.keys(map)) {
84
- obj[key] = firestoreValueToJson(map[key]);
85
- }
86
- return obj;
87
- }
88
- logger_1.logger.warn("Unhandled Firestore Value type encountered:", firestoreValue);
89
- return undefined;
90
- }
91
- function firestoreDocumentToJson(firestoreDoc) {
92
- const nameParts = firestoreDoc.name.split("/documents/");
93
- const path = nameParts.length > 1 ? nameParts[nameParts.length - 1] : "";
94
- const result = { __path__: path };
95
- if (firestoreDoc.fields) {
96
- for (const key of Object.keys(firestoreDoc.fields)) {
97
- result[key] = firestoreValueToJson(firestoreDoc.fields[key]);
98
- }
99
- }
100
- return result;
101
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.delete_document = void 0;
4
- const zod_1 = require("zod");
5
- const tool_1 = require("../../tool");
6
- const util_1 = require("../../util");
7
- const firestore_1 = require("../../../gcp/firestore");
8
- const delete_1 = require("../../../firestore/delete");
9
- const types_1 = require("../../../emulator/types");
10
- exports.delete_document = (0, tool_1.tool)("firestore", {
11
- name: "delete_document",
12
- description: "Use this to delete Firestore documents from a database in the current project by full document paths. Use this if you know the exact path of a document.",
13
- inputSchema: zod_1.z.object({
14
- database: zod_1.z
15
- .string()
16
- .optional()
17
- .describe("Database id to use. Defaults to `(default)` if unspecified."),
18
- path: zod_1.z
19
- .string()
20
- .describe("A document path (e.g. `collectionName/documentId` or `parentCollection/parentDocument/collectionName/documentId`)"),
21
- use_emulator: zod_1.z.boolean().default(false).describe("Target the Firestore emulator if true."),
22
- }),
23
- annotations: {
24
- title: "Delete Firestore document",
25
- destructiveHint: true,
26
- },
27
- _meta: {
28
- requiresAuth: true,
29
- requiresProject: true,
30
- },
31
- }, async ({ path, database, use_emulator }, { projectId, host }) => {
32
- let emulatorUrl;
33
- if (use_emulator) {
34
- emulatorUrl = await host.getEmulatorUrl(types_1.Emulators.FIRESTORE);
35
- }
36
- const { documents, missing } = await (0, firestore_1.getDocuments)(projectId, [path], database, emulatorUrl);
37
- if (missing.length > 0 && documents && documents.length === 0) {
38
- return (0, util_1.mcpError)(`None of the specified documents were found in project '${projectId}'`);
39
- }
40
- const firestoreDelete = new delete_1.FirestoreDelete(projectId, path, {
41
- databaseId: database ?? "(default)",
42
- urlPrefix: emulatorUrl,
43
- });
44
- await firestoreDelete.execute();
45
- const { documents: postDeleteDocuments, missing: postDeleteMissing } = await (0, firestore_1.getDocuments)(projectId, [path], emulatorUrl);
46
- if (postDeleteMissing.length > 0 && postDeleteDocuments.length === 0) {
47
- return (0, util_1.toContent)(`Successfully removed document located at : ${path}`);
48
- }
49
- return (0, util_1.mcpError)(`Failed to remove document located at : ${path}`);
50
- });
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.get_documents = void 0;
4
- const zod_1 = require("zod");
5
- const tool_1 = require("../../tool");
6
- const util_1 = require("../../util");
7
- const firestore_1 = require("../../../gcp/firestore");
8
- const converter_1 = require("./converter");
9
- const types_1 = require("../../../emulator/types");
10
- exports.get_documents = (0, tool_1.tool)("firestore", {
11
- name: "get_documents",
12
- description: "Use this to retrieve one or more Firestore documents from a database in the current project by full document paths. Use this if you know the exact path of a document.",
13
- inputSchema: zod_1.z.object({
14
- database: zod_1.z
15
- .string()
16
- .optional()
17
- .describe("Database id to use. Defaults to `(default)` if unspecified."),
18
- paths: zod_1.z
19
- .array(zod_1.z.string())
20
- .describe("One or more document paths (e.g. `collectionName/documentId` or `parentCollection/parentDocument/collectionName/documentId`)"),
21
- use_emulator: zod_1.z.boolean().default(false).describe("Target the Firestore emulator if true."),
22
- }),
23
- annotations: {
24
- title: "Get Firestore documents",
25
- readOnlyHint: true,
26
- },
27
- _meta: {
28
- requiresAuth: true,
29
- requiresProject: true,
30
- },
31
- }, async ({ paths, database, use_emulator }, { projectId, host }) => {
32
- if (!paths || !paths.length)
33
- return (0, util_1.mcpError)("Must supply at least one document path.");
34
- let emulatorUrl;
35
- if (use_emulator) {
36
- emulatorUrl = await host.getEmulatorUrl(types_1.Emulators.FIRESTORE);
37
- }
38
- const { documents, missing } = await (0, firestore_1.getDocuments)(projectId, paths, database, emulatorUrl);
39
- if (missing.length > 0 && documents && documents.length === 0) {
40
- return (0, util_1.mcpError)(`None of the specified documents were found in project '${projectId}'`);
41
- }
42
- const docs = documents.map(converter_1.firestoreDocumentToJson);
43
- if (documents.length === 1 && missing.length === 0) {
44
- return (0, util_1.toContent)(docs[0]);
45
- }
46
- const docsContent = (0, util_1.toContent)(docs);
47
- if (missing.length) {
48
- docsContent.content = [
49
- { type: "text", text: "Retrieved documents:\n\n" },
50
- ...docsContent.content,
51
- {
52
- type: "text",
53
- text: `The following documents do not exist: ${missing.join(", ")}`,
54
- },
55
- ];
56
- }
57
- return docsContent;
58
- });
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.firestoreTools = void 0;
4
- const delete_document_1 = require("./delete_document");
5
- const get_documents_1 = require("./get_documents");
6
- const list_collections_1 = require("./list_collections");
7
- const query_collection_1 = require("./query_collection");
8
- exports.firestoreTools = [delete_document_1.delete_document, get_documents_1.get_documents, list_collections_1.list_collections, query_collection_1.query_collection];
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.list_collections = void 0;
4
- const zod_1 = require("zod");
5
- const tool_1 = require("../../tool");
6
- const util_1 = require("../../util");
7
- const firestore_1 = require("../../../gcp/firestore");
8
- const types_1 = require("../../../emulator/types");
9
- exports.list_collections = (0, tool_1.tool)("firestore", {
10
- name: "list_collections",
11
- description: "Use this to retrieve a list of collections from a Firestore database in the current project.",
12
- inputSchema: zod_1.z.object({
13
- database: zod_1.z
14
- .string()
15
- .optional()
16
- .describe("Database id to use. Defaults to `(default)` if unspecified."),
17
- use_emulator: zod_1.z.boolean().default(false).describe("Target the Firestore emulator if true."),
18
- }),
19
- annotations: {
20
- title: "List Firestore collections",
21
- readOnlyHint: true,
22
- },
23
- _meta: {
24
- requiresAuth: true,
25
- requiresProject: true,
26
- },
27
- }, async ({ database, use_emulator }, { projectId, host }) => {
28
- let emulatorUrl;
29
- if (use_emulator) {
30
- emulatorUrl = await host.getEmulatorUrl(types_1.Emulators.FIRESTORE);
31
- }
32
- return (0, util_1.toContent)(await (0, firestore_1.listCollectionIds)(projectId, database, emulatorUrl));
33
- });
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.query_collection = void 0;
4
- const zod_1 = require("zod");
5
- const tool_1 = require("../../tool");
6
- const util_1 = require("../../util");
7
- const firestore_1 = require("../../../gcp/firestore");
8
- const converter_1 = require("./converter");
9
- const types_1 = require("../../../emulator/types");
10
- exports.query_collection = (0, tool_1.tool)("firestore", {
11
- name: "query_collection",
12
- description: "Use this to retrieve one or more Firestore documents from a collection in a database in the current project by a collection with a full document path. Use this if you know the exact path of a collection and the filtering clause you would like for the document.",
13
- inputSchema: zod_1.z.object({
14
- database: zod_1.z
15
- .string()
16
- .optional()
17
- .describe("Database id to use. Defaults to `(default)` if unspecified."),
18
- collection_path: zod_1.z
19
- .string()
20
- .describe("A collection path (e.g. `collectionName/` or `parentCollection/parentDocument/collectionName`)"),
21
- filters: zod_1.z
22
- .object({
23
- compare_value: zod_1.z
24
- .object({
25
- string_value: zod_1.z.string().optional().describe("The string value to compare against."),
26
- boolean_value: zod_1.z
27
- .string()
28
- .optional()
29
- .describe("The boolean value to compare against."),
30
- string_array_value: zod_1.z
31
- .array(zod_1.z.string())
32
- .optional()
33
- .describe("The string value to compare against."),
34
- integer_value: zod_1.z
35
- .number()
36
- .optional()
37
- .describe("The integer value to compare against."),
38
- double_value: zod_1.z.number().optional().describe("The double value to compare against."),
39
- })
40
- .describe("One and only one value may be specified per filters object."),
41
- field: zod_1.z.string().describe("the field searching against"),
42
- op: zod_1.z
43
- .enum([
44
- "OPERATOR_UNSPECIFIED",
45
- "LESS_THAN",
46
- "LESS_THAN_OR_EQUAL",
47
- "GREATER_THAN",
48
- "GREATER_THAN_OR_EQUAL",
49
- "EQUAL",
50
- "NOT_EQUAL",
51
- "ARRAY_CONTAINS",
52
- "ARRAY_CONTAINS_ANY",
53
- "IN",
54
- "NOT_IN",
55
- ])
56
- .describe("the equality evaluator to use"),
57
- })
58
- .array()
59
- .describe("the multiple filters to use in querying against the existing collection."),
60
- order: zod_1.z
61
- .object({
62
- orderBy: zod_1.z.string().describe("the field to order by"),
63
- orderByDirection: zod_1.z
64
- .enum(["ASCENDING", "DESCENDING"])
65
- .describe("the direction to order values"),
66
- })
67
- .optional()
68
- .describe("Specifies the field and direction to order the results. If not provided, the order is undefined."),
69
- limit: zod_1.z
70
- .number()
71
- .describe("The maximum amount of records to return. Default is 10.")
72
- .optional(),
73
- use_emulator: zod_1.z.boolean().default(false).describe("Target the Firestore emulator if true."),
74
- }),
75
- annotations: {
76
- title: "Query Firestore collection",
77
- readOnlyHint: true,
78
- },
79
- _meta: {
80
- requiresAuth: true,
81
- requiresProject: true,
82
- },
83
- }, async ({ collection_path, filters, order, limit, database, use_emulator }, { projectId, host }) => {
84
- if (!collection_path || !collection_path.length)
85
- return (0, util_1.mcpError)("Must supply at least one collection path.");
86
- const structuredQuery = {
87
- from: [{ collectionId: collection_path, allDescendants: false }],
88
- };
89
- if (filters) {
90
- structuredQuery.where = {
91
- compositeFilter: {
92
- op: "AND",
93
- filters: filters.map((f) => {
94
- if (f.compare_value.boolean_value &&
95
- f.compare_value.double_value &&
96
- f.compare_value.integer_value &&
97
- f.compare_value.string_array_value &&
98
- f.compare_value.string_value) {
99
- throw (0, util_1.mcpError)("One and only one value may be specified per filters object.");
100
- }
101
- const out = Object.entries(f.compare_value).filter(([, value]) => {
102
- return value !== null && value !== undefined;
103
- });
104
- return {
105
- fieldFilter: {
106
- field: { fieldPath: f.field },
107
- op: f.op,
108
- value: (0, converter_1.convertInputToValue)(out[0][1]),
109
- },
110
- };
111
- }),
112
- },
113
- };
114
- }
115
- if (order) {
116
- structuredQuery.orderBy = [
117
- {
118
- field: { fieldPath: order.orderBy },
119
- direction: order.orderByDirection,
120
- },
121
- ];
122
- }
123
- structuredQuery.limit = limit ? limit : 10;
124
- let emulatorUrl;
125
- if (use_emulator) {
126
- emulatorUrl = await host.getEmulatorUrl(types_1.Emulators.FIRESTORE);
127
- }
128
- const { documents } = await (0, firestore_1.queryCollection)(projectId, structuredQuery, database, emulatorUrl);
129
- const docs = documents.map(converter_1.firestoreDocumentToJson);
130
- const docsContent = (0, util_1.toContent)(docs);
131
- return docsContent;
132
- });