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
73 changes: 69 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,70 @@ on:
pull_request:
workflow_dispatch:

concurrency:
group: ci-${{ github.workflow }}-${{ github.event_name == 'push' && github.sha || github.ref }}
cancel-in-progress: ${{ github.event_name != 'push' }}

jobs:
check:
lint:
runs-on: ubuntu-latest
# TODO(CL-6802 stage 2): flip blocking after the mechanical fix batch
continue-on-error: true
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.14"

- name: Cache dependencies
uses: actions/cache@v4
with:
path: node_modules
key: bun-${{ hashFiles('bun.lock') }}

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Cache lint
uses: actions/cache@v4
with:
path: |
.eslintcache
node_modules/.cache/prettier
key: lint-${{ github.sha }}
restore-keys: |
lint-

- name: Lint
run: bun run lint

typecheck:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.14"

- name: Cache dependencies
uses: actions/cache@v4
with:
path: node_modules
key: bun-${{ hashFiles('bun.lock') }}

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Typecheck
run: bun run typecheck

build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -23,6 +85,12 @@ jobs:
with:
bun-version: "1.3.14"

- name: Cache dependencies
uses: actions/cache@v4
with:
path: node_modules
key: bun-${{ hashFiles('bun.lock') }}

# The runner image has no ripgrep, so the grep plugin silently exercised
# its fallback walker and left the ripgrep path untested.
- name: Install ripgrep
Expand All @@ -31,9 +99,6 @@ jobs:
- name: Install dependencies
run: bun install --frozen-lockfile

- name: Typecheck
run: bun run typecheck

- name: Build
run: bun run build

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ dist/
.corbits/MEMORY.md
.interchange/
.cache/
.eslintcache
.pi
.claude/settings.local.json
.claude/worktrees
Expand Down
6 changes: 6 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dist/
vendor/
.worktrees/
scratch/
node_modules/
CHANGELOG.md
5 changes: 5 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"semi": true,
"trailingComma": "all",
"printWidth": 100
}
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ When refactoring replaces an old path, delete the old one. No back-compat shims,
## Build & Validation

```bash
bun run typecheck
bun run build
bun run test
bun run check
```

`bun run check` is the single pre-PR gate: it runs `lint`, `typecheck`, `build`, and `test`, in that order, matching CI.

Run the full suite before declaring any task complete. Do not substitute individual targets. If a failure is pre-existing and unrelated to your change, say so explicitly.

`bun run test` runs `bun test ./src ./tests ./evals`. A bare `bun test` also
Expand Down
218 changes: 209 additions & 9 deletions bun.lock

Large diffs are not rendered by default.

39 changes: 39 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import js from "@eslint/js";
import tseslint from "typescript-eslint";

export default tseslint.config(
{
ignores: [
"dist/**",
"vendor/**",
".worktrees/**",
"**/.worktrees/**",
".scratch/**",
"**/.scratch/**",
"scratch/**",
"**/scratch/**",
"node_modules/**",
"**/node_modules/**",
],
},
js.configs.recommended,
...tseslint.configs.strict,
...tseslint.configs.stylistic,
{
linterOptions: {
noInlineConfig: true,
reportUnusedDisableDirectives: "error",
},
rules: {
"@typescript-eslint/no-unused-vars": [
"error",
{
args: "all",
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
},
},
);
6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
"build:bin": "bun build ./src/index.ts --compile --minify --define process.env.NODE_ENV='\"production\"' --outfile ./dist/corbits && bun scripts/copy-repo-plugins.ts",
"typecheck": "tsc --noEmit",
"test": "bun test ./src ./tests ./evals",
"lint": "prettier --check --cache . && eslint --cache .",
"check": "bun run lint && bun run typecheck && bun run build && bun run test",
"start": "bun run build && bun ./dist/index.js",
"eval:capability": "bun scripts/eval-capability.ts",
"eval:public-swe-one": "bun scripts/eval-public-swe-one.ts",
Expand Down Expand Up @@ -79,9 +81,13 @@
"solid-js": "1.9.14"
},
"devDependencies": {
"@eslint/js": "^9.39.0",
"@intx/inference-testing": "0.2.2",
"@types/bun": "1.3.9",
"eslint": "^9.39.0",
"prettier": "^3.6.2",
"typescript": "5.9.3",
"typescript-eslint": "^8.46.4",
"typescript-language-server": "^4.3.4",
"ws": "^8.21.0"
},
Expand Down
1 change: 1 addition & 0 deletions tsconfig.base.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"declarationMap": true,

"composite": true,
"incremental": true,
"module": "ESNext",
"noEmit": true,

Expand Down
Loading