Files
orca/src/main/runtime/runtime-folder-workspace-delete-lifecycle.test.ts
T
Jinwoo Hong 4b65d95964 feat(connectors): connector follow-ups, held during approvals, behind the off-by-default experimentalConnectors flag (B2b-2) (#31806)
* feat(connectors): connector seam lifecycle, conversation links and start behind experimentalConnectors (B2b-1)

* feat(connectors): connector follow-ups, held while the agent asks, behind experimentalConnectors (B2b-2)

* feat(agent-write): opt-in launch cancel, approval wait and binding fence on the shared writer

executeAgentLaunch takes an optional signal; sendTerminalAgentPrompt (and
sendAgentTurn) take optional onPermission: 'wait' and expectedBinding. No
existing caller sets them, so every current path is unchanged.

* fix(agent-write): keep the default writer path main's; fence cancel and real submit boundary

Only opted-in writes take the submit layer, so default timing and the leaf
re-read are unchanged. Cancellation is rechecked before a structured-refusal
terminal fallback, and an opted-in launch learns Enter from an onSubmitWritten
callback at the write itself, OMP's combined frame included.

* fix(connectors): pass the seam's signal to the launch, read links from each host's rows, and keep delivery ids on orchestration's durable receipts (B2b-1)

* fix(agent-launch): a cancel after a failed startup spawn recovers the created workspace

* fix(connectors): keep an unknown receipt once the launch published, and restore local-only metadata ownership (B2b-1)

* fix(connectors): settle a lane when its process is lost; removal stays host-qualified; folder delete announces removal

* fix(plugins): keep folder removals out of public worktree events

* fix(connectors): a launch admits its process for the lane, so queued sends never adopt a successor

* fix(connectors): classify connector RPCs as host-owned; CLI start output claims a start only when definite
2026-10-22 17:58:29 -04:00

28 lines
1.1 KiB
TypeScript

import { describe, expect, it, vi } from 'vitest'
// Fragments stay side-effect ordered: mocks, then lifecycle, then fixtures.
const { OrcaRuntimeService } = await import('./orca-runtime-test-mocks.spec')
await import('./orca-runtime-test-lifecycle.spec')
const { createFolderWorkspaceRuntimeStore, makeFolderWorkspace } =
await import('./orca-runtime-test-fixtures.spec')
describe('deleting a folder workspace', () => {
it('announces the removal to worktree lifecycle listeners under its folder key', async () => {
const folderWorkspace = makeFolderWorkspace({ folderPath: '/tmp/folder-ws' })
const runtime = new OrcaRuntimeService({
...createFolderWorkspaceRuntimeStore(folderWorkspace),
removeFolderWorkspace: () => true
})
const listener = vi.fn()
runtime.onWorktreeLifecycle(listener)
await expect(runtime.deleteFolderWorkspace(folderWorkspace.id)).resolves.toEqual({
deleted: true
})
expect(listener).toHaveBeenCalledWith({
kind: 'removed',
worktreeId: `folder:${folderWorkspace.id}`,
path: '/tmp/folder-ws'
})
})
})