mirror of
https://github.com/stablyai/orca.git
synced 2026-11-05 03:27:44 +00:00
* perf(lint): keep JS plugins out of default oxlint and adopt ast-grep Any jsPlugin makes Oxlint hand every file's AST to Node, so the seven custom plugins cost the default `oxlint` run several times its native time. - Move app-store-performance, quadratic-buffer-concat, renderer-scrollbar-style and ime-enter-guard (scope- or dataflow-aware) to config/oxlint-js-plugins.json, run by `pnpm lint:js-plugins`, CI, lint-staged and the changed-lines gate. - Port sort-comparator-performance, mobile-pairing and native-chat-design-tokens to ast-grep rules with rule tests, and delete the plugins. - Add @ast-grep/cli, config/sgconfig.yml, `pnpm lint:ast-grep` / `test:ast-grep`, a CI step, and an ast-grep pass in check-changed-code-quality. - Add flaky-test rules (wall-clock reads, real-time waits, polling loops, unquarantined skips, unexplained timeout bumps), baselined by a count ratchet. * Enforce flaky-test ratchet on changed files; refresh baseline * docs(agents): keep custom-rule details out of AGENTS.md * Resolve ast-grep from the repo so gate scans of other roots work
55 lines
2.4 KiB
TypeScript
55 lines
2.4 KiB
TypeScript
import { existsSync } from 'node:fs'
|
|
import { resolve } from 'node:path'
|
|
import { defineConfig } from 'vitest/config'
|
|
import baseConfig from './vitest.config'
|
|
import { nodeRuntimePool } from './scripts/vitest-node-runtime-pool'
|
|
|
|
const contracts = [
|
|
'src/shared/tui-agent-permission-choice.test.ts',
|
|
'src/renderer/src/components/settings/agent-permission-conversion-persistence.test.tsx',
|
|
'src/main/runtime/rpc/methods/repo.test.ts',
|
|
'src/renderer/src/components/tab-bar/use-new-tab-agent-menu-host-preferences.test.tsx',
|
|
'src/main/sqlite/sync-database.test.ts',
|
|
'src/main/runtime/orchestration/db/row-column-lists.test.ts',
|
|
'src/shared/native-chat-tool-attribution-allocation.test.ts',
|
|
'src/shared/native-chat-tool-pairing.performance.test.ts',
|
|
'src/main/codex-usage/codex-rollout-file-lifetime.test.ts',
|
|
'src/main/codex-usage/scanner-incremental-append.test.ts',
|
|
'src/main/usage/jsonl-file-reader.test.ts',
|
|
'src/main/usage/jsonl-file-snapshot.test.ts',
|
|
'src/renderer/src/components/editor/rich-markdown-list-tokenizers.test.ts',
|
|
'src/renderer/src/components/editor/rich-markdown-lowlight-cache.test.ts',
|
|
'src/renderer/src/components/terminal-pane/agent-completion-coordinator-queued-inspection-disposal.test.ts',
|
|
'src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler-queue-retention.test.ts',
|
|
'src/renderer/src/store/store-identity-churn-probe.test.ts',
|
|
'config/scripts/app-store-performance-plugin.test.mjs',
|
|
'config/scripts/quadratic-buffer-concat-plugin.test.mjs',
|
|
'src/main/claude-usage/scanner-incremental-append.test.ts',
|
|
'src/main/claude-usage/store-checkpoint-persistence.test.ts'
|
|
]
|
|
// Wall-clock budgets with no CI job yet; `pnpm test:perf:benchmarks` runs them.
|
|
const benchmarks = [
|
|
'src/renderer/src/components/editor/monaco-content-sync.bench.ts',
|
|
'src/renderer/src/components/editor/monaco-content-sync.undo-retention.bench.ts'
|
|
]
|
|
|
|
for (const contract of [...contracts, ...benchmarks]) {
|
|
if (!existsSync(resolve(contract))) {
|
|
throw new Error(`Missing performance contract: ${contract}`)
|
|
}
|
|
}
|
|
|
|
export default defineConfig({
|
|
...baseConfig,
|
|
test: {
|
|
...baseConfig.test,
|
|
// Project-level includes otherwise override this contract-only selection.
|
|
projects: undefined,
|
|
...(process.versions.bun ? { pool: 'node-runtime', poolRunner: nodeRuntimePool } : {}),
|
|
include: contracts,
|
|
benchmark: { include: benchmarks },
|
|
fileParallelism: false,
|
|
retry: 0
|
|
}
|
|
})
|