Skip to content

Commit 754b5d9

Browse files
committed
Merge branch 'main' into youssef_concierge_anywhere_report_context
2 parents baa3349 + 415d5ae commit 754b5d9

666 files changed

Lines changed: 16282 additions & 10833 deletions

File tree

Some content is hidden

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

.claude/settings.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@
5252
"mcp__sentry__search_events",
5353
"mcp__sentry__search_issue_events",
5454
"mcp__sentry__search_issues",
55-
"mcp__sentry__whoami"
55+
"mcp__sentry__whoami",
56+
"Bash(agent-device *)",
57+
"Bash(echo \"$(npm root -g)/agent-device/skills/agent-device\")"
5658
]
5759
},
5860
"enabledPlugins": {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
name: agent-device
3+
description: Drive iOS and Android devices for the Expensify App - testing, debugging, performance profiling, bug reproduction, and feature verification. Use when the developer needs to interact with the mobile app on a device.
4+
allowed-tools: Bash(agent-device *) Bash(npm root *)
5+
---
6+
7+
# agent-device
8+
9+
## Pre-flight
10+
11+
`agent-device` CLI version: !`agent-device --version 2>&1 || echo "NOT_INSTALLED"`
12+
13+
Canonical skill reference path (read these files directly for device automation guidance - bootstrap, exploration, verification, debugging): !`echo "$(npm root -g)/agent-device/skills/agent-device"`
14+
15+
> If the version line above shows `NOT_INSTALLED` or a command-not-found error, **STOP** and instruct the developer to install it: `npm install -g agent-device`. All device interaction depends on it.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Is Contributor+
2+
description: Check whether a GitHub user is a member of the Expensify/contributor-plus team. Sets IS_CPLUS=true when the user is a member, IS_CPLUS=false otherwise.
3+
4+
inputs:
5+
USERNAME:
6+
description: The GitHub login of the user to check.
7+
required: true
8+
OS_BOTIFY_TOKEN:
9+
description: OSBotify token. Needed to read team memberships (the default GITHUB_TOKEN lacks the read:org scope).
10+
required: true
11+
12+
outputs:
13+
IS_CPLUS:
14+
description: "'true' if the user is a member of Expensify/contributor-plus, 'false' otherwise."
15+
value: ${{ steps.check.outputs.IS_CPLUS }}
16+
17+
runs:
18+
using: composite
19+
steps:
20+
- name: Check Contributor+ membership
21+
id: check
22+
shell: bash
23+
env:
24+
GH_TOKEN: ${{ inputs.OS_BOTIFY_TOKEN }}
25+
USERNAME: ${{ inputs.USERNAME }}
26+
run: |
27+
if gh api "/orgs/Expensify/teams/contributor-plus/memberships/$USERNAME" --silent; then
28+
echo "::notice::✅ $USERNAME is a Contributor+ member"
29+
echo "IS_CPLUS=true" >> "$GITHUB_OUTPUT"
30+
else
31+
echo "::notice::$USERNAME is not a Contributor+ member"
32+
echo "IS_CPLUS=false" >> "$GITHUB_OUTPUT"
33+
fi

.github/workflows/buildAdHoc.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,6 @@ jobs:
145145
with:
146146
ref: ${{ inputs.APP_REF }}
147147

148-
- name: Download Artifact
149-
# v7
150-
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
151-
152148
- name: Publish links to apps for download on Expensify/App PR
153149
if: ${{ inputs.APP_PR_NUMBER != '' }}
154150
uses: ./.github/actions/javascript/postTestBuildComment

.github/workflows/buildIOS.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ on:
5151
jobs:
5252
build:
5353
name: Build iOS HybridApp
54-
runs-on: macos-15-xlarge
54+
runs-on: blacksmith-12vcpu-macos-latest
5555
env:
5656
DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer
5757
PULL_REQUEST_NUMBER: ${{ inputs.pull-request-number }}

.github/workflows/claude-review.yml

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,50 @@ permissions:
77
on:
88
pull_request_target:
99
types: [opened, ready_for_review]
10+
pull_request_review:
11+
types: [submitted]
1012

1113
concurrency:
1214
group: claude-review-${{ github.event.pull_request.html_url }}
1315
cancel-in-progress: true
1416

1517
jobs:
1618
validate:
19+
if: github.event_name == 'pull_request_target'
1720
uses: ./.github/workflows/contributorValidationGate.yml
1821
with:
1922
PR_NUMBER: ${{ github.event.pull_request.number }}
2023
PR_AUTHOR: ${{ github.event.pull_request.user.login }}
2124
AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
2225

26+
checkCPlusApproval:
27+
if: github.event_name == 'pull_request_review' && github.event.review.state == 'approved'
28+
runs-on: blacksmith-2vcpu-ubuntu-2404
29+
outputs:
30+
IS_CPLUS: ${{ steps.check.outputs.IS_CPLUS }}
31+
steps:
32+
- name: Checkout repository
33+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
34+
with:
35+
fetch-depth: 1
36+
37+
- name: Check Contributor+ membership
38+
id: check
39+
uses: ./.github/actions/composite/isContributorPlus
40+
with:
41+
USERNAME: ${{ github.event.review.user.login }}
42+
OS_BOTIFY_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
43+
2344
review:
24-
needs: [validate]
45+
needs: [validate, checkCPlusApproval]
2546
if: |
26-
needs.validate.outputs.IS_AUTHORIZED == 'true'
47+
!cancelled()
2748
&& github.event.pull_request.draft != true
2849
&& !contains(github.event.pull_request.title, 'Revert')
50+
&& (
51+
(github.event_name == 'pull_request_target' && needs.validate.outputs.IS_AUTHORIZED == 'true')
52+
|| (github.event_name == 'pull_request_review' && needs.checkCPlusApproval.outputs.IS_CPLUS == 'true')
53+
)
2954
runs-on: blacksmith-2vcpu-ubuntu-2404
3055
env:
3156
PR_NUMBER: ${{ github.event.pull_request.number }}

.github/workflows/createNewVersion.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ on:
4141

4242
jobs:
4343
createNewVersion:
44-
runs-on: macos-latest
44+
runs-on: blacksmith-6vcpu-macos-latest
4545
outputs:
4646
NEW_VERSION: ${{ steps.bumpVersion.outputs.NEW_VERSION }}
4747
steps:

.github/workflows/deploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ jobs:
315315
iosUploadTestflight:
316316
name: Upload iOS to TestFlight
317317
needs: [prep, iosBuild]
318-
runs-on: macos-15-xlarge
318+
runs-on: blacksmith-12vcpu-macos-latest
319319
if: ${{ fromJSON(needs.prep.outputs.SHOULD_BUILD_NATIVE) }}
320320
env:
321321
DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer
@@ -395,7 +395,7 @@ jobs:
395395
iosSubmit:
396396
name: Submit iOS for production rollout
397397
needs: [prep, iosBuild, iosUploadTestflight]
398-
runs-on: macos-15-xlarge
398+
runs-on: blacksmith-12vcpu-macos-latest
399399
if: ${{ always() && !cancelled() && github.ref == 'refs/heads/production' && needs.iosBuild.result != 'failure' && needs.iosUploadTestflight.result != 'failure' }}
400400
env:
401401
DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer

.github/workflows/remote-build-ios.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ concurrency:
1818

1919
jobs:
2020
build:
21-
runs-on: ${{ github.repository_owner == 'Expensify' && 'macos-15-xlarge' || 'macos-15' }}
21+
runs-on: ${{ github.repository_owner == 'Expensify' && 'blacksmith-12vcpu-macos-latest' || 'macos-latest' }}
2222
env:
2323
DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer
2424
strategy:
@@ -45,6 +45,12 @@ jobs:
4545
with:
4646
IS_HYBRID_BUILD: ${{ matrix.is_hybrid_build && 'true' || 'false' }}
4747

48+
- name: Setup Ruby
49+
# v1.229.0
50+
uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252
51+
with:
52+
bundler-cache: true
53+
4854
- name: Checkout specific Mobile-Expensify PR
4955
if: ${{ matrix.is_hybrid_build && github.event.inputs.mobile_expensify_pr }}
5056
run: |

.github/workflows/syncVersions.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ on:
1010

1111
jobs:
1212
syncVersions:
13-
runs-on: macos-latest
13+
runs-on: blacksmith-6vcpu-macos-latest
1414
steps:
1515
- name: Check out
1616
# v6

0 commit comments

Comments
 (0)