Skip to content
Closed
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
12 changes: 12 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ jobs:
- name: Check generated Cluster Protocol artifacts
run: npm run protocol:check

- name: Check generated Cluster Protocol TypeScript artifacts
run: npm run generate:cluster-protocol-ts -- --check

- name: Check Rust formatting
run: cargo fmt --all -- --check

Expand All @@ -80,6 +83,12 @@ jobs:
- name: Test Rust workspace
run: cargo test --workspace

- name: Cluster TypeScript client tests
run: npm run test:cluster-client

- name: Cluster TypeScript package tests
run: npm run test:cluster-package

- name: Security audit
run: npm audit --audit-level=moderate --omit=dev
continue-on-error: false
Expand All @@ -93,6 +102,9 @@ jobs:
- name: Type check
run: npm run typecheck

- name: Type check cluster
run: npm run typecheck:cluster

- name: Check provider CLI helper
run: npm run check:agent-cli-provider:ci

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,4 @@ report/
test-metadata-manual.sh
test-isolated-fix.js
lib/agent-cli-provider/
lib/cluster/
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ coverage
.tsbuildinfo
.eslintcache
lib/agent-cli-provider
lib/cluster
protocol/openengine-cluster/v1
62 changes: 62 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,67 @@ export default [
],
},
},
{
files: ['src/cluster/**/*.ts', 'tests/cluster/**/*.ts'],
plugins: {
'@typescript-eslint': tseslint.plugin,
},
languageOptions: {
parser: tseslint.parser,
parserOptions: {
project: './tsconfig.cluster.json',
tsconfigRootDir,
},
ecmaVersion: 2022,
sourceType: 'module',
},
rules: {
'no-undef': 'off',
'no-unused-vars': 'off',
'unused-imports/no-unused-vars': 'off',
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-check': false,
'ts-expect-error': true,
'ts-ignore': true,
'ts-nocheck': true,
},
],
'@typescript-eslint/consistent-type-imports': [
'error',
{ prefer: 'type-imports', fixStyle: 'inline-type-imports' },
],
'@typescript-eslint/explicit-function-return-type': 'error',
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/no-non-null-assertion': 'error',
'@typescript-eslint/no-unsafe-argument': 'error',
'@typescript-eslint/no-unsafe-assignment': 'error',
'@typescript-eslint/no-unsafe-call': 'error',
'@typescript-eslint/no-unsafe-member-access': 'error',
'@typescript-eslint/no-unsafe-return': 'error',
'@typescript-eslint/no-unsafe-type-assertion': 'error',
'@typescript-eslint/no-unused-vars': [
'error',
{
vars: 'all',
varsIgnorePattern: '^_',
args: 'after-used',
argsIgnorePattern: '^_',
},
],
},
},
{
// Generated wire types/method maps are regenerated by
// scripts/generate-cluster-protocol-ts.js from the authoritative protocol schemas, not
// hand-written -- relax the strict-authoring rules that only make sense for hand-written
// code (return-type annotations, `any`-avoidance discipline) while keeping correctness rules.
files: ['src/cluster/generated/**/*.ts'],
rules: {
'@typescript-eslint/explicit-function-return-type': 'off',
},
},
{
// TUI/CLI/streaming files use ANSI escape codes for terminal colors - allow control characters
files: [
Expand Down Expand Up @@ -329,6 +390,7 @@ export default [
'hooks/**',
'lib/tui-backend/**',
'lib/agent-cli-provider/**',
'lib/cluster/**',
],
},
prettierConfig,
Expand Down
92 changes: 91 additions & 1 deletion package-lock.json

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

28 changes: 23 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
"version": "6.4.0",
"description": "Multi-agent orchestration engine for Claude, Codex, and Gemini",
"main": "src/orchestrator.js",
"exports": {
".": "./src/orchestrator.js",
"./cluster": {
"types": "./lib/cluster/index.d.ts",
"import": "./lib/cluster/esm/index.mjs",
"require": "./lib/cluster/index.js"
},
"./*": "./*"
},
"bin": {
"zeroshot": "./cli/index.js",
"zeroshot-agent-provider": "./lib/agent-cli-provider/executable.js",
Expand Down Expand Up @@ -39,7 +48,7 @@
]
},
"scripts": {
"pretest": "npm run build:agent-cli-provider",
"pretest": "npm run build:agent-cli-provider && npm run build:cluster",
"test": "node tests/run-tests.js",
"test:unit": "node tests/run-tests.js",
"test:e2e": "mocha 'tests/e2e/**/*.test.js' --timeout 120000",
Expand All @@ -65,19 +74,25 @@
"format": "prettier --write .",
"format:check": "prettier --check .",
"protocol:check": "cargo run -p openengine-cluster-testkit --bin generate-cluster-protocol -- --check",
"generate:cluster-protocol-ts": "node scripts/generate-cluster-protocol-ts.js",
"typecheck:cluster": "tsc --project tsconfig.cluster.json",
"build:cluster": "tsc --project tsconfig.cluster.cjs.json && tsc --project tsconfig.cluster.esm.json && node scripts/build-cluster-esm-ext.js",
"check:cluster": "npm run typecheck:cluster && npm run generate:cluster-protocol-ts -- --check",
"test:cluster-client": "npm run build:cluster && mocha 'tests/cluster/**/*.test.js' --timeout 20000",
"test:cluster-package": "npm run build:cluster && mocha tests/cluster-package.test.js --timeout 60000",
"rust:check": "cargo fmt --all -- --check && cargo clippy --workspace --all-targets -- -D warnings && cargo test --workspace",
"deadcode": "ts-prune --skip node_modules",
"deadcode:files": "unimported",
"deadcode:deps": "depcheck",
"deadcode:all": "npm run deadcode && npm run deadcode:files && npm run deadcode:deps",
"dupcheck": "jscpd src/ --min-lines 5 --min-tokens 50 --threshold 5",
"check": "npm run typecheck && npm run lint",
"check:all": "npm run check && npm run deadcode:all",
"check:all": "npm run check && npm run check:cluster && npm run deadcode:all",
"release": "semantic-release",
"release:preflight": "node scripts/release-preflight.js",
"release:assert-published": "node scripts/assert-release-published.js",
"prepublishOnly": "npm run lint && npm run typecheck && npm run check:agent-cli-provider:ci",
"prepare": "npm run build:agent-cli-provider && husky"
"prepublishOnly": "npm run lint && npm run typecheck && npm run check:agent-cli-provider:ci && npm run build:cluster",
"prepare": "npm run build:agent-cli-provider && npm run build:cluster && husky"
},
"c8": {
"reporter": [
Expand Down Expand Up @@ -148,14 +163,16 @@
"node-pty": "^1.1.0",
"omelette": "^0.4.17",
"pidusage": "^4.0.1",
"proper-lockfile": "^4.1.2"
"proper-lockfile": "^4.1.2",
"ws": "^8.18.3"
},
"devDependencies": {
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"@semantic-release/github": "^11.0.6",
"@types/better-sqlite3": "^7.6.13",
"@types/node": "^25.0.3",
"@types/ws": "^8.18.1",
"c8": "^10.1.3",
"chai": "^6.2.1",
"depcheck": "^1.4.7",
Expand All @@ -165,6 +182,7 @@
"eslint-plugin-sonarjs": "^3.0.5",
"eslint-plugin-unused-imports": "^4.3.0",
"husky": "^9.1.7",
"json-schema-to-typescript": "^15.0.4",
"jscpd": "^3.5.10",
"lint-staged": "^16.2.7",
"mocha": "^11.7.5",
Expand Down
Loading
Loading