test: remove low-value test inventories and wording fences (#36114)

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
This commit is contained in:
OrcaWin
2026-10-29 15:17:40 -07:00
committed by GitHub
co-authored by OrcaWin
parent 3b83d3d260
commit fee06ab9c3
9 changed files with 2 additions and 539 deletions
-2
View File
@@ -5383,7 +5383,6 @@
"src/main/runtime/rpc/methods/orchestration-worker-release-incarnation-fallback.test.ts": 3771,
"src/main/runtime/rpc/methods/orchestration-worker-start-mode-selection.test.ts": 3346,
"src/main/runtime/rpc/methods/orchestration-worker-start-mode.test.ts": 722,
"src/main/runtime/rpc/methods/orchestration-worker-start-receipt-wording.test.ts": 656,
"src/main/runtime/rpc/methods/orchestration-worker-start-registered-agent.test.ts": 1079,
"src/main/runtime/rpc/methods/orchestration-worker-support-unknown.test.ts": 839,
"src/main/runtime/rpc/methods/orchestration/cli-runtime-boundary.test.ts": 3319,
@@ -12650,7 +12649,6 @@
"src/shared/project-identity-succession.test.ts": 47,
"src/shared/promise-settlement-waiters.test.ts": 179,
"src/shared/protocol-compat.test.ts": 121,
"src/shared/protocol-version-published-capabilities.test.ts": 121,
"src/shared/pty-delivery-diagnostics.test.ts": 64,
"src/shared/pty-liveness-verdict.test.ts": 33,
"src/shared/pty-owner-backend.test.ts": 45,
@@ -1,17 +0,0 @@
import { readdirSync, readFileSync } from 'node:fs'
import { createRequire } from 'node:module'
import { dirname, join } from 'node:path'
import { expect, it } from 'vitest'
// Bun names builtins `native:L:C`; Vitest resolved that against the repo root, read the `native/`
// directory as a source map and crashed the run (EISDIR), hiding the real failure. The patch
// reads source maps only from files; an upgrade that drops it fails here.
it('reads stack-frame source maps only from files', () => {
const vitestRoot = dirname(createRequire(import.meta.url).resolve('vitest/package.json'))
const chunks = join(vitestRoot, 'dist', 'chunks')
const cliApi = readdirSync(chunks).find((name) => /^cli-api\..+\.js$/.test(name))
expect(cliApi).toBeDefined()
expect(readFileSync(join(chunks, String(cliApi)), 'utf8')).toContain(
'existsSync(file) && statSync(file).isFile()'
)
})
@@ -40,13 +40,6 @@ vi.mock('../../shared/runtime-environments', async (importOriginal) => ({
}))
import { listDesktopBrowserBridgeCandidates } from './desktop-browser-bridge-wiring'
import en from '../../renderer/src/i18n/locales/en.json'
import {
DESKTOP_BROWSER_BRIDGE_ROUTING_OPT_OUT_LABEL,
DESKTOP_BROWSER_BRIDGE_ROUTING_SETTING_LABEL,
DESKTOP_BROWSER_BRIDGE_SETTING_LABEL,
DESKTOP_BROWSER_BRIDGE_UNAVAILABLE_MESSAGE
} from '../../shared/desktop-browser-bridge-protocol'
const host = (id: string, extra: Partial<SshTarget> = {}): SshTarget => ({
id,
@@ -93,22 +86,3 @@ describe('which managed hosts may attach the desktop browser bridge', () => {
expect(listDesktopBrowserBridgeCandidates('/user-data', connected)).toEqual([])
})
})
// #31421: with the switch on, an unrouted host was told only to turn that switch on.
describe('the error a host gets while no desktop is attached', () => {
it('names the routing setting as the desktop UI labels it', () => {
const copy = en.settings.browser.sshWorkspaceRouting
expect(DESKTOP_BROWSER_BRIDGE_ROUTING_SETTING_LABEL).toBe(
`Settings › ${en.auto.components.settings.Settings.c46215ea03} › ${copy.rowTitle}`
)
expect(`${DESKTOP_BROWSER_BRIDGE_ROUTING_OPT_OUT_LABEL}:`).toBe(copy.disabledHosts)
for (const label of [
DESKTOP_BROWSER_BRIDGE_SETTING_LABEL,
DESKTOP_BROWSER_BRIDGE_ROUTING_SETTING_LABEL,
DESKTOP_BROWSER_BRIDGE_ROUTING_OPT_OUT_LABEL,
copy.optionHost
]) {
expect(DESKTOP_BROWSER_BRIDGE_UNAVAILABLE_MESSAGE).toContain(label)
}
})
})
@@ -1,6 +1,4 @@
/** Chat and terminal agents must receive equivalent preambles, pointers and guides, apart from address and chat wording. */
import { readdirSync, readFileSync } from 'node:fs'
import { join } from 'node:path'
/** Chat and terminal agents must receive equivalent preambles and pointers, apart from address and chat wording. */
import { afterAll, afterEach, describe, expect, it, vi } from 'vitest'
import {
getAppEnvironment,
@@ -20,11 +18,9 @@ import { OrchestrationDb } from './db'
import { formatMessagePointer } from './formatter'
import { OrchestrationStructuredMailboxPointerDelivery } from './structured-mailbox-pointer-delivery'
import {
buildDispatchPreamble,
CHAT_REDISPATCH_PARAGRAPH as CHAT_REDISPATCH,
TERMINAL_REDISPATCH_PARAGRAPH as TERMINAL_REDISPATCH
} from './preamble'
import { ORCA_SESSION_ID_AS_ADDRESS } from '../../../shared/orca-session-id-wording-test-fixture'
const sent = vi.hoisted((): { preambles: string[] } => ({ preambles: [] }))
vi.mock('../rpc/methods/orchestration-structured-worker-session', () => ({
@@ -191,50 +187,3 @@ describe('a chat agent and a terminal agent see the same text but for how each i
}
)
})
describe('agent-read text about an Orca session ID', () => {
const guideDir = join(process.cwd(), 'skill-guides')
const guide = [
join(guideDir, 'orchestration.md'),
...readdirSync(join(guideDir, 'orchestration', 'references')).map((name) =>
join(guideDir, 'orchestration', 'references', name)
)
]
// Refusals an agent reads: the string literals of the files that word them.
const refusalSources = [
'orchestration/orchestration-party.ts',
'rpc/orchestration-session-caller.ts',
'rpc/methods/orchestration/messaging/session-recipient.ts',
'rpc/methods/orchestration/caller-show.ts'
].flatMap(
(file) =>
readFileSync(join(process.cwd(), 'src', 'main', 'runtime', file), 'utf8').match(
/'(?:[^'\\\n]|\\.)*'|`(?:[^`\\]|\\.)*`/g
) ?? []
)
it.each([
['the guide and its references', () => guide.map((file) => readFileSync(file, 'utf8'))],
[
'the preamble, for every pairing of kinds',
() =>
[CHAT_ADDRESS, 'term_coord'].flatMap((coordinatorHandle) =>
[CHAT_ADDRESS, TERMINAL_HANDLE].map((workerHandle) =>
buildDispatchPreamble({
taskId: 'task_1',
dispatchId: 'ctx_1',
taskSpec: 'do it',
coordinatorHandle,
workerHandle,
heartbeatIntervalMinutes: 5
})
)
)
],
['the refusals that name a session', () => refusalSources]
])('never calls it an address in %s', (_where, texts) => {
for (const text of texts()) {
expect(text).not.toMatch(ORCA_SESSION_ID_AS_ADDRESS)
}
})
})
@@ -1,113 +0,0 @@
/** Pin full fallback sentences and orchestration vocabulary; substring or mocked-CLI assertions missed corrupted wording. */
import { describe, expect, it } from 'vitest'
import {
decideWorkerStartMode,
downgradeWorkerStartModeForHost,
type WorkerStartModeReceipt
} from './orchestration-worker-start-mode'
const STRUCTURED_PREFERENCE = {
experimentalNativeChat: true
} as const
function structuredReceipt(): WorkerStartModeReceipt {
const receipt = decideWorkerStartMode({
params: { agent: 'claude' },
settings: STRUCTURED_PREFERENCE
})
expect(receipt.mode).toBe('structured')
return receipt
}
function downgradeSentence(why: string): string {
return `Your default is a structured chat session, but ${why}; started a terminal agent worker instead.`
}
describe('worker-start mode receipt wording', () => {
it('states the settings default when the user has no structured preference', () => {
expect(decideWorkerStartMode({ params: { agent: 'claude' }, settings: null })).toEqual({
mode: 'terminal',
preferred: 'terminal',
reason: 'user_default',
detail: 'Started a terminal agent worker, the default for new agent tabs in your settings.'
})
})
it('states the settings default when the launch is structured', () => {
expect(structuredReceipt()).toEqual({
mode: 'structured',
preferred: 'structured',
reason: 'user_default',
detail:
'Started a structured chat session worker, the default for new agent tabs in your settings.'
})
})
it.each([
[
'remote execution host',
{ agent: 'claude', on: 'server-1' },
'remote_execution_host',
'this worker runs on a remote execution host'
],
[
'reused terminal',
{ agent: 'claude', terminal: 'term_1' },
'reused_terminal',
'--terminal reuses a running terminal agent'
],
[
'agent with no structured session',
{ agent: 'gemini' },
'agent_without_structured_session',
'this agent has no structured session'
]
])('names the %s downgrade in full', (_label, params, reason, why) => {
expect(decideWorkerStartMode({ params, settings: STRUCTURED_PREFERENCE })).toEqual({
mode: 'terminal',
preferred: 'structured',
reason,
detail: downgradeSentence(why)
})
})
it.each([
[
'an unanswered host',
null,
'structured_support_unknown',
'the execution host has not established structured session support'
],
[
'a host refusal with no reason',
{ supported: false },
'structured_unsupported_on_host',
'the execution host cannot create one here'
],
[
'a WSL workspace',
{ supported: false, reason: 'wsl' as const },
'wsl_execution_runtime',
'this workspace runs under WSL'
],
[
'a remote workspace',
{ supported: false, reason: 'remote' as const },
'remote_execution_host',
'this worker runs on a remote execution host'
]
])('names %s in full', (_label, support, reason, why) => {
expect(downgradeWorkerStartModeForHost(structuredReceipt(), support)).toEqual({
mode: 'terminal',
preferred: 'structured',
reason,
detail: downgradeSentence(why)
})
})
it('leaves a settled terminal receipt untouched', () => {
const terminal = decideWorkerStartMode({ params: { agent: 'claude' }, settings: null })
expect(downgradeWorkerStartModeForHost(terminal, null)).toEqual(terminal)
})
})
-52
View File
@@ -1,21 +1,12 @@
import { describe, expect, it } from 'vitest'
import { z, type ZodType } from 'zod'
import {
BrowserTarget,
OptionalBoolean,
OptionalFiniteNumber,
OptionalPlainString,
OptionalPositiveInt,
OptionalString
} from '../../../shared/rpc-contract/rpc-param-primitives'
import {
InterceptEnable,
Screenshot,
Scroll,
TabClose,
TabSwitch,
Wait
} from '../../../shared/rpc-contract/browser-params'
import { TERMINAL_METHODS } from './methods/terminal'
import { TERMINAL_ORPHAN_METHODS } from './methods/terminal-orphan'
import { WORKTREE_METHODS } from './methods/worktree'
@@ -56,16 +47,6 @@ describe('RPC optional pipe schemas', () => {
expectParses(schema, {})
})
it('accepts omitted browser optional fields while required fields are present', () => {
expectParses(Scroll, { direction: 'down' })
expectParses(Screenshot, {})
expectParses(TabSwitch, { page: 'page-1' })
expectParses(TabClose, {})
expectParses(Wait, {})
expectParses(InterceptEnable, {})
expectParses(BrowserTarget, {})
})
it('accepts omitted terminal and worktree optional fields while required fields are present', () => {
expectParses(methodParams(TERMINAL_METHODS, 'terminal.split'), { terminal: 'terminal-1' })
expectParses(methodParams(TERMINAL_METHODS, 'terminal.split'), {
@@ -169,37 +150,4 @@ describe('RPC optional pipe schemas', () => {
expectRejects(list, { handles: [''] })
expectRejects(list, { handles: Array.from({ length: 65 }, (_, index) => `term-${index}`) })
})
it('accepts worktree.create payloads sent by the previous mobile protocol', () => {
const create = methodParams(WORKTREE_METHODS, 'worktree.create')
expectParses(create, {
repo: 'id:repo-github',
name: 'fix-mobile-tasks',
displayName: 'Fix mobile tasks',
setupDecision: 'run',
activate: true,
startupDraft: 'https://github.com/acme/app/pull/123',
createdWithAgent: 'codex',
linkedPR: 123,
baseBranch: 'origin/main',
compareBaseRef: 'origin/main',
branchNameOverride: 'feature/mobile-tasks',
pushTarget: { remoteName: 'origin', branchName: 'feature/mobile-tasks' }
})
expectParses(create, {
repo: 'id:repo-gitlab',
name: 'mr-7',
linkedGitLabMR: 7,
sparseCheckout: { directories: ['mobile'], presetId: 'mobile' },
comment: 'keep mobile parity'
})
expectParses(create, {
repo: 'id:repo-linear',
name: 'eng-42',
linkedLinearIssue: 'ENG-42',
linkedLinearIssueWorkspaceId: 'workspace-1',
linkedLinearIssueOrganizationUrlKey: 'acme'
})
})
})
@@ -1,9 +1,7 @@
import { readdirSync, readFileSync } from 'node:fs'
import { fileURLToPath } from 'node:url'
import { renderToStaticMarkup } from 'react-dom/server'
import { describe, expect, it, vi } from 'vitest'
import type { WslHostDistro } from '../../../../shared/wsl-host-types'
import { AddWslHostFormPanel, canAddWslDistro, wslDistroStateLabel } from './AddWslHostFormPanel'
import { AddWslHostFormPanel } from './AddWslHostFormPanel'
vi.mock('@/components/ui/dialog', () => ({
DialogHeader: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,
@@ -17,14 +15,6 @@ const debian: WslHostDistro = { name: 'Debian', state: 'stopped', version: 2, en
const legacy: WslHostDistro = { name: 'Legacy', state: 'running', version: 1, environmentId: null }
const added: WslHostDistro = { ...ubuntu, name: 'Arch', environmentId: 'wsl:arch' }
const LOCALES_DIR = fileURLToPath(new URL('../../i18n/locales/', import.meta.url))
const LOCALE_FILES = readdirSync(LOCALES_DIR).filter((file) => file.endsWith('.json'))
function readLocaleDescription(file: string): string {
const catalog = JSON.parse(readFileSync(`${LOCALES_DIR}${file}`, 'utf8'))
return String(catalog.auto.components.sidebar.AddWslHostFormPanel.description)
}
function render(props: Partial<Parameters<typeof AddWslHostFormPanel>[0]> = {}): string {
return renderToStaticMarkup(
<AddWslHostFormPanel
@@ -45,58 +35,6 @@ function render(props: Partial<Parameters<typeof AddWslHostFormPanel>[0]> = {}):
}
describe('AddWslHostFormPanel', () => {
it('labels each distro and refuses WSL 1 and already-added ones', () => {
expect(wslDistroStateLabel(ubuntu)).toBe('Running')
expect(wslDistroStateLabel(debian)).toBe('Stopped')
expect(wslDistroStateLabel(legacy)).toBe('WSL 1 · not supported')
expect(wslDistroStateLabel(added)).toBe('Already a host')
expect([ubuntu, debian, legacy, added].map(canAddWslDistro)).toEqual([true, true, false, false])
})
it('says bridge projects move to the host on their own, and how to bring one back', () => {
// Verify bug 9: "keep working as they are" and "until you move them" both contradicted the
// automatic mover, which moves them once their terminals are idle.
const html = render()
expect(html).not.toContain('Use it for new projects')
expect(html).not.toContain('until you move them')
expect(html).toContain('move to this host automatically once their terminals are idle')
// Only this distro's projects move; Windows-drive ones never do (move scope refuses /mnt).
expect(html).toContain('Projects in this distro that you opened through')
expect(html).toContain('projects on a Windows drive (/mnt/…) stay on this computer')
expect(html).toContain('bring a moved project back from the sidebar')
})
it('carries the same promise in every locale, none still saying projects stay put', () => {
const stale = [
'new projects',
'neue Projekte',
'novos projetos',
'новых проектов',
'Yeni projeler',
'新專案',
// Each locale's old "until you move them", as the catalog carried it before verify bug 9.
'until you move',
'hasta que los muevas',
"jusqu'à ce que vous les déplaciez",
'移動するまで',
'옮기기 전까지',
'直到你将它们移到'
]
for (const file of LOCALE_FILES) {
const description = readLocaleDescription(file)
expect(description).toContain('wsl.localhost')
expect(description).toContain('/mnt/…')
for (const phrase of stale) {
expect(description).not.toContain(phrase)
}
}
})
it('spells out the WSL 2 conversion for a WSL 1 distro the list cannot offer', () => {
expect(render()).toContain('wsl --set-version Legacy 2')
expect(render({ distros: [ubuntu] })).not.toContain('wsl --set-version')
})
it('says this build cannot run WSL hosts and offers nothing to add', () => {
const html = render({ selectedDistro: 'Ubuntu', serverFilesMissing: true })
expect(html).toContain('This build of Orca can’t run WSL hosts (server files missing).')
-30
View File
@@ -1,9 +1,5 @@
import { describe, expect, it } from 'vitest'
import { getDefaultSettings } from './constants'
import {
getDefaultPrimarySelectionMiddleClickPaste,
getDefaultTerminalRightClickToPaste
} from './terminal-platform-defaults'
describe('getDefaultSettings', () => {
it('uses platform-consistent separators for the default workspace directory', () => {
@@ -12,30 +8,4 @@ describe('getDefaultSettings', () => {
'C:\\Users\\alice\\orca\\workspaces'
)
})
it('asks before closing terminals with running processes by default', () => {
expect(getDefaultSettings('/tmp').skipCloseTerminalWithRunningProcessConfirm).toBe(false)
})
})
describe('getDefaultPrimarySelectionMiddleClickPaste', () => {
it('enables primary selection paste on Linux by default', () => {
expect(getDefaultPrimarySelectionMiddleClickPaste('linux')).toBe(true)
})
it('enables primary selection paste on macOS by default', () => {
expect(getDefaultPrimarySelectionMiddleClickPaste('darwin')).toBe(true)
})
it('leaves primary selection paste opt-in on Windows', () => {
expect(getDefaultPrimarySelectionMiddleClickPaste('win32')).toBe(false)
})
})
describe('getDefaultTerminalRightClickToPaste', () => {
it('defaults on only for Windows', () => {
expect(getDefaultTerminalRightClickToPaste('win32')).toBe(true)
expect(getDefaultTerminalRightClickToPaste('darwin')).toBe(false)
expect(getDefaultTerminalRightClickToPaste('linux')).toBe(false)
})
})
@@ -1,184 +0,0 @@
import { describe, expect, it } from 'vitest'
import { RUNTIME_CAPABILITIES } from './protocol-version'
// Frozen baseline: additions need no edit; remove a name only when deliberately retiring support.
const PUBLISHED_RUNTIME_CAPABILITIES = [
'accounts.antigravity-chat-sign-in.v1',
'accounts.antigravity-native.v1',
'accounts.claude-sign-in.v1',
'accounts.codex-reset-credit.v1',
'accounts.host-launch-env.v1',
'accounts.import-host-credentials.v1',
'accounts.managed-data-profiles.v1',
'agent-session.accepted-send.v1',
'agent-session.account-env.v1',
'agent-session.attachments.phone.v1',
'agent-session.attachments.v1',
'agent-session.attention-ack.v1',
'agent-session.background-task-child-views.v1',
'agent-session.background-task-row-stop.v1',
'agent-session.background-task-stop.v1',
'agent-session.codebuddy-resume.v1',
'agent-session.continue-interrupted.v1',
'agent-session.conversation-outline.v1',
'agent-session.conversation-stop.v1',
'agent-session.current-requests.v1',
'agent-session.cursor-resume.v1',
'agent-session.dsh-resume.v1',
'agent-session.host-authority.v1',
'agent-session.keyboard.v1',
'agent-session.kimi-resume.v1',
'agent-session.kiro-resume.v1',
'agent-session.model-catalog.saved-only.v1',
'agent-session.muse-resume.v1',
'agent-session.omp-resume-path.v1',
'agent-session.opencode2-resume.v1',
'agent-session.pending-send-result.v1',
'agent-session.permission-modes.v1',
'agent-session.prompt-cancel.v1',
'agent-session.qoder-cn-resume.v1',
'agent-session.qoder-resume.v1',
'agent-session.question-answers.v1',
'agent-session.queued-commands.v1',
'agent-session.queued-message-edit.v1',
'agent-session.queued-message-reorder.v1',
'agent-session.qwen-code-resume.v1',
'agent-session.repeated-stop.v1',
'agent-session.rewind-recovery.v1',
'agent-session.rewind.v1',
'agent-session.send-answers-proof.v1',
'agent-session.send-options.v1',
'agent-session.session-boundary.v1',
'agent-session.status-feed.v1',
'agent-session.structured.availability.v1',
'agent-session.structured.cli-source.v1',
'agent-session.structured.client-launch-mode.v1',
'agent-session.structured.hold.v1',
'agent-session.structured.pi-dialogs.v1',
'agent-session.structured.registered-agents.v1',
'agent-session.structured.resume-history.v1',
'agent-session.structured.reveal.v1',
'agent-session.structured.v1',
'agent-session.turn-completion.v1',
'agent-session.turn-item.v1',
'agent-session.zcode-resume.v1',
'agent.launch.create-folder-workspace.v1',
'agent.launch.local-presentation.v1',
'agent.launch.placement.v1',
'agent.launch.prompt-carry.v1',
'agent.launch.prompt-unconfirmed.v1',
'agent.launch.replay-required.v1',
'agent.launch.replay.v1',
'agent.launch.v2',
'agentSession.create.message.v1',
'agentSession.create.tab-id.v1',
'ai-vault.chat-fork-source.v1',
'aiVault.session-titles.v1',
'aiVault.v1',
'automation.create-idempotency.v1',
'automation.list-host-scope.v1',
'automation.owner-fencing.v1',
'automations.extra-agent-args.v1',
'browser.clientHost.automation.v1',
'browser.clientHost.fileChannel.v1',
'browser.clientHost.pageMetadata.v1',
'browser.clientHost.v1',
'browser.screencast.v1',
'browser.tab-create-known-id.v1',
'files.mutation-ownership.v1',
'files.pathsExist',
'files.resolve-terminal-path.absolute-files.v1',
'files.resolve-terminal-path.cross-workspace.v1',
'folder-workspace.path-status.v1',
'git.antigravity-configured-model.v1',
'github.markPRReadyForReview',
'gitlab.updateMR.readyForReview.v1',
'jira.agent-access.v1',
'jira.attachment-images.v1',
'jira.current-sprint.v1',
'jira.issue-list-statuses.v1',
'jira.issue-summary-generation.v1',
'jira.saved-filter-state.v1',
'jira.transition-fields.v1',
'jira.user-fields.v1',
'linear.issue-attribute-filter.v1',
'managed-runtime.install.v1',
'managed-runtime.remove.v1',
'mobile.desktop-relay.v1',
'mobile.tasks.v1',
'network.browserTunnel.executionHosts.v1',
'network.browserTunnel.v1',
'notifications.remote-push.v1',
'orcad.migration-catalog.v1',
'orcad.terminal-census.v1',
'orchestration.contract.v1',
'orchestration.federation-control-mail.v1',
'orchestration.federation-fleet-snapshot.v1',
'orchestration.federation-lifecycle-settlement.v1',
'orchestration.federation-release-archive.v1',
'orchestration.federation-structured-read.v1',
'orchestration.federation.v1',
'orchestration.worker-launch-preferences.v1',
'orchestration.worker-stop-verdict.v1',
'pairing.delegated-mobile-devices.v1',
'pairing.device-key-ephemeral.v1',
'pairing.device-key.v1',
'preflight.other-runtime-refusal.v1',
'preflight.workspace-scoped.v1',
'project-host-setup.v1',
'remote-runtime.shared-control.v1',
'repo.search-qualified-refs.v1',
'runtime-source-fence.v1',
'runtime.automatic-work.v1',
'runtime.environments.v1',
'runtime.status.compat.v1',
'session-tabs.authoritative-inventory.v1',
'session-tabs.close-intent.v1',
'session-tabs.create-terminal-shell.v1',
'session-tabs.empty-worktree-answer.v1',
'session-tabs.split-group-placement.v1',
'session.tabs.chat-fork-cli.v1',
'session.tabs.qoderOwnedCreate.v1',
'settings.agent-launch.v1',
'skills.delete.v1',
'skills.install-cancel.v1',
'skills.install-progress.v1',
'skills.install-providers.v1',
'skills.install-result.v2',
'skills.install.bundle.v1',
'skills.install.v1',
'skills.manage.v1',
'skills.upload.v1',
'ssh.target-management.v1',
'task-source-context.v1',
'terminal.binary-stream.v1',
'terminal.create-idempotency.v2',
'terminal.create-shell-selection.v1',
'terminal.multiplex.v1',
'terminal.paired-parking.v1',
'terminal.program-status.v1',
'terminal.prompt-delivery.v1',
'terminal.query-reply-input.v1',
'terminal.quick-commands.long-prompts.v1',
'terminal.quick-commands.v1',
'terminal.spawn-intent.v1',
'updater.remote-control.v1',
'workspace-ports.host-scoped.v1',
'workspace-ports.v1',
'workspace-run-context.v1',
'worktree.archive-failure-blocking.v1',
'worktree.create-idempotency.v1',
'worktree.github-pr-suppression.v1',
'worktree.linked-items-delta.v1',
'worktree.linked-items.v1',
'worktree.linked-work-item-context.v1',
'worktree.provisioned-root.v1',
'worktree.visibility-defaults.v1',
'worktree.visibility-source-defaults.v1'
]
describe('RUNTIME_CAPABILITIES', () => {
it('preserves every previously published capability', () => {
expect(RUNTIME_CAPABILITIES).toEqual(expect.arrayContaining(PUBLISHED_RUNTIME_CAPABILITIES))
})
})