Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
88 changes: 87 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,90 @@ on:
push: { branches: [main] }

jobs:
type-check:
runs-on: ubuntu-24.04
timeout-minutes: 20
env:
NODE_OPTIONS: --max-old-space-size=4096
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
run_install: false

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22

- name: Cache pnpm dependencies
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-

- name: Install root dependencies
run: pnpm install --frozen-lockfile

- name: Install TypeScript package dependencies
run: |
set -euo pipefail
npm ci --prefix gui
npm ci --prefix sdk
npm ci --prefix sdk/typescript

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Stop using npm ci in packages without lockfiles

npm ci is only valid when the target package already has a package-lock.json/npm-shrinkwrap.json. In this tree, sdk/typescript, shell-tool-mcp, and extensions/windsurf-extension do not have lockfiles, and npm ci --prefix sdk/typescript currently fails with EUSAGE (“can only install with an existing package-lock.json…”). That means the new type-check job exits during dependency installation and never reaches any of the validation steps.

Useful? React with 👍 / 👎.

npm ci --prefix packages/protocol-client
npm ci --prefix shell-tool-mcp
npm ci --prefix extensions
npm install --prefix extensions/vscode-codex
npm ci --prefix extensions/windsurf-extension
npm install --legacy-peer-deps --prefix extensions/codex-viz-web/frontend
npm install --prefix extensions/codex-viz-web/desktop

- name: Run monorepo type-check
run: npm run type-check

- name: Check workspace package versions
run: npm run type-check:versions

schema-diff:
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Check vendored app-server schema fixtures
working-directory: codex-rs
run: cargo test -p codex-app-server-protocol schema_fixtures_match_generated -- --exact

protocol-version:
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Check protocol version alignment
run: python3 ./scripts/check_protocol_versions.py

build-test:
runs-on: ubuntu-24.04
timeout-minutes: 15
Expand Down Expand Up @@ -216,7 +300,9 @@ jobs:
name: GUI Integration Tests
runs-on: windows-2022
timeout-minutes: 25
needs: build-test
needs:
- build-test
- type-check
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down
25 changes: 24 additions & 1 deletion .github/workflows/subagent-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,30 @@ jobs:



- name: Run Clippy (codex-app-server-protocol)

working-directory: codex-rs

run: cargo clippy -p codex-app-server-protocol --all-features -- -D warnings



- name: Run Clippy (codex-protocol)

working-directory: codex-rs

run: cargo clippy -p codex-protocol --all-features -- -D warnings



- name: Run Clippy (codex-cli)

working-directory: codex-rs

run: cargo clippy -p codex-cli --all-features -- -D warnings



# ========== Rustfmt Format Check ==========

rustfmt:
Expand Down Expand Up @@ -643,4 +667,3 @@ jobs:
echo ""

echo "Status: Production Ready

1 change: 1 addition & 0 deletions codex-rs/protocol/src/models.rs
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,7 @@ impl DeveloperInstructions {
})
}

#[allow(clippy::too_many_arguments)]
fn from_permissions_with_network(
sandbox_mode: SandboxMode,
network_access: NetworkAccess,
Expand Down
21 changes: 15 additions & 6 deletions extensions/codex-viz-web/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codex-viz-desktop",
"version": "2.7.0",
"version": "3.0.0",
"description": "Codex Repository Visualizer - Desktop Client",
"main": "dist/main.js",
"type": "module",
Expand All @@ -11,7 +11,8 @@
"package": "electron-builder",
"package:win": "electron-builder --win",
"package:mac": "electron-builder --mac",
"package:linux": "electron-builder --linux"
"package:linux": "electron-builder --linux",
"type-check": "tsc --project tsconfig.json --noEmit"
},
"dependencies": {
"@electron/remote": "^2.1.2",
Expand Down Expand Up @@ -40,18 +41,26 @@
"package.json"
],
"win": {
"target": ["nsis", "portable"],
"target": [
"nsis",
"portable"
],
"icon": "resources/icon.ico"
},
"mac": {
"target": ["dmg", "zip"],
"target": [
"dmg",
"zip"
],
"icon": "resources/icon.icns"
},
"linux": {
"target": ["AppImage", "deb"],
"target": [
"AppImage",
"deb"
],
"icon": "resources/icon.png",
"category": "Development"
}
}
}

18 changes: 18 additions & 0 deletions extensions/codex-viz-web/desktop/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"extends": "../../../tsconfig.strict.json",
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"lib": ["ES2022"],
"types": ["node"],
"rootDir": "src",
"outDir": "dist",
"skipLibCheck": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"sourceMap": true,
"noEmit": true
},
"include": ["src/**/*.ts"]
}
6 changes: 3 additions & 3 deletions extensions/codex-viz-web/frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
{
"name": "codex-viz-frontend",
"private": true,
"version": "2.7.0",
"version": "3.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
"preview": "vite preview",
"type-check": "tsc --project tsconfig.json --noEmit"
},
"dependencies": {
"react": "^19.2.4",
Expand All @@ -34,4 +35,3 @@
"vite": "^5.0.11"
}
}

30 changes: 14 additions & 16 deletions extensions/codex-viz-web/frontend/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,34 +1,32 @@
{
"extends": "../../../tsconfig.strict.json",
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"lib": [
"ES2020",
"DOM",
"DOM.Iterable"
],
"module": "ESNext",
"skipLibCheck": true,

/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",

/* Linting */
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictBindCallApply": true,
"strictPropertyInitialization": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src"],
"references": [{ "path": "./tsconfig.node.json" }]
"include": [
"src"
],
"references": [
{
"path": "./tsconfig.node.json"
}
]
}

6 changes: 4 additions & 2 deletions extensions/codex-viz-web/frontend/tsconfig.node.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
{
"extends": "../../../tsconfig.strict.json",
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true
},
"include": ["vite.config.ts"]
"include": [
"vite.config.ts"
]
}

8 changes: 2 additions & 6 deletions extensions/package-lock.json

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

6 changes: 3 additions & 3 deletions extensions/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "codex-subagents",
"displayName": "Codex Sub-Agents & Deep Research",
"description": "Multi-agent delegation and deep research for VS Code",
"version": "2.7.0",
"version": "3.0.0",
"publisher": "zapabob",
"engines": {
"vscode": "^1.85.0"
Expand Down Expand Up @@ -92,7 +92,8 @@
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"lint": "eslint src --ext ts"
"lint": "eslint src --ext ts",
"type-check": "tsc --project tsconfig.json --noEmit"
},
"devDependencies": {
"@types/node": "^20.x",
Expand All @@ -106,4 +107,3 @@
"yaml": "^2.3.4"
}
}

12 changes: 8 additions & 4 deletions extensions/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
{
"extends": "../tsconfig.strict.json",
"compilerOptions": {
"module": "commonjs",
"target": "ES2020",
"outDir": "out",
"lib": ["ES2020"],
"lib": [
"ES2020"
],
"sourceMap": true,
"rootDir": "src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true
},
"exclude": ["node_modules", ".vscode-test"]
"exclude": [
"node_modules",
".vscode-test"
]
}

Loading
Loading