Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
0d01bd5
Fix an issue where updating a Cloud Function that retires would add i…
colerogers May 13, 2025
b612001
Enable Secret Manager when function includes secrets. (#8528)
taeold May 13, 2025
5cebce2
Always pass in credentials to FDC emulator (#8561)
fredzqm May 13, 2025
dbb7563
[FDC init] Move the default value to actuate (#8554)
fredzqm May 13, 2025
4e31562
[MCP] firebase init dataconnect tool (#8562)
fredzqm May 13, 2025
6628635
[MCP] firestore_query_collection (#8548)
nohe427 May 13, 2025
9d74532
Adding messaging APIs and mcp tools that take advantage of it (#8558)
gsiddh May 14, 2025
b51da9f
Added the fcm mcp tools to the list (#8568)
gsiddh May 14, 2025
ff99519
[MCP] Exposing RemoteConfig operation as MCP tool (#8549)
dsjadaun-google May 14, 2025
c2a66b3
Add backend for CloudAICompanion calls (#8551)
hlshen May 14, 2025
d79a07c
Added remote config template publish and rollback operations for mcp …
dsjadaun-google May 14, 2025
ba4fc2a
[MPC] Add a way to print out a help markdown (#8569)
fredzqm May 14, 2025
d9730d8
Moving downloadable emulator details to JSON, adding sha256 checksum …
joehan May 14, 2025
11e44fe
feat(mcp): Adds "get_environment" tool (#8555)
mbleigh May 14, 2025
2055cf2
chore(mcp): Add telemetry for client connections. (#8577)
mbleigh May 14, 2025
0b54e4d
chore(mcp): Consolidate FCM tools into a single send_message tool. (#…
mbleigh May 14, 2025
d97911a
feat: pin runtimes to latest supported version on functions init. (#8…
taeold May 15, 2025
0f59e99
Provision App Hosting compute service account during init flow (#8580)
blidd-google May 15, 2025
21bb3e1
chore(mcp): refactor use_project and set_dir to update_environment (#…
mbleigh May 15, 2025
12f569e
[MCP] Support init for database (#8584)
fredzqm May 15, 2025
ab49e05
[MCP] Add remaining "core" tools (#8590)
TrCaM May 15, 2025
0ec3f9f
fix(mcp): Improve topic/device token handling in FCM tool. (#8586)
gsiddh May 15, 2025
a9f509d
[MCP] Starter Implementation of dataconnect emulator support (#8579)
tammam-g May 15, 2025
04291ff
[MCP] Add create_project MCP core tool (#8591)
TrCaM May 15, 2025
0b01cfc
feat(mcp): Adds validate_rules tools. (#8585)
mbleigh May 15, 2025
3472fc7
chore(mcp) Use snake_case in MCP variables (#8592)
fredzqm May 15, 2025
a2cceb8
fix typo (#8593)
bkendall May 15, 2025
0486bd9
Add support for deploying local source to App Hosting (#8516)
blidd-google May 15, 2025
8ebca64
[MCP] firebase_init Firestore (#8588)
fredzqm May 15, 2025
a4af88c
Fix typo in downloadableEmulators.ts (#8597)
joehan May 15, 2025
b86a9a6
Add SDK autoinit to the App Hosting emulator (#8582)
jamesdaniels May 15, 2025
5e96551
Update FDC local toolkit to v2.6.1 (#8598)
stephenarosaj May 15, 2025
04364fa
chore(mcp): Refactor client directory config logic. (#8599)
mbleigh May 15, 2025
5b3926e
chore: Update Cloud Run functions runtime versions (#8534)
taeold May 15, 2025
2ad870c
fix: make sure the auth emulator respects multi-tenancy for sso users…
wieringen May 15, 2025
789ba4f
Fix leaky logger (#8603)
joehan May 15, 2025
2263d68
[MCP] Require project root (#8606)
fredzqm May 15, 2025
bdf399f
Save file before execution (#8601)
hlshen May 15, 2025
b00393c
fix(mcp): check project dir exists (#8607)
mbleigh May 16, 2025
3b13dc9
chore(mcp): remove GiF tools for now until ToS is worked out (#8594)
mbleigh May 16, 2025
04bee78
Go look up compute service account instead of guessing (#8566)
joehan May 16, 2025
1c51856
chore(mcp): Polish up descriptions and titles. (#8608)
mbleigh May 16, 2025
8b44e46
[MCP] Introduce Crashlytics MCP tool list_top_issues. (#8570)
visumickey May 16, 2025
cb1323e
chore(mcp): readme updates (#8609)
mbleigh May 16, 2025
d9c6f8c
14.4.0
google-oss-bot May 16, 2025
0ce9ffa
[firebase-release] Removed change log and reset repo after 14.4.0 rel…
google-oss-bot May 16, 2025
c6042a7
Initital work
TrCaM May 16, 2025
1a76904
Create list_projects tool + slight modifications to list_apps
TrCaM May 16, 2025
0a9852a
fix lint
TrCaM May 16, 2025
6aecf64
Fix unused import
TrCaM May 16, 2025
1ce60f5
Gemini in Firebase for VSCode Integration (#8575)
hlshen May 16, 2025
665e992
escape the dollar sign for snipper insert (#8614)
hlshen May 16, 2025
cc1aa4b
1.4.0 (#8615)
hlshen May 16, 2025
dac920e
Add Cursor and Windsurf rule templates for Data Connect schemas and o…
markarndt May 19, 2025
99bf24a
Update operation-generation-cursor-windsurf-rule.txt (#8628)
markarndt May 19, 2025
fee22f8
MCP issue template (#8627)
mbleigh May 20, 2025
cfaedcd
Optionally enable telemetry collection during Genkit init (#8530)
andrewbrook May 21, 2025
2ed56de
fix(mcp): Make tool schemas more Gemini-compatible. (#8637)
mbleigh May 21, 2025
2b3c91d
fix(functions): update typescript (firebase-functions issue #1664) (#…
CorieW May 22, 2025
8b1b8f7
Add public-image tag to opt into scanning (#8642)
joehan May 22, 2025
2327584
Update schema to include dartSdk (#8631)
aalej May 22, 2025
a5a619f
Fixed issue where firebase init hosting re-prompts for source (#8617)
aalej May 22, 2025
d3e6f22
Fix the type of eventFilters (#8643)
joehan May 22, 2025
f31592b
Fix for missing NPM dependencies (#8624)
jamesdaniels May 22, 2025
f56d79a
initial apphosting mcp tool (#8605)
bkendall May 22, 2025
d965588
[MCP] [Cleanup] Declare project ID a required string with default if …
fredzqm May 22, 2025
0233555
Re-allow users to not select an emulator UI port. (#8626)
inlined May 23, 2025
aba2118
Split confirmWriteProjectFile out of askWriteProjectFile (#8648)
fredzqm May 23, 2025
dd143d2
Merge branch 'master' into caot/list-projects
TrCaM May 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ module.exports = {

"@typescript-eslint/no-invalid-this": "error",
"@typescript-eslint/no-unused-vars": "error", // Unused vars should not exist.
"@typescript-eslint/require-await": "off", // sometimes async functions don't do await stuff for valid reasons.
"no-invalid-this": "off", // Turned off in favor of @typescript-eslint/no-invalid-this.
"no-unused-vars": "off", // Off in favor of @typescript-eslint/no-unused-vars.
eqeqeq: ["error", "always", { null: "ignore" }],
Expand Down
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/mcp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: "🤖 MCP Server"
about: Report bugs or request features for the Firebase MCP Server.
title: "[MCP]"
labels: "api: mcp"
assignees: ""
---

<!-- DO NOT DELETE
validate_template=true
template_path=.github/ISSUE_TEMPLATE/mcp.md
-->

## Summary

<!-- what is your bug / feature request / feedback? -->

## Bug Info <!-- please fill this out if you have a bug -->

- **Affected Tool(s):** <!-- Which specific tool(s) were you using when you encountered the issue? -->
- **MCP Client:** <!-- e.g. "Cursor v0.50.0" -->
- **Operating System:** <!-- e.g. "Windows 11" or "macOS Sequoia" -->

### Steps to Reproduce

<!-- write a detailed description of how to reproduce>
9 changes: 5 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
- Changed artifact registry cleanup policy error to warn for CI/CD workloads #8513
- Enhance firebase init apphosting to support local source deploys. (#8479)
- Fixed issue where `firebase init hosting:github` didn't correctly parse the repo input. (#8536)
- Add GCP API client functions to support App Hosting deploy from source feature. (#8545)
- Fixed issue in `init` where users were forced to specify emulator UI port (#8626)
- Adds MCP tools for App Hosting (#8605)
- Fixed crash when starting the App Hosting emulator in certain applications (#8624)
- Fixed issue where, with `webframeworks` enabled, `firebase init hosting` re-prompts users for source. (#8587)
- Update typescript version in functions template to avoid build issue with @google-cloud/storage depedency (#8194)
3 changes: 2 additions & 1 deletion firebase-vscode/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ resources/dist
.vscode-test
.wdio-vscode-service
logs
!*.tgz
!*.tgz
prebuilt-extensions
3 changes: 2 additions & 1 deletion firebase-vscode/.vscodeignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ node_modules/
dist/test/
*.tgz
package-lock.json
.wdio-vscode-service/
.wdio-vscode-service/
prebuilt-extensions/
5 changes: 5 additions & 0 deletions firebase-vscode/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
## NEXT

## 1.4.0

- Update internal `firebase-tools` dependency to 14.4.0
- [Added] @data-connect tool callable from the Gemini Code Assist extension.

## 1.3.1

- Updated internal `firebase-tools` dependency to 14.2.1
Expand Down
2 changes: 2 additions & 0 deletions firebase-vscode/common/messaging/protocol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ export interface WebviewToExtensionParamsMap {
/** Clears data from a running data connect emulator */
"fdc.clear-emulator-data": void;

"firebase.activate.gemini": void;

// Initialize "result" tab.
getDataConnectResults: void;

Expand Down
37 changes: 23 additions & 14 deletions firebase-vscode/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion firebase-vscode/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@
"publisher": "GoogleCloudTools",
"icon": "./resources/firebase_dataconnect_logo.png",
"description": "Firebase Data Connect for VSCode",
"version": "1.3.1",
"version": "1.4.0",
"engines": {
"vscode": "^1.69.0"
},
"repository": "https://github.com/firebase/firebase-tools",
"sideEffects": false,
"extensionDependencies": [
"google.geminicodeassist"
],
"categories": [
"Other"
],
Expand Down Expand Up @@ -213,6 +216,7 @@
"test-compile": "npm run copyfiles && webpack --config src/test/webpack.test.js",
"lint": "eslint src --ext ts",
"test": "npm run test:unit && npm run test:e2e",
"pretest:e2e": "curl -fsSL https://code-server.dev/install.sh | sh -s -- --edge && code-server --install-extension Google.geminicodeassist --extensions-dir ./prebuilt-extensions/",
"pretest:unit": "npm run test-compile && tsc -p src/test/tsconfig.test.json",
"test:unit": "node ./dist/test/firebase-vscode/src/test/runTest.js",
"test:e2e": "npm run test:e2e:empty && npm run test:e2e:fishfood",
Expand Down
30 changes: 23 additions & 7 deletions firebase-vscode/src/analytics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,13 @@ export enum DATA_CONNECT_EVENT_NAME {
START_EMULATORS = "start_emulators",
AUTO_COMPLETE = "auto_complete",
SESSION_CHAR_COUNT = "session_char_count",
EMULATOR_EXPORT ="emulator_export",
EMULATOR_EXPORT = "emulator_export",
SETUP_FIREBASE_BINARY = "setup_firebase_binary",
GEMINI_ERROR = "gemini_error",
GEMINI_OPERATION_CALL = "gemini_operation_call",
GEMINI_SCHEMA_CALL = "gemini_schema_call",
GEMINI_SUCCESS = "gemini_success",
TRY_GEMINI_CLICKED = "try_gemini_clicked",
}

export class AnalyticsLogger {
Expand All @@ -42,9 +47,9 @@ export class AnalyticsLogger {
private sessionCharCount = 0; // Track total chars for the session

constructor(context: vscode.ExtensionContext) {
this.logger = monospaceEnv.value.isMonospace ? new IDXLogger(new GA4TelemetrySender(pluginLogger), context) : env.createTelemetryLogger(
new GA4TelemetrySender(pluginLogger),
);
this.logger = monospaceEnv.value.isMonospace
? new IDXLogger(new GA4TelemetrySender(pluginLogger), context)
: env.createTelemetryLogger(new GA4TelemetrySender(pluginLogger));

let subscriptions: vscode.Disposable[] = [
vscode.workspace.onDidChangeTextDocument(
Expand Down Expand Up @@ -149,13 +154,15 @@ export class AnalyticsLogger {
}

export class IDXLogger {
constructor(private sender: GA4TelemetrySender, private context: vscode.ExtensionContext) {}
constructor(
private sender: GA4TelemetrySender,
private context: vscode.ExtensionContext,
) {}
public logUsage(eventName: string, data?: any) {
const packageJson = this.context.extension.packageJSON;
data = {
...data,
extversion: packageJson.version,
extname: "idx",
...getAnalyticsContext(this.context),
isidx: "true",
};
this.sender.sendEventData(eventName, data);
Expand Down Expand Up @@ -207,6 +214,15 @@ class GA4TelemetrySender implements TelemetrySender {
}
}

export function getAnalyticsContext(context: vscode.ExtensionContext) {
const packageJson = context.extension.packageJSON;

return {
extversion: packageJson.version,
extname: monospaceEnv.value.isMonospace ? "idx" : "vscode",
};
}

function addFirebaseBinaryMetadata(data?: Record<string, any> | undefined) {
const settings = getSettings();
return { ...data, binary_kind: settings.firebaseBinaryKind };
Expand Down
Loading
Loading