Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
204 commits
Select commit Hold shift + click to select a range
f208541
Start JARVIS X light premium AI workspace
pycgamingstudio-sys Nov 7, 2026
a077121
Start JARVIS X light premium AI workspace
pycgamingstudio-sys Nov 7, 2026
b95c6c0
Start JARVIS X light premium AI workspace
pycgamingstudio-sys Nov 7, 2026
21cb95e
Start JARVIS X light premium AI workspace
pycgamingstudio-sys Nov 7, 2026
ad993d2
Start JARVIS X light premium AI workspace
pycgamingstudio-sys Nov 7, 2026
919241f
Add JARVIS X backend foundation
pycgamingstudio-sys Nov 7, 2026
a708268
Add JARVIS X backend foundation
pycgamingstudio-sys Nov 7, 2026
32c8c89
Add JARVIS X backend foundation
pycgamingstudio-sys Nov 7, 2026
fc5fa96
Add JARVIS X backend foundation
pycgamingstudio-sys Nov 7, 2026
67a835e
Fix first-run setup screen
pycgamingstudio-sys Nov 7, 2026
9e7090c
Add JARVIS X workspace and integration architecture
pycgamingstudio-sys Nov 7, 2026
19f3bbc
Add JARVIS X workspace and integration architecture
pycgamingstudio-sys Nov 7, 2026
0404dcf
Add JARVIS X workspace and integration architecture
pycgamingstudio-sys Nov 7, 2026
8e04c21
Add JARVIS X workspace and integration architecture
pycgamingstudio-sys Nov 7, 2026
5d74998
Add JARVIS X workspace and integration architecture
pycgamingstudio-sys Nov 7, 2026
122ba23
Add JARVIS X workspace and integration architecture
pycgamingstudio-sys Nov 7, 2026
686899d
Add JARVIS X workspace and integration architecture
pycgamingstudio-sys Nov 7, 2026
8dbaeb5
Add JARVIS X workspace views and integrations
pycgamingstudio-sys Nov 7, 2026
e2e57a3
Wire projects memory integrations and agent studio
pycgamingstudio-sys Nov 7, 2026
0308ac5
Add JARVIS X workspace navigation and PWA metadata
pycgamingstudio-sys Nov 7, 2026
1b1e310
Style JARVIS X workspace and integrations
pycgamingstudio-sys Nov 7, 2026
e3f7240
Add agent backend, secure workspace schema and tests
pycgamingstudio-sys Nov 7, 2026
6f306a1
Add agent backend, secure workspace schema and tests
pycgamingstudio-sys Nov 7, 2026
cea0f30
Add agent backend, secure workspace schema and tests
pycgamingstudio-sys Nov 7, 2026
2c68fc0
Prepare JARVIS X configuration and CI
pycgamingstudio-sys Nov 7, 2026
d512aa3
Prepare JARVIS X configuration and CI
pycgamingstudio-sys Nov 7, 2026
3fcff0c
Prepare JARVIS X configuration and CI
pycgamingstudio-sys Nov 7, 2026
8caaf47
Prepare JARVIS X configuration and CI
pycgamingstudio-sys Nov 7, 2026
8277828
Fix return navigation to chat
pycgamingstudio-sys Nov 7, 2026
15be458
Connect workspace navigation back to chat
pycgamingstudio-sys Nov 7, 2026
0a79ac7
Use authenticated Supabase function client for chat
pycgamingstudio-sys Nov 7, 2026
89257ff
Use Gemini to create structured agent plans
pycgamingstudio-sys Nov 7, 2026
1223b7f
Fix CI setup for repository without lockfile
pycgamingstudio-sys Nov 7, 2026
6ac4be5
Build JARVIS X foundation
pycgamingstudio-sys Nov 7, 2026
35740d0
Build JARVIS X foundation
pycgamingstudio-sys Nov 7, 2026
0602fd7
Build JARVIS X foundation
pycgamingstudio-sys Nov 7, 2026
c48a4f8
Build JARVIS X foundation
pycgamingstudio-sys Nov 7, 2026
aba5673
Build JARVIS X foundation
pycgamingstudio-sys Nov 7, 2026
25b20b1
Build JARVIS X foundation
pycgamingstudio-sys Nov 7, 2026
a5fc05c
Clarify OAuth and frontend configuration requirements
pycgamingstudio-sys Nov 7, 2026
3787c77
Build JARVIS X PWA, CI and security foundation
pycgamingstudio-sys Nov 7, 2026
3d56859
fix: invoke configured Supabase chat function
pycgamingstudio-sys Nov 7, 2026
f7b6cb5
Build JARVIS X PWA, CI and security foundation
pycgamingstudio-sys Nov 7, 2026
74900ed
Show dashboard setup steps for OAuth integrations
pycgamingstudio-sys Nov 7, 2026
50de17f
Build JARVIS X PWA, CI and security foundation
pycgamingstudio-sys Nov 7, 2026
43db334
design: add JARVIS X champagne monogram
pycgamingstudio-sys Nov 7, 2026
6b73a72
Distinguish dashboard setup from API secrets
pycgamingstudio-sys Nov 7, 2026
cda1a8b
build: add secure Cloudflare gateway starter
pycgamingstudio-sys Nov 7, 2026
9d1b0a5
docs: add JARVIS X setup and integration guide
pycgamingstudio-sys Nov 7, 2026
5369f36
Update integration tests for dashboard OAuth setup
pycgamingstudio-sys Nov 7, 2026
242ba8a
Build JARVIS X premium-light workspace foundation
pycgamingstudio-sys Nov 7, 2026
497da43
Build JARVIS X premium-light workspace foundation
pycgamingstudio-sys Nov 7, 2026
d21c8e3
Document secure provider and OAuth setup
pycgamingstudio-sys Nov 7, 2026
8e99972
Add JARVIS X automated build and smoke tests
pycgamingstudio-sys Nov 7, 2026
d635688
Build JARVIS X premium-light workspace foundation
pycgamingstudio-sys Nov 7, 2026
67fc843
Enable installable offline JARVIS X shell
pycgamingstudio-sys Nov 7, 2026
da118b8
Build JARVIS X premium-light workspace foundation
pycgamingstudio-sys Nov 7, 2026
13ad71e
Build JARVIS X premium-light workspace foundation
pycgamingstudio-sys Nov 7, 2026
c209750
feat: add installable PWA manifest
pycgamingstudio-sys Nov 7, 2026
a4c31c6
Include advisor-recommended foreign key indexes
pycgamingstudio-sys Nov 7, 2026
b976fed
Add automated JARVIS X build and test workflow
pycgamingstudio-sys Nov 7, 2026
a952fd2
Add JARVIS X workspace UI
pycgamingstudio-sys Nov 7, 2026
c9cb1e9
Add multilingual voice input and response read-aloud
pycgamingstudio-sys Nov 7, 2026
a592e95
Remove npm cache requirement until lockfile is committed
pycgamingstudio-sys Nov 7, 2026
744a18d
Implement private conversation file uploads
pycgamingstudio-sys Nov 7, 2026
da32eb9
Enable private image PDF and text attachment analysis
pycgamingstudio-sys Nov 7, 2026
654b8d0
Fix template literal escaping in attachment upload
pycgamingstudio-sys Nov 7, 2026
37d79c7
Add explicit type for multimodal Gemini request parts
pycgamingstudio-sys Nov 7, 2026
3496aee
Complete responsive premium light UI styles
pycgamingstudio-sys Nov 7, 2026
9431156
Display private attachment names in chat
pycgamingstudio-sys Nov 7, 2026
2a4822b
Style private file attachments in chat
pycgamingstudio-sys Nov 7, 2026
71089c9
Add JARVIS X PWA and build setup
pycgamingstudio-sys Nov 7, 2026
cde4ad8
Add JARVIS X PWA and build setup
pycgamingstudio-sys Nov 7, 2026
c3f2f89
Add JARVIS X PWA and build setup
pycgamingstudio-sys Nov 7, 2026
51e8dd6
Add JARVIS X PWA and build setup
pycgamingstudio-sys Nov 7, 2026
db53eb5
Add approval-gated GitHub and Cloudflare automation gateway
pycgamingstudio-sys Nov 7, 2026
b4191bf
Add Cloudflare Pages deployment workflow
pycgamingstudio-sys Nov 7, 2026
bedf21c
Add PWA manifest to JARVIS X
pycgamingstudio-sys Nov 7, 2026
90fdfc1
Configure JARVIS X gateway Worker deployment
pycgamingstudio-sys Nov 7, 2026
6b03b4c
Add secure Cloudflare Worker deployment workflow
pycgamingstudio-sys Nov 7, 2026
ca74b75
Connect approval queue to GitHub and Cloudflare gateway
pycgamingstudio-sys Nov 7, 2026
061fa2d
Fix gateway URL normalization
pycgamingstudio-sys Nov 7, 2026
56ba114
Document agent gateway secrets and deployment credentials
pycgamingstudio-sys Nov 7, 2026
7d7f98f
Document correct secret locations for every integration
pycgamingstudio-sys Nov 7, 2026
73b5494
Show provider-specific secret setup locations
pycgamingstudio-sys Nov 7, 2026
cc9a8be
Bind execution targets to the approved payload
pycgamingstudio-sys Nov 7, 2026
3f08f1e
Add retryable execution for approved agent actions
pycgamingstudio-sys Nov 7, 2026
235646f
Load approved actions for retry
pycgamingstudio-sys Nov 7, 2026
53c6614
Display approval details and retry approved actions
pycgamingstudio-sys Nov 7, 2026
05c000d
Remove untrusted repository name from execution request
pycgamingstudio-sys Nov 7, 2026
b83b35e
Update frontend dependencies to patched releases
pycgamingstudio-sys Nov 7, 2026
fca7503
Fix activity approval handler line break
pycgamingstudio-sys Nov 7, 2026
080e237
Create private repositories with generated source files
pycgamingstudio-sys Nov 7, 2026
8fe1d54
Teach agent planner to generate complete project source files
pycgamingstudio-sys Nov 7, 2026
10707d6
Deploy approved generated repositories to Cloudflare Pages
pycgamingstudio-sys Nov 7, 2026
b19d1ea
Deploy generated private repositories rather than the gateway repo
pycgamingstudio-sys Nov 7, 2026
e16a272
Summarise generated file list in approval cards
pycgamingstudio-sys Nov 7, 2026
7fb8062
Bind generated repository targets to the connected GitHub owner
pycgamingstudio-sys Nov 7, 2026
9381529
Validate generated file paths before creating repositories
pycgamingstudio-sys Nov 7, 2026
7a55e5a
Tighten generated file path validation
pycgamingstudio-sys Nov 7, 2026
c3bf665
Isolate project build from Cloudflare deployment secrets
pycgamingstudio-sys Nov 7, 2026
238bbd9
Load persisted agent plans and run history
pycgamingstudio-sys Nov 7, 2026
199ad4f
Show agent execution plans and recent runs
pycgamingstudio-sys Nov 7, 2026
8a9cc73
Fix agent plan view syntax
pycgamingstudio-sys Nov 7, 2026
95e6adb
Style agent execution plans
pycgamingstudio-sys Nov 7, 2026
e521c60
Test gateway ownership and approval safeguards
pycgamingstudio-sys Nov 7, 2026
eb6f0fb
Lint the Cloudflare gateway in CI
pycgamingstudio-sys Nov 7, 2026
454c4db
Return expected Pages URL with queued deployment status
pycgamingstudio-sys Nov 7, 2026
40dee2a
Show generated repository and deployment links after approvals
pycgamingstudio-sys Nov 7, 2026
3bb3709
Document secure gateway URL configuration
pycgamingstudio-sys Nov 7, 2026
09c7772
Correct secret locations and least-privilege provider permissions
pycgamingstudio-sys Nov 7, 2026
8394a02
Show exact GitHub and Cloudflare configuration names
pycgamingstudio-sys Nov 7, 2026
5c16e2f
Update GitHub integration secret test
pycgamingstudio-sys Nov 7, 2026
20a7f8d
Report actual configured Cloudflare deployment capability
pycgamingstudio-sys Nov 7, 2026
9745b38
Expose Pages deployment readiness in gateway
pycgamingstudio-sys Nov 7, 2026
c37a5ba
Read GitHub and Cloudflare connection status from gateway
pycgamingstudio-sys Nov 7, 2026
a9b4493
Fix gateway capability helper line break
pycgamingstudio-sys Nov 7, 2026
69ae2df
Add authenticated web research with cited sources
pycgamingstudio-sys Nov 7, 2026
4a0b979
Pin Supabase Edge Function dependency version
pycgamingstudio-sys Nov 7, 2026
691c67e
Pin Supabase Edge Function dependency version
pycgamingstudio-sys Nov 7, 2026
0f5e985
Pin Supabase Edge Function dependency version
pycgamingstudio-sys Nov 7, 2026
4489f30
Add live research workspace with citations
pycgamingstudio-sys Nov 7, 2026
731e8e0
Add Research navigation to JARVIS X
pycgamingstudio-sys Nov 7, 2026
9274daa
Configure Tavily as the JARVIS X web research provider
pycgamingstudio-sys Nov 7, 2026
e86d3e0
Configure Tavily as the JARVIS X web research provider
pycgamingstudio-sys Nov 7, 2026
4cc4594
Configure Tavily as the JARVIS X web research provider
pycgamingstudio-sys Nov 7, 2026
a559294
Configure Tavily as the JARVIS X web research provider
pycgamingstudio-sys Nov 7, 2026
018355f
Style live research summaries and source cards
pycgamingstudio-sys Nov 7, 2026
24d495a
Add private Gemini image generation endpoint
pycgamingstudio-sys Nov 7, 2026
4f0cdc6
Use Gemini as the default image generation provider
pycgamingstudio-sys Nov 7, 2026
17339bb
Report image generation ready with Gemini API key
pycgamingstudio-sys Nov 7, 2026
121384d
Add private Gemini image studio UI
pycgamingstudio-sys Nov 7, 2026
c31e451
Add Image studio navigation
pycgamingstudio-sys Nov 7, 2026
eed5312
Style private image generation studio
pycgamingstudio-sys Nov 7, 2026
a492585
Remove redundant image API key placeholder
pycgamingstudio-sys Nov 7, 2026
3b08dac
Document Gemini image generation setup
pycgamingstudio-sys Nov 7, 2026
7c016af
Update JARVIS X feature overview
pycgamingstudio-sys Nov 7, 2026
04587c7
Add persisted personal AI instructions
pycgamingstudio-sys Nov 7, 2026
a8f318a
Add personal settings and custom instructions
pycgamingstudio-sys Nov 7, 2026
b0a3be7
Add Settings navigation
pycgamingstudio-sys Nov 7, 2026
f8460a3
Style JARVIS X personal settings
pycgamingstudio-sys Nov 7, 2026
267141f
Persist default AI model preference
pycgamingstudio-sys Nov 7, 2026
8b48833
Load saved model preference after authentication
pycgamingstudio-sys Nov 7, 2026
2d64ecc
Apply user language and custom instructions to AI chat
pycgamingstudio-sys Nov 7, 2026
8856fc2
Use current Gemini 3.8 Flash as default model
pycgamingstudio-sys Nov 7, 2026
dc0424f
Update model selector to current Gemini models
pycgamingstudio-sys Nov 7, 2026
16768ae
Update default model setting options
pycgamingstudio-sys Nov 7, 2026
49f8dff
Migrate JARVIS AI endpoints to Gemini 3.8 and secure API headers
pycgamingstudio-sys Nov 7, 2026
b6b0eef
Migrate JARVIS AI endpoints to Gemini 3.8 and secure API headers
pycgamingstudio-sys Nov 7, 2026
e9f56d5
Fix Gemini 3.8 endpoint URL
pycgamingstudio-sys Nov 7, 2026
970fc76
Migrate research synthesis to Gemini 3.8
pycgamingstudio-sys Nov 7, 2026
963cd9a
Fix Gemini 3.8 research endpoint URL
pycgamingstudio-sys Nov 7, 2026
96b1307
Set Gemini 3.8 Flash as the default model
pycgamingstudio-sys Nov 7, 2026
fe907b2
Set the chat state default to Gemini 3.8 Flash
pycgamingstudio-sys Nov 7, 2026
a2192bf
Inject public Supabase frontend config at build time
pycgamingstudio-sys Nov 7, 2026
8f869c0
Format custom instructions with real line breaks
pycgamingstudio-sys Nov 7, 2026
e97d9a4
Format agent planning context with real line breaks
pycgamingstudio-sys Nov 7, 2026
4173d0e
Label queued deployment links accurately
pycgamingstudio-sys Nov 7, 2026
99d3f06
Add private search across conversation history
pycgamingstudio-sys Nov 7, 2026
1925003
Add Search chats navigation
pycgamingstudio-sys Nov 7, 2026
dce7d70
Open searched conversations from search results
pycgamingstudio-sys Nov 7, 2026
caf1bf1
Style conversation search
pycgamingstudio-sys Nov 7, 2026
53bdac7
Remove duplicate CI workflow
pycgamingstudio-sys Nov 7, 2026
03333d1
Document all deployment and frontend build secrets
pycgamingstudio-sys Nov 7, 2026
95bd8f0
Remove unused static email API key provider
pycgamingstudio-sys Nov 7, 2026
678e53c
Remove unused email API key placeholder
pycgamingstudio-sys Nov 7, 2026
8aff08f
Add private file library and file management
pycgamingstudio-sys Nov 7, 2026
d5ce50c
Add Files navigation
pycgamingstudio-sys Nov 7, 2026
dabd89f
Style private file library
pycgamingstudio-sys Nov 7, 2026
3cc2bf9
Limit each chat attachment batch to 15 MB
pycgamingstudio-sys Nov 7, 2026
ffffa42
Enforce a 15 MB total multimodal request limit
pycgamingstudio-sys Nov 7, 2026
f0bf19d
Fix multimodal size-check formatting
pycgamingstudio-sys Nov 7, 2026
995d9d6
Fix attachment parts for text and unsupported files
pycgamingstudio-sys Nov 7, 2026
a3c3654
Fix unsupported attachment return shape
pycgamingstudio-sys Nov 7, 2026
936d6fc
Add private Gemini 3.8 text-to-speech endpoint
pycgamingstudio-sys Nov 7, 2026
57c6419
Use Gemini 3.8 TTS for natural read-aloud
pycgamingstudio-sys Nov 7, 2026
35ce43f
Use Gemini for natural speech generation
pycgamingstudio-sys Nov 7, 2026
6770c5e
Report speech output ready with Gemini key
pycgamingstudio-sys Nov 7, 2026
2159b84
Remove separate TTS key placeholder
pycgamingstudio-sys Nov 7, 2026
a4bddc6
Document shared Gemini speech credentials
pycgamingstudio-sys Nov 7, 2026
3cf42dd
Wrap Gemini PCM speech output in a valid WAV container
pycgamingstudio-sys Nov 7, 2026
f9f3d0d
Apply language and selected voice preferences
pycgamingstudio-sys Nov 7, 2026
6f9803d
Add voice selection to personal settings
pycgamingstudio-sys Nov 7, 2026
80bfc5e
Fix default voice and apply language preference to speech input
pycgamingstudio-sys Nov 7, 2026
ead2487
Respect saved language in voice input
pycgamingstudio-sys Nov 7, 2026
ae37cff
Repair and separate search and file library views
pycgamingstudio-sys Nov 7, 2026
cc1e4ca
Respect natural voice output preference
pycgamingstudio-sys Nov 7, 2026
4e97fed
Persist voice output preference in settings
pycgamingstudio-sys Nov 7, 2026
d93bbc0
Remove leftover corrupted search handler fragment
pycgamingstudio-sys Nov 7, 2026
062323d
Restrict all JARVIS X data and files to allowlisted Google accounts
pycgamingstudio-sys Nov 7, 2026
331d1bf
Enforce private Google account allowlist at app sign-in
pycgamingstudio-sys Nov 7, 2026
aa71b20
Document private Gmail allowlist and Supabase auth hardening
pycgamingstudio-sys Nov 7, 2026
1db2c98
Use an invoker-safe allowlist check with self-only row visibility
pycgamingstudio-sys Nov 7, 2026
a051ad6
Add opt-in automatic memory extraction
pycgamingstudio-sys Nov 7, 2026
9c59805
Add opt-in automatic memory setting
pycgamingstudio-sys Nov 7, 2026
5eb3f18
Read memory opt-in preference in chat function
pycgamingstudio-sys Nov 7, 2026
eac6fcb
Update feature overview for memory research voice and files
pycgamingstudio-sys Nov 7, 2026
f60fb99
Update JARVIS X implemented feature matrix
pycgamingstudio-sys Nov 7, 2026
9f3d03a
Clarify implemented features and remaining ChatGPT parity work
pycgamingstudio-sys Nov 7, 2026
6b7af47
Refresh README with current features and setup locations
pycgamingstudio-sys Nov 7, 2026
da9721f
Track generated repositories and deployments in project workspace
pycgamingstudio-sys Nov 7, 2026
30ef07d
Show deployment state in project cards
pycgamingstudio-sys Nov 7, 2026
53a20d1
Make private attachment uploads atomic and size-safe
pycgamingstudio-sys Nov 7, 2026
0c99bd4
Limit file picker to supported upload formats
pycgamingstudio-sys Nov 7, 2026
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
12 changes: 12 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
VITE_SUPABASE_URL=https://tmlrveloeirxsankeqrs.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=replace_with_supabase_publishable_key
VITE_CHAT_FUNCTION_URL=https://tmlrveloeirxsankeqrs.supabase.co/functions/v1/jarvis-chat

# Server-side only — set in Supabase Edge Function Secrets, never in VITE_ variables:
# GEMINI_API_KEY=
# GITHUB_TOKEN=
# CLOUDFLARE_API_TOKEN=
# CLOUDFLARE_ACCOUNT_ID=
# TAVILY_API_KEY=
# APP_ORIGIN=
# JARVIS_GATEWAY_URL=https://<your-worker-subdomain>.workers.dev
12 changes: 5 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
name: Production build and browser smoke tests

name: JARVIS X build and tests
on:
push:
branches: [main]
branches: [main, jarvis-x-foundation]
pull_request:
branches: [main]

jobs:
build-and-test:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm install
- run: npx playwright install --with-deps chromium
- run: npm test
- run: node --check cloudflare/worker.js
- run: npm run build
- run: npm run test:e2e
77 changes: 77 additions & 0 deletions .github/workflows/deploy-cloudflare.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Deploy generated project to Cloudflare Pages
on:
workflow_dispatch:
inputs:
project_name:
description: Cloudflare Pages project name
required: true
type: string
branch:
description: Source repository branch
required: true
default: main
type: string
repository:
description: owner/repository to build and deploy
required: true
type: string
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
repository: ${{ inputs.repository }}
ref: ${{ inputs.branch }}
token: ${{ secrets.GITHUB_TOKEN_JARVIS }}
persist-credentials: false
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies without lifecycle scripts
run: npm install --ignore-scripts --no-audit --no-fund
- name: Run project tests when available
run: npm test --if-present
- name: Build project
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}
VITE_CHAT_FUNCTION_URL: ${{ secrets.VITE_CHAT_FUNCTION_URL }}
run: npm run build
- uses: actions/upload-artifact@v4
with:
name: jarvis-pages-dist
path: dist/
if-no-files-found: error
retention-days: 1
deploy:
needs: build
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/download-artifact@v4
with:
name: jarvis-pages-dist
path: dist
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install Wrangler
run: npm install --global wrangler
- name: Create Pages project if needed
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
PROJECT_NAME: ${{ inputs.project_name }}
BRANCH: ${{ inputs.branch }}
run: wrangler pages project create "$PROJECT_NAME" --production-branch "$BRANCH" || true
- name: Deploy static build
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
PROJECT_NAME: ${{ inputs.project_name }}
BRANCH: ${{ inputs.branch }}
run: wrangler pages deploy dist --project-name "$PROJECT_NAME" --branch "$BRANCH"
39 changes: 39 additions & 0 deletions .github/workflows/deploy-worker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Deploy JARVIS X gateway Worker
on:
workflow_dispatch:
jobs:
deploy-worker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: jarvis-x-foundation
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install Wrangler
run: npm install --global wrangler
- name: Configure Worker secrets
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_PUBLISHABLE_KEY: ${{ secrets.SUPABASE_PUBLISHABLE_KEY }}
JARVIS_OWNER_EMAILS: ${{ secrets.JARVIS_OWNER_EMAILS }}
APP_ORIGIN: ${{ secrets.APP_ORIGIN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN_JARVIS }}
GITHUB_OWNER: ${{ secrets.GITHUB_OWNER }}
GITHUB_REPO: ${{ secrets.GITHUB_REPO }}
CLOUDFLARE_PAGES_READY: 'true'
run: |
set -euo pipefail
for key in SUPABASE_URL SUPABASE_PUBLISHABLE_KEY JARVIS_OWNER_EMAILS APP_ORIGIN GITHUB_TOKEN GITHUB_OWNER GITHUB_REPO CLOUDFLARE_PAGES_READY; do
value="${!key}"
if [ -z "$value" ]; then echo "Missing required secret: $key"; exit 1; fi
printf '%s' "$value" | wrangler secret put "$key" --config cloudflare/wrangler.toml
done
- name: Deploy Worker
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: wrangler deploy --config cloudflare/wrangler.toml
31 changes: 31 additions & 0 deletions README-JARVIS-X.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# JARVIS X

A light, premium personal AI workspace built with Vite and Supabase. The visual system uses pearl, ivory, warm stone and champagne accents; no dark theme or neon gradients.

## Current foundation
- Responsive web app/PWA shell and Google OAuth entry point.
- Supabase Auth, persistent chat history, projects, memory, tasks, approvals, agent runs and audit log.
- Supabase Edge Functions: `jarvis-chat` and `jarvis-agent`.
- Provider status screen and secret-name checklist.
- Cloudflare Worker gateway starter and Wrangler deployment config.
- Risky actions are designed around explicit approvals; credentials remain server-side.

## Local setup
1. `npm install`
2. Copy `.env.example` to `.env.local` and set the Supabase URL and publishable key.
3. In Supabase Auth, enable Google and configure the OAuth redirect URLs for the app domain.
4. Add `GEMINI_API_KEY` to Supabase Edge Function secrets.
5. Run `npm run dev`; validate with `npm run build`.

## Supabase Edge Function secrets
Required for AI chat: `GEMINI_API_KEY`.

Optional integrations: `GITHUB_TOKEN`, `CLOUDFLARE_API_TOKEN`, `CLOUDFLARE_ACCOUNT_ID`, `SEARCH_API_KEY`, `IMAGE_PROVIDER_API_KEY`, `TTS_API_KEY`, `EMAIL_PROVIDER_API_KEY`.

Supabase URL and publishable key are public client configuration values. Never place service-role keys, OAuth client secrets, or provider tokens in frontend variables or source control.

## Cloudflare
Set `APP_ORIGIN` and provider credentials as Worker secrets/vars. Deploy using Wrangler only after configuring the Cloudflare account and reviewing the deployment target.

## Current limitations
External GitHub actions, real web search, image generation, file parsing, background scheduling and production Cloudflare deployments still require their provider adapters, credentials, tests and explicit authorization. The presence of a settings entry does not mean an integration is active.
75 changes: 43 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,47 @@
# NEON HORIZON
# JARVIS X — Personal Intelligence

A browser-based 3D night-drive prototype built with Three.js, Vite and cannon-es.
A light-first personal AI workspace with a pearl, ivory and champagne visual system. The canonical app is the Vite project at the repository root.

## Requirements
- Node.js 22 or newer
- npm
## Implemented in this branch
- Responsive chat UI and installable PWA shell.
- Google OAuth flow with a database-backed email allowlist.
- Supabase conversation history, model selection, search and custom instructions.
- Optional automatic memory extraction (off until enabled in Settings).
- Private file library; image, PDF and plain-text/CSV/JSON analysis.
- Gemini image generation and natural text-to-speech.
- Browser speech input with language preference.
- Tavily web research with source links.
- Projects, memories, tasks, agent runs and approval queue.
- Agent planning for generated starter projects, approval-gated GitHub repository creation and Cloudflare Pages deployment.
- Supabase RLS, private Storage policies and JWT-verified Edge Functions.

See [the feature matrix](docs/FEATURE-MATRIX.md) for limitations and features not yet at full ChatGPT parity.

## Local development
```bash
npm install
npm run dev
```

## Production build
```bash
npm run build
npm run preview
```

The production site is generated in dist/.

## Deployment
- Vercel: Framework preset Vite, build command `npm run build`, output directory `dist`.
- Netlify: build command `npm run build`, publish directory `dist`.

## Controls
- A / D or Left / Right: steer
- W / Up: accelerate
- S / Down: brake
- Space / Shift: nitro
- Escape: pause
- Touch: drag left/right to steer; on-screen pedals on touch devices

## Notes
The vehicle simulation uses a rigid chassis and raycast suspension. It is not a soft-body deformation simulator and does not claim BeamNG.drive parity. Third-party model and texture assets should only be added after their licenses are checked.
1. Copy `.env.example` to `.env`.
2. Set `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.
3. Run `npm install`, then `npm run dev`.
4. Run `npm test` and `npm run build`.

## Supabase setup
- Project ref: `tmlrveloeirxsankeqrs` (Driver saathi; Plivex is not used).
- Migrations: `supabase/migrations`.
- Edge Functions: `jarvis-chat`, `jarvis-agent`, `jarvis-research`, `jarvis-image`, `jarvis-tts`.
- Configure Google OAuth under Supabase Auth → Providers and set allowed redirect URLs.
- Add approved Gmail addresses to `public.jarvis_allowed_users` using the SQL example in [Provider setup](docs/PROVIDER-SETUP.md). The allowlist is empty by default.
- Keep all server-side keys in the correct provider's secrets store.

## Credentials by location
- Supabase Edge Function Secrets: `GEMINI_API_KEY`, `TAVILY_API_KEY`, `JARVIS_GATEWAY_URL`, and optional `APP_ORIGIN`.
- GitHub Actions Secrets: `GITHUB_TOKEN_JARVIS`, `GITHUB_OWNER`, `GITHUB_REPO`, `CLOUDFLARE_API_TOKEN`, `CLOUDFLARE_ACCOUNT_ID`, `SUPABASE_URL`, `SUPABASE_PUBLISHABLE_KEY`, `JARVIS_OWNER_EMAILS`, `APP_ORIGIN`, and the `VITE_*` frontend build variables.
- Google OAuth: configure the Client ID and Client Secret in Supabase Auth provider settings.
- Never use a Supabase service-role or secret key in a `VITE_*` variable or browser code.

## Safety model
- User data is isolated with RLS and an email allowlist.
- Repository creation and deployment require explicit approval.
- The gateway verifies the signed-in user and the approved action payload before performing side effects.
- Provider keys are never stored in Git history or chat.

## Current status
This is a working foundation in the `jarvis-x-foundation` branch with CI passing. Provider credentials, OAuth configuration, end-to-end tests and Cloudflare deployment are still required before the live app can be used. This project does not claim full ChatGPT feature parity yet.
Loading
Loading