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 +3 -1
- package/lib/bin/mcp.js +1 -1
- package/lib/commands/index.js +4 -0
- package/lib/commands/studio-export.js +12 -0
- package/lib/emulator/downloadableEmulatorInfo.json +24 -24
- package/lib/experiments.js +5 -0
- package/lib/gcp/runv2.js +3 -2
- package/lib/mcp/onemcp/index.js +14 -0
- package/lib/mcp/onemcp/onemcp_server.js +76 -0
- package/lib/mcp/prompts/index.js +1 -0
- package/lib/mcp/tools/index.js +41 -22
- package/lib/mcp/types.js +1 -0
- package/lib/mcp/util/availability.js +2 -1
- package/lib/mcp/util.js +2 -0
- package/lib/tsconfig.publish.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/templates/init/functions/python/requirements.txt +1 -1
- package/lib/mcp/tools/firestore/converter.js +0 -101
- package/lib/mcp/tools/firestore/delete_document.js +0 -50
- package/lib/mcp/tools/firestore/get_documents.js +0 -58
- package/lib/mcp/tools/firestore/index.js +0 -8
- package/lib/mcp/tools/firestore/list_collections.js +0 -33
- package/lib/mcp/tools/firestore/query_collection.js +0 -132
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"]) {
|
package/lib/commands/index.js
CHANGED
|
@@ -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.
|
|
58
|
-
"expectedSize":
|
|
59
|
-
"expectedChecksum": "
|
|
60
|
-
"expectedChecksumSHA256": "
|
|
61
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-amd64-v3.
|
|
62
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-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.
|
|
66
|
-
"expectedSize":
|
|
67
|
-
"expectedChecksum": "
|
|
68
|
-
"expectedChecksumSHA256": "
|
|
69
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-arm64-v3.
|
|
70
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-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.
|
|
74
|
-
"expectedSize":
|
|
75
|
-
"expectedChecksum": "
|
|
76
|
-
"expectedChecksumSHA256": "
|
|
77
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-windows-amd64-v3.
|
|
78
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.
|
|
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.
|
|
82
|
-
"expectedSize":
|
|
83
|
-
"expectedChecksum": "
|
|
84
|
-
"expectedChecksumSHA256": "
|
|
85
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-linux-amd64-v3.
|
|
86
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-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
|
}
|
package/lib/experiments.js
CHANGED
|
@@ -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.
|
|
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]
|
|
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;
|
package/lib/mcp/prompts/index.js
CHANGED
|
@@ -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) => {
|
package/lib/mcp/tools/index.js
CHANGED
|
@@ -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("
|
|
7
|
-
const index_2 = require("./
|
|
8
|
-
const index_3 = require("./
|
|
9
|
-
const index_4 = require("./
|
|
10
|
-
const index_5 = require("./
|
|
11
|
-
const index_6 = require("./
|
|
12
|
-
const index_7 = require("./
|
|
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",
|
|
33
|
-
apptesting: addFeaturePrefix("apptesting",
|
|
34
|
-
auth: addFeaturePrefix("auth",
|
|
35
|
-
core: addFeaturePrefix("firebase",
|
|
36
|
-
crashlytics: addFeaturePrefix("crashlytics",
|
|
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",
|
|
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
|
|
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
|
-
|
|
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
|
@@ -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 (
|
|
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 +1 @@
|
|
|
1
|
-
firebase_functions~=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
|
-
});
|