Skip to content

Commit 60ffe36

Browse files
authored
Merge branch 'master' into jh-exfil
2 parents 2c6a2b1 + 1ed4791 commit 60ffe36

File tree

338 files changed

+18619
-2844
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

338 files changed

+18619
-2844
lines changed

.claude-plugin/marketplace.json

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"name": "firebase",
3+
"owner": {
4+
"name": "Firebase",
5+
"email": "firebase-support@google.com"
6+
},
7+
"metadata": {
8+
"description": "Official Claude plugin for Firebase to help understand and manage your Firebase project, resources, and data",
9+
"version": "1.0.0"
10+
},
11+
"plugins": [
12+
{
13+
"name": "firebase",
14+
"description": "Claude plugin for Firebase that installs the Firebase MCP server and helps to manage Firebase projects, add backend services, add AI features, deploy & host apps, and more",
15+
"version": "1.0.0",
16+
"author": {
17+
"name": "Firebase",
18+
"url": "https://firebase.google.com/"
19+
},
20+
"homepage": "https://github.com/firebase/firebase-tools",
21+
"repository": "https://github.com/firebase/firebase-tools.git",
22+
"license": "MIT",
23+
"keywords": [
24+
"firebase",
25+
"mcp",
26+
"cloud",
27+
"firestore",
28+
"database",
29+
"hosting",
30+
"functions",
31+
"cli"
32+
],
33+
"category": "development",
34+
"tags": ["firebase", "backend", "database", "cloud-services"],
35+
"mcpServers": {
36+
"firebase": {
37+
"description": "Firebase MCP server for understanding and managing your Firebase project, resources, and data",
38+
"command": "npx",
39+
"args": ["-y", "firebase-tools", "mcp", "--dir", "."],
40+
"env": {
41+
"IS_FIREBASE_MCP": "true"
42+
}
43+
}
44+
},
45+
"source": "./"
46+
}
47+
]
48+
}

.github/workflows/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ The following secrets must be defined on the project:
1515
| ----------------------------- | ------------------------------------------------------------------------------ |
1616
| `FBTOOLS_TARGET_PROJECT` | The project ID that should be used for integration tests |
1717
| `service_account_json_base64` | A base64-encoded service account JSON file with access to the selected project |
18+
| `GEMINI_API_KEY` | The Gemini API Key used for Agent Evals |

.github/workflows/agent-evals.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Agent Evals
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
# Run every 6 hours
7+
- cron: "0 */6 * * *"
8+
9+
permissions:
10+
contents: read
11+
12+
concurrency:
13+
group: agent-evals-${{ github.ref }}
14+
cancel-in-progress: true
15+
16+
env:
17+
CI: true
18+
19+
jobs:
20+
test:
21+
runs-on: ubuntu-latest
22+
strategy:
23+
matrix:
24+
node-version:
25+
- "20"
26+
env:
27+
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
28+
steps:
29+
- uses: actions/checkout@v4
30+
- uses: actions/setup-node@v3
31+
with:
32+
node-version: ${{ matrix.node-version }}
33+
cache: npm
34+
cache-dependency-path: npm-shrinkwrap.json
35+
36+
- run: npm i -g npm@9.5
37+
- run: npm install -g @google/gemini-cli
38+
- run: npm ci
39+
- run: npm install
40+
working-directory: scripts/agent-evals
41+
- name: "Run agent-evals tests"
42+
run: npm run test
43+
working-directory: scripts/agent-evals

.github/workflows/node-test.yml

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ jobs:
4848
node-version:
4949
- "20"
5050
- "22"
51+
- "24"
5152
steps:
5253
- uses: actions/checkout@v4
5354
- uses: actions/setup-node@v3
@@ -125,13 +126,35 @@ jobs:
125126
# - uses: codecov/codecov-action@v3
126127
# if: matrix.node-version == '20'
127128

129+
agent_evals_build:
130+
runs-on: ubuntu-latest
131+
strategy:
132+
matrix:
133+
node-version:
134+
- "22"
135+
steps:
136+
- uses: actions/checkout@v4
137+
- uses: actions/setup-node@v3
138+
with:
139+
node-version: ${{ matrix.node-version }}
140+
cache: npm
141+
cache-dependency-path: scripts/agent-evals/package-lock.json
142+
143+
- run: npm i -g npm@9.5
144+
- run: npm ci
145+
- run: npm install
146+
working-directory: scripts/agent-evals
147+
- run: npm run build
148+
working-directory: scripts/agent-evals
149+
128150
unit:
129151
runs-on: ubuntu-latest
130152
strategy:
131153
matrix:
132154
node-version:
133155
- "20"
134156
- "22"
157+
- "24"
135158
steps:
136159
- uses: actions/checkout@v4
137160
- uses: actions/setup-node@v3
@@ -280,7 +303,6 @@ jobs:
280303
matrix:
281304
node-version:
282305
- "20"
283-
- "22"
284306

285307
steps:
286308
- uses: actions/checkout@v4
@@ -300,7 +322,6 @@ jobs:
300322
matrix:
301323
node-version:
302324
- "20"
303-
- "22"
304325

305326
steps:
306327
- uses: actions/checkout@v4
@@ -320,7 +341,6 @@ jobs:
320341
matrix:
321342
node-version:
322343
- "20"
323-
- "22"
324344

325345
steps:
326346
- uses: actions/checkout@v4

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ src/test/emulators/extensions/firebase/storage-resize-images@0.1.18/functions/pa
33
src/test/emulators/extensions/firebase/storage-resize-images@0.1.18/functions/package-lock.json
44
scripts/functions-deploy-tests/**/package-lock.json
55
scripts/functions-discover-tests/**/**/package-lock.json
6+
scripts/agent-evals/output
67
.dataconnect
78
*-debug.log
89

README.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Firebase CLI [![Actions Status][gh-actions-badge]][gh-actions] [![Node Version][node-badge]][npm] [![NPM version][npm-badge]][npm] [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=firebase&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImZpcmViYXNlLXRvb2xzIiwiZXhwZXJpbWVudGFsOm1jcCIsIi0tZGlyIiwiLiJdfQ==)
1+
# Firebase CLI and MCP Server [![Actions Status][gh-actions-badge]][gh-actions] [![Node Version][node-badge]][npm] [![NPM version][npm-badge]][npm] [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=firebase&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImZpcmViYXNlLXRvb2xzIiwibWNwIiwiLS1kaXIiLCIuIl19)
22

3-
The Firebase Command Line Interface (CLI) Tools can be used to test, manage, and deploy your Firebase project from the command line.
3+
The Firebase Command Line Interface (CLI) Tools can be used to test, manage, and deploy your Firebase project from the command line. This repository is also the home of the official Firebase MCP Server. For more information, please see the [Firebase MCP Server documentation](./src/mcp).
44

55
- Deploy code and assets to your Firebase projects
66
- Run a local web server for your Firebase Hosting site
@@ -87,9 +87,17 @@ These commands let you deploy and interact with your Firebase services.
8787

8888
### App Distribution Commands
8989

90-
| Command | Description |
91-
| ------------------------------ | ---------------------- |
92-
| **appdistribution:distribute** | Upload a distribution. |
90+
| Command | Description |
91+
| ------------------------------------ | ---------------------------------------------------------------------------------------- |
92+
| **appdistribution:distribute** | Upload a release binary and optionally distribute it to testers and run automated tests. |
93+
| **appdistribution:testers:list** | List testers in project. |
94+
| **appdistribution:testers:add** | Add testers to project (and group, if specified via flag). |
95+
| **appdistribution:testers:remove** | Remove testers from a project (or group, if specified via flag). |
96+
| **appdistribution:groups:list** | List groups (of testers). |
97+
| **appdistribution:groups:create** | Create a group (of testers). |
98+
| **appdistribution:groups:delete** | Delete a group (of testers). |
99+
| **appdistribution:testcases:export** | Export test cases as a YAML file. |
100+
| **appdistribution:testcases:import** | Import test cases from YAML file. |
93101

94102
### Auth Commands
95103

firebase-vscode/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ resources/dist
66
.wdio-vscode-service
77
logs
88
!*.tgz
9-
prebuilt-extensions
9+
prebuilt-extensions
10+
data-connect-test-*/

firebase-vscode/CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
## NEXT
22

3+
## 1.10.1
4+
5+
- Update internal `firebase-tools` dependency to 14.24.2
6+
7+
## 1.10.0
8+
9+
- [Fixed] Populate correct default values of missing required variables.
10+
- [Added] Display the execution variables and auth params used.
11+
- [Added] Allow rerun any executions in the history.
12+
- Update internal `firebase-tools` dependency to 14.20.0
13+
14+
## 1.9.0
15+
316
- [Added] Refine / Generate Operation Code Lens.
417
- [Added] Support run "firebase init" without login and project.
18+
- Update internal `firebase-tools` dependency to 14.19.1
519

620
## 1.8.0
721

firebase-vscode/common/messaging/protocol.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,21 @@ import { EmulatorsStatus, RunningEmulatorInfo } from "./types";
1111
import { ExecutionResult } from "graphql";
1212
import { SerializedError } from "../error";
1313

14-
export enum UserMockKind {
14+
export enum AuthParamsKind {
1515
ADMIN = "admin",
1616
UNAUTHENTICATED = "unauthenticated",
1717
AUTHENTICATED = "authenticated",
1818
}
19-
export type UserMock =
20-
| { kind: UserMockKind.ADMIN | UserMockKind.UNAUTHENTICATED }
19+
20+
export const EXAMPLE_CLAIMS = `{
21+
"email_verified": true,
22+
"sub": "exampleUserId"
23+
}`;
24+
25+
export type AuthParams =
26+
| { kind: AuthParamsKind.ADMIN | AuthParamsKind.UNAUTHENTICATED }
2127
| {
22-
kind: UserMockKind.AUTHENTICATED;
28+
kind: AuthParamsKind.AUTHENTICATED;
2329
claims: string;
2430
};
2531

@@ -84,13 +90,13 @@ export interface WebviewToExtensionParamsMap {
8490

8591
selectEmulatorImportFolder: {};
8692

87-
definedDataConnectArgs: string;
93+
/** Execution parameters */
94+
defineVariables: string;
95+
defineAuthParams: AuthParams;
8896

8997
/** Prompts the user to select a directory in which to place the quickstart */
9098
chooseQuickstartDir: {};
9199

92-
notifyAuthUserMockChange: UserMock;
93-
94100
/** Deploy connectors/services to production */
95101
"fdc.deploy": void;
96102

@@ -130,10 +136,11 @@ export interface WebviewToExtensionParamsMap {
130136
}
131137

132138
export interface DataConnectResults {
133-
query: string;
134139
displayName: string;
135-
results?: ExecutionResult | SerializedError;
136-
args?: string;
140+
query: string;
141+
results: ExecutionResult | SerializedError;
142+
variables: string;
143+
auth: AuthParams;
137144
}
138145

139146
export type ValueOrError<T> =
@@ -185,13 +192,11 @@ export interface ExtensionToWebviewParamsMap {
185192
*/
186193
notifyPreviewChannelResponse: { id: string };
187194

188-
// data connect specific
189-
notifyDataConnectArgs: string;
190-
195+
/** Update execution parameters and results panels */
196+
notifyVariables: { variables: string, fixes: string[] };
197+
notifyAuthParams: AuthParams;
191198
notifyDataConnectResults: DataConnectResults;
192199

193-
notifyLastOperation: string;
194-
195200
notifyIsLoadingUser: boolean;
196201

197202
notifyDocksLink: string;

firebase-vscode/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)