mirror of
https://github.com/stablyai/orca.git
synced 2026-10-31 00:57:45 +00:00
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:
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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).')
|
||||
|
||||
@@ -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))
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user