Reduce repeated CI setup and overlap mobile typechecks (#25359)

* Measure remaining CI import, diagnostic and checkout savings

* Qualify remaining CI candidates on hosted runners

* Qualify independent mobile typecheck overlap on Actions

* Keep explicit RPC test registries from loading unused methods

* Qualify complete RPC registry cohort and mobile cancellation

* Promote measured CI setup and typecheck savings

* Recognize the shared RPC test guard in lint policy

* Align the mobile barrier contract with independent typechecks
This commit is contained in:
Neil
2026-10-04 19:58:35 -07:00
committed by GitHub
parent e884681eca
commit 1bec53ceb2
164 changed files with 398 additions and 38 deletions
+2 -2
View File
@@ -120,8 +120,6 @@ jobs:
background: true
run: node node_modules/typescript/bin/tsc --noEmit
- wait: production-types
# Why a ratchet and not the raw typecheck: mobile/tsconfig.json excludes test files, so until
# tsconfig.test.json existed nothing checked them, and at introduction 127 of the 632 had
# drifted. This fails when a test file that checks today stops checking, when a test leaves
@@ -129,6 +127,8 @@ jobs:
- name: Typecheck tests (ratchet)
run: node scripts/check-tests-typecheck-ratchet.mjs
- wait: production-types
# This includes the bridged replay of the whole recording corpus, which used to be a second
# step of its own behind RPC_FOUNDATION_BRIDGE=1. A gate nobody can forget to set is the point:
# it fails when a divergence class grows, when a divergence lands in no class at all, or when
+11
View File
@@ -84,6 +84,17 @@ jobs:
- uses: actions/checkout@v6
with:
persist-credentials: false
# Keep complete server/test trees; missing future imports fail the unchanged builds.
sparse-checkout: |
.github
config
native
resources
tests
src/main
src/shared
src/relay
src/types
- name: Self-test the provisioning scripts before touching the machine
shell: pwsh
run: |
+7
View File
@@ -65,6 +65,13 @@
"anti-slop/no-module-mocking": "off"
}
},
// Test-only side effect for explicit RPC registries; real catalog tests never import it.
{
"files": ["**/src/main/runtime/rpc/unused-default-rpc-methods.test-fixture.ts"],
"rules": {
"anti-slop/no-module-mocking": "off"
}
},
// The exemptions below are file-scoped rather than inline `oxlint-disable` comments
// because the root lint scan does not load this plugin, so an inline directive naming
// an anti-slop rule always reads back as an unused directive there.
@@ -8,10 +8,14 @@
* Counting passes patch `Map`/`Set`/`Object.assign`/`Object.values`, which deoptimizes them, so
* counts and timings are taken in separate passes and never from the same run.
*
* Run: ORCA_BACKGROUND_LAUNCH=1 pnpm exec vitest run --config config/vitest.agent-status-benchmark.config.ts
*
* Scale mirrors the reporting user rather than the 100-worktree fixture in
* docs/reference/renderer-agent-status-performance.md: 423 worktrees, 634 terminal tabs.
*/
import { writeFileSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { describe, expect, it } from 'vitest'
import type { AppState } from '@/store/types'
import type { AgentStatusBatchUpdate } from '@/store/slices/agent-status'
@@ -23,6 +27,7 @@ import {
TEST_REPO
} from '@/store/slices/store-test-helpers'
import { makePaneKey } from '../../src/shared/stable-pane-id'
import { getDefaultSettings } from '../../src/shared/constants'
import {
createAgentStatusPaneRoutingIndex,
resolvePaneKeyFromRoutingIndex
@@ -39,25 +44,24 @@ const counters = { maps: 0, sets: 0, tabComparisons: 0 }
const NativeMap = globalThis.Map
const NativeSet = globalThis.Set
const nativeArrayIterator = Array.prototype[Symbol.iterator]
function withAllocationCounting<T>(run: () => T): T {
class CountingMap<K, V> extends NativeMap<K, V> {
constructor(entries?: readonly (readonly [K, V])[] | null) {
constructor(entries?: Iterable<readonly [K, V]> | null) {
super(entries)
counters.maps += 1
}
}
class CountingSet<V> extends NativeSet<V> {
constructor(values?: readonly V[] | null) {
constructor(values?: Iterable<V> | null) {
super(values)
counters.sets += 1
}
}
counters.maps = 0
counters.sets = 0
globalThis.Map = CountingMap as unknown as MapConstructor
globalThis.Set = CountingSet as unknown as SetConstructor
globalThis.Map = CountingMap
globalThis.Set = CountingSet
try {
return run()
} finally {
@@ -68,34 +72,33 @@ function withAllocationCounting<T>(run: () => T): T {
/** Tab list whose iteration is observable, so the nested-loop resolver's comparisons are countable. */
class CountingTabList<T> extends Array<T> {
[Symbol.iterator](): IterableIterator<T> {
const inner = nativeArrayIterator.call(this) as IterableIterator<T>
const wrapped: IterableIterator<T> = {
next: () => {
const result = inner.next()
if (!result.done) {
counters.tabComparisons += 1
}
return result
},
[Symbol.iterator]: () => wrapped
[Symbol.iterator](): ArrayIterator<T> {
const iterator = super[Symbol.iterator]()
const next = iterator.next.bind(iterator)
iterator.next = (...args) => {
const result = next(...args)
if (!result.done) {
counters.tabComparisons += 1
}
return result
}
return wrapped
return iterator
}
}
function buildFixture(countTabIteration: boolean) {
const store = createTestStore()
const settings = store.getState().settings ?? getDefaultSettings(tmpdir())
const tabsByWorktree: AppState['tabsByWorktree'] = {}
const unifiedTabsByWorktree: AppState['unifiedTabsByWorktree'] = {}
const worktrees = []
const worktrees: ReturnType<typeof makeWorktree>[] = []
const paneKeys: string[] = []
const owners: { tabId: string; worktreeId: string }[] = []
for (let index = 0; index < WORKTREES; index += 1) {
const worktreeId = `wt-${index}`
worktrees.push(makeWorktree({ id: worktreeId, repoId: TEST_REPO.id }))
const tabs = []
const unified = []
const tabs: ReturnType<typeof makeTab>[] = []
const unified: ReturnType<typeof makeUnifiedTab>[] = []
for (let tab = 0; tab < (index % 2 === 0 ? 1 : 2); tab += 1) {
const tabId = `tab-${index}-${tab}`
tabs.push(makeTab({ id: tabId, worktreeId, title: `Terminal ${index}-${tab}` }))
@@ -110,9 +113,7 @@ function buildFixture(countTabIteration: boolean) {
paneKeys.push(makePaneKey(tabId, LEAF_ID))
owners.push({ tabId, worktreeId })
}
tabsByWorktree[worktreeId] = countTabIteration
? (CountingTabList.from(tabs) as unknown as typeof tabs)
: tabs
tabsByWorktree[worktreeId] = countTabIteration ? CountingTabList.from(tabs) : tabs
unifiedTabsByWorktree[worktreeId] = unified
}
store.setState({
@@ -122,8 +123,8 @@ function buildFixture(countTabIteration: boolean) {
unifiedTabsByWorktree,
terminalLayoutsByTabId: {},
setGeneratedTabTitlesFromAgentPrompts: () => {},
settings: { ...store.getState().settings, tabAutoGenerateTitle: false }
} as Partial<AppState>)
settings: { ...settings, tabAutoGenerateTitle: false }
})
return { store, paneKeys, owners }
}
@@ -141,7 +142,7 @@ function per1k(value: number): number {
function runIndexedRouting(store: ReturnType<typeof createTestStore>, paneKeys: string[]): void {
for (let event = 0; event < EVENTS; event += 1) {
if (event % BATCH_SIZE === 0) {
store.setState({ agentStatusEpoch: event } as Partial<AppState>)
store.setState({ agentStatusEpoch: event })
}
const index = createAgentStatusPaneRoutingIndex(store.getState())
resolvePaneKeyFromRoutingIndex(index, paneKeys[event % paneKeys.length])
@@ -287,7 +288,8 @@ describe('agent-status hot path benchmark', () => {
}
const outputPath =
process.env.ORCA_AGENT_STATUS_BENCH_OUTPUT ?? '/tmp/agent-status-hot-path-benchmark.json'
process.env.ORCA_AGENT_STATUS_BENCH_OUTPUT ??
join(tmpdir(), 'agent-status-hot-path-benchmark.json')
writeFileSync(
outputPath,
`${JSON.stringify({ worktrees: WORKTREES, events: EVENTS, report }, null, 2)}\n`
@@ -96,13 +96,13 @@ describe('CI background step barriers', () => {
expect(steps.findIndex((step) => step.id === 'changed-code-quality')).toBeGreaterThan(install)
})
it('serializes mobile pnpm entrypoints before allocating test workers', () => {
it('joins independent mobile typechecks before allocating test workers', () => {
const steps = mobile.jobs.verify.steps
assertJoinedBefore(steps, 'production-types', (step) => step.name === 'Test')
const ratchet = steps.findIndex((step) => step.name === 'Typecheck tests (ratchet)')
const join = steps.findIndex((step) => step.wait === 'production-types')
expect(steps[ratchet].background).toBeUndefined()
expect(ratchet).toBeGreaterThan(join)
expect(ratchet).toBeLessThan(join)
})
it('waits for WebKit and the bundle before any browser tests', () => {
@@ -23,7 +23,7 @@ describe('mobile verification command ownership', () => {
}
})
it('finishes installation and joins production types before checking test types', () => {
it('finishes installation and joins both independent typechecks before tests', () => {
const installIndex = steps.findIndex((step) => step.name === 'Install dependencies')
const productionIndex = steps.findIndex((step) => step.name === 'Typecheck')
const ratchetIndex = steps.findIndex((step) => step.name === 'Typecheck tests (ratchet)')
@@ -36,7 +36,10 @@ describe('mobile verification command ownership', () => {
expect(steps[productionIndex].background).toBe(true)
expect(productionIndex).toBeLessThan(ratchetIndex)
expect(waitIndex).toBeGreaterThan(productionIndex)
expect(waitIndex).toBeLessThan(ratchetIndex)
expect(ratchetIndex).toBeLessThan(testIndex)
expect(ratchetIndex).toBeLessThan(waitIndex)
expect(waitIndex).toBeLessThan(testIndex)
expect(steps[waitIndex].if).toBeUndefined()
expect(steps[productionIndex]['continue-on-error'] ?? false).toBe(false)
expect(steps[ratchetIndex]['continue-on-error'] ?? false).toBe(false)
})
})
@@ -0,0 +1,12 @@
import { defineConfig } from 'vitest/config'
import baseConfig from './vitest.config'
export default defineConfig({
...baseConfig,
test: {
...baseConfig.test,
include: ['config/scripts/agent-status-hot-path-benchmark.ts'],
fileParallelism: false,
retry: 0
}
})
+136
View File
@@ -2383,3 +2383,139 @@ These screens reject the examined changes; they do not establish that every
future optimization is exhausted. Shorter admitted jobs and one shared preflight
reduce demand on the existing runner allowance. They do not increase that
allowance or prove lower queue delay under different account traffic.
## October 5 remaining import, diagnostic and checkout work
The [hosted comparison](https://github.com/stablyai/orca/actions/runs/37247027814)
used three alternating pairs per treatment at source
`b18b174cd463f852051dc22adc8478b82dee4d1f`. Focused tests ran as fresh one-worker
processes on the four-core, 16 GB Linux ARM runner with Node 24.21.0, pnpm 12.8.1
and Vitest 4.1.11; persisted transforms and Node compile caches were disabled.
| Work | Original median | Candidate median | Median paired saving |
| ------------------------------------------------- | --------------- | ---------------- | -------------------- |
| Real incumbent-process test file | 16.478s | 5.976s | 10.520s |
| Commentable-line lifecycle test file | 9.595s | 6.880s | 2.714s |
| Agent-status diagnostic plus semantic test cohort | 11.547s | 8.235s | 3.361s |
| Windows x64 SSH checkout | 22.052s | 16.884s | 5.020s |
| Windows ARM SSH checkout | 46.758s | 33.910s | 13.456s |
The incumbent cases own distinct sockets, shim directories and process groups.
Running them concurrently preserves all nine outcomes and every real five-second
lsof deadline. Both original and candidate still reject an unreaped helper and
false claims of clean enumeration. Fault receipts prove the actual modified probe
was imported and all owned helpers, groups, sockets and directories were cleaned.
The Windows platform gate retains all nine skips.
The renderer lifecycle tests keep their six original bodies and real decorator,
zone and model behavior. Only the unrelated saved-note delivery menu is replaced
by a typed throwing facade. Its cleanup assertion rejects unexpected use. Actual
faults in memoization, value-equal refreshes and model replacement still fail their
original assertions; a real menu call fails the facade and the cleanup guard.
The agent-status benchmark reports counters and timings but asserts only a
nonempty status map and positive elapsed time. It remains available through
`ORCA_BACKGROUND_LAUNCH=1 pnpm exec vitest run --config config/vitest.agent-status-benchmark.config.ts`.
Ordinary discovery removes exactly that reporting test. Its 15 meaningful routing,
index-retention and batch cases remain unchanged. Three real production faults
pass the old reporting test and fail those retained contracts. Manual execution
preserves its JSON schema and all nine deterministic counters at 423 worktrees,
634 tabs and 1,000 events.
Windows SSH hosts retain complete main, shared, relay, type, configuration,
native, resource and test trees, plus root files. Six actual checkouts per
architecture pinned candidate source `ce69b84d675b0a8b4763b03329c9d6549ac723f1`;
all 16,568 retained files match the full checkout's contents, modes and index.
The original 5,209 required inputs and six further inputs added by the source
rebase are present. Local full/sparse builds match 54 generated artifacts;
explicit test discovery is identical. Missing imported source, a named test or a
required descriptor still fails. Full Windows native/provisioning lanes remain
a separate qualification gate.
Test timings exclude dependency setup, checkout and queues. Checkout timings
include the action and shell/runner observation boundaries but exclude later
builds and provisioning. These scoped savings must not be summed or treated as
measured changes to full-shard occupancy or PR latency.
## October 5 mobile typecheck overlap
The [hosted comparison](https://github.com/stablyai/orca/actions/runs/37249591578)
ran three alternating pairs on the four-core, 16 GB Linux ARM runner, with Node
24.21.0 and TypeScript 6.0.3. The production compiler and test-typecheck ratchet
use installed tools after dependency installation. Both resolved compiler
programs have `noEmit: true`, with no incremental, composite or build-info writes.
The change moves the existing unconditional production join after the foreground
ratchet and before tests; it changes no compiler command or failure policy.
| Complete typecheck stage | Original serial | Overlapped |
| ------------------------ | --------------- | ---------- |
| Pair 1 | 68.284s | 41.582s |
| Pair 2, reversed order | 65.385s | 41.042s |
| Pair 3 | 64.240s | 40.418s |
| Median | 65.385s | 41.042s |
The median paired saving is 24.343 seconds, or 37.2% of this stage. The stage
bracket includes native background/wait boundaries and observation overhead,
but excludes dependency installation and the later test suite. All six stages
preserve the three workers' compiler/ratchet verdicts and stdout/stderr hashes.
The test compiler's existing diagnostics remain subject to the unchanged
ratchet. Neither compiler attempted native loading or recorded filesystem
mutations. Maximum aggregate owned-process RSS sampled every 200 milliseconds
was 5.137 GiB; this is a sampled value rather than a kernel peak. The ratchet now
runs even when the concurrently running production compiler later fails.
Two real, independent type faults still prevent tests from starting. The
production fault preserves the unaffected ratchet and child output; the test
fault preserves the production output and fails the ratchet. Their explicit
control receipts pass even though their intentionally failing jobs are allowed
to finish collecting evidence.
The separate [external cancellation control](https://github.com/stablyai/orca/actions/runs/37251289372)
held the two real installed compiler entrypoints before checking, while retaining
the production-background/ratchet-foreground topology. All three owned workers
were observed alive 14.275 seconds before the cancellation request. Both native
step outcomes became cancelled, tests did not start, and the runner's final
cleanup log names all three exact worker PIDs. The attempted earlier assertion
of PID absence failed: GitHub performs orphan cleanup after the always-tail
observer and artifact upload. Post-cleanup absence was not observed and is not
claimed. This control supplies no compiler-completion or timing measurement.
## October 5 explicit RPC registry test setup
The [hosted comparison](https://github.com/stablyai/orca/actions/runs/37251277897)
ran three alternating pairs of the complete 156-file mixed cohort on source
`d1e08ddd666e3099fc51c79f01f0305f5162186d`, using four workers on the four-core
Linux ARM runner, Node 24.21.0, pnpm 12.8.1 and Vitest 4.1.11. Persisted module
transforms and Node compile caches were disabled. All 153 candidate test files
pass explicit method lists to their dispatchers. A shared throwing fixture
prevents those tests from loading the unused default method catalog and rejects
any accidental iteration of it. The three real catalog subjects remain
unchanged and run beside the candidate subjects in every arm.
| Complete cohort process | Original | Candidate | Paired saving |
| ----------------------- | -------- | --------- | ------------- |
| Pair 1 | 142.184s | 89.238s | 52.946s |
| Pair 2, reversed order | 142.833s | 88.933s | 53.900s |
| Pair 3 | 141.274s | 90.186s | 51.088s |
| Median | 142.184s | 89.238s | 52.946s |
The median paired saving is 37.2% of this fixed cohort. All six arms preserve
the complete ordered ledger, including duplicate parameterized case names:
1,469 passes and one existing setup-dependent skip, totaling 1,470 outcomes.
The real catalog subjects contribute 63 of those cases. Candidate bodies and
assertions are unchanged. One file at its line limit uses the dispatch method's
parameter type in place of its equivalent type-only import; its emitted code
matches the measured candidate.
Seventeen control invocations preserve actual terminal-handler fault detection,
reject unexpected default-catalog consumption, and still detect a missing real
catalog registration. A plain consumption counter prevents global mock-history
resets from erasing the guard; actual `clearAllMocks` and `resetAllMocks` controls
demonstrate that distinction and preserve unrelated call history. The isolated
driver restores all source files after success, faults and a real cancellation.
Independent review also confirms all 153 candidate sources, the fixture, three
catalog subjects and declared qualification inputs survive the rebase unchanged.
These are fresh-process wall times for this cohort, excluding dependency setup,
queues and other test shards. They do not measure full-shard balance, total PR
runner demand, or a change to the dashboard's PR runtime percentiles.
@@ -1,3 +1,4 @@
import '../runtime/rpc/unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it } from 'vitest'
import { AiVaultHandler } from '../../relay/ai-vault-handler'
import type { RelayDispatcher } from '../../relay/dispatcher'
@@ -1,3 +1,4 @@
import '../../runtime/rpc/unused-default-rpc-methods.test-fixture'
import { createHash } from 'node:crypto'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { AGENT_JOURNAL_THREAD_SCOPE } from '../../../shared/agent-session-journal-types'
@@ -1,3 +1,4 @@
import './rpc/unused-default-rpc-methods.test-fixture'
/**
* `browser.screencast` is the one stream a phone, a paired desktop client, the web client and the
* CLI all open against the same host page. Stamping every subscriber as the mobile driver put the
@@ -1,3 +1,4 @@
import './rpc/unused-default-rpc-methods.test-fixture'
import { mkdir, mkdtemp, rm } from 'node:fs/promises'
import { homedir, tmpdir } from 'node:os'
import { join } from 'node:path'
@@ -1,3 +1,4 @@
import './rpc/unused-default-rpc-methods.test-fixture'
import { settledWriteStub } from '../providers/settled-pty-write-stub'
import { mkdtempSync, rmSync } from 'node:fs'
import { tmpdir } from 'node:os'
@@ -1,3 +1,4 @@
import './rpc/unused-default-rpc-methods.test-fixture'
import { settledWriteStub } from '../providers/settled-pty-write-stub'
import { spawn } from 'node:child_process'
import { existsSync, mkdtempSync, rmSync } from 'node:fs'
@@ -1,3 +1,4 @@
import './unused-default-rpc-methods.test-fixture'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { z } from 'zod'
import type { OrcaRuntimeService } from '../orca-runtime'
@@ -1,3 +1,4 @@
import './unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { z } from 'zod'
import { RpcDispatcher } from './dispatcher'
@@ -1,3 +1,4 @@
import './unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { z } from 'zod'
import type { PersistedUIState } from '../../../shared/persisted-ui-state-types'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
/**
* The pane a caller reserves for the terminal `agent.launch` creates.
*
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
/**
* A terminal launch that fails before its spawn is requested — no launch command, runtime
* unavailable — created nothing, so a named operation settles as failed with its real cause.
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
/**
* Replay safety for `agent.launch`, against the real durable ledger.
*
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
/**
* The chat session a caller reserves for the structured launch `agent.launch` creates.
*
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import {
AGENT_SESSION_HOST_AUTHORITY_RUNTIME_CAPABILITY,
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { AI_VAULT_AGENTS } from '../../../../shared/ai-vault-types'
import { RpcDispatcher } from '../dispatcher'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
/**
* The runtime end of the list contract: an old client that sends no params must
* keep receiving the authority's complete list through the legacy field while
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { BROWSER_CLIENT_HOST_RUNTIME_CAPABILITY } from '../../../../shared/protocol-version'
import type { BrowserClientHostedPageInventory } from '../../../../shared/browser-client-host-protocol'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { BROWSER_CLIENT_HOST_RUNTIME_CAPABILITY } from '../../../../shared/protocol-version'
import { getBrowserHostLeaseRegistry } from '../../browser-host-lease-registry-instance'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { BROWSER_CLIENT_HOST_RUNTIME_CAPABILITY } from '../../../../shared/protocol-version'
import { getBrowserHostLeaseRegistry } from '../../browser-host-lease-registry-instance'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import {
BROWSER_CLIENT_HOST_RUNTIME_CAPABILITY,
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
const mocks = vi.hoisted(() => ({
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import {
BROWSER_CLIENT_HOST_RUNTIME_CAPABILITY,
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { getDefaultUIState } from '../../../../shared/constants'
import { PAIRING_LOCAL_UI_FIELDS } from '../../../../shared/pairing-local-ui-fields'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { getDefaultUIState } from '../../../../shared/constants'
import type { OrcaRuntimeService } from '../../orca-runtime'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { getDefaultUIState } from '../../../../shared/constants'
import { omitPairingLocalUiFields } from '../../../../shared/pairing-local-ui-fields'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest, RpcResponse } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import { RpcDispatcher } from '../dispatcher'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
/**
* #12547: `files.listAll` did not declare `maxResults`, so "the client names its cap and a full page
* means there is more" was wired only on the Electron IPC hop. Web and mobile were saved incidentally,
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { remoteRpcContentBudget } from '../../../../shared/remote-rpc-content-budget'
import type { OrcaRuntimeService } from '../../orca-runtime'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { RpcRequest } from '../core'
import { RpcDispatcher } from '../dispatcher'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { expect, it, vi } from 'vitest'
import { WatcherProcessFailure } from '../../../ipc/parcel-watcher-process-failure'
import type { OrcaRuntimeService } from '../../orca-runtime'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
// Why: git.diff, git.branchDiff and git.commitDiff all return a GitDiffResult, so capping only the
// first would leave the other two able to kill a remote socket.
import { describe, expect, it, vi } from 'vitest'
+1
View File
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
// Split from github.test.ts to keep it under its line cap.
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { ORCHESTRATION_CONTRACT_VERSION } from '../../../../shared/protocol-version'
import {
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { ORCHESTRATION_CONTRACT_VERSION } from '../../../../../../shared/protocol-version'
import { OrcaRuntimeService } from '../../../../orca-runtime'
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { ORCHESTRATION_CONTRACT_VERSION } from '../../../../../../shared/protocol-version'
import type { RuntimeRpcResponse } from '../../../../../../shared/runtime-rpc-envelope'
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import {
ORCHESTRATION_CONTRACT_VERSION,
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { mkdtempSync, rmSync } from 'node:fs'
import { mkdtemp, rm, writeFile } from 'node:fs/promises'
import { tmpdir } from 'node:os'
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import {
ORCHESTRATION_CONTRACT_VERSION,
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { ORCHESTRATION_CONTRACT_VERSION } from '../../../../../../shared/protocol-version'
import type { RuntimeTerminalSummary } from '../../../../../../shared/runtime-types'
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it } from 'vitest'
import type { RpcRequest } from '../../../core'
import { ORCHESTRATION_METHODS } from '../../orchestration'
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it, vi } from 'vitest'
import type { RpcContext, RpcRequest } from '../../../core'
import { ORCHESTRATION_METHODS } from '../../orchestration'
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it, vi } from 'vitest'
import type { RuntimeRpcResponse } from '../../../../../../shared/runtime-rpc-envelope'
import {
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { mkdtempSync, rmSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
@@ -1,3 +1,4 @@
import '../../../unused-default-rpc-methods.test-fixture'
import { mkdtempSync, rmSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { OrcaRuntimeService } from '../../orca-runtime'
import { RpcDispatcher } from '../dispatcher'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { STRUCTURED_AGENT_SESSION_RUNTIME_CAPABILITY } from '../../../../shared/protocol-version'
import type { OrcaRuntimeService } from '../../orca-runtime'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import {
CLAUDE_STRUCTURED_AGENT_SESSION_RUNTIME_CAPABILITY,
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { BROWSER_CLIENT_HOST_RUNTIME_CAPABILITY } from '../../../../shared/protocol-version'
import type { OrcaRuntimeService } from '../../orca-runtime'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import { SESSION_TABS_RETIREMENT_PROOF_DELTA_RUNTIME_CAPABILITY } from '../../../../shared/protocol-version'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import type { RuntimeMobileSessionTabsResult } from '../../../../shared/runtime-types'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import { RuntimeSubscriptionRegistry } from '../../runtime-subscription-registry'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
+1
View File
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { dirname, join } from 'node:path'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { AGENT_JOURNAL_THREAD_SCOPE } from '../../../../shared/agent-session-journal-types'
// A chat at rest, through the RPC surface a client actually calls: opening it starts nothing, what
// it can answer without an agent it answers, and the first send is what starts one.
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
// `agentSession.hold` / `release` are kept answering for clients that still send them, and do
// nothing else: a view never starts or keeps an agent.
//
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
// The create route's pre-commit boundary: a failure before `attach` must reach the client as a
// refusal it can classify, and a failure at or after `attach` must not.
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
// A transcript stream ends when its client says so: the host drops that subscriber, so nothing is
// derived or sent for it any more, and a sibling stream of the same session keeps going.
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
/**
* A chat tab's pointer to the conversation it shows, driven end to end: a real record store on disk,
* the real structured host, the real runtime, and the real RPC handlers. Only the provider is faked.
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../../unused-default-rpc-methods.test-fixture'
import { afterEach, describe, expect, it } from 'vitest'
import type { OrcaRuntimeService } from '../../../orca-runtime'
import { RpcDispatcher } from '../../dispatcher'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import type { OrcaRuntimeService } from '../../orca-runtime'
import { RpcDispatcher } from '../dispatcher'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { OrcaRuntimeService } from '../../orca-runtime'
@@ -1,3 +1,4 @@
import '../unused-default-rpc-methods.test-fixture'
import { describe, expect, it, vi } from 'vitest'
import { RpcDispatcher } from '../dispatcher'
import type { RpcRequest } from '../core'

Some files were not shown because too many files have changed in this diff Show More