diff --git a/cloud/apps/relay/src/admin-route-transient-app.test.ts b/cloud/apps/relay/src/admin-route-transient-app.test.ts index 1145d5964fb..70e5e981fe5 100644 --- a/cloud/apps/relay/src/admin-route-transient-app.test.ts +++ b/cloud/apps/relay/src/admin-route-transient-app.test.ts @@ -53,23 +53,6 @@ describe('admin routes under a database that is briefly out of reach', () => { expect(response.headers.get('Retry-After')).toBe('7') expect(await response.json()).toEqual({ error: 'database_temporarily_unavailable' }) }) - - it('answers admission-selector/status with a retryable 503 instead of a conflict', async () => { - const inspectCellAdmissionSelector = vi.fn(async () => { - throw poolTimeout() - }) - const app = appWith({ inspectCellAdmissionSelector }) - - const response = await app.request( - '/v1/admin/admission-selector/status', - adminRequest({ v: 1, attemptId: '22222222-2222-4222-8222-222222222222' }) - ) - - expect(response.status).toBe(503) - expect(response.headers.get('Retry-After')).toBe('5') - expect(await response.json()).toEqual({ error: 'database_temporarily_unavailable' }) - }) - }) function config(overrides: Partial = {}): RelayConfig { diff --git a/cloud/apps/relay/src/assignment/assignment-home-cell-unavailable.test.ts b/cloud/apps/relay/src/assignment/assignment-home-cell-unavailable.test.ts index 3227d64e82b..7d96a37494f 100644 --- a/cloud/apps/relay/src/assignment/assignment-home-cell-unavailable.test.ts +++ b/cloud/apps/relay/src/assignment/assignment-home-cell-unavailable.test.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it } from 'vitest' -import { RelayAssignmentStore, RelayHomeCellUnavailableError } from './assignment-store.js' +import { RelayAssignmentStore } from './assignment-store.js' import type { RelayCellConfig } from '../config.js' import { openInMemoryRelayDatabase, type RelayDatabase } from '../database/database.js' @@ -7,16 +7,6 @@ const HEARTBEAT_TTL_MS = 45_000 const START_MS = 100 const IDENTITY = { userId: 'user-1', relayHostId: 'host000000000001' } -// A connection-limited cell is what makes the committed fence mandatory, and -// that is the branch which used to answer "capacity exhausted". -const FENCED_CELL: RelayCellConfig = { - id: 'home', - url: 'https://home.example.com', - capacityRequests: 1_000, - connectionHardCap: 600, - connectionUnobservedBound: 50 -} - const databases: RelayDatabase[] = [] afterEach(async () => { @@ -29,7 +19,7 @@ interface Harness { setNow: (value: number) => void } -async function setup(cells: RelayCellConfig[] = [FENCED_CELL]): Promise { +async function setup(cells: RelayCellConfig[]): Promise { const database = await openInMemoryRelayDatabase() databases.push(database) let now = START_MS @@ -45,67 +35,14 @@ async function setup(cells: RelayCellConfig[] = [FENCED_CELL]): Promise cellIncarnation: `1111111${cells.indexOf(cell)}-1111-4111-8111-111111111111`, startedAt: 50, ready, - observedRequests: 0, - ...(cell.connectionHardCap === undefined - ? {} - : { - totalConnections: 0, - inFlightConnections: 0, - reservedConnectionUnits: 0, - enforcedConnectionUnits: 0, - connectionHardCap: cell.connectionHardCap, - connectionUnobservedBound: cell.connectionUnobservedBound - }) + observedRequests: 0 }) } for (const cell of cells) await heartbeat(cell, true) return { store, heartbeat, setNow: (value: number) => (now = value) } } -async function assignFailure(store: RelayAssignmentStore): Promise { - return await store.assign(IDENTITY).then( - () => new Error('assign unexpectedly succeeded'), - (error: unknown) => error - ) -} - -function homeCellError(error: unknown): RelayHomeCellUnavailableError { - expect(error).toBeInstanceOf(RelayHomeCellUnavailableError) - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the assertion above. - return error as RelayHomeCellUnavailableError -} - describe('home cell unavailable', () => { - it('names a readiness failure rather than reporting fleet capacity', async () => { - const { store, heartbeat, setNow } = await setup() - await store.assign(IDENTITY) - setNow(START_MS + 1_000) - await heartbeat(FENCED_CELL, false) - - const error = homeCellError(await assignFailure(store)) - - expect(error.message).toBe('relay_home_cell_unavailable') - expect(error.unavailableCause).toBe('not_ready') - expect(error.cellId).toBe(FENCED_CELL.id) - }) - - it('names a heartbeat gap as unheard even though the cell last reported ready', async () => { - const { store, setNow } = await setup() - await store.assign(IDENTITY) - setNow(START_MS + HEARTBEAT_TTL_MS + 1) - - expect(homeCellError(await assignFailure(store)).unavailableCause).toBe('unheard') - }) - - it('names a drained cell as draining ahead of its heartbeat gap', async () => { - const { store, setNow } = await setup() - await store.assign(IDENTITY) - await store.configureCell(FENCED_CELL, false) - setNow(START_MS + HEARTBEAT_TTL_MS + 1) - - expect(homeCellError(await assignFailure(store)).unavailableCause).toBe('draining') - }) - it('rehomes instead of rejecting when the unavailable cell needs no fence', async () => { const home: RelayCellConfig = { id: 'home', diff --git a/cloud/apps/relay/src/assignment/assignment-rejection-log-window.test.ts b/cloud/apps/relay/src/assignment/assignment-rejection-log-window.test.ts deleted file mode 100644 index d3a4709cdc9..00000000000 --- a/cloud/apps/relay/src/assignment/assignment-rejection-log-window.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { describe, expect, it } from 'vitest' -import { AssignmentRejectionLogWindow } from './assignment-rejection-log-window.js' - -describe('assignment rejection log window', () => { - it('emits once per key per window and closes it with its own suppressed count', () => { - const timers = manualTimers() - const closed: { key: string; suppressed: number; sample: string }[] = [] - const window = new AssignmentRejectionLogWindow({ - windowMs: 10_000, - schedule: timers.schedule, - onWindowClosed: (input) => closed.push(input) - }) - const key = 'assign:placement:host-rate-limited' - - expect(window.admit(key, 'host-a')).toBe(true) - expect(window.admit(key, 'host-b')).toBe(false) - expect(window.admit(key, 'host-c')).toBe(false) - expect(closed).toEqual([]) - - timers.runPending() - expect(closed).toEqual([{ key, suppressed: 2, sample: 'host-c' }]) - - // The next window starts clean instead of inheriting the closed window's count. - expect(window.admit(key, 'host-d')).toBe(true) - timers.runPending() - expect(closed).toHaveLength(1) - }) - - it('keeps distinct keys on independent windows', () => { - const timers = manualTimers() - const window = new AssignmentRejectionLogWindow({ - windowMs: 10_000, - schedule: timers.schedule, - onWindowClosed: () => undefined - }) - - expect(window.admit('assign:placement:host-rate-limited', 'host-a')).toBe(true) - expect(window.admit('assign:placement:queue-full', 'host-a')).toBe(true) - expect(window.admit('assign:placement:queue-full', 'host-a')).toBe(false) - }) -}) - -function manualTimers(): { - schedule: (callback: () => void) => () => void - runPending: () => void -} { - const pending = new Map void>() - let nextId = 0 - return { - schedule: (callback) => { - const id = nextId++ - pending.set(id, callback) - return () => pending.delete(id) - }, - runPending: () => { - for (const [id, callback] of [...pending]) { - pending.delete(id) - callback() - } - } - } -} diff --git a/cloud/apps/relay/src/assignment/assignment-rejection-logging.test.ts b/cloud/apps/relay/src/assignment/assignment-rejection-logging.test.ts deleted file mode 100644 index 763d1a28d3f..00000000000 --- a/cloud/apps/relay/src/assignment/assignment-rejection-logging.test.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { afterEach, describe, expect, it, vi } from 'vitest' -import type { RelayAssignment } from './assignment-store.js' -import type { RelayConfig } from '../config.js' - -const fakes = vi.hoisted(() => ({ - verifyRelayToken: vi.fn(async (token: string) => ({ - sub: 'user-1', - relayHostId: token - })) -})) - -vi.mock('../authentication/relay-token-verifier.js', () => ({ - createRelayTokenVerifier: () => fakes.verifyRelayToken, - readBearer: (value: string | undefined) => value?.replace(/^Bearer /, '') ?? null -})) - -import { createRelayApp } from '../app.js' - -describe('assignment rejection logging', () => { - afterEach(() => { - vi.restoreAllMocks() - }) - - it('logs the store reason and host digest when assign() rejects on capacity', async () => { - const host = 'hhhhhhhhhhhhhhhh' - const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined) - const app = createRelayApp(config(), { - store: {} as never, - assignments: { - assign: vi.fn(async () => { - throw new Error('relay_capacity_exhausted') - }), - resolve: vi.fn(async () => assignment('cell-r', host)) - } as never, - drain: vi.fn(), - ready: vi.fn(async () => true) - }) - - const hinted = await app.request('/v1/assign', assignmentRequest(host, { reconnect: true })) - - expect(hinted.status).toBe(503) - expect(await hinted.json()).toEqual({ error: 'relay_capacity_exhausted' }) - const line = warn.mock.calls - .map((call) => String(call[0])) - .find((entry) => entry.includes('assignment rejected')) - expect(line).toContain('route=assign') - expect(line).toContain('lane=sticky') - expect(line).toContain('hinted=true') - expect(line).toContain('reason=relay_capacity_exhausted') - expect(line).toContain('host=af342ad00ee4') - expect(line).not.toContain(host) - }) -}) - -function assignmentRequest( - relayHostId: string, - extra: Record = {} -): RequestInit & { headers: Record } { - return { - method: 'POST', - headers: { - authorization: `Bearer ${relayHostId}`, - 'content-type': 'application/json' - }, - body: JSON.stringify({ v: 1, relayHostId, ...extra }) - } -} - -function assignment(cellId: string, relayHostId: string): RelayAssignment { - return { - userId: 'user-1', - relayHostId, - cellId, - cellUrl: `https://${cellId}.relay.example.test`, - assignmentEpoch: 1, - leaseExpiresAt: Date.now() + 300_000 - } -} - -function config(overrides: Partial = {}): RelayConfig { - return { - port: 8080, - publicUrl: 'https://relay.example.test', - cellUrl: 'https://relay.example.test', - authIssuer: 'https://auth.example.test', - authAudience: 'orca-relay', - jwksUrl: 'https://auth.example.test/jwks', - assignmentSigningKey: new TextEncoder().encode('assignment-key-with-at-least-32-bytes'), - role: 'director', - cellId: 'director', - cells: [], - adminAudience: 'https://relay.example.test/v1/admin/drain', - deployServiceAccount: 'deploy@example.test', - runtimeServiceAccount: 'runtime@example.test', - adminJwksUrl: 'https://auth.example.test/jwks', - databasePoolMax: 3, - publicAssignmentsEnabled: true, - publicAssignmentConcurrency: 2, - publicAssignmentQueueMax: 128, - publicAssignmentWaitMs: 4_000, - publicResolveConcurrency: 1, - publicResolveWaitMs: 5_000, - publicAssignmentRetryAfterSeconds: 5, - dataDir: './data', - ...overrides - } -} diff --git a/cloud/apps/relay/src/assignment/assignment-reserve-mode-evacuation.test.ts b/cloud/apps/relay/src/assignment/assignment-reserve-mode-evacuation.test.ts index 962835176d2..577b68e618c 100644 --- a/cloud/apps/relay/src/assignment/assignment-reserve-mode-evacuation.test.ts +++ b/cloud/apps/relay/src/assignment/assignment-reserve-mode-evacuation.test.ts @@ -62,15 +62,4 @@ describe('evacuation from reserve-mode cells', () => { await store.setCellAdmitMode('cell-a', 'db') expect(await store.completeReadyEvacuations()).toBe(1) }) - - it('refuses evacuation status for a reserve cell, where activeCellMigrations would count no units', async () => { - const store = await setup(() => 1_000) - await store.setCellAdmitMode('cell-a', 'reserve') - await expect(store.cellEvacuationStatus('cell-a', 'cell-b', true)).rejects.toThrow( - 'cell_in_reserve_mode' - ) - await expect(store.cellEvacuationStatus('cell-b', 'cell-a', false)).rejects.toThrow( - 'cell_in_reserve_mode' - ) - }) }) diff --git a/cloud/apps/relay/src/assignment/assignment-reserve-mode.test.ts b/cloud/apps/relay/src/assignment/assignment-reserve-mode.test.ts index 94455f83ba7..ec6c939b58a 100644 --- a/cloud/apps/relay/src/assignment/assignment-reserve-mode.test.ts +++ b/cloud/apps/relay/src/assignment/assignment-reserve-mode.test.ts @@ -64,24 +64,6 @@ describe('assignment reserve-mode behavior', () => { expect(await store.releaseExpiredActivityLeases()).toBeGreaterThan(0) }) - it('keeps an idle host sticky on a reserve-mode cell where today it would be re-placed', async () => { - let now = 1_000 - const store = await setup(() => now) - const identity = { userId: 'user-a', relayHostId: 'host000000000001' } - const first = await store.assign(identity) - await store.changeActivity(identity, 'control', -1) - now += ASSIGNMENT_LIMITS.activityLeaseMs + ASSIGNMENT_LIMITS.dormantTtlMs + 1 - await setReserve(store, [first.cellId]) - expect(await store.assign(identity)).toMatchObject({ - cellId: first.cellId, - assignmentEpoch: first.assignmentEpoch - }) - // Not knowing which cells are switched on is treated the same way. - const { unknown, restore } = await unknownSet(() => now) - expect((await unknown.assign(identity)).assignmentEpoch).toBe(first.assignmentEpoch) - await restore() - }) - it('keeps a connected host pinned when its reserve cell goes existing-only after a ledger write', async () => { let now = 1_000 const store = await setup(() => now) @@ -192,12 +174,6 @@ describe('assignment reserve-mode behavior', () => { } }) - it('never places a fresh host on a reserve-mode cell through the database', async () => { - const store = await setup(() => 1_000, ['cell-a']) - const placed = await store.assign({ userId: 'user-0', relayHostId: 'host000000000000' }) - expect(placed.cellId).toBe('cell-b') - }) - it('refuses drains, evacuations and status reads that would treat a reserve-mode cell as empty', async () => { const store = await setup(() => 1_000, ['cell-a']) await expect(store.cellDeploymentStatus('cell-a')).rejects.toBeInstanceOf( @@ -224,25 +200,4 @@ describe('assignment reserve-mode behavior', () => { await expect(unknown.cellDeploymentStatus('cell-b')).rejects.toThrow('reserve_mode_unknown') await restore() }) - - it('refuses the flip to reserve while a migration names the cell', async () => { - const store = await setup(() => 1_000) - await database!.query( - `INSERT INTO relay_assignment_migrations - (user_id, relay_host_id, source_cell_id, target_cell_id, previous_epoch, assignment_epoch, - source_request_units, target_reserved_units, expires_at, created_at, updated_at) - VALUES ('user-a', 'host000000000001', 'cell-b', 'cell-a', 1, 2, 0, 1, 9999, 1000, 1000)` - ) - await expect(store.setCellAdmitMode('cell-a', 'reserve')).rejects.toThrow( - 'cell_has_open_migration' - ) - expect(await store.cellAdmitMode('cell-a')).toMatchObject({ admitMode: 'db' }) - await store.setCellAdmitMode('cell-a', 'db') - await database!.query(`UPDATE relay_assignment_migrations SET aborted_at = 1001`) - await store.setCellAdmitMode('cell-a', 'reserve') - expect(await store.cellAdmitMode('cell-a')).toMatchObject({ - admitMode: 'reserve', - updatedAt: 1_000 - }) - }) }) diff --git a/cloud/apps/relay/src/assignment/assignment-roll-replaced-cell.test.ts b/cloud/apps/relay/src/assignment/assignment-roll-replaced-cell.test.ts index a30f59a07e7..b7cb1640123 100644 --- a/cloud/apps/relay/src/assignment/assignment-roll-replaced-cell.test.ts +++ b/cloud/apps/relay/src/assignment/assignment-roll-replaced-cell.test.ts @@ -140,9 +140,6 @@ async function setup(cells: RelayCellConfig[] = [SOURCE, TARGET]) { } } -// The old process stopped heartbeating at START_MS, so it is unheard from here. -const OLD_UNHEARD_AT = START_MS + HEARTBEAT_TTL_MS + 1_000 - async function hintedAssign(store: RelayAssignmentStore) { return await store.assign(IDENTITY, 'us-central1', 'us-central1', undefined, { hostRequested: true @@ -204,14 +201,6 @@ describe('a host offline through a roll redials via hinted assign', () => { await expectRefused(hintedAssign(store), 'unheard') }) - it('is refused on an ordinary readiness dip with no roll stamp', async () => { - const { store, heartbeat, at } = await setup() - await at(20_000) - await heartbeat(SOURCE, { incarnation: NEW_INCARNATION, startedAt: 15_000, ready: false }) - - await expectRefused(hintedAssign(store), 'not_ready') - }) - it('is refused on a migration-only cell parked without a roll stamp', async () => { const { store, heartbeat, at, park } = await setup() await park('migration-only') @@ -222,16 +211,6 @@ describe('a host offline through a roll redials via hinted assign', () => { }) }) - // Residual: the old process is past its TTL and the new one has not heartbeated yet, so - // nothing proves the drained sockets gone. The client's retry lands once the new one is heard. - it('is still refused between the old process going unheard and the new one heartbeating', async () => { - const { store, at, isolateForRoll } = await setup() - await isolateForRoll() - await at(OLD_UNHEARD_AT) - - await expectRefused(hintedAssign(store), 'unheard') - }) - it('is refused when the roll stamp is stale, even with a new process', async () => { const { store, heartbeat, at, isolateForRoll } = await setup() await isolateForRoll() diff --git a/cloud/apps/relay/src/assignment/migrations/dead-cell-evacuation-precheck.test.ts b/cloud/apps/relay/src/assignment/migrations/dead-cell-evacuation-precheck.test.ts index 4a1a2aff115..da21d0579ff 100644 --- a/cloud/apps/relay/src/assignment/migrations/dead-cell-evacuation-precheck.test.ts +++ b/cloud/apps/relay/src/assignment/migrations/dead-cell-evacuation-precheck.test.ts @@ -1,53 +1,14 @@ -import pg from 'pg' -import { afterAll, afterEach, describe, expect, it } from 'vitest' +import { afterEach, describe, expect, it } from 'vitest' import { RelayAssignmentStore } from '../assignment-store.js' import type { RelayCellConfig } from '../../config.js' -import { - openInMemoryRelayDatabase, - openRelayDatabase, - type RelayDatabase -} from '../../database/database.js' +import { openInMemoryRelayDatabase, type RelayDatabase } from '../../database/database.js' -const databaseUrl = process.env.ORCA_RELAY_TEST_POSTGRES_URL -const schema = 'relay_dead_cell_precheck_test' const CELLS: RelayCellConfig[] = [ { id: 'cell-a', url: 'https://relay-a.example.com', capacityRequests: 10 }, { id: 'cell-b', url: 'https://relay-b.example.com', capacityRequests: 10 } ] -function scopedUrl(): string { - const url = new URL(databaseUrl!) - url.searchParams.set('options', `-c search_path=${schema}`) - return url.toString() -} - -async function onAdmin(sql: string): Promise { - const client = new pg.Client({ connectionString: databaseUrl }) - await client.connect() - try { - await client.query(sql) - } finally { - await client.end() - } -} - -const dialects: [string, () => Promise][] = [ - ['sqlite', openInMemoryRelayDatabase], - ...(databaseUrl - ? [ - [ - 'postgres', - async () => { - await onAdmin(`DROP SCHEMA IF EXISTS ${schema} CASCADE`) - await onAdmin(`CREATE SCHEMA ${schema}`) - return await openRelayDatabase({ databaseUrl: scopedUrl(), dataDir: '' }) - } - ] as [string, () => Promise] - ] - : []) -] - -describe.each(dialects)('dead-cell evacuation pre-check (%s)', (_dialect, open) => { +describe('dead-cell evacuation pre-check', () => { let database: RelayDatabase | undefined afterEach(async () => { @@ -55,12 +16,8 @@ describe.each(dialects)('dead-cell evacuation pre-check (%s)', (_dialect, open) database = undefined }) - afterAll(async () => { - if (databaseUrl) await onAdmin(`DROP SCHEMA IF EXISTS ${schema} CASCADE`) - }) - async function setup(now: () => number) { - database = await open() + database = await openInMemoryRelayDatabase() const store = new RelayAssignmentStore(database, now, { requireLiveCells: true, heartbeatTtlMs: 45_000 diff --git a/cloud/apps/relay/src/assignment/public-admission/drain-return-admission.test.ts b/cloud/apps/relay/src/assignment/public-admission/drain-return-admission.test.ts index 011e5c99313..22bf3a13267 100644 --- a/cloud/apps/relay/src/assignment/public-admission/drain-return-admission.test.ts +++ b/cloud/apps/relay/src/assignment/public-admission/drain-return-admission.test.ts @@ -39,31 +39,10 @@ function admitted(result: DrainReturnGrant | DrainReturnDeferral): DrainReturnGr return result } -function deferred(result: DrainReturnGrant | DrainReturnDeferral): DrainReturnDeferral { - if (result.kind !== 'deferred') throw new Error('expected a deferral') - return result -} - const host = (index: number): string => `host${String(index).padStart(12, '0')}` describe('drain-return admission', () => { - it('answers a host’s own early retry with its interval, not a place behind the cohort', async () => { - const { lane } = harness() - admitted(await lane.acquire(host(0))).lease.release() - - // A row-busy refusal says "retry in 1 s"; that redial is the host's own. - const repeat = deferred(await lane.acquire(host(0))) - expect(repeat).toMatchObject({ - reason: 'host-rate-limited', - retryAfterSeconds: 2 - }) - - // And it booked nothing: the next overflow still gets the first slot. - admitted(await lane.acquire(host(1))) - expect(deferred(await lane.acquire(host(2))).retryAfterSeconds).toBe(2) - }) - it('lets a queued placement go before a queued drain return', async () => { const { lane, placement } = harness({ maxQueued: 1 }) const drain = admitted(await lane.acquire(host(0))) diff --git a/cloud/apps/relay/src/assignment/public-admission/public-assignment-reconnect-lane.test.ts b/cloud/apps/relay/src/assignment/public-admission/public-assignment-reconnect-lane.test.ts index 1a2b795252a..87176b7e53c 100644 --- a/cloud/apps/relay/src/assignment/public-admission/public-assignment-reconnect-lane.test.ts +++ b/cloud/apps/relay/src/assignment/public-admission/public-assignment-reconnect-lane.test.ts @@ -64,25 +64,6 @@ describe('public assignment reconnect lane', () => { expect((await second).status).toBe(200) }) - it('rejects on the fast lane when the verification probe fails transiently', async () => { - const host = 'tttttttttttttttt' - const assign = vi.fn() - const resolve = vi.fn(async () => { - throw Object.assign(new Error('deadlock detected'), { code: '40P01' }) - }) - const app = createRelayApp(config(), { - store: {} as never, - assignments: { assign, resolve } as never, - drain: vi.fn(), - ready: vi.fn(async () => true) - }) - - const response = await app.request('/v1/assign', assignmentRequest(host, { reconnect: true })) - - expect(response.status).toBe(503) - expect(response.headers.get('retry-after')).toBe('2') - }) - it('refuses a dial whose assignment row is busy at once, and frees the fast lane', async () => { const busy = 'bbbbbbbbbbbbbbbb' const next = 'nnnnnnnnnnnnnnnn' @@ -113,38 +94,6 @@ describe('public assignment reconnect lane', () => { warn.mockRestore() }) - it('asks a busy resume to retry in a second', async () => { - const host = 'rrrrrrrrrrrrrrrr' - const app = createRelayApp(config(), { - store: { - resolveResume: vi.fn(async () => ({ userId: 'user-1', relayDeviceId: 'device-1' })) - } as never, - assignments: { - assign: vi.fn(async () => { - throw new RelayAssignmentRowBusyError() - }), - resolve: vi.fn(async () => null) - } as never, - drain: vi.fn(), - ready: vi.fn(async () => true) - }) - const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}) - - const response = await app.request('/v1/resolve', { - method: 'POST', - headers: { 'content-type': 'application/json' }, - body: JSON.stringify({ - v: 1, - relayHostId: host, - resumeToken: Buffer.alloc(32, 1).toString('base64url') - }) - }) - - expect(response.status).toBe(503) - expect(response.headers.get('retry-after')).toBe('1') - expect(await response.json()).toEqual({ error: 'relay_assignment_row_busy' }) - warn.mockRestore() - }) }) function assignmentRequest(relayHostId: string, extra: { reconnect?: boolean } = {}): RequestInit { diff --git a/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-reconciliation.test.ts b/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-reconciliation.test.ts index b38b0924c44..e66de86e5d7 100644 --- a/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-reconciliation.test.ts +++ b/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-reconciliation.test.ts @@ -39,23 +39,6 @@ async function setup() { } describe('idle cutover durable reconciliation', () => { - it('only permits reopening when the exact source still owns the assignment', async () => { - const { store } = await setup() - expect(await store.reconcileIdleRegionalRehome(request)).toBe('not-committed') - await store.activateControl(request, { - cellId: request.sourceCellId, - assignmentEpoch: request.sourceAssignmentEpoch, - generation: request.sourceGeneration + 1, - cellIncarnation: request.sourceCellIncarnation - }) - expect(await store.reconcileIdleRegionalRehome(request)).toBe('stale') - }) - - it('does not reopen an obsolete source after an assignment change', async () => { - const { store } = await setup() - await store.startEvacuation(request, request.targetCellId) - expect(await store.reconcileIdleRegionalRehome(request)).toBe('stale') - }) it('waits for an outstanding assignment transaction before deciding authority', async () => { const { database, store } = await setup() diff --git a/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-store.test.ts b/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-store.test.ts index 18a95333bbb..2f97cdc67b2 100644 --- a/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-store.test.ts +++ b/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-store.test.ts @@ -111,15 +111,6 @@ async function setup() { } describe('constrained idle regional assignment transaction', () => { - it('sees durable control changes between candidate polls', async () => { - const { store, database, safety } = await setup() - await database.query("UPDATE relay_region_rehome_control SET enabled = 0 WHERE control_id = 'global'") - expect(await store.selectIdleRegionalRehomeCandidates(safety)).toEqual([]) - await database.query("UPDATE relay_region_rehome_control SET enabled = 1 WHERE control_id = 'global'") - expect(await store.selectIdleRegionalRehomeCandidates(safety)).toHaveLength(1) - await database.query("UPDATE relay_region_rehome_control SET enabled = 0 WHERE control_id = 'global'") - expect(await store.selectIdleRegionalRehomeCandidates(safety)).toEqual([]) - }) it.each([10, 11])('reserves source activity plus assignment at target capacity %i', async (capacity) => { const { store, database, safety, request } = await setup() @@ -321,7 +312,6 @@ describe('constrained idle regional assignment transaction', () => { }) expect(await database.query('SELECT * FROM relay_region_rehome_attempts')).toEqual([]) }) - }) function holdStatement(database: RelayDatabase, fragment: string) { diff --git a/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-window.test.ts b/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-window.test.ts index 6c4c559f06f..bf2df745a3d 100644 --- a/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-window.test.ts +++ b/cloud/apps/relay/src/assignment/regional-rehome/idle-regional-rehome-window.test.ts @@ -220,23 +220,4 @@ describe('idle regional rehome candidate window', () => { expect(seen.size).toBe(363) expect(wrapped).toBe(true) }) - - it('excludes a host inside its rehome cooldown and takes it back after', async () => { - const { store, database, safety, now } = await setup() - await seedHost(store, identity) - await database.query( - `INSERT INTO relay_region_rehome_attempts - (attempt_id, user_id, relay_host_id, preferred_region, source_cell_id, source_cell_incarnation, - target_cell_id, target_cell_incarnation, previous_epoch, assignment_epoch, drain_grace_ms, - send_attempts, created_at, updated_at) - VALUES ('cooled', ?, ?, 'asia-east2', 'us', ?, 'asia-idle', ?, 0, 9, 0, 0, ?, ?)`, - [identity.userId, identity.relayHostId, incarnations[0], incarnations[2], now - 1_000, now] - ) - expect(await store.selectIdleRegionalRehomeCandidates(safety)).toEqual([]) - await database.query('UPDATE relay_region_rehome_attempts SET created_at = ?', [ - now - 604_800_000 - 1 - ]) - expect(await store.selectIdleRegionalRehomeCandidates(safety)).toHaveLength(3) - }) - }) diff --git a/cloud/apps/relay/src/assignment/regional-rehome/region-correction-restart.test.ts b/cloud/apps/relay/src/assignment/regional-rehome/region-correction-restart.test.ts index beb6a3c58d1..396db5fb319 100644 --- a/cloud/apps/relay/src/assignment/regional-rehome/region-correction-restart.test.ts +++ b/cloud/apps/relay/src/assignment/regional-rehome/region-correction-restart.test.ts @@ -85,15 +85,6 @@ describe('persisted region decisions across director restart', () => { .toMatchObject({ reportStatus: 'stale' }) }) - it('uses server expiry after a restart regardless of an old client report', async () => { - const context = await setup() - context.setNow(context.window.expiresAt) - const restarted = await context.restart() - expect(await restarted.store.exchangeRegionCorrection(identity, context.report, context.window.assignmentEpoch)) - .toMatchObject({ reportStatus: 'expired' }) - expect(await restarted.store.previewRegionCorrection()).toEqual({ expired: 1 }) - }) - it('does not interpret a persisted future-policy window using the old policy after rollback', async () => { const context = await setup() await context.database.query('UPDATE relay_region_decisions SET policy_version = 2') @@ -105,15 +96,4 @@ describe('persisted region decisions across director restart', () => { expect(row.preferred_region).toBeNull() expect(row.report_json).toBeNull() }) - - it('keeps generation ordering when the server clock moves backwards across restart', async () => { - const context = await setup() - context.setNow(1_000_000_000 - 60_000) - const restarted = await context.restart() - const successor = (await context.issue(restarted.store)).window! - expect(successor.generation).toBe(2) - expect(successor.expiresAt).toBe(context.window.expiresAt - 60_000) - expect(await restarted.store.exchangeRegionCorrection(identity, context.report, context.window.assignmentEpoch)) - .toMatchObject({ reportStatus: 'stale' }) - }) }) diff --git a/cloud/apps/relay/src/assignment/regional-rehome/region-correction-store.test.ts b/cloud/apps/relay/src/assignment/regional-rehome/region-correction-store.test.ts index 384945db575..e9220bd8ee5 100644 --- a/cloud/apps/relay/src/assignment/regional-rehome/region-correction-store.test.ts +++ b/cloud/apps/relay/src/assignment/regional-rehome/region-correction-store.test.ts @@ -147,53 +147,6 @@ describe('ordered region decisions and migration outcomes', () => { ).toMatchObject({ reportStatus: 'stale' }) }) - it('compares with assigned region, preserves hints, and never extends a window on report', async () => { - const context = await setup() - await context.store.assign(identity, 'asia-east2') - const issued = await window(context) - expect(issued.incumbentRegion).toBe('us-central1') - context.advance(50) - await context.store.exchangeRegionCorrection( - identity, - { - v: 1, - action: 'report', - generation: issued.generation, - assignmentEpoch: issued.assignmentEpoch, - policyVersion: 1, - outcome: 'conclusive', - measurements: { 'us-central1': 110, 'asia-east2': 90 } - }, - issued.assignmentEpoch - ) - expect(await context.store.previewRegionCorrection()).toEqual({ ineligible: 1 }) - const row = (await context.database.query(`SELECT * FROM relay_region_decisions`))[0]! - expect(Number(row.expires_at)).toBe(issued.expiresAt) - const hint = ( - await context.database.query( - `SELECT preferred_region FROM relay_assignment_region_preferences WHERE user_id = ?`, - [identity.userId] - ) - )[0] - expect(hint?.preferred_region).toBe('asia-east2') - context.advance(24 * 60 * 60_000) - expect( - await context.store.exchangeRegionCorrection( - identity, - { - v: 1, - action: 'report', - generation: issued.generation, - assignmentEpoch: issued.assignmentEpoch, - policyVersion: 1, - outcome: 'inconclusive', - reason: 'late' - }, - issued.assignmentEpoch - ) - ).toMatchObject({ reportStatus: 'expired' }) - }) - it('rejects stale assignment basis and requires both thresholds', async () => { const context = await setup() for (const measurements of [ diff --git a/cloud/apps/relay/src/assignment/regional-rehome/regional-rehome-store.test.ts b/cloud/apps/relay/src/assignment/regional-rehome/regional-rehome-store.test.ts index dd0c445ed15..c7e128a36bb 100644 --- a/cloud/apps/relay/src/assignment/regional-rehome/regional-rehome-store.test.ts +++ b/cloud/apps/relay/src/assignment/regional-rehome/regional-rehome-store.test.ts @@ -30,68 +30,6 @@ const targetIncarnation = '22222222-2222-4222-8222-222222222222' describe('regional rehome assignment state', () => { - it('moves one live preferred host and completes without disabling its source cell', async () => { - const context = await setup() - const identity = { userId: 'user-1', relayHostId: 'abcdefghijklmnop' } - const neighbor = { userId: 'user-2', relayHostId: 'ponmlkjihgfedcba' } - const sourceControl = await activatePreferredSource(context, identity) - await activateSource(context, neighbor) - - const attempt = await context.store.tryIdleRehome() - expect(attempt).toMatchObject({ - userId: identity.userId, - relayHostId: identity.relayHostId, - sourceCellId: source.id, - sourceCellIncarnation: sourceIncarnation, - targetCellId: target.id, - targetCellIncarnation: targetIncarnation, - previousEpoch: 1, - assignmentEpoch: 2, - sendAttempts: 1 - }) - expect(await context.store.resolve(neighbor)).toMatchObject({ cellId: source.id }) - expect(await context.store.completeReadyRegionalRehomes()).toBe(0) - expect( - await context.database.query( - 'SELECT drain_outcome FROM relay_region_rehome_attempts WHERE attempt_id = ?', - [attempt!.attemptId] - ) - ).toEqual([{ drain_outcome: 'accepted' }]) - - const targetControl = await context.store.activateControl(identity, { - cellId: target.id, - assignmentEpoch: 2, - generation: 1 - }) - await context.store.markMigrationTargetRegistered(identity, { - cellId: target.id, - assignmentEpoch: 2 - }) - expect(await context.store.completeReadyRegionalRehomes()).toBe(0) - await context.store.releaseActivity(identity, sourceControl) - expect(await context.store.completeReadyRegionalRehomes()).toBe(1) - - expect(await context.store.resolve(identity)).toMatchObject({ - cellId: target.id, - assignmentEpoch: 2 - }) - expect(await context.store.resolve(neighbor)).toMatchObject({ cellId: source.id }) - expect( - await context.database.query( - `SELECT completed_at, aborted_at FROM relay_assignment_migrations - WHERE user_id = ? AND relay_host_id = ?`, - [identity.userId, identity.relayHostId] - ) - ).toEqual([{ completed_at: context.now(), aborted_at: null }]) - expect( - await context.database.query( - `SELECT drain_receipt_at, completed_at, aborted_at FROM relay_region_rehome_attempts` - ) - ).toEqual([{ drain_receipt_at: context.now(), completed_at: context.now(), aborted_at: null }]) - expect(targetControl).toMatch(/^control:/) - await context.database.close() - }) - it('completes healthy candidates past a poisoned attempt and logs it', async () => { const context = await setup() const poisoned = { userId: 'user-1', relayHostId: 'abcdefghijklmnop' } @@ -146,8 +84,6 @@ describe('regional rehome assignment state', () => { ).toEqual([{ completed_at: context.now() }]) await context.database.close() }) - - }) type Context = Awaited> @@ -251,18 +187,6 @@ async function activatePreferredSource( return control } -async function activateSource( - context: Context, - identity: { userId: string; relayHostId: string } -): Promise { - const assignment = await context.store.assign(identity, undefined, 'us-central1') - return await context.store.activateControl(identity, { - cellId: source.id, - assignmentEpoch: assignment.assignmentEpoch, - generation: 1 - }) -} - async function heartbeat( store: IdleRehomeTestStore, cell: typeof source | typeof target, diff --git a/cloud/apps/relay/src/assignment/relay-region-placement.test.ts b/cloud/apps/relay/src/assignment/relay-region-placement.test.ts index 25873f15666..dec09f344fa 100644 --- a/cloud/apps/relay/src/assignment/relay-region-placement.test.ts +++ b/cloud/apps/relay/src/assignment/relay-region-placement.test.ts @@ -45,16 +45,6 @@ describe('Relay regional placement', () => { afterEach(async () => await database.close()) - it('falls back globally only when the target region has no safe general cell', async () => { - await store.configureCell(CELLS[1]!, 'migration-only') - await store.configureCell(CELLS[2]!, 'migration-only') - await store.configureCell(CELLS[3]!, 'migration-only') - - await expect( - store.assign({ userId: 'fallback-user', relayHostId: 'fallbackhost0001' }, 'asia-east2') - ).resolves.toMatchObject({ cellId: 'us-c1', region: 'us-central1' }) - }) - it('preserves sticky assignments while updating only explicit preferences', async () => { const identity = { userId: 'sticky-user', relayHostId: 'stickyhost000001' } await expect(store.assign(identity)).resolves.toMatchObject({ cellId: 'us-c1' }) @@ -219,20 +209,4 @@ describe('Relay regional placement', () => { }) }) - it('expires identity-linked region preferences after 30 days', async () => { - const identity = { userId: 'expiry-user', relayHostId: 'expiryhost000001' } - await store.assign(identity, 'asia-east2') - now += 30 * 24 * 60 * 60_000 - await expect(store.releaseExpiredRegionPreferences()).resolves.toBe(0) - now += 1 - - await expect(store.releaseExpiredRegionPreferences()).resolves.toBe(1) - await expect( - database.query( - `SELECT preferred_region FROM relay_assignment_region_preferences - WHERE user_id = ? AND relay_host_id = ?`, - [identity.userId, identity.relayHostId] - ) - ).resolves.toEqual([]) - }) }) diff --git a/cloud/apps/relay/src/assignment/reserve-placement/reserve-ledger-writer.test.ts b/cloud/apps/relay/src/assignment/reserve-placement/reserve-ledger-writer.test.ts index 66a5e7b15fc..297cc74c640 100644 --- a/cloud/apps/relay/src/assignment/reserve-placement/reserve-ledger-writer.test.ts +++ b/cloud/apps/relay/src/assignment/reserve-placement/reserve-ledger-writer.test.ts @@ -26,20 +26,6 @@ describe('reserve ledger writer', () => { ) )[0] - it('writes a booked join, and only a higher epoch replaces it', async () => { - const { database: db, writer } = await setup() - writer.enqueue({ ...HOST, cellId: 'c1', epoch: 5 }) - await writer.flush() - expect(await row(db)).toMatchObject({ cell_id: 'c1', assignment_epoch: 5 }) - writer.enqueue({ ...HOST, cellId: 'c2', epoch: 4 }) - writer.enqueue({ ...HOST, cellId: 'c3', epoch: 5 }) - await writer.flush() - expect(await row(db)).toMatchObject({ cell_id: 'c1', assignment_epoch: 5 }) - writer.enqueue({ ...HOST, cellId: 'c2', epoch: 6 }) - await writer.flush() - expect(await row(db)).toMatchObject({ cell_id: 'c2', assignment_epoch: 6 }) - }) - it('drops a moved row’s counters but keeps a same-cell row’s', async () => { const { database: db, writer } = await setup() await db.query( diff --git a/cloud/apps/relay/src/cell-status-reserve-view.test.ts b/cloud/apps/relay/src/cell-status-reserve-view.test.ts deleted file mode 100644 index e554c245818..00000000000 --- a/cloud/apps/relay/src/cell-status-reserve-view.test.ts +++ /dev/null @@ -1,314 +0,0 @@ -import { afterEach, describe, expect, it, vi } from 'vitest' -import type { RelayConfig } from './config.js' - -vi.mock('./authentication/admin-token-verifier.js', () => ({ - createAdminTokenVerifier: () => async (token: string) => token === 'deploy-token', - createReadOnlyAdminTokenVerifier: () => async () => false, - createRegionalRehomeControlApplyTokenVerifier: () => async () => false, - createRegionalRehomeRuntimeTokenVerifier: () => async () => false, - createRegionalRehomeTokenVerifier: () => async () => false, - createRuntimeTokenVerifier: () => async () => false -})) - -vi.mock('./authentication/relay-token-verifier.js', () => ({ - createRelayTokenVerifier: () => async () => null, - readBearer: (value: string | undefined) => value?.replace(/^Bearer /, '') ?? null -})) - -import { createRelayApp } from './app.js' -import { RelayAssignmentStore } from './assignment/assignment-store.js' -import type { CellReserveClient } from './cell/reservations/cell-reserve-client.js' -import { openInMemoryRelayDatabase, type RelayDatabase } from './database/database.js' -import { ReserveAssignment, type ReservePlacementMode } from './assignment/reserve-placement/reserve-assignment.js' -import { ReservePlacer } from './assignment/reserve-placement/reserve-placement.js' -import { - ShadowSeatDirectory, - type SeatFeedCell, - type SeatFeedResponse -} from './cell/seats/shadow-seat-directory.js' - -const INCARNATION = '11111111-1111-4111-8111-111111111111' -const CELLS = [ - { id: 'cell-a', url: 'https://relay-a.example.com', capacityRequests: 10 }, - { id: 'cell-b', url: 'https://relay-b.example.com', capacityRequests: 10 } -] -const PER_HOST_FIELDS = [ - 'reservedRequests', - 'assignments', - 'activityLeases', - 'activityRequestUnits', - 'restartBlockingActivityLeases', - 'restartBlockingActivityRequestUnits', - 'restartBlockingReservedRequests', - 'outgoingMigrations', - 'incomingMigrations' -] - -function feed(cellId: string, overrides: Partial = {}): SeatFeedResponse { - return { - v: 1, - cellId, - incarnation: INCARNATION, - seq: 1, - at: 0, - draining: false, - counts: { seats: 40, controls: 42, bookings: 3, units: 45, ceiling: 500 }, - intake: { perSec: 5, burst: 20, tokens: 20 }, - flagsApplied: { generation: 3, flags: { admitMode: 'reserve' } }, - admitModeEffective: 'reserve', - admitModeRaw: 'reserve', - full: [], - ...overrides - } -} - -describe('reserve-aware cell status', () => { - let database: RelayDatabase | undefined - - afterEach(async () => { - await database?.close() - database = undefined - }) - - async function setup( - options: { mode?: ReservePlacementMode; startedAt?: number; placement?: boolean } = {} - ) { - const now = { value: 100_000 } - database = await openInMemoryRelayDatabase() - const store = new RelayAssignmentStore(database, () => now.value, { heartbeatTtlMs: 45_000 }) - await store.reconcileCells(CELLS) - for (const cell of CELLS) { - await store.recordCellHeartbeat({ - cellId: cell.id, - cellUrl: cell.url, - cellIncarnation: INCARNATION, - startedAt: 50, - ready: true, - observedRequests: 0 - }) - } - await store.assign({ userId: 'user-a', relayHostId: 'host000000000001' }) - await store.setCellAdmitMode('cell-a', 'reserve') - const cells: SeatFeedCell[] = CELLS.map((cell) => ({ - cellId: cell.id, - cellUrl: cell.url, - region: 'us-central1', - heartbeatExpiresAt: Number.MAX_SAFE_INTEGER, - requiredForComplete: true, - general: true - })) - const directory = new ShadowSeatDirectory() - directory.setCells(cells.map((cell) => cell.cellId)) - const reservePlacement = new ReserveAssignment({ - mode: options.mode ?? 'on', - directory, - cells: () => cells, - startedAt: options.startedAt ?? 0, - placer: new ReservePlacer( - () => now.value, - () => 0.25 - ), - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the status route never books or demotes. - client: {} as CellReserveClient, - readRow: async () => null, - now: () => now.value - }) - const app = createRelayApp(config(), { - store: {} as never, - assignments: store, - ...(options.placement === false ? {} : { reservePlacement }), - drain: vi.fn(), - ready: vi.fn(async () => true) - }) - const status = async (body: Record) => - await app.request('/v1/admin/cell-status', { - method: 'POST', - headers: { authorization: 'Bearer deploy-token', 'content-type': 'application/json' }, - body: JSON.stringify({ v: 1, ...body }) - }) - return { store, directory, now, status } - } - - it('reads a database cell exactly as today, and leaves a reserve cell without per-host counts', async () => { - const { store } = await setup() - expect(await store.reserveAwareCellDeploymentStatus('cell-b')).toEqual({ - admitMode: 'db', - status: await store.cellDeploymentStatus('cell-b') - }) - await expect(store.cellDeploymentStatus('cell-a')).rejects.toThrow('cell_in_reserve_mode') - const reserve = await store.reserveAwareCellDeploymentStatus('cell-a') - expect(reserve).toMatchObject({ - admitMode: 'reserve', - status: { - cellId: 'cell-a', - runtime: { cellIncarnation: INCARNATION, ready: true, heartbeatFresh: true } - } - }) - expect(Object.keys(reserve.status).filter((key) => PER_HOST_FIELDS.includes(key))).toEqual([]) - await database!.query( - 'ALTER TABLE relay_cell_admit_modes RENAME TO relay_cell_admit_modes_gone' - ) - const unknown = new RelayAssignmentStore(database!, () => 100_000) - await expect(unknown.reserveAwareCellDeploymentStatus('cell-b')).rejects.toThrow( - 'reserve_mode_unknown' - ) - }) - - it('keeps the 404 for a reserve cell without the opt-in, and 400s an unknown view', async () => { - const { status } = await setup() - const refused = await status({ cellId: 'cell-a' }) - expect(refused.status).toBe(404) - expect(await refused.json()).toEqual({ error: 'cell_in_reserve_mode' }) - expect((await status({ cellId: 'cell-a', view: 'all' })).status).toBe(400) - }) - - it('answers a reserve cell from the map, with perHost null and never zeros', async () => { - const { directory, now, status } = await setup() - directory.apply('cell-a', feed('cell-a', { draining: true }), now.value, now.value - 1_500) - directory.apply( - 'cell-b', - feed('cell-b', { admitModeEffective: 'db', admitModeRaw: 'db' }), - now.value, - now.value - ) - now.value += 20_000 - const response = await status({ cellId: 'cell-a', view: 'reserve-aware' }) - expect(response.status).toBe(200) - const body = await statusBody(response) - expect(body.status).toMatchObject({ - cellId: 'cell-a', - admissionState: 'general', - runtime: { cellIncarnation: INCARNATION }, - perHost: null, - reserve: { - admitMode: 'reserve', - feedStatus: 'live', - // Reported, not enforced: the caller rejects a stale map. - polledAgeMs: 21_500, - incarnation: INCARNATION, - draining: true, - controls: 42, - seats: 40, - bookings: 3, - units: 45, - ceiling: 500, - intakePerSec: 5, - free: 500 - (45 - 3) - 3 - } - }) - expect(Object.keys(body.status).filter((key) => PER_HOST_FIELDS.includes(key))).toEqual([]) - }) - - it('reports nulls, not zeros, for a restarted cell that has not applied its reserve switch', async () => { - const { directory, now, status } = await setup() - directory.apply( - 'cell-a', - feed('cell-a', { - counts: { seats: 0, controls: 0 }, - intake: undefined, - flagsApplied: { generation: 0, flags: {} }, - admitModeEffective: 'db', - admitModeRaw: 'db' - }), - now.value, - now.value - ) - const body = await statusBody(await status({ cellId: 'cell-a', view: 'reserve-aware' })) - expect(body.status.reserve).toMatchObject({ - admitMode: 'db', - bookings: null, - units: null, - ceiling: null, - intakePerSec: null, - free: null - }) - }) - - it('answers a retryable 503 while this director cannot vouch for the cell', async () => { - const unavailable = async (response: Response) => ({ - status: response.status, - retryAfter: response.headers.get('Retry-After'), - body: await response.json() - }) - const expected = (reason: string) => ({ - status: 503, - retryAfter: '5', - body: { error: 'reserve_status_unavailable', reason } - }) - for (const options of [{ mode: 'dry-run' as const }, { placement: false }]) { - const { directory, now, status } = await setup(options) - directory.apply('cell-a', feed('cell-a'), now.value, now.value) - expect(await unavailable(await status({ cellId: 'cell-a', view: 'reserve-aware' }))).toEqual( - expected('placement-off') - ) - await database?.close() - } - // A starting director with one cell unheard. - const starting = await setup({ startedAt: 99_000 }) - starting.directory.apply('cell-a', feed('cell-a'), starting.now.value, starting.now.value) - expect( - await unavailable(await starting.status({ cellId: 'cell-a', view: 'reserve-aware' })) - ).toEqual(expected('map-incomplete')) - await database?.close() - const { directory, now, status } = await setup() - directory.apply('cell-b', feed('cell-b'), now.value, now.value) - directory.markNoFeed('cell-a', now.value) - expect(await unavailable(await status({ cellId: 'cell-a', view: 'reserve-aware' }))).toEqual( - expected('no-feed') - ) - // A feed without the drain flag or counts is an older image: no feed, never an empty cell. - directory.apply('cell-a', feed('cell-a', { draining: undefined }), now.value, now.value) - expect(await unavailable(await status({ cellId: 'cell-a', view: 'reserve-aware' }))).toEqual( - expected('no-feed') - ) - directory.apply('cell-a', feed('cell-a', { counts: undefined }), now.value, now.value) - expect(await unavailable(await status({ cellId: 'cell-a', view: 'reserve-aware' }))).toEqual( - expected('no-feed') - ) - // The process that answered the feed is not the one heartbeating the runtime row. - directory.apply( - 'cell-a', - feed('cell-a', { incarnation: '22222222-2222-4222-8222-222222222222' }), - now.value, - now.value - ) - expect(await unavailable(await status({ cellId: 'cell-a', view: 'reserve-aware' }))).toEqual( - expected('incarnation-mismatch') - ) - }) -}) - -async function statusBody(response: Response) { - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the route answers { v, status } on 200. - return (await response.json()) as { v: number; status: Record } -} - -function config(overrides: Partial = {}): RelayConfig { - return { - port: 8080, - publicUrl: 'https://relay.example.test', - cellUrl: 'https://relay.example.test', - region: 'us-central1', - authIssuer: 'https://auth.example.test', - authAudience: 'orca-relay', - jwksUrl: 'https://auth.example.test/jwks', - assignmentSigningKey: new Uint8Array(32), - role: 'director', - cellId: 'director', - cells: [], - adminAudience: 'https://relay.example.test/v1/admin/drain', - deployServiceAccount: 'deploy@example.test', - runtimeServiceAccount: 'relay-cell@example.test', - adminJwksUrl: 'https://auth.example.test/jwks', - databasePoolMax: 10, - publicAssignmentsEnabled: true, - publicAssignmentConcurrency: 2, - publicAssignmentQueueMax: 128, - publicAssignmentWaitMs: 4_000, - publicResolveConcurrency: 1, - publicResolveWaitMs: 5_000, - publicAssignmentRetryAfterSeconds: 5, - dataDir: './data', - ...overrides - } -} diff --git a/cloud/apps/relay/src/cell/admission/cell-admission-selector.test.ts b/cloud/apps/relay/src/cell/admission/cell-admission-selector.test.ts index f7c4164afc1..3069552a6e0 100644 --- a/cloud/apps/relay/src/cell/admission/cell-admission-selector.test.ts +++ b/cloud/apps/relay/src/cell/admission/cell-admission-selector.test.ts @@ -1,4 +1,3 @@ -import { ASSIGNMENT_LIMITS } from '@orca-cloud/relay-contract/assignment-invariants' import { createHash } from 'node:crypto' import { afterEach, describe, expect, it } from 'vitest' import { RelayAssignmentStore } from '../../assignment/assignment-store.js' @@ -27,41 +26,6 @@ const BASE_MEMBERSHIP = { general: ['c1', 'c2', 'c3'] } -class FailAfterIntentDatabase implements RelayDatabase { - private transactionsUntilFailure = Number.POSITIVE_INFINITY - - constructor(private readonly delegate: RelayDatabase) {} - - failSecondTransaction(): void { - this.transactionsUntilFailure = 2 - } - - async query(sql: string, params?: unknown[]): Promise { - return await this.delegate.query(sql, params) - } - - async queryLocked( - sql: string, - params?: unknown[], - options?: RelayLockOptions - ): Promise { - return await this.delegate.queryLocked(sql, params, options) - } - - async transaction(operation: (transaction: RelayDatabase) => Promise): Promise { - this.transactionsUntilFailure-- - if (this.transactionsUntilFailure === 0) { - this.transactionsUntilFailure = Number.POSITIVE_INFINITY - throw new Error('injected_commit_ambiguity') - } - return await this.delegate.transaction(operation) - } - - async close(): Promise { - await this.delegate.close() - } -} - class AfterTransactionDatabase implements RelayDatabase { private afterTransaction: (() => Promise) | undefined @@ -154,34 +118,6 @@ describe('relay cell admission selector', () => { }) }) - it('excludes existing-only and migration-only cells from dormant placement', async () => { - let now = 100 - const store = await setup(() => now) - const identity = { userId: 'dormant', relayHostId: 'host000000000001' } - const assignment = await store.assign(identity) - const control = await store.activateControl(identity, { - cellId: assignment.cellId, - assignmentEpoch: assignment.assignmentEpoch, - generation: 1 - }) - await store.releaseActivity(identity, control) - now += ASSIGNMENT_LIMITS.dormantTtlMs + 1 - - await store.applyCellAdmissionSelector({ - attemptId: 'cutover_002', - expectedGeneration: 0, - expectedMembershipSha256: BASE_MEMBERSHIP_SHA256, - membership: INITIAL_MEMBERSHIP - }) - - await expect(store.rebalanceDormant(identity, 'c2')).rejects.toThrow( - 'target_cell_unavailable' - ) - await expect(store.rebalanceDormant(identity, 'c3')).resolves.toMatchObject({ - cellId: 'c3' - }) - }) - it('does not recover an unfenced dead existing-only assignment', async () => { let now = 100 const store = await setup(() => now, true) @@ -283,94 +219,6 @@ describe('relay cell admission selector', () => { ]) }) - it('persists failed CAS intent without mutating current membership', async () => { - const store = await setup(() => 100) - await store.applyCellAdmissionSelector({ - attemptId: 'cutover_005', - expectedGeneration: 0, - expectedMembershipSha256: BASE_MEMBERSHIP_SHA256, - membership: INITIAL_MEMBERSHIP - }) - - await expect( - store.applyCellAdmissionSelector({ - attemptId: 'stale_attempt', - expectedGeneration: 5, - membership: { - existingOnly: ['c1'], - migrationOnly: [], - general: ['c2', 'c3'] - } - }) - ).rejects.toThrow('admission_selector_generation_mismatch') - await expect(store.inspectCellAdmissionSelector('stale_attempt')).resolves.toMatchObject({ - selector: { generation: 1, membership: INITIAL_MEMBERSHIP }, - intent: { state: 'diverged' } - }) - }) - - it('rejects duplicate or incomplete selector membership before mutation', async () => { - const store = await setup(() => 100) - - await expect( - store.applyCellAdmissionSelector({ - attemptId: 'duplicate_001', - expectedGeneration: 0, - expectedMembershipSha256: BASE_MEMBERSHIP_SHA256, - membership: { - existingOnly: ['c1', 'c1'], - migrationOnly: ['c2'], - general: ['c3'] - } - }) - ).rejects.toThrow('admission_selector_duplicate_cell') - await expect( - store.applyCellAdmissionSelector({ - attemptId: 'incomplete_001', - expectedGeneration: 0, - expectedMembershipSha256: BASE_MEMBERSHIP_SHA256, - membership: { - existingOnly: ['c1'], - migrationOnly: ['c2'], - general: [] - } - }) - ).rejects.toThrow('admission_selector_incomplete_membership') - await expect(store.inspectCellAdmissionSelector()).resolves.toMatchObject({ - selector: { - generation: 0, - membership: { existingOnly: [], migrationOnly: [], general: ['c1', 'c2', 'c3'] } - } - }) - }) - - it('inspects an unchanged durable intent after an ambiguous apply failure', async () => { - const underlying = await openInMemoryRelayDatabase() - const failingDatabase = new FailAfterIntentDatabase(underlying) - database = failingDatabase - const store = new RelayAssignmentStore(failingDatabase, () => 100) - await store.reconcileCells(CELLS) - failingDatabase.failSecondTransaction() - - const input = { - attemptId: 'ambiguous_001', - expectedGeneration: 0, - expectedMembershipSha256: BASE_MEMBERSHIP_SHA256, - membership: INITIAL_MEMBERSHIP - } - await expect(store.applyCellAdmissionSelector(input)).rejects.toThrow( - 'injected_commit_ambiguity' - ) - await expect(store.inspectCellAdmissionSelector(input.attemptId)).resolves.toMatchObject({ - selector: { generation: 0 }, - intent: { state: 'unchanged' } - }) - await expect(store.applyCellAdmissionSelector(input)).resolves.toMatchObject({ - changed: true, - selector: { generation: 1, membership: INITIAL_MEMBERSHIP } - }) - }) - it('allows only one concurrent CAS and never re-enables legacy cells', async () => { const store = await setup(() => 100) await store.applyCellAdmissionSelector({ @@ -416,24 +264,6 @@ describe('relay cell admission selector', () => { ).rejects.toThrow('admission_selector_legacy_reenable') }) - it('preserves the selector boundary across compatible reconciliation', async () => { - const store = await setup(() => 100) - await store.applyCellAdmissionSelector({ - attemptId: 'cutover_007', - expectedGeneration: 0, - expectedMembershipSha256: BASE_MEMBERSHIP_SHA256, - membership: INITIAL_MEMBERSHIP - }) - - await expect(store.reconcileCells(CELLS, false)).resolves.toBeUndefined() - await expect(store.reconcileCells([CELLS[0]!, CELLS[2]!])).rejects.toThrow( - 'admission_selector_boundary_active' - ) - await expect(store.inspectCellAdmissionSelector()).resolves.toMatchObject({ - selector: { generation: 1, membership: INITIAL_MEMBERSHIP } - }) - }) - it('atomically adds exact migration-only cells after the selector boundary', async () => { const store = await setup(() => 100) await store.applyCellAdmissionSelector({ diff --git a/cloud/apps/relay/src/cell/admission/cell-connection-cap.test.ts b/cloud/apps/relay/src/cell/admission/cell-connection-cap.test.ts index d3e20f33e75..75e17a40b7a 100644 --- a/cloud/apps/relay/src/cell/admission/cell-connection-cap.test.ts +++ b/cloud/apps/relay/src/cell/admission/cell-connection-cap.test.ts @@ -1,14 +1,11 @@ -import { createHash } from 'node:crypto' import { afterEach, describe, expect, it, vi } from 'vitest' import { RelayAssignmentStore } from '../../assignment/assignment-store.js' -import { encodeMembership, type CellAdmissionMembership } from './cell-admission-selector.js' import type { RelayCellConfig } from '../../config.js' import { openInMemoryRelayDatabase, type RelayDatabase } from '../../database/database.js' const HEARTBEAT_TTL_MS = 45_000 const BOUND = 60 const OLD_INCARNATION = '11111111-1111-4111-8111-111111111111' -const NEW_INCARNATION = '22222222-2222-4222-8222-222222222222' function cell(index: number, connectionHardCap: 1_000 | 3_000): RelayCellConfig { const id = `us-c${String(index).padStart(2, '0')}` @@ -40,7 +37,7 @@ type Report = { async function setup(cells: RelayCellConfig[]) { const database = await openInMemoryRelayDatabase() databases.push(database) - let now = 100 + const now = 100 const store = new RelayAssignmentStore(database, () => now, { requireLiveCells: true, heartbeatTtlMs: HEARTBEAT_TTL_MS @@ -81,32 +78,13 @@ async function setup(cells: RelayCellConfig[]) { } return rows } - const isolateForRoll = async (cellId: string): Promise => { - const current = await store.inspectCellAdmissionSelector() - const membership: CellAdmissionMembership = { - existingOnly: [], - migrationOnly: [cellId], - general: cells.map(({ id }) => id).filter((id) => id !== cellId) - } - await store.applyCellAdmissionSelector({ - attemptId: `isolate-${cellId}`, - expectedGeneration: current.selector.generation, - expectedMembershipSha256: createHash('sha256') - .update(encodeMembership(current.selector.membership)) - .digest('hex'), - membership, - rollIsolatedCells: [cellId] - }) - } return { database, store, heartbeat, capacity, reportedHardCap, - telemetryRows, - isolateForRoll, - setNow: (value: number) => (now = value) + telemetryRows } } @@ -215,63 +193,4 @@ describe('effective connection cap = min(configured, reported)', () => { harness.store.assign({ userId: 'user-a', relayHostId: 'host000000000001' }) ).rejects.toThrow('relay_capacity_exhausted') }) - - it('places a mixed fleet against each cell’s own reported cap', async () => { - const small = cell(1, 3_000) - const large = cell(2, 3_000) - const harness = await setup([small, large]) - await harness.heartbeat(small, { connectionHardCap: 1_000, units: 840 }) - await harness.heartbeat(large, { connectionHardCap: 3_000, units: 840 }) - - expect(await harness.capacity(small.id)).toMatchObject({ normalAdmissionPause: 840 }) - expect(await harness.capacity(large.id)).toMatchObject({ normalAdmissionPause: 2_840 }) - for (let index = 0; index < 4; index++) { - await expect( - harness.store.assign({ userId: `user-${index}`, relayHostId: `host00000000000${index}` }) - ).resolves.toMatchObject({ cellId: large.id }) - } - }) - - it('has no unavailable window while a cell rolls 1,000 -> 3,000', async () => { - const cells = [cell(1, 1_000), cell(2, 1_000)] - const [rolled, neighbour] = cells - const harness = await setup(cells) - const identity = { userId: 'user-a', relayHostId: 'host000000000001' } - await harness.heartbeat(rolled!, { connectionHardCap: 1_000 }) - await harness.heartbeat(neighbour!, { connectionHardCap: 1_000, units: 500 }) - const home = await harness.store.assign(identity) - expect(home.cellId).toBe(rolled!.id) - await harness.store.reconcileCells( - cells.map((_, index) => cell(index + 1, 3_000)), - true - ) - - // The old process keeps heartbeating its 1,000 well past the TTL; the host stays sticky. - for (const at of [30_000, 60_000, 90_000]) { - harness.setNow(at) - await harness.heartbeat(rolled!, { connectionHardCap: 1_000 }) - await harness.heartbeat(neighbour!, { connectionHardCap: 1_000, units: 500 }) - await expect(harness.store.assign(identity)).resolves.toMatchObject({ - cellId: rolled!.id, - assignmentEpoch: home.assignmentEpoch - }) - } - // The roll isolates the live old process: the isolated-incumbent lane re-places the host. - await harness.isolateForRoll(rolled!.id) - const moved = await harness.store.assign(identity) - expect(moved).toMatchObject({ cellId: neighbour!.id, placed: true }) - - // The replacement boots and reports the new cap. - harness.setNow(120_000) - await harness.heartbeat(rolled!, { - connectionHardCap: 3_000, - incarnation: NEW_INCARNATION, - startedAt: 110_000 - }) - expect(await harness.capacity(rolled!.id)).toMatchObject({ - effectiveHardCap: 3_000, - heartbeatFresh: true - }) - }) - }) diff --git a/cloud/apps/relay/src/cell/control-flags/relay-control-flag-channel.test.ts b/cloud/apps/relay/src/cell/control-flags/relay-control-flag-channel.test.ts index 6e6eeee42c8..60358c5d59b 100644 --- a/cloud/apps/relay/src/cell/control-flags/relay-control-flag-channel.test.ts +++ b/cloud/apps/relay/src/cell/control-flags/relay-control-flag-channel.test.ts @@ -77,25 +77,6 @@ describe('control flag channel', () => { .filter((line) => line.includes(`"event":"${CELL_FLAGS_APPLIED_EVENT}"`)) .map((line): unknown => JSON.parse(line)) - it('flips a flag on and back off, logging each applied generation once', async () => { - const google = fakeGoogle(cellObject(5, { readinessLocal: true, ticketCheck: 'shadow' })) - const channel = cellChannel(google.fetchImpl) - await channel.poll() - await channel.poll() - expect(google.state.storageRequests[1]?.searchParams.get('ifGenerationNotMatch')).toBe('5') - google.state.object = cellObject(7, { readinessLocal: false, ticketCheck: 'off' }) - await channel.poll() - expect(channel.applied()).toEqual({ generation: 7, flags: CELL_FLAG_DEFAULTS }) - expect(appliedLines()).toEqual([ - { - event: CELL_FLAGS_APPLIED_EVENT, - generation: 5, - flags: { ...CELL_FLAG_DEFAULTS, readinessLocal: true, ticketCheck: 'shadow' } - }, - { event: CELL_FLAGS_APPLIED_EVENT, generation: 7, flags: CELL_FLAG_DEFAULTS } - ]) - }) - it('keeps the applied values through every kind of lost contact, logging once per cause', async () => { const google = fakeGoogle(cellObject(5, { readinessLocal: true })) const channel = cellChannel(google.fetchImpl) diff --git a/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man-slots.blackbox.test.ts b/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man-slots.blackbox.test.ts index 7c0eba9cacb..59eb5dd1637 100644 --- a/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man-slots.blackbox.test.ts +++ b/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man-slots.blackbox.test.ts @@ -128,13 +128,4 @@ describe('dead-man trip slots', () => { expect(seated.socket.readyState).toBe(WebSocket.OPEN) }, 30_000) - it('without the flag, trips with every slot taken, as before', async () => { - let now = Date.now() - const { database, reserve } = await cell(() => now) - await trippedPeer(database, 'production-gce-c90', now) - await reserve.bookedHost(3) - expect(reserve.relay.sessions.inReserveMode()).toBe(true) - now += reserveDeadManWindowMs(reserve.config.cellId) + 1_000 - expect(reserve.relay.sessions.inReserveMode()).toBe(false) - }, 30_000) }) diff --git a/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man.test.ts b/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man.test.ts index 518925c8268..7ced8b04125 100644 --- a/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man.test.ts +++ b/cloud/apps/relay/src/cell/reservations/cell-reserve-dead-man.test.ts @@ -55,15 +55,6 @@ describe('ReserveDeadMan', () => { ]) }) - it('keeps the plain window for a later reserve write once a director has been in touch', () => { - const { clock, deadMan } = setup(3 * WINDOW_MS) - deadMan.mode(reserve(1)) - deadMan.contact() - expect(deadMan.mode(reserve(2))).toBe('reserve') - clock.value += WINDOW_MS + 1 - expect(deadMan.mode(reserve(2))).toBe('db') - }) - // A claim answered after the director came back must not trip the cell later without a slot. it('drops a permit for a silence that contact has ended', () => { const { clock, deadMan, events } = setup() diff --git a/cloud/apps/relay/src/cell/seats/cell-poll-reachability.test.ts b/cloud/apps/relay/src/cell/seats/cell-poll-reachability.test.ts index fc6201b5989..38fe72400b5 100644 --- a/cloud/apps/relay/src/cell/seats/cell-poll-reachability.test.ts +++ b/cloud/apps/relay/src/cell/seats/cell-poll-reachability.test.ts @@ -50,7 +50,7 @@ const answer = (status: number) => new Response('{}', { status }) // Every cell serves a feed page on the first round; `respond` answers every round after it. function poller( respond: (cellId: string) => Response | Promise, - options: { identityFails?: boolean; cells?: SeatFeedCell[]; neverServed?: ReadonlySet } = {} + options: { cells?: SeatFeedCell[]; neverServed?: ReadonlySet } = {} ) { let now = 1_000 let round = 0 @@ -66,7 +66,6 @@ function poller( return round === 0 ? page(cellId) : await respond(cellId) }), identityToken: vi.fn(async () => { - if (options.identityFails && round > 0) throw new Error('metadata_unavailable') return 'token-1' }), now: () => now, @@ -107,13 +106,6 @@ describe('seat-feed poller reachability', () => { } }) - it('does not blame a cell for a token this director cannot mint', async () => { - const cells = poller((cellId) => page(cellId), { identityFails: true }) - const at = await cells.run(CELL_POLL_DEAD_STREAK_MS) - cells.stop() - expect(cells.deadCellVerdict('c2', at)).toBeNull() - }) - it('counts only cells that served a feed: legacy 404 rows neither fill the sample nor dilute it', async () => { // Staging's shape: a few real cells and 16 legacy rows. Every real cell fails. const cells = poller(() => answer(502), { cells: [...CELLS.slice(0, 3), ...LEGACY] }) diff --git a/cloud/apps/relay/src/cell/seats/shadow-seat-directory.test.ts b/cloud/apps/relay/src/cell/seats/shadow-seat-directory.test.ts index 373a119003e..517e2966282 100644 --- a/cloud/apps/relay/src/cell/seats/shadow-seat-directory.test.ts +++ b/cloud/apps/relay/src/cell/seats/shadow-seat-directory.test.ts @@ -351,17 +351,6 @@ describe('startShadowSeatPoller', () => { expect(directory.cellState('cell-b')?.flagsApplied).toBeUndefined() }) - it('completes without a cell that is dead, empty or isolated', async () => { - const cell = poller({ 'cell-a': () => json(feed({ seq: 1, full: [] })) }, 'all', async () => [ - CELLS[0]!, - { ...CELLS[1]!, requiredForComplete: false } - ]) - await cell.tick() - cell.stop() - expect(cell.directory.cellState('cell-b')).toMatchObject({ status: 'pending' }) - expect(cell.directory.isComplete()).toBe(true) - }) - it('treats a malformed or mislabelled body as unverifiable', async () => { const cell = poller({ 'cell-a': () => json({ v: 2 }), diff --git a/cloud/apps/relay/src/connections/cell-phone-path.blackbox.test.ts b/cloud/apps/relay/src/connections/cell-phone-path.blackbox.test.ts index 822c12000a3..f41cd74388a 100644 --- a/cloud/apps/relay/src/connections/cell-phone-path.blackbox.test.ts +++ b/cloud/apps/relay/src/connections/cell-phone-path.blackbox.test.ts @@ -2,11 +2,9 @@ import { mkdtempSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' import { afterEach, describe, expect, it, vi } from 'vitest' -import { reserveDeadManWindowMs } from '../cell/reservations/cell-reserve-dead-man.js' import { openRelayDatabase } from '../database/database.js' import { nextFrame, - RESERVE_MODE_CELL_ID, startReserveModeCell } from '../test-fixtures/reserve-mode-cell.js' import { StatementRecordingDatabase } from '../test-fixtures/statement-recording-database.js' @@ -22,14 +20,6 @@ const OTHER_CELL = { capacityRequests: 900 } -async function until(check: () => Promise, timeoutMs = 10_000): Promise { - const deadline = Date.now() + timeoutMs - while (!(await check())) { - if (Date.now() > deadline) throw new Error('condition not reached') - await new Promise((resolve) => setTimeout(resolve, 50)) - } -} - describe('the memory phone path', () => { const cleanup: Array<() => Promise | void> = [] @@ -67,14 +57,12 @@ describe('the memory phone path', () => { // A phone resumed and spliced to its desktop, waiting to confirm. async function splicedPhone( phonePath: 'db' | 'memory', - device: { expiresAt?: number } = {}, - clock: { now?: () => number; beforeDial?: () => void } = {} + device: { expiresAt?: number } = {} ) { - const reserve = await cell(clock.now) + const reserve = await cell() reserve.setAdmitMode('reserve', { phonePath }) const seated = await reserve.bookedHost(3) await reserve.installDevice(seated.identity.hostId, TOKEN, device) - clock.beforeDial?.() const connOpen = nextFrame(seated.socket, 'conn-open') const phone = await reserve.dialPhone(seated.identity.hostId, TOKEN) const basisConnId = String((await connOpen).connId) @@ -97,44 +85,6 @@ describe('the memory phone path', () => { const deviceRow = async (reserve: Awaited>) => (await reserve.raw.query(`SELECT current_expires_at FROM relay_devices`))[0] - it('admits a seated phone resume without an activity lease', async () => { - const { reserve, seated } = await seatedPhoneHost('memory') - const connOpen = nextFrame(seated.socket, 'conn-open') - const phone = await reserve.dialPhone(seated.identity.hostId, TOKEN) - expect(await connOpen).toMatchObject({ kind: 'resume', relayDeviceId: 'device-1' }) - await reserve.attachData(await connOpen, seated.ack.generation) - expect(await phone.hello).toMatchObject({ - type: 'relay-hello', - ok: true, - credentialKind: 'resume' - }) - expect(await reserve.activityLeases()).toEqual([]) - }) - - it('persists the connection basis and activity leases while phonePath is db', async () => { - const { reserve, seated } = await seatedPhoneHost('db') - const connOpen = nextFrame(seated.socket, 'conn-open') - const phone = await reserve.dialPhone(seated.identity.hostId, TOKEN) - await reserve.attachData(await connOpen, seated.ack.generation) - expect(await phone.hello).toMatchObject({ type: 'relay-hello', ok: true }) - expect((await reserve.activityLeases()).map((lease) => lease.activity_kind).sort()).toEqual([ - 'confirmation', - 'splice' - ]) - expect( - await reserve.raw.query( - `SELECT basis_conn_id, relay_device_id, credential_kind, active FROM relay_connection_bases` - ) - ).toEqual([ - { - basis_conn_id: String((await connOpen).connId), - relay_device_id: 'device-1', - credential_kind: 'resume', - active: 1 - } - ]) - }) - it('closes a revoked or expired device 4401', async () => { const reserve = await cell() reserve.setAdmitMode('reserve', { phonePath: 'memory' }) @@ -275,24 +225,6 @@ describe('the memory phone path', () => { expect(await confirm('confirm-2')).toMatchObject({ code: 'confirmation_not_active' }) }) - it('answers a grace-version confirm renewed:false with its expiry unchanged, as today', async () => { - const { reserve, confirm } = await splicedPhone('memory') - const stored = Number((await deviceRow(reserve))?.current_expires_at) - // An install rotated the credential after the accept read, so the accepted version is grace. - await reserve.raw.query( - `UPDATE relay_devices SET grace_hash = current_hash, grace_version = 1, grace_expires_at = ?, - current_hash = 'rotated', current_version = 2`, - [Date.now() + 60_000] - ) - expect(await confirm('confirm-1')).toMatchObject({ - type: 'device-resume-confirmed', - currentVersion: 2, - acceptedAs: 'current', - renewed: false, - resumeExpiresAt: stored - }) - }) - it('durably confirms and renews a database-path resume, releasing only its confirmation lease', async () => { const { reserve, confirm, basisConnId } = await splicedPhone('db') const before = Number((await deviceRow(reserve))?.current_expires_at) @@ -314,70 +246,6 @@ describe('the memory phone path', () => { expect(await confirm('confirm-1')).toEqual(answer) }) - describe('rolling a memory cell back', () => { - // Flip back by the switch, or by the dead-man; either way the confirm finishes from memory. - type Cell = Awaited> - type Advance = (ms: number) => void - type Rollback = { - beforeDial?: (advance: Advance) => void - roll: (reserve: Cell, advance: Advance) => void - } - // The dead-man trips just after the phone's accept: its window ran from the host's booking. - const window = reserveDeadManWindowMs(RESERVE_MODE_CELL_ID) - const rollbacks: Record = { - 'admitMode=db': { roll: (reserve) => reserve.setAdmitMode('db', { phonePath: 'memory' }) }, - 'phonePath=db': { roll: (reserve) => reserve.setAdmitMode('reserve', { phonePath: 'db' }) }, - 'a dead-man trip': { - beforeDial: (advance) => advance(window - 5_000), - roll: (_reserve, advance) => advance(6_000) - } - } - - for (const [name, rollback] of Object.entries(rollbacks)) { - it(`finishes an in-flight confirm on its memory basis after ${name}, writing and leaking no lease`, async () => { - let now = Date.now() - const advance: Advance = (ms) => { - now += ms - } - const spliced = await splicedPhone( - 'memory', - {}, - { - now: () => now, - beforeDial: () => rollback.beforeDial?.(advance) - } - ) - const { reserve, seated } = spliced - // The flag tool records reserve in Postgres before the cell admits from memory. - await reserve.relay.assignments.reconcileCells([...reserve.config.cells, OTHER_CELL]) - await reserve.relay.assignments.setCellAdmitMode(reserve.config.cellId, 'reserve') - rollback.roll(reserve, advance) - expect(reserve.relay.sessions.phonePathEffective()).toBe('db') - expect(await spliced.confirm('confirm-1')).toMatchObject({ - type: 'device-resume-confirmed', - renewed: true - }) - // Only the control lease a flip back re-registers; nothing for the phone. - const leases = async () => - (await reserve.activityLeases()).map((lease) => lease.activity_kind) - expect((await leases()).filter((kind) => kind !== 'control')).toEqual([]) - // Postgres still records reserve, so evacuation leaves the cell alone. - await expect( - reserve.relay.assignments.startEvacuation( - { userId: 'user-1', relayHostId: seated.identity.hostId }, - OTHER_CELL.id - ) - ).rejects.toThrow('cell_in_reserve_mode') - // The splice still runs, and closing it releases nothing it never took. - expect(spliced.phone.socket.readyState).toBe(spliced.phone.socket.OPEN) - await until(async () => reserve.relay.sessions.reregistrationPending() === 0) - spliced.phone.socket.close() - await spliced.phone.closed - expect((await leases()).filter((kind) => kind !== 'control')).toEqual([]) - }) - } - }) - // E-dep-6 in miniature: the staging drill blocks one memory cell's database for 10 minutes. it('rides out a database outage: splices keep forwarding, new work fails cleanly and recovers', async () => { let now = Date.now() diff --git a/cloud/apps/relay/src/connections/host-session-registry.test.ts b/cloud/apps/relay/src/connections/host-session-registry.test.ts deleted file mode 100644 index 1208ebd1658..00000000000 --- a/cloud/apps/relay/src/connections/host-session-registry.test.ts +++ /dev/null @@ -1,329 +0,0 @@ -import { EventEmitter } from 'node:events' -import { CONTROL_CONTINUITY_LIMITS } from '@orca-cloud/relay-contract/control-continuity' -import { RELAY_CLOSE_CODE } from '@orca-cloud/relay-contract/close-codes' -import { RELAY_HOST_CAPABILITY_IDLE_REGIONAL_REHOME } from '@orca-cloud/relay-contract/control-messages' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import type WebSocket from 'ws' -import type { RelayAssignmentStore } from '../assignment/assignment-store.js' -import type { RelayConfig } from '../config.js' -import type { RelayCredentialStore } from '../credentials/credential-store.js' -import { CONTROL_RENEWAL_BATCH_INTERVAL_MS } from '../control-leases/control-renewal-batch.js' -import type { - ControlRenewalOutcome -} from '../control-leases/control-renewal-statement.js' -import { - HostSessionRegistry, - IDLE_REHOME_MIN_CONTROL_AGE_MS, - type HostSession -} from './host-session-registry.js' -import type { RelayRuntimeObserver } from '../observability/relay-observability.js' -import type { RelayTokenClaims } from '../authentication/relay-token-verifier.js' -import { ProcessQueuedByteBudget } from './splice-forwarder.js' - -// A due renewal leaves the heartbeat as a batch enqueue, so the store only sees -// the tick once the batch window closes. -async function closeRenewalWindow(): Promise { - await vi.advanceTimersByTimeAsync(CONTROL_RENEWAL_BATCH_INTERVAL_MS) -} - -class FakeSocket extends EventEmitter { - readonly OPEN = 1 - readonly CLOSING = 2 - readonly CLOSED = 3 - readyState = this.OPEN - readonly send = vi.fn() - readonly close = vi.fn((code?: number, reason?: string) => { - this.readyState = this.CLOSED - this.emit('close', code, Buffer.from(reason ?? '')) - }) - readonly terminate = vi.fn(() => { - this.readyState = this.CLOSED - this.emit('close') - }) -} - -type ActivateSession = ( - socket: WebSocket, - identity: RelayTokenClaims, - existing: HostSession | null, - generation: number, - rebind: boolean, - assignmentEpoch: number, - appVersion?: string -) => Promise - -const config = { - port: 8080, - publicUrl: 'https://relay-c3.example.com', - cellUrl: 'https://relay-c3.example.com', - authIssuer: 'https://auth.example.com', - authAudience: 'orca-relay', - jwksUrl: 'https://auth.example.com/jwks', - assignmentSigningKey: new Uint8Array(32), - role: 'cell', - cellId: 'production-gce-c3', - cells: [ - { - id: 'production-gce-c3', - url: 'https://relay-c3.example.com', - capacityRequests: 4_000 - } - ], - adminAudience: 'https://relay-c3.example.com/v1/admin/drain', - deployServiceAccount: 'deploy@example.com', - runtimeServiceAccount: 'runtime@example.com', - adminJwksUrl: 'https://auth.example.com/admin-jwks', - databasePoolMax: 10, - publicAssignmentsEnabled: true, - publicAssignmentConcurrency: 2, - publicAssignmentQueueMax: 128, - publicAssignmentWaitMs: 4_000, - publicResolveConcurrency: 1, - publicResolveWaitMs: 5_000, - publicAssignmentRetryAfterSeconds: 5, - dataDir: './test-data' -} satisfies RelayConfig - -const identity = { - sub: 'user-1', - prof: 'profile-1', - relayHostId: 'abcdefghijklmnop', - purpose: 'host-control', - exp: 4_102_444_800 -} satisfies RelayTokenClaims - -function deferred(): { - promise: Promise - resolve(value: T): void -} { - let resolve!: (value: T) => void - const promise = new Promise((complete) => { - resolve = complete - }) - return { promise, resolve } -} - -function createRegistry( - activateControl: RelayAssignmentStore['activateControl'], - store: Partial = {}, - verifyRelayToken: (token: string) => Promise = vi.fn() -): { - registry: HostSessionRegistry - activate: ActivateSession - acquireActivity: ReturnType - renewControlActivities: ReturnType> - releaseActivity: ReturnType - observer: { - recordAuth: ReturnType - recordControlClose: ReturnType - recordPostProofClose: ReturnType - recordSpliceClose: ReturnType - } -} { - const acquireActivity = vi.fn().mockResolvedValue(undefined) - const releaseActivity = vi.fn().mockResolvedValue(true) - const renewControlActivities = vi - .fn() - .mockImplementation(async (rows) => rows.map(() => 'renewed')) - const assignments = { - activateControl, - markMigrationTargetRegistered: vi.fn().mockResolvedValue(undefined), - resolve: vi.fn().mockResolvedValue({ cellId: config.cellId }), - acquireActivity, - renewControlActivities, - releaseActivity - } as unknown as RelayAssignmentStore - const observer = { - recordAuth: vi.fn(), - recordForwardedBytes: vi.fn(), - recordHttp: vi.fn(), - recordReconnect: vi.fn(), - recordSql: vi.fn(), - recordControlClose: vi.fn(), - recordPostProofClose: vi.fn(), - recordSpliceClose: vi.fn() - } satisfies RelayRuntimeObserver - const registry = new HostSessionRegistry( - config, - verifyRelayToken, - store as RelayCredentialStore, - assignments, - new ProcessQueuedByteBudget(), - observer, - Date.now, - Math.random, - 'incarnation-1' - ) - // Mirrors the production signature exactly so a future positional shift fails to compile. - const bound = ( - registry as unknown as { - activate: ( - socket: WebSocket, - identity: RelayTokenClaims, - existing: HostSession | null, - generation: number, - rebind: boolean, - assignmentEpoch: number, - appVersion: string, - connectionInclusionWatermark?: number - ) => Promise - } - ).activate.bind(registry) - const activate: ActivateSession = ( - socket, - identity, - existing, - generation, - rebind, - assignmentEpoch, - appVersion = '1.4.173' - ) => bound(socket, identity, existing, generation, rebind, assignmentEpoch, appVersion) - return { - registry, - activate, - acquireActivity, - renewControlActivities, - releaseActivity, - observer - } -} - -describe('host session cleanup races', () => { - beforeEach(() => vi.useFakeTimers()) - afterEach(() => { - vi.clearAllTimers() - vi.useRealTimers() - }) - - // c34 ghost seat came from activation outliving orphan grace and reviving a removed session outside the map. - it('refuses a rebind whose session left the map while its activation was in flight', async () => { - const blocked = deferred() - const activateControl = vi - .fn() - .mockResolvedValueOnce('control:production-gce-c3:1') - .mockReturnValueOnce(blocked.promise) - const { registry, activate, releaseActivity } = createRegistry(activateControl) - const key = { userId: identity.sub, relayHostId: identity.relayHostId } - const originalSocket = new FakeSocket() - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: FakeSocket implements the registry's WebSocket event and lifecycle surface. - await activate(originalSocket as unknown as WebSocket, identity, null, 1, false, 1) - const original = registry.get(key) - originalSocket.close(1006, 'network reset') - expect(original?.state).toBe('orphaned') - - const rebindSocket = new FakeSocket() - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: FakeSocket implements the registry's WebSocket event and lifecycle surface. - const rebinding = activate(rebindSocket as unknown as WebSocket, identity, original, 1, true, 1) - await vi.advanceTimersByTimeAsync(0) - // The grace runs out while the database answers slowly. - await vi.advanceTimersByTimeAsync(CONTROL_CONTINUITY_LIMITS.orphanGraceMs) - expect(registry.get(key)).toBeNull() - blocked.resolve('control:production-gce-c3:1') - await rebinding - - expect(rebindSocket.close).toHaveBeenCalledWith( - RELAY_CLOSE_CODE.PEER_DROPPED, - 'control activation superseded' - ) - expect(registry.get(key)).toBeNull() - expect(original?.state).toBe('closed') - const page = registry.seatFeed(null) - expect('full' in page && page.full).toEqual([]) - expect(releaseActivity).toHaveBeenCalledWith(key, 'control:production-gce-c3:1') - }) - - it('ignores a denial belonging to the socket before a same-generation rebind', async () => { - const h = createRegistry(vi.fn().mockResolvedValue('control:production-gce-c3:1')) - const oldSocket = new FakeSocket() - await h.activate(oldSocket as unknown as WebSocket, identity, null, 1, false, 1) - const session = h.registry.get({ userId: identity.sub, relayHostId: identity.relayHostId })! - let finish!: (outcomes: ControlRenewalOutcome[]) => void - h.renewControlActivities.mockReturnValueOnce( - new Promise((resolve) => { - finish = resolve - }) - ) - await vi.advanceTimersByTimeAsync(15_000) - await closeRenewalWindow() - const replacement = new FakeSocket() - await h.activate(replacement as unknown as WebSocket, identity, session, 1, true, 1) - finish(['activity_cell_not_authoritative']) - await vi.advanceTimersByTimeAsync(0) - expect(replacement.close).not.toHaveBeenCalled() - expect(session.socket).toBe(replacement) - expect(session.generation).toBe(1) - }) -}) - -describe('source-owned idle cutover', () => { - beforeEach(() => vi.useFakeTimers()) - afterEach(() => { - vi.clearAllTimers() - vi.useRealTimers() - }) - const request = { - attemptId: 'idle-1', - userId: identity.sub, - relayHostId: identity.relayHostId, - sourceAssignmentEpoch: 1, - sourceGeneration: 1, - sourceCellIncarnation: 'incarnation-1', - targetCellId: 'target' - } - async function source() { - const h = createRegistry(vi.fn().mockResolvedValue('control:1')) - const socket = new FakeSocket() - h.registry.acceptControl( - socket as unknown as WebSocket, - identity, - undefined, - new Set([RELAY_HOST_CAPABILITY_IDLE_REGIONAL_REHOME]) - ) - socket.removeAllListeners('message') - await h.activate(socket as unknown as WebSocket, identity, null, 1, false, 1) - // Moves the clock without firing the heartbeat timers that would close the session. - vi.setSystemTime(Date.now() + IDLE_REHOME_MIN_CONTROL_AGE_MS) - return { ...h, socket, session: h.registry.get(request)! } - } - - it('rejects new accepts and replacements synchronously while a commit awaits', async () => { - const h = await source() - const result = deferred<{ outcome: 'deferred' }>() - const commit = vi.fn().mockReturnValue(result.promise) - const moving = h.registry.idleRehome( - request, - commit, - vi.fn().mockResolvedValue('not-committed') - ) - const duplicate = h.registry.idleRehome( - request, - commit, - vi.fn().mockResolvedValue('not-committed') - ) - const client = new FakeSocket() - const release = vi.fn() - await h.registry.acceptClient( - client as unknown as WebSocket, - identity.relayHostId, - 'credential', - { release } as never - ) - expect(client.close).toHaveBeenCalledWith(RELAY_CLOSE_CODE.WRONG_CELL, expect.any(String)) - expect(release).toHaveBeenCalledOnce() - const replacement = new FakeSocket() - await h.activate(replacement as unknown as WebSocket, identity, h.session, 2, false, 1) - expect(replacement.close).toHaveBeenCalledWith(RELAY_CLOSE_CODE.WRONG_CELL, expect.any(String)) - result.resolve({ outcome: 'deferred' }) - await moving - await duplicate - expect(commit).toHaveBeenCalledOnce() - expect(h.socket.close).not.toHaveBeenCalled() - expect( - await h.registry.idleRehome( - { ...request, attemptId: 'next' }, - vi.fn().mockResolvedValue({ outcome: 'committed' }), - vi.fn().mockResolvedValue('not-committed') - ) - ).toEqual({ outcome: 'committed' }) - }) -}) diff --git a/cloud/apps/relay/src/control-leases/control-reservation-reconnect-claim.test.ts b/cloud/apps/relay/src/control-leases/control-reservation-reconnect-claim.test.ts index abc4cb147c4..b7db80d670f 100644 --- a/cloud/apps/relay/src/control-leases/control-reservation-reconnect-claim.test.ts +++ b/cloud/apps/relay/src/control-leases/control-reservation-reconnect-claim.test.ts @@ -1,11 +1,7 @@ import { afterEach, describe, expect, it } from 'vitest' import { RelayAssignmentStore } from '../assignment/assignment-store.js' import type { RelayCellConfig } from '../config.js' -import { - openInMemoryRelayDatabase, - openRelayDatabase, - type RelayDatabase -} from '../database/database.js' +import { openInMemoryRelayDatabase, type RelayDatabase } from '../database/database.js' const KEY_PREFIX = 'reconnect-claim' const USER_ID = `${KEY_PREFIX}-user-1` @@ -21,54 +17,19 @@ const CELL_INCARNATION = '11111111-1111-4111-8111-111111111111' const IDENTITY = { userId: USER_ID, relayHostId: RELAY_HOST_ID } const CONTROL_ACTIVITY_ID = `control:${CELL.id}:1` -const databaseUrl = process.env.ORCA_RELAY_TEST_POSTGRES_URL -const backends: { name: string; open: () => Promise }[] = [ - { name: 'sqlite', open: openInMemoryRelayDatabase }, - ...(databaseUrl - ? [ - { - name: 'postgres', - open: () => openRelayDatabase({ databaseUrl, dataDir: '' }) - } - ] - : []) -] - const databases: RelayDatabase[] = [] -async function removeScopedRows(database: RelayDatabase): Promise { - await database.query( - `DELETE FROM relay_control_connection_reservations WHERE user_id LIKE '${KEY_PREFIX}-%'` - ) - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id LIKE '${KEY_PREFIX}-%'` - ) - await database.query(`DELETE FROM relay_assignments WHERE user_id LIKE '${KEY_PREFIX}-%'`) - for (const table of [ - 'relay_cell_connection_snapshots', - 'relay_cell_connection_runtime', - 'relay_cell_connection_limits', - 'relay_cell_runtime', - 'relay_cells' - ]) { - await database.query(`DELETE FROM ${table} WHERE cell_id = ?`, [CELL.id]) - } -} - afterEach(async () => { for (const database of databases.splice(0)) { - await removeScopedRows(database) await database.close() } }) async function setup( - open: () => Promise, now: () => number ): Promise<{ database: RelayDatabase; store: RelayAssignmentStore }> { - const database = await open() + const database = await openInMemoryRelayDatabase() databases.push(database) - await removeScopedRows(database) const store = new RelayAssignmentStore(database, now, { requireLiveCells: true, heartbeatTtlMs: 45_000 @@ -113,10 +74,10 @@ async function reservations( })) } -describe.each(backends)('control reservation claim on reconnect ($name)', ({ open }) => { +describe('control reservation claim on reconnect', () => { it('claims the fresh reservation when the same generation reconnects', async () => { let now = 100_000_000 - const { database, store } = await setup(open, () => now) + const { database, store } = await setup(() => now) const assignment = await store.assign(IDENTITY) await store.activateControl(IDENTITY, { @@ -158,7 +119,7 @@ describe.each(backends)('control reservation claim on reconnect ($name)', ({ ope it('still refuses to claim a second reservation while the first is outstanding', async () => { let now = 100_000_000 - const { database, store } = await setup(open, () => now) + const { database, store } = await setup(() => now) const assignment = await store.assign(IDENTITY) await store.activateControl(IDENTITY, { diff --git a/cloud/apps/relay/src/control-leases/released-reservation-prune.test.ts b/cloud/apps/relay/src/control-leases/released-reservation-prune.test.ts index 3a8b2a768d0..4d65b1dac7b 100644 --- a/cloud/apps/relay/src/control-leases/released-reservation-prune.test.ts +++ b/cloud/apps/relay/src/control-leases/released-reservation-prune.test.ts @@ -63,12 +63,7 @@ async function remainingIds(database: RelayDatabase): Promise { return rows.map((row) => String(row.reservation_id)) } -const dialects: [string, () => Promise][] = [ - ['sqlite', openInMemoryRelayDatabase], - ...(databaseUrl ? [['postgres', openPostgres] as [string, () => Promise]] : []) -] - -describe.each(dialects)('released reservation prune (%s)', (_dialect, open) => { +describe('released reservation prune', () => { let database: RelayDatabase | undefined afterEach(async () => { @@ -76,12 +71,8 @@ describe.each(dialects)('released reservation prune (%s)', (_dialect, open) => { database = undefined }) - afterAll(async () => { - if (databaseUrl) await onAdmin(`DROP SCHEMA IF EXISTS ${schema} CASCADE`) - }) - it('deletes only released rows older than the retention window', async () => { - database = await open() + database = await openInMemoryRelayDatabase() await insertReservation(database, 'a-old-released', 'released', STALE - 1) await insertReservation(database, 'b-edge-released', 'released', STALE) await insertReservation(database, 'c-fresh-released', 'released', STALE + 1) diff --git a/cloud/apps/relay/src/credentials/credential-store-cleanup.test.ts b/cloud/apps/relay/src/credentials/credential-store-cleanup.test.ts index ffab5abc2de..6758eb18359 100644 --- a/cloud/apps/relay/src/credentials/credential-store-cleanup.test.ts +++ b/cloud/apps/relay/src/credentials/credential-store-cleanup.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest' import { AUDIT_EVENT_RETENTION_MS, - hashCredential, CONFIRM_RESULT_RETENTION_MS, RelayCredentialStore, type RelayIdentity @@ -292,54 +291,4 @@ describe('credential cleanup invite reaper', () => { expect(await remainingIds(database, 'relay_audit_events', 'id')).toEqual(['audit-recent']) await database.close() }) - - it('still replays a confirm result inside retention', async () => { - const database = await openInMemoryRelayDatabase() - let now = NOW - DAY_MS - const store = new RelayCredentialStore(database, () => now) - try { - const invite = await store.createInvite(identity, 'device-1') - const reservation = await store.reserveCredential(identity.relayHostId, invite.inviteToken) - if (!reservation) { - throw new Error('invite did not reserve') - } - await store.recordConnectionBasis({ - ...reservation, - basisConnId: 'invite-basis', - owningControlGeneration: 1, - deadline: reservation.leaseExpiresAt - }) - await store.installCredential({ - ...identity, - relayDeviceId: 'device-1', - reqId: 'install-1', - newResumeTokenHash: hashCredential('resume-token'), - owningControlGeneration: 1, - authorization: { mode: 'relay-basis', basisConnId: 'invite-basis' } - }) - const resume = await store.reserveCredential(identity.relayHostId, 'resume-token') - if (!resume) { - throw new Error('resume did not reserve') - } - await store.recordConnectionBasis({ - ...resume, - basisConnId: 'resume-basis', - owningControlGeneration: 1, - deadline: resume.leaseExpiresAt - }) - const request = { - ...identity, - reqId: 'confirm-1', - basisConnId: 'resume-basis', - owningControlGeneration: 1 - } - const confirmed = await store.confirmResume(request) - expect(confirmed).toMatchObject({ renewed: true, acceptedAs: 'current' }) - now = NOW - await store.cleanup() - expect(await store.confirmResume(request)).toEqual(confirmed) - } finally { - await database.close() - } - }) }) diff --git a/cloud/apps/relay/src/credentials/resume-confirmed-audit-buffer.test.ts b/cloud/apps/relay/src/credentials/resume-confirmed-audit-buffer.test.ts deleted file mode 100644 index eb94d957544..00000000000 --- a/cloud/apps/relay/src/credentials/resume-confirmed-audit-buffer.test.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { afterEach, describe, expect, it } from 'vitest' -import { openInMemoryRelayDatabase, type RelayDatabase, type SqlRow } from '../database/database.js' -import { ResumeConfirmedAuditBuffer } from './resume-confirmed-audit-buffer.js' - -const event = (reqId: string) => ({ - userId: 'user-1', - relayHostId: 'host000000000001', - relayDeviceId: 'device-1', - detail: { reqId, basisConnId: `basis-${reqId}`, renewed: true } -}) - -describe('the batched resume-confirmed audit', () => { - let inner: RelayDatabase | undefined - - afterEach(async () => { - await inner?.close() - inner = undefined - }) - - async function setup() { - inner = await openInMemoryRelayDatabase() - const database = inner - const buffer = new ResumeConfirmedAuditBuffer(database, Date.now, () => undefined) - const rows = async (): Promise => - await inner!.query( - `SELECT type, relay_device_id, detail_json FROM relay_audit_events ORDER BY at, id` - ) - return { database, buffer, rows } - } - - it('retries a flush whose commit outcome was lost without writing any row twice', async () => { - const { database, buffer, rows } = await setup() - buffer.add(event('a')) - buffer.add(event('b')) - // The insert commits, then the reply is lost. - const query = database.query.bind(database) - let lost = true - database.query = async (sql, params) => { - const result = await query(sql, params) - if (lost) { - lost = false - throw new Error('Connection terminated unexpectedly') - } - return result - } - await buffer.flush() - await buffer.flush() - expect(await rows()).toHaveLength(2) - buffer.stop() - }) - -}) diff --git a/cloud/apps/relay/src/database/postgres-lock-wait-sample-postgres.test.ts b/cloud/apps/relay/src/database/postgres-lock-wait-sample-postgres.test.ts deleted file mode 100644 index 6873b486738..00000000000 --- a/cloud/apps/relay/src/database/postgres-lock-wait-sample-postgres.test.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { afterAll, beforeAll, describe, expect, it } from 'vitest' -import { RelayAssignmentStore } from '../assignment/assignment-store.js' -import { openRelayDatabase, type RelayDatabase } from './database.js' -import { readPostgresLockWaitSample } from './postgres-lock-wait-sample.js' - -const databaseUrl = process.env.ORCA_RELAY_TEST_POSTGRES_URL -const describePostgres = databaseUrl ? describe : describe.skip - -const cell = { - id: 'lock-wait-sample-cell', - url: 'https://lock-wait-sample.example.com', - capacityRequests: 10 -} - -// The split rests on application_name surviving into pg_stat_activity for both -// the waiter and its blocker, which only a real server shows. -describePostgres('PostgreSQL lock-wait sample', () => { - let cellDatabase: RelayDatabase - let directorDatabase: RelayDatabase - - beforeAll(async () => { - cellDatabase = await openRelayDatabase({ - databaseUrl, - dataDir: '', - applicationName: `orca-relay/cell/${cell.id}` - }) - directorDatabase = await openRelayDatabase({ - databaseUrl, - dataDir: '', - applicationName: 'orca-relay/director/director' - }) - await new RelayAssignmentStore(directorDatabase).reconcileCells([cell]) - }) - - afterAll(async () => { - for (const table of ['relay_cell_regions', 'relay_cell_admission']) { - await directorDatabase?.query(`DELETE FROM ${table} WHERE cell_id = ?`, [cell.id]) - } - await directorDatabase?.query(`DELETE FROM relay_cells WHERE cell_id = ?`, [cell.id]) - await cellDatabase?.close() - await directorDatabase?.close() - }) - - // Every waiter after the first is blocked by the first waiter's tuple lock, so - // only the root of the chain names the cell transaction that holds the row. - it('attributes a convoy of directors to the cell holding the relay_cells row', async () => { - expect(await readPostgresLockWaitSample(directorDatabase)).toEqual([]) - - let release!: () => void - const released = new Promise((resolve) => (release = resolve)) - let held!: () => void - const holding = new Promise((resolve) => (held = resolve)) - const holder = cellDatabase.transaction(async (transaction) => { - await transaction.query( - `UPDATE relay_cells SET reserved_requests = reserved_requests WHERE cell_id = ?`, - [cell.id] - ) - held() - await released - }) - await holding - const waiters = Array.from({ length: 3 }, () => - directorDatabase.transaction(async (transaction) => { - await transaction.queryLocked(`SELECT * FROM relay_cells WHERE cell_id = ?`, [cell.id]) - }) - ) - - try { - await expect - .poll(async () => await readPostgresLockWaitSample(directorDatabase), { timeout: 900 }) - .toEqual([ - { waiterRole: 'director', table: 'relay_cells', holderRole: 'cell', waiters: 3 } - ]) - } finally { - release() - await Promise.all([holder, ...waiters]) - } - }) -}) diff --git a/cloud/apps/relay/src/database/postgres-statement-stats-postgres.test.ts b/cloud/apps/relay/src/database/postgres-statement-stats-postgres.test.ts index 7f1efd76202..035d0af0ff2 100644 --- a/cloud/apps/relay/src/database/postgres-statement-stats-postgres.test.ts +++ b/cloud/apps/relay/src/database/postgres-statement-stats-postgres.test.ts @@ -1,7 +1,6 @@ import { randomUUID } from 'node:crypto' import pg from 'pg' import { afterAll, beforeAll, describe, expect, it } from 'vitest' -import { openRelayDatabase } from './database.js' import { POSTGRES_STATEMENT_STATS_MIGRATION } from './postgres-statement-stats.js' const databaseUrl = process.env.ORCA_RELAY_TEST_POSTGRES_URL @@ -52,28 +51,6 @@ describePostgres('optional PostgreSQL statement statistics', () => { return result.rows[0]!.present } - it('exposes an existing collector idempotently, and skips servers without one', async () => { - const url = await freshDatabase() - const database = await openRelayDatabase({ databaseUrl: url, dataDir: '' }) - await database.close() - const client = await connect(url) - try { - expect(await installed(client)).toBe(preloaded) - if (preloaded) { - const before = await client.query('SELECT stats_reset FROM public.pg_stat_statements_info') - await client.query(POSTGRES_STATEMENT_STATS_MIGRATION) - const after = await client.query('SELECT stats_reset FROM public.pg_stat_statements_info') - expect(after.rows).toEqual(before.rows) - await client.query('SELECT calls, wal_bytes, shared_blks_dirtied FROM public.pg_stat_statements LIMIT 1') - } else { - await client.query(POSTGRES_STATEMENT_STATS_MIGRATION) - expect(await installed(client)).toBe(false) - } - } finally { - await client.end() - } - }) - it('tolerates missing extension privileges', async () => { const client = await connect(await freshDatabase()) const role = `relay_stats_role_${randomUUID().replaceAll('-', '')}` diff --git a/cloud/apps/relay/src/database/postgres-transaction-recovery.test.ts b/cloud/apps/relay/src/database/postgres-transaction-recovery.test.ts index 597bcc0386a..382b6e12f5e 100644 --- a/cloud/apps/relay/src/database/postgres-transaction-recovery.test.ts +++ b/cloud/apps/relay/src/database/postgres-transaction-recovery.test.ts @@ -100,43 +100,16 @@ describePostgres('PostgreSQL transaction recovery', () => { 'relay_assignment_migration_incarnations', 'relay_control_connection_reservations' ]) { - await database.query(`DELETE FROM ${table} WHERE user_id IN (?, ?)`, [ - 'completion-race-user', - 'completion-contention-user' + await database.query(`DELETE FROM ${table} WHERE user_id = ?`, [ + 'completion-race-user' ]) } for (const table of ['relay_cell_admission', 'relay_cell_regions']) { - await database.query(`DELETE FROM ${table} WHERE cell_id IN (?, ?, ?, ?)`, [ + await database.query(`DELETE FROM ${table} WHERE cell_id IN (?, ?)`, [ 'completion-race-source', - 'completion-race-target', - 'completion-contention-source', - 'completion-contention-target' + 'completion-race-target' ]) } - for (const identity of [ - { userId: 'released-order-user', relayHostId: 'releasedorder001' }, - { userId: 'normalized-order-user', relayHostId: 'normalizedorder1' }, - { userId: 'atomic-final-user-a', relayHostId: 'atomicfinalhosta' }, - { userId: 'atomic-final-user-b', relayHostId: 'atomicfinalhostb' }, - { userId: 'lease-assignment-contention-user', relayHostId: 'leaseassignment1' } - ]) { - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id = ? AND relay_host_id = ?`, - [identity.userId, identity.relayHostId] - ) - await database.query( - `DELETE FROM relay_assignments WHERE user_id = ? AND relay_host_id = ?`, - [identity.userId, identity.relayHostId] - ) - } - await database.query(`DELETE FROM relay_cells WHERE cell_id IN (?, ?)`, [ - 'released-order-cell', - 'normalized-order-cell' - ]) - await database.query(`DELETE FROM relay_cells WHERE cell_id = ?`, ['atomic-final-cell']) - await database.query(`DELETE FROM relay_cells WHERE cell_id = ?`, [ - 'lease-assignment-contention-cell' - ]) await database.query( `DELETE FROM relay_assignment_activity_leases WHERE user_id LIKE 'reconcile-user-%'` ) @@ -159,110 +132,6 @@ describePostgres('PostgreSQL transaction recovery', () => { 'completion-race-source', 'completion-race-target' ]) - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id = ?`, - ['completion-contention-user'] - ) - await database.query(`DELETE FROM relay_assignment_migrations WHERE user_id = ?`, [ - 'completion-contention-user' - ]) - await database.query(`DELETE FROM relay_assignments WHERE user_id = ?`, [ - 'completion-contention-user' - ]) - await database.query(`DELETE FROM relay_cell_runtime WHERE cell_id IN (?, ?)`, [ - 'completion-contention-source', - 'completion-contention-target' - ]) - await database.query(`DELETE FROM relay_cells WHERE cell_id IN (?, ?)`, [ - 'completion-contention-source', - 'completion-contention-target' - ]) - await database.query(`DELETE FROM relay_cell_fences WHERE cell_id = ?`, [ - 'dead-source-contention-source' - ]) - await database.query( - `DELETE FROM relay_control_connection_reservations WHERE user_id = ?`, - ['dead-source-contention-user'] - ) - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id = ?`, - ['dead-source-contention-user'] - ) - await database.query( - `DELETE FROM relay_assignment_migration_incarnations WHERE user_id = ?`, - ['dead-source-contention-user'] - ) - await database.query(`DELETE FROM relay_assignment_migrations WHERE user_id = ?`, [ - 'dead-source-contention-user' - ]) - await database.query(`DELETE FROM relay_assignments WHERE user_id = ?`, [ - 'dead-source-contention-user' - ]) - await database.query(`DELETE FROM relay_cell_runtime WHERE cell_id IN (?, ?)`, [ - 'dead-source-contention-source', - 'dead-source-contention-target' - ]) - await database.query(`DELETE FROM relay_cell_admission WHERE cell_id IN (?, ?)`, [ - 'dead-source-contention-source', - 'dead-source-contention-target' - ]) - await database.query(`DELETE FROM relay_cells WHERE cell_id IN (?, ?)`, [ - 'dead-source-contention-source', - 'dead-source-contention-target' - ]) - await database.query( - `DELETE FROM relay_assignment_activity_leases - WHERE user_id IN (?, ?)`, - ['lease-contention-user', 'aggregate-contention-user'] - ) - await database.query( - `DELETE FROM relay_assignments - WHERE user_id IN (?, ?)`, - ['lease-contention-user', 'aggregate-contention-user'] - ) - await database.query(`DELETE FROM relay_cells WHERE cell_id IN (?, ?)`, [ - 'lease-contention-cell', - 'aggregate-contention-cell' - ]) - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id = ?`, - ['sustained-lock-user'] - ) - await database.query(`DELETE FROM relay_assignments WHERE user_id = ?`, [ - 'sustained-lock-user' - ]) - await database.query(`DELETE FROM relay_cells WHERE cell_id = ?`, [ - 'sustained-lock-cell' - ]) - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id = ?`, - ['sticky-cell-contention-user'] - ) - await database.query( - `DELETE FROM relay_assignments WHERE user_id = ?`, - ['sticky-cell-contention-user'] - ) - await database.query(`DELETE FROM relay_cells WHERE cell_id = ?`, [ - 'sticky-cell-contention-cell' - ]) - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id LIKE 'postgres-user-%'` - ) - await database.query(`DELETE FROM relay_assignments WHERE user_id LIKE 'postgres-user-%'`) - await database.query(`DELETE FROM relay_cells WHERE cell_id IN (?, ?, ?)`, [ - 'cell-a', - 'cell-b', - 'cell-c' - ]) - await database.query( - `DELETE FROM relay_assignment_activity_leases WHERE user_id LIKE 'sticky-fast-user-%'` - ) - await database.query( - `DELETE FROM relay_assignments WHERE user_id LIKE 'sticky-fast-user-%'` - ) - await database.query(`DELETE FROM relay_cells WHERE cell_id = ?`, [ - 'sticky-fast-cell' - ]) }) it('retries an entire deadlock victim transaction on a fresh attempt', async () => { diff --git a/cloud/apps/relay/src/edge-relay.test.ts b/cloud/apps/relay/src/edge-relay.test.ts index 43b62345ee4..f39f1631332 100644 --- a/cloud/apps/relay/src/edge-relay.test.ts +++ b/cloud/apps/relay/src/edge-relay.test.ts @@ -129,15 +129,4 @@ describe('edge move', () => { expect(moved.assignmentEpoch).toBe(placed.assignmentEpoch + 4) }) - it('rolls back: with the cohort off, the host is re-placed on GCE above the edge epoch', async () => { - const { database, store, edge } = await setup({ requireLiveCells: true }) - await edge.ensureEdgeCell() - await store.assign(IDENTITY) - await settle(database) - const moved = await edge.moveToEdge(IDENTITY, 0) - const back = await store.assign(IDENTITY) - expect(back.cellId).toBe(GCE_CELL.id) - expect(back.assignmentEpoch).toBeGreaterThan(moved.assignmentEpoch) - expect(await edge.edgeAssignment(IDENTITY)).toBeNull() - }) }) diff --git a/cloud/apps/relay/src/host-whereabouts-app.test.ts b/cloud/apps/relay/src/host-whereabouts-app.test.ts deleted file mode 100644 index e8072835260..00000000000 --- a/cloud/apps/relay/src/host-whereabouts-app.test.ts +++ /dev/null @@ -1,211 +0,0 @@ -import { describe, expect, it, vi } from 'vitest' -import type * as AdminTokenVerifier from './authentication/admin-token-verifier.js' -import type { HostWhereaboutsRow } from './assignment/assignment-store.js' -import { RelayAssignmentStore } from './assignment/assignment-store.js' -import type { RelayConfig } from './config.js' -import { openInMemoryRelayDatabase } from './database/database.js' -import { ShadowSeatDirectory } from './cell/seats/shadow-seat-directory.js' - -vi.mock('./authentication/admin-token-verifier.js', async (importOriginal) => { - const actual = await importOriginal() - const identities = new Map[0]>([ - ['deploy-token', 'deploy'], - ['capacity-token', 'capacity'] - ]) - return { - ...actual, - // The real route allow-list behind a token-to-identity stub. - createAdminTokenVerifier: () => async (token: string, route?: string) => { - const identity = identities.get(token) - if (identity === undefined) return false - return !route || actual.relayAdminIdentityMayAccess(identity, route) - }, - createReadOnlyAdminTokenVerifier: () => async () => false, - createRegionalRehomeControlApplyTokenVerifier: () => async () => false, - createRegionalRehomeRuntimeTokenVerifier: () => async () => false, - createRegionalRehomeTokenVerifier: () => async () => false, - createRuntimeTokenVerifier: () => async () => false - } -}) - -vi.mock('./authentication/relay-token-verifier.js', () => ({ - createRelayTokenVerifier: () => async () => null, - readBearer: (value: string | undefined) => value?.replace(/^Bearer /, '') ?? null -})) - -import { createRelayApp } from './app.js' - -const HOST = 'hhhhhhhhhhhhhhhh' -const ROW: HostWhereaboutsRow = { - cellId: 'cell-a', - assignmentEpoch: 3, - leaseExpiresAt: 5_000, - openMigration: null -} - -function request(body: unknown, token = 'deploy-token'): RequestInit { - return { - method: 'POST', - headers: { authorization: `Bearer ${token}`, 'content-type': 'application/json' }, - body: JSON.stringify(body) - } -} - -function directory(): ShadowSeatDirectory { - const shadow = new ShadowSeatDirectory() - shadow.setCells(['cell-a', 'cell-b']) - shadow.apply( - 'cell-a', - { - v: 1, - cellId: 'cell-a', - incarnation: 'inc-a', - seq: 1, - at: 1, - flagsApplied: { generation: '7', flags: { readinessLocal: false } }, - full: [ - { - userId: 'user-a', - relayHostId: HOST, - epoch: 3, - generation: 1, - state: 'active', - joinedAt: 1 - } - ] - }, - Date.now() - ) - shadow.markNoFeed('cell-b', Date.now()) - return shadow -} - -function appWith( - hostWhereabouts: (identity: { userId: string; relayHostId: string }) => Promise, - options: { shadowSeats?: ShadowSeatDirectory; role?: RelayConfig['role'] } = {} -) { - return createRelayApp(config(options.role), { - store: {} as never, - // SAFETY: the whereabouts route reads only hostWhereabouts. - assignments: { hostWhereabouts } as never, - drain: vi.fn(), - ready: vi.fn(async () => true), - cellIncarnation: 'director-incarnation', - shadowSeats: options.shadowSeats - }) -} - -describe('POST /v1/admin/host-whereabouts', () => { - it('requires admin auth and a director', async () => { - const lookup = vi.fn(async () => ROW) - const app = appWith(lookup) - const body = { v: 1, relayHostId: HOST, userId: 'user-a' } - - expect((await app.request('/v1/admin/host-whereabouts', request(body, 'other'))).status).toBe( - 401 - ) - const cell = appWith(lookup, { role: 'cell' }) - expect((await cell.request('/v1/admin/host-whereabouts', request(body))).status).toBe(404) - expect( - (await app.request('/v1/admin/host-whereabouts', request({ ...body, extra: 1 }))).status - ).toBe(400) - }) - - - it('names the user from the map when the request has only a host id', async () => { - const lookup = vi.fn(async () => ROW) - const app = appWith(lookup, { shadowSeats: directory() }) - - const response = await app.request( - '/v1/admin/host-whereabouts', - request({ v: 1, relayHostId: HOST }) - ) - - expect(await response.json()).toMatchObject({ users: [{ userId: 'user-a', database: ROW }] }) - }) - - it('judges the verdict as /v1/resolve would when the row names a dead cell', async () => { - const shadow = directory() - // cell-a's heartbeat had already run out when the cell list was read. - shadow.setCells(['cell-a', 'cell-b'], ['cell-a', 'cell-b'], { - readAt: Date.now(), - expiresAt: new Map([ - ['cell-a', Date.now() - 1], - ['cell-b', Date.now() + 60_000] - ]) - }) - const app = appWith(async () => ROW, { shadowSeats: shadow }) - - const response = await app.request( - '/v1/admin/host-whereabouts', - request({ v: 1, relayHostId: HOST, userId: 'user-a' }) - ) - - expect(await response.json()).toMatchObject({ - users: [{ database: ROW, verdict: { class: 'map-only-cell-unlive', explained: true } }] - }) - }) -}) - -describe('RelayAssignmentStore.hostWhereabouts', () => { - it('reads the assignment row and its open migration by primary key', async () => { - const database = await openInMemoryRelayDatabase() - try { - const store = new RelayAssignmentStore(database, () => 100) - await store.reconcileCells([ - { id: 'cell-a', url: 'https://cell-a.example.test', capacityRequests: 10 }, - { id: 'cell-b', url: 'https://cell-b.example.test', capacityRequests: 10 } - ]) - const identity = { userId: 'user-a', relayHostId: HOST } - expect(await store.hostWhereabouts(identity)).toBeNull() - - await store.assign(identity) - - await database.query( - `INSERT INTO relay_assignment_migrations - (user_id, relay_host_id, source_cell_id, target_cell_id, previous_epoch, assignment_epoch, - source_request_units, target_reserved_units, expires_at, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - ['user-a', HOST, 'cell-a', 'cell-b', 1, 2, 1, 1, 900, 100, 100] - ) - expect((await store.hostWhereabouts(identity))?.openMigration).toEqual({ - sourceCellId: 'cell-a', - targetCellId: 'cell-b', - previousEpoch: 1, - assignmentEpoch: 2, - expiresAt: 900, - targetRegisteredAt: null - }) - } finally { - await database.close() - } - }) -}) - -function config(role: RelayConfig['role'] = 'director'): RelayConfig { - return { - port: 8080, - publicUrl: 'https://relay.example.test', - cellUrl: 'https://relay.example.test', - authIssuer: 'https://auth.example.test', - authAudience: 'orca-relay', - jwksUrl: 'https://auth.example.test/jwks', - assignmentSigningKey: new TextEncoder().encode('assignment-key-with-at-least-32-bytes'), - role, - cellId: role === 'cell' ? 'cell-a' : 'director', - cells: [], - adminAudience: 'https://relay.example.test/v1/admin/drain', - deployServiceAccount: 'deploy@example.test', - runtimeServiceAccount: 'runtime@example.test', - adminJwksUrl: 'https://auth.example.test/jwks', - databasePoolMax: 3, - publicAssignmentsEnabled: true, - publicAssignmentConcurrency: 2, - publicAssignmentQueueMax: 128, - publicAssignmentWaitMs: 4_000, - publicResolveConcurrency: 1, - publicResolveWaitMs: 5_000, - publicAssignmentRetryAfterSeconds: 5, - dataDir: './data' - } -} diff --git a/cloud/apps/relay/src/regional-host-drain-app.test.ts b/cloud/apps/relay/src/regional-host-drain-app.test.ts index 566843673df..5658c294633 100644 --- a/cloud/apps/relay/src/regional-host-drain-app.test.ts +++ b/cloud/apps/relay/src/regional-host-drain-app.test.ts @@ -87,7 +87,6 @@ describe('idle regional cutover endpoint', () => { }) describe('regional host drain endpoint', () => { - it('accepts only the dedicated identity and exact cell generation', async () => { const drainHost = vi.fn(() => 'accepted' as const) const app = createRelayApp(config(), { @@ -116,22 +115,6 @@ describe('regional host drain endpoint', () => { expect(drainHost).toHaveBeenCalledOnce() }) - it('rejects a failed asynchronous drain instead of acknowledging it', async () => { - const app = createRelayApp(config(), { - store: {} as never, - assignments: {} as never, - drain: vi.fn(), - drainHost: async () => { - throw new Error('activity_cell_not_authoritative') - }, - cellIncarnation, - ready: vi.fn(async () => true) - }) - const response = await post(app, 'rehome-token', request) - expect(response.status).toBe(409) - expect(await response.json()).toEqual({ error: 'activity_cell_not_authoritative' }) - }) - it('rechecks synthetic host absence after asynchronous identity proof', async () => { let hostExists = false const drainHost = vi.fn(() => 'host-not-connected' as const) @@ -160,81 +143,6 @@ describe('regional host drain endpoint', () => { expect(response.status).toBe(409) expect(drainHost).not.toHaveBeenCalled() }) - -}) - -describe('regional rehome director controls', () => { - - it('applies the durable switch only with matching confirmation', async () => { - const inspectRegionalRehomeControl = vi.fn().mockResolvedValue({ - generation: 0, - enabled: false - }) - const applyRegionalRehomeControl = vi.fn(async (input) => ({ - ...input, - generation: input.expectedGeneration + 1 - })) - const app = createRelayApp(config({ role: 'director', cellId: 'director' }), { - store: {} as never, - assignments: { - inspectRegionalRehomeControl, - applyRegionalRehomeControl - } as never, - drain: vi.fn(), - ready: vi.fn(async () => true) - }) - expect( - ( - await postPath(app, '/v1/admin/regional-rehome-control', 'deploy-token', { - v: 1, - action: 'inspect' - }) - ).status - ).toBe(200) - const apply = { - v: 1, - action: 'apply', - expectedGeneration: 0, - enabled: true, - notBefore: 100, - ratePerMinute: 10, - preferenceMaxAgeMs: 24 * 60 * 60_000, - hostCooldownMs: 7 * 24 * 60 * 60_000, - drainGraceMs: 60_000, - confirmation: 'ENABLE_REGIONAL_REHOMING' - } - expect( - (await postPath(app, '/v1/admin/regional-rehome-control', 'deploy-token', apply)).status - ).toBe(200) - expect(applyRegionalRehomeControl).toHaveBeenCalledOnce() - expect( - ( - await postPath(app, '/v1/admin/regional-rehome-control', 'monitor-token', { - v: 1, - action: 'inspect' - }) - ).status - ).toBe(200) - expect( - (await postPath(app, '/v1/admin/regional-rehome-control', 'monitor-token', apply)).status - ).toBe(403) - expect( - ( - await postPath(app, '/v1/admin/regional-rehome-control', 'deploy-token', { - ...apply, - confirmation: 'DISABLE_REGIONAL_REHOMING' - }) - ).status - ).toBe(400) - // The per-host cooldown is part of the durable shape an operator must state. - const { hostCooldownMs: _omitted, ...withoutCooldown } = apply - expect( - (await postPath(app, '/v1/admin/regional-rehome-control', 'deploy-token', withoutCooldown)) - .status - ).toBe(400) - expect(applyRegionalRehomeControl).toHaveBeenCalledExactlyOnceWith(apply) - }) - }) async function post( diff --git a/cloud/apps/relay/src/relay-region-app.test.ts b/cloud/apps/relay/src/relay-region-app.test.ts deleted file mode 100644 index 1bb2dcd5051..00000000000 --- a/cloud/apps/relay/src/relay-region-app.test.ts +++ /dev/null @@ -1,181 +0,0 @@ -import { describe, expect, it, vi } from 'vitest' -import type { RelayConfig } from './config.js' - -const fakes = vi.hoisted(() => ({ - verifyRelayToken: vi.fn(async (token: string) => ({ sub: 'user-1', relayHostId: token })) -})) - -vi.mock('./authentication/relay-token-verifier.js', () => ({ - createRelayTokenVerifier: () => fakes.verifyRelayToken, - readBearer: (value: string | undefined) => value?.replace(/^Bearer /, '') ?? null -})) - -import { createRelayApp } from './app.js' - -describe('Relay region API', () => { - - it('returns successful placement when optional window storage is unavailable', async () => { - const app = createRelayApp(config(), { - store: {} as never, - assignments: { - assign: async () => ({ - cellId: 'asia-c1', - region: 'asia-east2', - cellUrl: 'https://asia-c1.relay.example.test', - assignmentEpoch: 7 - }), - exchangeRegionCorrection: async () => { - throw new Error('database unavailable') - } - } as never, - drain: vi.fn(), - ready: async () => true - }) - const response = await app.request( - '/v1/assign', - assignmentRequest('abcdefghijklmnop', { - preferredRegion: 'asia-east2', - regionCorrection: { v: 1, action: 'issue-window' } - }) - ) - expect(response.status).toBe(200) - expect(await response.json()).toMatchObject({ - cellUrl: 'https://asia-c1.relay.example.test', - assignmentEpoch: 7 - }) - }) - - it('does not place or write a legacy hint when reporting migration evidence', async () => { - const current = { - userId: 'user-1', - relayHostId: 'abcdefghijklmnop', - cellId: 'asia-c1', - cellUrl: 'https://asia-c1.relay.example.test', - region: 'asia-east2', - assignmentEpoch: 7, - leaseExpiresAt: Date.now() + 300_000 - } - const assign = vi.fn() - const resolve = vi.fn(async () => current) - const exchangeRegionCorrection = vi.fn(async () => ({ v: 1, reportStatus: 'accepted' })) - const app = createRelayApp(config(), { - store: {} as never, - assignments: { assign, resolve, exchangeRegionCorrection } as never, - drain: vi.fn(), - ready: async () => true - }) - const regionCorrection = { - v: 1, - action: 'report', - generation: 2, - assignmentEpoch: 7, - policyVersion: 1, - outcome: 'conclusive', - measurements: { 'us-central1': 40, 'asia-east2': 180 } - } - const response = await app.request( - '/v1/assign', - assignmentRequest('abcdefghijklmnop', { - preferredRegion: 'us-central1', - regionCorrection - }) - ) - expect(response.status).toBe(200) - expect(assign).not.toHaveBeenCalled() - expect(exchangeRegionCorrection).toHaveBeenCalledWith( - { userId: 'user-1', relayHostId: 'abcdefghijklmnop' }, - regionCorrection, - 7 - ) - expect(((await response.json()) as { assignmentEpoch: number }).assignmentEpoch).toBe(7) - }) - - it('does not manufacture an assignment for a report whose assignment disappeared', async () => { - const assign = vi.fn() - const exchangeRegionCorrection = vi.fn() - const app = createRelayApp(config(), { - store: {} as never, - assignments: { assign, resolve: async () => null, exchangeRegionCorrection } as never, - drain: vi.fn(), - ready: async () => true - }) - const response = await app.request( - '/v1/assign', - assignmentRequest('abcdefghijklmnop', { - regionCorrection: { - v: 1, - action: 'report', - generation: 2, - assignmentEpoch: 7, - policyVersion: 1, - outcome: 'inconclusive', - reason: 'timeout' - } - }) - ) - expect(response.status).toBe(409) - expect(assign).not.toHaveBeenCalled() - expect(exchangeRegionCorrection).not.toHaveBeenCalled() - }) - - it('answers a pool that cannot hand out a client with a retryable 503', async () => { - const regionCatalog = vi.fn(async () => { - throw new Error('Connection terminated due to connection timeout') - }) - const app = createRelayApp(config({ publicAssignmentRetryAfterSeconds: 7 }), { - store: {} as never, - assignments: { regionCatalog } as never, - drain: vi.fn(), - ready: vi.fn(async () => true) - }) - - const response = await app.request('/v1/regions') - - expect(response.status).toBe(503) - expect(response.headers.get('Retry-After')).toBe('7') - expect(await response.json()).toEqual({ error: 'region_catalog_temporarily_unavailable' }) - }) - -}) - -function assignmentRequest(relayHostId: string, extra: Record): RequestInit { - return { - method: 'POST', - headers: { - authorization: `Bearer ${relayHostId}`, - 'content-type': 'application/json' - }, - body: JSON.stringify({ v: 1, relayHostId, ...extra }) - } -} - -function config(overrides: Partial = {}): RelayConfig { - return { - port: 8080, - publicUrl: 'https://relay.example.test', - cellUrl: 'https://relay.example.test', - region: 'us-central1', - authIssuer: 'https://auth.example.test', - authAudience: 'orca-relay', - jwksUrl: 'https://auth.example.test/jwks', - assignmentSigningKey: new TextEncoder().encode('assignment-key-with-at-least-32-bytes'), - role: 'director', - cellId: 'director', - cells: [], - adminAudience: 'https://relay.example.test/v1/admin/drain', - deployServiceAccount: 'deploy@example.test', - runtimeServiceAccount: 'runtime@example.test', - adminJwksUrl: 'https://auth.example.test/jwks', - databasePoolMax: 3, - publicAssignmentsEnabled: true, - regionalPlacementEnabled: true, - publicAssignmentConcurrency: 2, - publicAssignmentQueueMax: 128, - publicAssignmentWaitMs: 4_000, - publicResolveConcurrency: 1, - publicResolveWaitMs: 5_000, - publicAssignmentRetryAfterSeconds: 5, - dataDir: './data', - ...overrides - } -} diff --git a/cloud/apps/relay/src/relay-sigterm-exit.blackbox.test.ts b/cloud/apps/relay/src/relay-sigterm-exit.blackbox.test.ts deleted file mode 100644 index c72236c13c2..00000000000 --- a/cloud/apps/relay/src/relay-sigterm-exit.blackbox.test.ts +++ /dev/null @@ -1,127 +0,0 @@ -import type { ChildProcess } from 'node:child_process' -import { spawnProcess } from '@orca/process-host' -import { mkdtempSync, rmSync } from 'node:fs' -import { connect, createServer, type Socket } from 'node:net' -import { tmpdir } from 'node:os' -import { resolve } from 'node:path' -import { fileURLToPath } from 'node:url' -import { afterEach, expect, it } from 'vitest' -import WebSocket from 'ws' - -const appDirectory = fileURLToPath(new URL('..', import.meta.url)) -const cleanups: (() => void)[] = [] -afterEach(() => { - for (const cleanup of cleanups.splice(0).toReversed()) { - cleanup() - } -}) - -async function unusedPort(): Promise { - const server = createServer() - await new Promise((resolveListen) => server.listen(0, '127.0.0.1', resolveListen)) - const address = server.address() - if (!address || typeof address === 'string') { - throw new Error('missing test port') - } - await new Promise((resolveClose) => server.close(() => resolveClose())) - return address.port -} - -async function startRelay(port: number): Promise { - const dataDirectory = mkdtempSync(resolve(tmpdir(), 'orca-relay-sigterm-exit-')) - const url = `http://127.0.0.1:${port}` - const child = spawnProcess({ - program: process.execPath, - args: ['--import', 'tsx', 'src/index.ts'], - cwd: appDirectory, - // Explicit so an inherited DATABASE_URL cannot point the relay at a shared database. - env: { - PATH: process.env.PATH ?? '', - ...(process.env.SystemRoot ? { SystemRoot: process.env.SystemRoot } : {}), - PORT: String(port), - ORCA_RELAY_PUBLIC_URL: url, - ORCA_RELAY_CELL_URL: url, - ORCA_RELAY_AUTH_ISSUER: 'http://127.0.0.1:9', - ORCA_RELAY_JWKS_URL: 'http://127.0.0.1:9/jwks', - ORCA_RELAY_ASSIGNMENT_SIGNING_KEY: 'test-assignment-key-with-at-least-32-bytes', - ORCA_RELAY_DATA_DIR: dataDirectory, - ORCA_RELAY_ADMIN_AUDIENCE: `${url}/v1/admin/drain`, - ORCA_RELAY_DEPLOY_SERVICE_ACCOUNT: 'deploy@example.com', - ORCA_RELAY_ADMIN_JWKS_URL: 'http://127.0.0.1:9/jwks' - }, - stdio: ['ignore', 'pipe', 'pipe'] - }) - cleanups.push(() => { - if (child.exitCode === null && child.signalCode === null) { - child.kill('SIGKILL') - } - rmSync(dataDirectory, { recursive: true, force: true }) - }) - await new Promise((resolveReady, reject) => { - let stderr = '' - child.stderr?.on('data', (chunk: Buffer) => (stderr += chunk.toString())) - child.stdout?.on('data', (chunk: Buffer) => { - if (chunk.toString().includes('[orca-relay] listening')) { - resolveReady() - } - }) - child.once('exit', (code) => reject(new Error(`relay exited before ready: ${code}\n${stderr}`))) - }) - return child -} - -// Pauses reading so the peer never answers the relay's close frame. -async function unresponsiveWebSocketPeer(port: number): Promise { - const socket = new WebSocket(`ws://127.0.0.1:${port}/v1/connect/abcdefghijklmnop`) - socket.on('error', () => undefined) - await new Promise((resolveOpen) => socket.once('open', () => resolveOpen())) - const raw = (socket as unknown as { _socket: Socket })._socket - raw.pause() - return raw -} - -// Resolves once the listener refuses new connections, i.e. the relay has begun shutting down. -async function waitUntilListenerClosed(port: number): Promise { - const deadline = Date.now() + 4_000 - while (Date.now() < deadline) { - const accepted = await new Promise((resolveProbe) => { - const probe = connect(port, '127.0.0.1') - probe.once('connect', () => { - probe.destroy() - resolveProbe(true) - }) - probe.once('error', () => resolveProbe(false)) - }) - if (!accepted) { - return - } - await new Promise((resolveDelay) => setTimeout(resolveDelay, 50)) - } - throw new Error('relay kept accepting connections after SIGTERM') -} - -// Peers that are not idle to server.close(); unbounded, a silent one held exit until SIGKILL. -it('exits within the shutdown bound on SIGTERM with an unresponsive upgraded WebSocket peer', async () => { - const port = await unusedPort() - const relay = await startRelay(port) - const peer = await unresponsiveWebSocketPeer(port) - cleanups.push(() => peer.destroy()) - const peerClosed = new Promise((resolveClose) => peer.once('close', () => resolveClose())) - - const startedAt = Date.now() - const exited = new Promise((resolveExit) => - relay.once('exit', (code) => resolveExit(code)) - ) - relay.kill('SIGTERM') - // A second signal must not restart or extend shutdown. Send it only once the first has been - // handled, so the two cannot coalesce into one delivery. - await waitUntilListenerClosed(port) - relay.kill('SIGTERM') - - expect(await exited).toBe(0) - // Under the 10 s backstop: the socket grace, not the backstop, released it. - expect(Date.now() - startedAt).toBeLessThan(9_000) - // A paused peer only observes the relay's FIN once it reads again. - peer.resume() - await peerClosed -}, 15_000) diff --git a/config/flaky-test-pattern-baseline.txt b/config/flaky-test-pattern-baseline.txt index 044c4c20559..6b7e1e34ae7 100644 --- a/config/flaky-test-pattern-baseline.txt +++ b/config/flaky-test-pattern-baseline.txt @@ -130,7 +130,6 @@ 1 test-no-real-time-wait:src/main/browser/cdp/input/guest-focused-frame-route.test.ts 3 test-no-real-time-wait:src/main/browser/cookies/browser-cookie-import-concurrency.test.ts 1 test-no-real-time-wait:src/main/browser/guest-lifecycle/popups/compatibility/browser-popup-native-compatibility.electron.test.ts -1 test-no-real-time-wait:src/main/browser/identity/wire-probes/browser-session-ua-wire-identity-cross-context.electron.test.ts 1 test-no-real-time-wait:src/main/browser/identity/wire-probes/browser-session-ua-wire-identity.electron.test.ts 1 test-no-real-time-wait:src/main/browser/network/tunnels/execution-route-socket-duplex.test.ts 1 test-no-real-time-wait:src/main/browser/network/tunnels/remote-browser-socks-server.test.ts @@ -555,7 +554,6 @@ 1 test-timeout-needs-reason:src/main/browser/cookies/browser-cookie-import-partition.electron.test.ts 1 test-timeout-needs-reason:src/main/browser/cookies/browser-cookie-import-validated-partition.electron.test.ts 1 test-timeout-needs-reason:src/main/browser/guest-lifecycle/find/browser-find-frame-traversal.electron.test.ts -1 test-timeout-needs-reason:src/main/browser/identity/wire-probes/browser-session-ua-wire-identity-cross-context.electron.test.ts 1 test-timeout-needs-reason:src/main/browser/identity/wire-probes/browser-session-ua-wire-identity.electron.test.ts 2 test-timeout-needs-reason:src/main/codex/app-server/codex-app-server-teardown.integration.test.ts 1 test-timeout-needs-reason:src/main/codex/hooks/installation/hook-service-legacy-cleanup.test.ts diff --git a/config/focus-setting-read-baseline.txt b/config/focus-setting-read-baseline.txt index bef6f0b90de..3bc0a19973e 100644 --- a/config/focus-setting-read-baseline.txt +++ b/config/focus-setting-read-baseline.txt @@ -317,10 +317,10 @@ 1 src/renderer/src/store/slices/worktrees/metadata/worktree-lineage-actions.ts 3 src/renderer/src/store/slices/worktrees/metadata/worktree-lineage-host-merge.ts 3 src/renderer/src/store/slices/worktrees/session/worktree-terminal-reference.ts -1 src/renderer/src/store/terminals/terminal-active-workspace-creation.ts -1 src/renderer/src/store/terminals/terminal-tab-appearance.ts -1 src/renderer/src/store/terminals/terminal-tab-close-providers.ts -1 src/renderer/src/store/terminals/terminal-tab-retirement.ts +1 src/renderer/src/store/terminals/tabs/creation/terminal-active-workspace-creation.ts +1 src/renderer/src/store/terminals/tabs/presentation/terminal-tab-appearance.ts +1 src/renderer/src/store/terminals/retirement/terminal-tab-close-providers.ts +1 src/renderer/src/store/terminals/retirement/terminal-tab-retirement.ts 1 src/renderer/src/web/preload-api/web-app-api.ts 3 src/renderer/src/web/preload-api/web-preference-normalization.ts 20 src/renderer/src/web/preload-api/web-preferences-store.ts diff --git a/config/legacy-relay-compat-tags-baseline.txt b/config/legacy-relay-compat-tags-baseline.txt index ffcbba0a3fa..ca172741a09 100644 --- a/config/legacy-relay-compat-tags-baseline.txt +++ b/config/legacy-relay-compat-tags-baseline.txt @@ -23,7 +23,7 @@ src/renderer/src/components/terminal-pane/pty-transport/legacy-relay/legacy-rela src/renderer/src/components/terminal-pane/pty-connection/output/foreground-output-refresh.ts src/renderer/src/components/terminal-pane/pty-connection/host-ownership/unserved-ssh-pane-connect.ts src/renderer/src/hooks/ipc-events/ssh-managed-server-state-effects.ts -src/renderer/src/store/terminals/legacy-relay-bridged-tab-close.ts +src/renderer/src/store/terminals/retirement/legacy-relay-bridged-tab-close.ts src/shared/legacy-relay-bridge-contract.ts src/shared/ssh-types.ts src/shared/telemetry-ssh-host-server-event-schemas.ts diff --git a/config/main-sync-fs-baseline.txt b/config/main-sync-fs-baseline.txt index 4952f5ff34b..04d9c48fd04 100644 --- a/config/main-sync-fs-baseline.txt +++ b/config/main-sync-fs-baseline.txt @@ -182,6 +182,7 @@ 5 src/main/daemon/admission/host-terminal-ledger.ts 1 src/main/daemon/admission/legacy-restore-records.ts 1 src/main/daemon/daemon-entry.ts +1 src/main/daemon/daemon-process-name.ts 1 src/main/daemon/endpoint/identity/daemon-endpoint-incarnation.ts 3 src/main/daemon/endpoint/identity/daemon-pid-identity.ts 2 src/main/daemon/endpoint/identity/daemon-pid-record-quarantine.ts diff --git a/config/reliability-gates.jsonc b/config/reliability-gates.jsonc index f35cd88221a..0e009d6c046 100644 --- a/config/reliability-gates.jsonc +++ b/config/reliability-gates.jsonc @@ -5941,14 +5941,14 @@ "invariant": "Within one terminal tab, each PTY has at most one layout leaf, pane manager surface, and xterm renderer owner. Restore and remote mirroring must normalize duplicate ownership before replay while retaining active-leaf focus, scrollback, pane authority, agent metadata, and distinct sibling PTYs.", "oracle": "Current adopted test policy at native 6f2e: retire the sampled PTY/focus permutation callback and its assertion reference. This loses its ownership-uniqueness, rooted-focus, immutability and idempotence alarms over those combinations. Eleven direct component callbacks and the depth/store/E2E file selectors remain; no equivalent replacement or fresh execution is claimed. Previous metadata account (preserved verbatim): Audit1925 (sources1922/1923): Partial ownership suite loses fixed first-leaf/rootless/dangling-selection/idempotence/identity examples. Both existing active assertion aliases stay backed by exact retained active-leaf metadata pruning and idempotence across PTY/focus permutation callbacks; metadata collision and repeated-leaf challenges survive. No deleted fixed example is assigned replacement coverage. Preserve meaningful remaining selectors/assertions and unchanged dated receipts within their original scope. Reduced selectors have no fresh gate execution evidence in this metadata packet. No equivalent replacement, physical watcher/PTY/provider, live SSH/remote/mobile, rendered, cross-platform, soak or measured-budget result is claimed. Historical prior account (preserved verbatim): Launch Orca with a real daemon PTY running a synchronized full-screen stream, close the desktop client without killing the daemon process, seed the persisted tab layout with two leaves bound to that PTY, and relaunch. Hide the restored tab behind a sibling and reveal it, then require the stream to remain visible with exactly one manager pane, one xterm DOM node, one root leaf, one PTY binding, and one unique PTY. Component contracts cover persisted replay, rootless and repeated-leaf layouts, metadata repair, and deeply nested input. Retained store contracts cover live/future authority transfer onto a retained leaf and preservation of a prior detach destination.", "commands": [ - "pnpm exec vitest run --config config/vitest.config.ts src/shared/workspace-layout/terminal-topology/terminal-layout-pty-ownership-depth.test.ts src/renderer/src/components/terminal-pane/layout/terminal-layout-pty-ownership.test.ts src/renderer/src/store/terminals/terminal-layout-pty-ownership.test.ts --reporter=dot", + "pnpm exec vitest run --config config/vitest.config.ts src/shared/workspace-layout/terminal-topology/terminal-layout-pty-ownership-depth.test.ts src/renderer/src/components/terminal-pane/layout/terminal-layout-pty-ownership.test.ts src/renderer/src/store/terminals/layout/terminal-layout-pty-ownership.test.ts --reporter=dot", "pnpm exec electron-vite build --mode e2e", "SKIP_BUILD=1 pnpm exec playwright test tests/e2e/terminal-duplicate-pty-renderer-reveal.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1" ], "testFiles": [ "src/shared/workspace-layout/terminal-topology/terminal-layout-pty-ownership-depth.test.ts", "src/renderer/src/components/terminal-pane/layout/terminal-layout-pty-ownership.test.ts", - "src/renderer/src/store/terminals/terminal-layout-pty-ownership.test.ts", + "src/renderer/src/store/terminals/layout/terminal-layout-pty-ownership.test.ts", "tests/e2e/terminal-duplicate-pty-renderer-reveal.spec.ts" ], "assertionRefs": [ @@ -5961,7 +5961,7 @@ "assertions": ["keeps the active leaf and prunes the stale surface plus its metadata"] }, { - "file": "src/renderer/src/store/terminals/terminal-layout-pty-ownership.test.ts", + "file": "src/renderer/src/store/terminals/layout/terminal-layout-pty-ownership.test.ts", "assertions": [ "moves live and future pane authority onto the retained PTY leaf", "does not steal authority from a pane that was already detached to another tab" @@ -6179,7 +6179,7 @@ "commands": [ "pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/terminal/surface/orca-runtime-terminal-close-continuity.test.ts", "pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/construction/orca-runtime.test.ts", - "pnpm dlx node@24 ./node_modules/vitest/vitest.mjs run --config config/vitest.config.ts src/main/agent-hooks/server/testing/authority/server-pane-authority.test.ts src/main/ipc/agent-hooks.test.ts src/main/ipc/agent-pane-authority-ownership.test.ts src/main/persistence/restoring-sessions/persistence-pane-identity-migration.test.ts src/main/persistence/loading-store/terminal-bindings/persistence-pty-binding-reconciliation.test.ts src/renderer/src/store/slices/agent-status/agent-pane-authority.test.ts src/renderer/src/store/terminals/terminal-pane-detach-agent-identity.test.ts src/renderer/src/store/terminals/terminal-tab-retirement-store.test.ts src/renderer/src/components/shared/kill-all-terminal-surfaces.test.ts", + "pnpm dlx node@24 ./node_modules/vitest/vitest.mjs run --config config/vitest.config.ts src/main/agent-hooks/server/testing/authority/server-pane-authority.test.ts src/main/ipc/agent-hooks.test.ts src/main/ipc/agent-pane-authority-ownership.test.ts src/main/persistence/restoring-sessions/persistence-pane-identity-migration.test.ts src/main/persistence/loading-store/terminal-bindings/persistence-pty-binding-reconciliation.test.ts src/renderer/src/store/slices/agent-status/agent-pane-authority.test.ts src/renderer/src/store/terminals/layout/terminal-pane-detach-agent-identity.test.ts src/renderer/src/store/terminals/retirement/terminal-tab-retirement-store.test.ts src/renderer/src/components/shared/kill-all-terminal-surfaces.test.ts", "pnpm exec vitest run --config config/vitest.config.ts src/main/pty/process-retirement/pty-descendant-termination.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts", "pnpm run test:e2e -- tests/e2e/terminal-tab-close-restart-persistence.spec.ts --workers=1", "pnpm run test:e2e -- tests/e2e/terminal-parked-close-retirement.spec.ts --workers=1", @@ -6200,8 +6200,8 @@ "src/main/providers/local-pty/local-pty-provider-shutdown.test.ts", "src/main/runtime/workspaces/removal/worktree-teardown.test.ts", "src/renderer/src/store/slices/agent-status/agent-pane-authority.test.ts", - "src/renderer/src/store/terminals/terminal-pane-detach-agent-identity.test.ts", - "src/renderer/src/store/terminals/terminal-tab-retirement-store.test.ts", + "src/renderer/src/store/terminals/layout/terminal-pane-detach-agent-identity.test.ts", + "src/renderer/src/store/terminals/retirement/terminal-tab-retirement-store.test.ts", "src/renderer/src/components/shared/kill-all-terminal-surfaces.test.ts", "tests/e2e/terminal-tab-close-restart-persistence.spec.ts", "tests/e2e/terminal-parked-close-retirement.spec.ts", @@ -9346,7 +9346,7 @@ "oracle": "Audit3390 composes root-adopted3382/independent3383 and3386/independent3387 and3388/independent3389: intentionally retires216 authored registrations/230 expanded cases in42 whole authored suites plus5 zero-case registration drivers, without equivalent replacement. Lost local alarms include fake PTY identity/routing/startup/replay/mode/title/mouse/IME/scroll matrices, broad startup identity and file-open wiring, mock mailbox title recovery, mobile row parity and whole-v-selective save parity. Retained24 registrations/26 expanded cases in22 suites preserve actual xterm Windows buffer/wrap/scroll, typed TOML scalar, real Promise cancellation/settlement, HTTP Codex scanner/projector semantics, durable recovery admission/newer-schema bytes, federation completion/ACK/SQLite atomicity and failed stale-run-write versus imported durable history. Additional retained clock-domain scheduling, durable freeze/ACK/checkpoint ordering, ABA dirty intent, SQL atomicity, folder-domain retier/last-note deletion, scrollback durable no-sync staging, PanelBridge subscriber lifetime and reserved-send publication preserve narrower concrete behaviors. Current finite owner drift assessed in bounded defining bodies; retained callback bytes unchanged. Historical notes and complete dated receipts keep their original exact scopes. No new execution, equivalent replacement, native focus/device/pixel, live remote or global mixed-version guarantee is claimed. Audit3368 narrows stream-reconnect coverage to the actual ten synthetic transport epochs retaining one PTY identity, accepting and holding detached input for exactly-once later delivery, current decoded output and per-epoch subscription release. Prior rejection wording was inaccurate. Phase/backoff/cutoff/manual reconnect and parser/OSC/pause/retained-image/fatal/latch/claim/early-close alarms are intentionally lost without equivalent replacement. The Linux multi-pane reconnect receipt remains verbatim with its original scope; no fresh live SSH/provider/PTY/UI/mobile/mixed-version/cross-platform evidence is claimed. Audit3359 retires whole host-surface-replacement and create-handoff suites, removing their compound unit command tokens, test-file entries and assertion references. Fake polling/deadline/subscription, supplied stale-handle ownership, close and replacement examples are intentionally lost without equivalent replacement. The unrelated Linux paired multi-pane reconnect receipt stays verbatim with its original scope. No fresh SSH/provider/network/PTY recovery, historical-import, mobile, mixed-version or cross-platform validation is claimed. Audit3342 retires the complete client create-outcome identity/options/recovery suite and the malformed-or-contradictory repo-owner response matrix. Client replay identity, options, no-downgrade, quiescence/budget/manual retry, authoritative probe-error and malformed-owner refusal alarms are intentionally lost without equivalent replacement. Remaining repo-owner late catalog and old-host re-adoption boundaries do not replace them. The unrelated Linux paired-reconnect receipt stays verbatim with its original scope. Surviving selectors are unexecuted here; no fresh SSH/provider/process-deduplication, mobile, mixed-version or cross-platform validation is claimed. Audit3326 adopts reconciled source audit3324 and intentionally retires these low-value examples and their regression alarms: keeps a sidebar row for every still-live pane after a long sleep — Whole suite: 279 lines manually replay renderer ownership registry/status writes, snapshot patch/set, six-pane fixture inventory, and sidebar selectors/builders; expected pane IDs are production-computed. Does not run sleep/wake/transport or actual sidebar entry. Retires reconnect row-preservation assembly alarm.; still retires the regular TUI surface after an explicit terminal exit — Ordinary explicit-exit callback/map cleanup is repeated in the stale/new stream lifecycle case below. Retires separate regular-TUI baseline; keeper is not equivalent process/UI proof.; asks the HUB to recover an expired SSH pane and rebinds the host identity — Expired SSH owner error must ask the owning HUB to recover, then adopt fixed replacement handle, resubscribe and report rebind; actual transport dispatch and handle state prevent wrong-client recovery.; does not recover a pane whose relay reply was an identity mismatch — Identity mismatch means a different live PTY, so actual transport must surface refusal without recover/create, keeping original identity. Prevents destructive duplicate agent recovery.; fails closed when an older HUB cannot recover an expired SSH pane — Old HUB method_not_found is scripted mock refusal/error echo with no actual skewed host; repeats generic recovery failure propagation. Retires old-host recovery fallback refusal example.; names a held recovery's stopped WSL distro in readable copy, not the raw hold code — Pins exact WSL stopped-distro error prose after mock code; translation/copy assertion with no actual held recovery behavior. Retires readable-copy alarm.. Retained tests do not replace these alarms. Dated unrelated evidence remains scoped to its original execution; no historical source/import-closure equivalence, fresh execution, real network/provider/SSH, rendered UI, mobile, mixed-version or cross-platform validation is claimed. Audit 3318 reduces runtime-environment-ssh-state.test.ts, intentionally losing metadata membership-pruning/new-target-only-read and other-environment/local-bucket isolation alarms. Preserve generation/failed-full-refresh assertion and unknown-target authoritative-list reread; these narrower cases are not equivalent replacements. The unchanged active two-case Linux reconnect materialization/sidebar receipt and covered platform retain their exact scope and do not validate the reduced SSH state selector. Preserve unrelated SSH assertions, selectors and archived history. No fresh SSH discovery, provider/PTY/network, rendered, mobile, mixed-version, cross-platform or full-gate execution is claimed. Audit 3312 retires the ordinary six-pane distinct-live-handle reconnect/resubscription alarm from paired-reconnect-multi-pane-materialization.test.ts. The unchanged parked-pane activation/rematerialization case remains narrower and is not an equivalent replacement. The complete prior seven-contract macOS receipt is archived as historical evidence; it does not validate the reduced selector. No fresh socket, PTY, sleep/wake, provider, platform, mobile, mixed-version or rendered execution is claimed. Audit3096: remove the deleted reconnect-banner selector and its two UI aliases. The reduced recovery-state selector retains only the deadline cancelling pending backoff and explicit retry owning a new epoch alias; healthy-replacement stale-schedule and independent caller-cutoff cancellation aliases retire. Other retained state cases cover reentrant retry, owner settlement and same-epoch parked revival, without replacing those removed alarms. Prior admission-selector retirement, archived July 28 receipt, unrelated selectors/claims/receipts and old gaps remain unchanged; no fresh execution is claimed. Audit3086: retire the destroyed fresh-session fallback settlement/non-destructive reattach alias and its direct selector; retain the detach/attach selector and assertion unchanged. The retained admission cases cover adopt-before-data and explicitly buffered-death admission without a new spawn, without replacing fallback retirement. July 28 evidence was already archived by audit3077; no duplicate retirement or new execution is claimed. Audit2133 current-parent preparation: Current reduced sources/selectors intentionally retire the alarms listed in knownGaps; prior dated runs and replacement claims do not validate the changed set. Historical prior account (preserved verbatim): Audit2076 (sources2073/2074): Intentionally retire these low-value alarms without replacement: src/main/ssh/connection/ssh-connection-manager.test.ts: tears a failed startup down quietly, so its error is not replaced by a disconnect; marks a dial that never reached the host, so setup reports SSH’s reason; removes the registration when bulk teardown fails; leaves a connection whose own reconnect is asking the user alone; clears the pool entry when the closed connection is still the registered one; still reuses a connection that is already up; dials a user's connection test. Existing unrelated evidenceRuns retain their original scope; unchanged dated receipt objects do not validate changed source bytes or reduced selectors. No fresh gate execution or historical import-closure equivalence is claimed. Frozen current literal-import graph reaches these changed test bytes; unresolved local and computed edges remain debt, and current reachability is not historical execution or equivalent replacement evidence. Historical prior account (preserved verbatim): Audit2052 (sources2049/2050/2051): Remove complete low-value restored-pane-title and pane-visibility-identity suites and their current selectors. Their supplied snapshot/title and nullable identity-comparison alarms are intentionally lost without replacement. Unrelated dated evidenceRuns remain unchanged and do not validate the reduced commands. No fresh gate execution, actual PTY/provider, rendered, remote/mobile or cross-platform result is claimed. Historical prior account (preserved verbatim): Audit1983: Delete the terminal-create idempotency forwarding suite and its prospective selector. Preserve2 unrelated receipts without claiming the lost forwarding alarm was replaced. Changed-source prior results do not validate reduced-source bytes. No fresh execution, equivalent replacement, red/green, measured budget, soak, provider/PTY, rendered, live remote/mobile or cross-platform result is claimed. Historical prior account (preserved verbatim): Audit1931 (sources1928/1929): Delete complete transport-unmount and queued-initial-CWD helper suites: despite lifecycle-shaped fixtures, the unmount owner returns a Boolean PTY-id predicate, while CWD cases check nullish field selection and callback counts. Lose their detach/destroy/teardown and one-shot-CWD supplied examples. Partial queued-pane-startup loses three identical/empty/nonowner identity examples, retaining four exact one-shot/replacement ownership callbacks. No assertion object maps to these three sources, so unrelated alias objects remain byte-exact. Preserve the current81ed prior removal of pane-split-startup; stale bd948 source metadata snapshots are not replayed. No actual process/PTY startup, transport shutdown, live SSH or rendered recovery is proven by this metadata change. Preserve meaningful remaining selectors/assertions and unchanged dated receipts within their original scope. Reduced selectors have no fresh gate execution evidence in this metadata packet. No equivalent replacement, physical watcher/PTY/provider, live SSH/remote/mobile, rendered, cross-platform, soak or measured-budget result is claimed. Historical prior account (preserved verbatim): Audit1925 (sources1922/1923): Delete the sole supplied public-SSH-state spread/sanitized-error projection and its provider-authority-pair alias. Also delete the complete tiny one-shot split-startup wrapper suite: callback-visible temporary field/reset, sequential payload and thrown-sentinel reset alarms disappear. No SSH provider epoch handoff, connection, process startup or actual terminal split was performed by either deleted suite. Preserve meaningful remaining selectors/assertions and unchanged dated receipts within their original scope. Reduced selectors have no fresh gate execution evidence in this metadata packet. No equivalent replacement, physical watcher/PTY/provider, live SSH/remote/mobile, rendered, cross-platform, soak or measured-budget result is claimed. Historical prior account (preserved verbatim): Audit1903 removes whole mocked detach, supplied geometry and/or close-request suites selected by this gate. Their pending-CWD/PTY-binding argument/order, fabricated hit-test and close bookkeeping alarms are intentionally lost without replacement. Valid remaining selectors/assertions and unchanged-selector execution receipts retain their original scope. Reduced unit selections have no fresh broad gate, real PTY/provider, rendered focus, or measured-budget validation. Historical prior account (preserved verbatim): Existing exact unchanged-selector receipts remain the only current execution evidence. Changed source selectors have no fresh execution result. Historical prior-source oracle account: Existing exact unchanged-selector receipts remain the only current execution evidence. Changed source selectors have no fresh execution result. Historical prior-source oracle account: The retained unchanged-source receipts are the only current execution evidence; reduced-source assertions await validation. Historical oracle account (not a current claim for changed sources): The retained unchanged-source receipts are the only current execution evidence; reduced-source assertions await validation. Historical oracle account (not a current claim for changed sources): Deterministic tests cover bounded stale-handle replacement, suspended heartbeat clocks, cold and established subscription failure, ten partition/recovery cycles, automatic-recovery cutoff, manual reconnect, and direct SSH binding retention. They assert SSH state changes leave PTY bindings in place, relay identity survives, and another target/local/WSL/runtime panes remain byte-identical through target snapshot hydration and reconnect. Both remount callbacks consume split-count activity suppression, intentional dispose emits no failure/timeout, and a same-attempt StrictMode remount still owns one timeout. Hydration clears an untrusted PTY hint without clearing its current pending owner, healthy current-authority bindings suppress correction, hydration finalizes once, and reconnect emits no paired close lifecycle. A provider-level session-ID reattach returns an incarnation, then a legacy exit without an incarnation must resolve to that returned identity rather than minting a fallback identity. The shared-control oracle withholds the first encrypted ready frame, starts one RPC, triggers the successful-probe refresh, then requires exactly two client connections, one host request, a successful response, zero pending calls, and zero retained request bytes. Tests also assert one unsubscribe per remote-runtime epoch, observable recovery phases, stable PTY identity, resumed snapshot/output/input, no healthy state before replay, no retry or input after cutoff, a new manual epoch against the same PTY, quiet recovery UI with an explicit Reconnect action, pane-close state cleanup, one stable create mutation id, old-runtime no-retry behavior, cross-process PTY adoption, and bounded in-flight coordination. A focused recovery oracle surfaces two distinct failures through one transport, completes authoritative replay, and requires both matching clear callbacks; pane-state tests require only the active pane's error to render, matching-pane recovery to preserve sibling and unrelated errors, dismissal to re-admit later failures, and distinct storms to retain only the newest eight messages within 24 lines and 4,000 characters. The retained store replacement assertion observes one atomic pane/tab subscriber publication; repeated rotations and snapshot-first pending-restart migration no longer have their direct store examples. Preload layout cleanup retires the mock SSH forwarding/type-census suite without replacement: preload wiring alarms are lost; shared authority-admission tests cover narrower behavior. Historical receipts retain their original scope.", "commands": [ "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/paired-reconnect-multi-pane-materialization.test.ts --reporter=dot", - "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal/background-terminal-worktree-mount.test.ts src/renderer/src/components/terminal-pane/mounting/queued-pane-startup.test.ts src/renderer/src/components/terminal-pane/parking/one-shot-park-replay.test.ts src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-stream-reconnect.test.ts src/renderer/src/store/terminals/terminal-pty-identity-replacement.test.ts", + "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal/background-terminal-worktree-mount.test.ts src/renderer/src/components/terminal-pane/mounting/queued-pane-startup.test.ts src/renderer/src/components/terminal-pane/parking/one-shot-park-replay.test.ts src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-stream-reconnect.test.ts src/renderer/src/store/terminals/pty/terminal-pty-identity-replacement.test.ts", "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-transport/ipc/pty-transport-detach-attach-handoff.test.ts", "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-stream-reconnect.test.ts src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-expired-pane-recovery.test.ts src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/recovery/remote-runtime-pty-recovery-state.test.ts src/shared/remote-runtime/remote-runtime-socket-liveness.test.ts src/shared/remote-runtime/control/remote-runtime-shared-control-connection.test.ts src/shared/remote-runtime/control/remote-runtime-shared-control-socket-generation.test.ts src/shared/remote-runtime/remote-runtime-client-error-classification.test.ts src/main/runtime/terminal/launch/orca-runtime-terminal-create-idempotency.test.ts", "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/ui/workspace-navigation-history-hydration.test.ts src/renderer/src/store/repos/repos-ssh-host-reconciliation.test.ts --reporter=dot", @@ -9364,7 +9364,7 @@ "src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-stream-reconnect.test.ts", "src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-expired-pane-recovery.test.ts", "src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/recovery/remote-runtime-pty-recovery-state.test.ts", - "src/renderer/src/store/terminals/terminal-pty-identity-replacement.test.ts", + "src/renderer/src/store/terminals/pty/terminal-pty-identity-replacement.test.ts", "src/shared/remote-runtime/remote-runtime-socket-liveness.test.ts", "src/shared/remote-runtime/control/remote-runtime-shared-control-connection.test.ts", "src/shared/remote-runtime/control/remote-runtime-shared-control-socket-generation.test.ts", @@ -13469,12 +13469,11 @@ "invariant": "A Quick Command selected for a new terminal remains owned by that tab through a recovery remount, executes exactly once only after the successor PTY binds, and never reaches an unrelated terminal.", "oracle": "Audit2052 (sources2049/2050/2051): Remove complete low-value restored-pane-title and pane-visibility-identity suites and their current selectors. Their supplied snapshot/title and nullable identity-comparison alarms are intentionally lost without replacement. Unrelated dated evidenceRuns remain unchanged and do not validate the reduced commands. No fresh gate execution, actual PTY/provider, rendered, remote/mobile or cross-platform result is claimed. Historical prior account (preserved verbatim): Audit1931 (sources1928/1929): Delete complete transport-unmount and queued-initial-CWD helper suites: despite lifecycle-shaped fixtures, the unmount owner returns a Boolean PTY-id predicate, while CWD cases check nullish field selection and callback counts. Lose their detach/destroy/teardown and one-shot-CWD supplied examples. Partial queued-pane-startup loses three identical/empty/nonowner identity examples, retaining four exact one-shot/replacement ownership callbacks. No assertion object maps to these three sources, so unrelated alias objects remain byte-exact. Preserve the current81ed prior removal of pane-split-startup; stale bd948 source metadata snapshots are not replayed. No actual process/PTY startup, transport shutdown, live SSH or rendered recovery is proven by this metadata change. Preserve meaningful remaining selectors/assertions and unchanged dated receipts within their original scope. Reduced selectors have no fresh gate execution evidence in this metadata packet. No equivalent replacement, physical watcher/PTY/provider, live SSH/remote/mobile, rendered, cross-platform, soak or measured-budget result is claimed. Historical prior account (preserved verbatim): Audit1925 (sources1922/1923): Delete the complete pane-split-startup wrapper suite and selector. Its temporary dependency-field exposure/reset, sequential payload isolation and thrown-sentinel cleanup alarms are lost; no quick command, process or PTY startup was exercised by those callbacks. Remaining queued-startup/ownership sources are not equivalent replacements. Preserve meaningful remaining selectors/assertions and unchanged dated receipts within their original scope. Reduced selectors have no fresh gate execution evidence in this metadata packet. No equivalent replacement, physical watcher/PTY/provider, live SSH/remote/mobile, rendered, cross-platform, soak or measured-budget result is claimed. Historical prior account (preserved verbatim): Audit1903 removes whole mocked detach, supplied geometry and/or close-request suites selected by this gate. Their pending-CWD/PTY-binding argument/order, fabricated hit-test and close bookkeeping alarms are intentionally lost without replacement. Valid remaining selectors/assertions and unchanged-selector execution receipts retain their original scope. Reduced unit selections have no fresh broad gate, real PTY/provider, rendered focus, or measured-budget validation. Historical prior account (preserved verbatim): Arm the E2E-only pre-spawn barrier, click the visible Quick Command, force one recovery generation while the original spawn is blocked, and release it. Require one exact semantic xterm marker, an independently written pane/tab identity file matching the bound live PTY, queue consumption only after bind, and a live interactive sibling canary.", "commands": [ - "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-connection/host-ownership/pty-connection-owner-hydration-backend-retention.test.ts src/renderer/src/components/terminal-pane/mounting/queued-pane-startup.test.ts src/renderer/src/components/terminal-pane/parking/one-shot-park-replay.test.ts --reporter=dot", + "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/mounting/queued-pane-startup.test.ts src/renderer/src/components/terminal-pane/parking/one-shot-park-replay.test.ts --reporter=dot", "pnpm exec playwright test tests/e2e/terminal-quick-command-pre-bind-recovery.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1", "ORCA_E2E_FORCE_HEADFUL=1 SKIP_BUILD=1 pnpm exec playwright test tests/e2e/terminal-quick-command-pre-bind-recovery.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1" ], "testFiles": [ - "src/renderer/src/components/terminal-pane/pty-connection/host-ownership/pty-connection-owner-hydration-backend-retention.test.ts", "src/renderer/src/components/terminal-pane/mounting/queued-pane-startup.test.ts", "src/renderer/src/components/terminal-pane/parking/one-shot-park-replay.test.ts", "tests/e2e/terminal-quick-command-pre-bind-recovery.spec.ts" diff --git a/config/renderer-layout-writer-baseline.txt b/config/renderer-layout-writer-baseline.txt index 26d3f04ab48..ae7525844d7 100644 --- a/config/renderer-layout-writer-baseline.txt +++ b/config/renderer-layout-writer-baseline.txt @@ -101,23 +101,23 @@ 5 src/renderer/src/store/slices/worktrees/session/set-active-worktree.ts 2 src/renderer/src/store/slices/worktrees/session/worktree-slice-lookups.ts 6 src/renderer/src/store/terminals/create-terminal-slice.ts -5 src/renderer/src/store/terminals/terminal-layout-state.ts -6 src/renderer/src/store/terminals/terminal-orphan-cleanup.ts -2 src/renderer/src/store/terminals/terminal-pane-hibernation.ts -3 src/renderer/src/store/terminals/terminal-pty-bindings.ts -2 src/renderer/src/store/terminals/terminal-pty-release.ts -1 src/renderer/src/store/terminals/terminal-shutdown-guards.ts -3 src/renderer/src/store/terminals/terminal-shutdown-state.ts -1 src/renderer/src/store/terminals/terminal-tab-agent-launch-pane.ts -2 src/renderer/src/store/terminals/terminal-tab-appearance.ts -6 src/renderer/src/store/terminals/terminal-tab-close.ts -10 src/renderer/src/store/terminals/terminal-tab-creation.ts -7 src/renderer/src/store/terminals/terminal-tab-navigation.ts -3 src/renderer/src/store/terminals/terminal-tab-presentation.ts -2 src/renderer/src/store/terminals/terminal-tab-title-batch.ts -5 src/renderer/src/store/terminals/workspace-terminal-hydration-patch.ts -2 src/renderer/src/store/terminals/workspace-terminal-hydration.ts -2 src/renderer/src/store/terminals/workspace-terminal-reconnect.ts +5 src/renderer/src/store/terminals/layout/terminal-layout-state.ts +6 src/renderer/src/store/terminals/retirement/terminal-orphan-cleanup.ts +2 src/renderer/src/store/terminals/sleep/terminal-pane-hibernation.ts +3 src/renderer/src/store/terminals/pty/terminal-pty-bindings.ts +2 src/renderer/src/store/terminals/pty/terminal-pty-release.ts +1 src/renderer/src/store/terminals/sleep/terminal-shutdown-guards.ts +3 src/renderer/src/store/terminals/sleep/terminal-shutdown-state.ts +1 src/renderer/src/store/terminals/tabs/creation/terminal-tab-agent-launch-pane.ts +2 src/renderer/src/store/terminals/tabs/presentation/terminal-tab-appearance.ts +6 src/renderer/src/store/terminals/retirement/terminal-tab-close.ts +10 src/renderer/src/store/terminals/tabs/creation/terminal-tab-creation.ts +7 src/renderer/src/store/terminals/tabs/terminal-tab-navigation.ts +3 src/renderer/src/store/terminals/tabs/presentation/terminal-tab-presentation.ts +2 src/renderer/src/store/terminals/tabs/presentation/terminal-tab-title-batch.ts +5 src/renderer/src/store/terminals/hydration/workspace-terminal-hydration-patch.ts +2 src/renderer/src/store/terminals/hydration/workspace-terminal-hydration.ts +2 src/renderer/src/store/terminals/hydration/workspace-terminal-reconnect.ts 7 src/renderer/src/store/workspace-layout/frames/workspace-layout-frame-held-tabs.ts 4 src/renderer/src/store/workspace-layout/frames/workspace-layout-frame-slices.ts 12 src/renderer/src/store/workspace-layout/frames/workspace-layout-frame-store-patch.ts diff --git a/config/scripts/desktop-distribution/runtime-verification/verify-packaged-daemon-entry.cjs b/config/scripts/desktop-distribution/runtime-verification/verify-packaged-daemon-entry.cjs index 2d51eb60881..dfef71717d9 100644 --- a/config/scripts/desktop-distribution/runtime-verification/verify-packaged-daemon-entry.cjs +++ b/config/scripts/desktop-distribution/runtime-verification/verify-packaged-daemon-entry.cjs @@ -3,7 +3,7 @@ const { spawn, spawnSync } = require('node:child_process') const { randomUUID } = require('node:crypto') const { connect } = require('node:net') const { tmpdir } = require('node:os') -const { join, relative } = require('node:path') +const { basename, join, relative } = require('node:path') const { setTimeout: delay } = require('node:timers/promises') const { macTerminalHostPaths @@ -267,7 +267,7 @@ async function verifyPackagedMacTerminalHostBoots(appPath, { arch, required }) { const stderr = [] // Boot clone outside build tree so ancestor node_modules cannot satisfy missing packaged dependency. const isolated = mkdtempSync(join(tmpdir(), 'orca-terminal-host-boot-')) - const clone = join(isolated, 'Orca Terminal Host.app') + const clone = join(isolated, basename(paths.bundle)) try { const cloned = spawnSync('/bin/cp', ['-cR', paths.bundle, clone], { encoding: 'utf8' }) if (cloned.status !== 0) { diff --git a/config/scripts/development/profile-seeding/dev-profile-seed.mjs b/config/scripts/development/profile-seeding/dev-profile-seed.mjs index bb92fc71d42..9af198f4d41 100644 --- a/config/scripts/development/profile-seeding/dev-profile-seed.mjs +++ b/config/scripts/development/profile-seeding/dev-profile-seed.mjs @@ -93,6 +93,10 @@ function pickSeededDomains(domains) { picked[domain] = domains[domain] } } + if (picked.settings) { + picked.settings = { ...picked.settings } + delete picked.settings.aiVaultSearch + } return picked } diff --git a/config/scripts/development/profile-seeding/dev-profile-seed.test.mjs b/config/scripts/development/profile-seeding/dev-profile-seed.test.mjs index b0c83a5079e..7f1cfa3b4c3 100644 --- a/config/scripts/development/profile-seeding/dev-profile-seed.test.mjs +++ b/config/scripts/development/profile-seeding/dev-profile-seed.test.mjs @@ -49,7 +49,10 @@ function createSourceProfile() { ) const insert = db.prepare("INSERT INTO profile_state_documents VALUES (?, ?, 1, 1, 0, 'hash')") insert.run('repos', JSON.stringify([{ id: 'repo-1', path: '/src/app' }])) - insert.run('settings', JSON.stringify({ theme: 'dark' })) + insert.run( + 'settings', + JSON.stringify({ theme: 'dark', aiVaultSearch: { enabled: true, historyDays: null } }) + ) insert.run('sshTargets', JSON.stringify([{ id: 'ssh-1' }])) insert.run('workspaceSession', JSON.stringify({ tabsByWorktree: { a: [] } })) insert.run('sshRemotePtyLeases', JSON.stringify([{ ptyId: 'p' }])) diff --git a/config/scripts/macos/terminal-host-bundle/macos-terminal-host-bundle.cjs b/config/scripts/macos/terminal-host-bundle/macos-terminal-host-bundle.cjs index 9d73f7f55fa..d81e208ae3c 100644 --- a/config/scripts/macos/terminal-host-bundle/macos-terminal-host-bundle.cjs +++ b/config/scripts/macos/terminal-host-bundle/macos-terminal-host-bundle.cjs @@ -15,8 +15,8 @@ const { builtinModules } = require('node:module') const { basename, dirname, join, relative, resolve, sep } = require('node:path') const { pathToFileURL } = require('node:url') -const MAC_TERMINAL_HOST_NAME = 'Orca Terminal Host' -const MAC_TERMINAL_HOST_EXECUTABLE = 'orca-terminal-host' +const MAC_TERMINAL_HOST_NAME = 'Orca Agents' +const MAC_TERMINAL_HOST_EXECUTABLE = 'Orca Agents' const macTerminalHostSignIgnore = [`/Contents/Helpers/${MAC_TERMINAL_HOST_NAME}\\.app(/|$)`] const NODE_PTY_FILES = [ 'package.json', @@ -194,8 +194,8 @@ function buildMacTerminalHostInfo({ appInfo, usageDescriptions, minimumOs }) { return { ...usageDescriptions, CFBundleIdentifier: appInfo.CFBundleIdentifier, - CFBundleName: 'Orca', - CFBundleDisplayName: 'Orca', + CFBundleName: MAC_TERMINAL_HOST_NAME, + CFBundleDisplayName: MAC_TERMINAL_HOST_NAME, CFBundleExecutable: MAC_TERMINAL_HOST_EXECUTABLE, CFBundlePackageType: 'APPL', CFBundleInfoDictionaryVersion: '6.0', @@ -210,6 +210,15 @@ function buildMacTerminalHostInfo({ appInfo, usageDescriptions, minimumOs }) { function findMacTerminalHostInfoProblems(info, { appId, usageDescriptions, minimumOs }) { const problems = [] + for (const [key, expected] of Object.entries({ + CFBundleName: MAC_TERMINAL_HOST_NAME, + CFBundleDisplayName: MAC_TERMINAL_HOST_NAME, + CFBundleExecutable: MAC_TERMINAL_HOST_EXECUTABLE + })) { + if (info[key] !== expected) { + problems.push(`${key} is ${info[key]}, expected ${expected}`) + } + } if (info.CFBundleIdentifier !== appId) { problems.push(`CFBundleIdentifier is ${info.CFBundleIdentifier}, expected ${appId}`) } diff --git a/config/scripts/static-analysis/ratchets/renderer-state/check-tab-map-seam-ratchet.mjs b/config/scripts/static-analysis/ratchets/renderer-state/check-tab-map-seam-ratchet.mjs index c6743a1ae76..5fe02e109cc 100644 --- a/config/scripts/static-analysis/ratchets/renderer-state/check-tab-map-seam-ratchet.mjs +++ b/config/scripts/static-analysis/ratchets/renderer-state/check-tab-map-seam-ratchet.mjs @@ -96,13 +96,13 @@ export const WRITERS = [ 'src/renderer/src/store/slices/worktrees/session/worktree-identity-rename-state.ts', 'src/renderer/src/store/slices/worktrees/session/worktree-slice-lookups.ts', 'src/renderer/src/store/slices/worktrees/teardown/record-key-omission.ts', - 'src/renderer/src/store/terminals/terminal-tab-close.ts', - 'src/renderer/src/store/terminals/terminal-tab-creation.ts', - 'src/renderer/src/store/terminals/terminal-tab-navigation.ts', - 'src/renderer/src/store/terminals/terminal-tab-title-batch.ts', - 'src/renderer/src/store/terminals/workspace-terminal-hydration-patch.ts', - 'src/renderer/src/store/terminals/workspace-terminal-hydration.ts', - 'src/renderer/src/store/terminals/workspace-terminal-reconnect.ts', + 'src/renderer/src/store/terminals/retirement/terminal-tab-close.ts', + 'src/renderer/src/store/terminals/tabs/creation/terminal-tab-creation.ts', + 'src/renderer/src/store/terminals/tabs/terminal-tab-navigation.ts', + 'src/renderer/src/store/terminals/tabs/presentation/terminal-tab-title-batch.ts', + 'src/renderer/src/store/terminals/hydration/workspace-terminal-hydration-patch.ts', + 'src/renderer/src/store/terminals/hydration/workspace-terminal-hydration.ts', + 'src/renderer/src/store/terminals/hydration/workspace-terminal-reconnect.ts', 'src/renderer/src/store/workspace-layout/frames/workspace-layout-frame-store-patch.ts' ] export const SEAM_FIELDS = new Set([ diff --git a/config/scripts/static-analysis/ratchets/renderer-state/check-terminal-parking-ownership-ratchet.mjs b/config/scripts/static-analysis/ratchets/renderer-state/check-terminal-parking-ownership-ratchet.mjs index 8d823b050a9..4724e8a18af 100644 --- a/config/scripts/static-analysis/ratchets/renderer-state/check-terminal-parking-ownership-ratchet.mjs +++ b/config/scripts/static-analysis/ratchets/renderer-state/check-terminal-parking-ownership-ratchet.mjs @@ -41,28 +41,32 @@ const HOT_MAPS = new Set([ ]) const OWNER_ROOTS = [ { - rel: 'store/terminals/terminal-parking-input-owner.ts', + rel: 'store/terminals/parking/terminal-parking-input-owner.ts', name: 'acceptTerminalParkingInputs', inputs: [] }, { - rel: 'store/terminals/terminal-parking-input-owner.ts', + rel: 'store/terminals/parking/terminal-parking-input-owner.ts', name: 'publishAcceptedTerminalParkingInputs', inputs: [] }, { - rel: 'store/terminals/terminal-parking-input-owner.ts', + rel: 'store/terminals/parking/terminal-parking-input-owner.ts', name: 'invalidateTerminalParkingPtyInputs', inputs: [] }, { - rel: 'store/terminals/terminal-tab-owner-index.ts', + rel: 'store/terminals/ownership/terminal-tab-owner-index.ts', name: 'update', inputs: ['tabsByWorktree'] }, - { rel: 'store/terminals/sleeping-agent-record-index.ts', name: 'update', inputs: ['records'] }, { - rel: 'store/terminals/sleeping-agent-record-index.ts', + rel: 'store/terminals/sleep/sleeping-agent-record-index.ts', + name: 'update', + inputs: ['records'] + }, + { + rel: 'store/terminals/sleep/sleeping-agent-record-index.ts', name: 'acceptTransition', inputs: ['previous', 'next'] }, @@ -73,14 +77,14 @@ const OWNER_ROOTS = [ } ] const KEY_DIFFS = new Set([ - `${RENDERER}store/terminals/terminal-parking-input-owner.ts#diffUnknownParkingRecordKeys`, - `${RENDERER}store/terminals/terminal-tab-owner-index.ts#diffUnknownTabOwnerKeys`, - `${RENDERER}store/terminals/sleeping-agent-record-index.ts#diffUnknownSleepingRecordKeys`, + `${RENDERER}store/terminals/parking/terminal-parking-input-owner.ts#diffUnknownParkingRecordKeys`, + `${RENDERER}store/terminals/ownership/terminal-tab-owner-index.ts#diffUnknownTabOwnerKeys`, + `${RENDERER}store/terminals/sleep/sleeping-agent-record-index.ts#diffUnknownSleepingRecordKeys`, `${RENDERER}lib/workspace/tabs/worktree-tab-bucket-projection.ts#diffUnknownProjectionKeys` ]) const COLD_RESYNCS = new Set([ - `${RENDERER}store/terminals/terminal-parking-input-owner.ts#resyncTerminalParkingWorkspaceIds`, - `${RENDERER}store/terminals/sleeping-agent-record-index.ts#resyncSleepingAgentRecordKeys` + `${RENDERER}store/terminals/parking/terminal-parking-input-owner.ts#resyncTerminalParkingWorkspaceIds`, + `${RENDERER}store/terminals/sleep/sleeping-agent-record-index.ts#resyncSleepingAgentRecordKeys` ]) function isColdResyncCall(node, source) { @@ -139,15 +143,15 @@ const ADDRESSED_FIELDS = new Set([ 'sleepingAgentSessionsByPaneKey' ]) const ORDINARY_WRITERS = [ - 'store/terminals/terminal-layout-state.ts', - 'store/terminals/terminal-pane-hibernation.ts', - 'store/terminals/terminal-pty-bindings.ts', - 'store/terminals/terminal-pty-release.ts', - 'store/terminals/terminal-orphan-cleanup.ts', - 'store/terminals/terminal-startup-queues.ts', - 'store/terminals/terminal-tab-presentation.ts', - 'store/terminals/terminal-shutdown-state.ts', - 'store/terminals/window-tab-start-in-main.ts', + 'store/terminals/layout/terminal-layout-state.ts', + 'store/terminals/sleep/terminal-pane-hibernation.ts', + 'store/terminals/pty/terminal-pty-bindings.ts', + 'store/terminals/pty/terminal-pty-release.ts', + 'store/terminals/retirement/terminal-orphan-cleanup.ts', + 'store/terminals/tabs/creation/terminal-startup-queues.ts', + 'store/terminals/tabs/presentation/terminal-tab-presentation.ts', + 'store/terminals/sleep/terminal-shutdown-state.ts', + 'store/terminals/tabs/creation/window-tab-start-in-main.ts', 'store/slices/agent-status/agent-status-live-reducer.ts', 'store/slices/agent-status/agent-status-launch-actions.ts', 'store/slices/agent-status/agent-status-provider-session-actions.ts', diff --git a/config/scripts/workflow/source-routing/pr-e2e-source-routing.mjs b/config/scripts/workflow/source-routing/pr-e2e-source-routing.mjs index 7cadca40ba7..dcd141bb974 100644 --- a/config/scripts/workflow/source-routing/pr-e2e-source-routing.mjs +++ b/config/scripts/workflow/source-routing/pr-e2e-source-routing.mjs @@ -447,7 +447,7 @@ export const PR_E2E_SOURCE_ROUTES = [ ], matches: (file) => isProductSource(file) && - /^(?:src\/renderer\/src\/components\/terminal-pane\/(?:layout\/close\/retire-unbound-(?:ipc|runtime)-terminal-pane|terminal-pane-(?:close-admission|close-identity|lifecycle-close|pane-closed|retirement-ownership)|use-terminal-pane-close-actions)|src\/renderer\/src\/store\/(?:terminals\/terminal-tab-close(?:-providers)?|slices\/(?:terminal-tab-retirement|terminal-retirement-teardown-reservation|retired-terminal-tab-state-sweep)))\.ts$/.test( + /^(?:src\/renderer\/src\/components\/terminal-pane\/(?:layout\/close\/retire-unbound-(?:ipc|runtime)-terminal-pane|terminal-pane-(?:close-admission|close-identity|lifecycle-close|pane-closed|retirement-ownership)|use-terminal-pane-close-actions)|src\/renderer\/src\/store\/(?:terminals\/retirement\/(?:terminal-tab-close(?:-providers)?|terminal-tab-retirement|terminal-retirement-teardown-reservation|retired-terminal-tab-state-sweep)))\.ts$/.test( file ) }, diff --git a/config/scripts/workflow/source-routing/pr-layout-oracle-route.mjs b/config/scripts/workflow/source-routing/pr-layout-oracle-route.mjs index 298e9bb6b60..76cbd285784 100644 --- a/config/scripts/workflow/source-routing/pr-layout-oracle-route.mjs +++ b/config/scripts/workflow/source-routing/pr-layout-oracle-route.mjs @@ -22,6 +22,7 @@ const LAYOUT_ORACLE_PREFIXES = [ // Window-side layout writers the layout-holder stack replaces; widened while it is open. 'src/renderer/src/store/slices/tabs', 'src/renderer/src/store/terminals/', + 'src/renderer/src/components/sidebar/workspace-card/activity/worktree-terminal-record-selector.ts', 'src/renderer/src/store/workspace-layout/workspace-layout-cache', 'src/renderer/src/components/terminal-pane/', 'src/renderer/src/components/agent-session-continuation/AgentSessionContinuationMenuItem.tsx', diff --git a/config/workspace-record-read-baseline.txt b/config/workspace-record-read-baseline.txt index 5c85ceb47d8..3658cbbf35f 100644 --- a/config/workspace-record-read-baseline.txt +++ b/config/workspace-record-read-baseline.txt @@ -70,4 +70,4 @@ 6 src/renderer/src/store/slices/worktrees/teardown/host-qualified-worktree-row-removal.ts # store writer 8 src/renderer/src/store/slices/worktrees/teardown/purge-stale-runtime-host-state.ts # store writer 1 src/renderer/src/store/slices/worktrees/teardown/remove-worktree-store-cleanup.ts # store writer -8 src/renderer/src/store/terminals/workspace-terminal-hydration.ts # store writer +8 src/renderer/src/store/terminals/hydration/workspace-terminal-hydration.ts # store writer diff --git a/docs/agents-md-refs/macos-daemon-tcc-attribution.md b/docs/agents-md-refs/macos-daemon-tcc-attribution.md index 5515ab519a5..796d89894c6 100644 --- a/docs/agents-md-refs/macos-daemon-tcc-attribution.md +++ b/docs/agents-md-refs/macos-daemon-tcc-attribution.md @@ -14,13 +14,14 @@ protected files keeps working after its old executable is deleted. So a packaged macOS GUI app starts its daemon from a private copy that the updater never touches: -- Each packaged macOS app ships a signed helper, `Contents/Helpers/Orca Terminal Host.app` (about +- Each packaged macOS app ships a signed helper, `Contents/Helpers/Orca Agents.app` (about 124 MiB): the pinned Node from `src/shared/node-runtime-pin.ts` as its main executable, the - daemon's `out/main` JS and that slice's node-pty. `config/scripts/macos-terminal-host-bundle.cjs` + daemon's `out/main` JS and that slice's node-pty. + `config/scripts/macos/terminal-host-bundle/macos-terminal-host-bundle.cjs` builds and signs it in `afterPack`, boots it through one PTY round trip, and fails the build on any layout, Info.plist, OS floor, architecture or signature drift. - `macos-daemon-bundle.ts` keeps one copy per helper build, named by the helper's CDHash, at - `userData/daemon-host/macos/terminal-host-/app.noindex/Orca Terminal Host.app`. The helper + `userData/daemon-host/macos/terminal-host-/app.noindex/Orca Agents.app`. The helper is read from the bundle the running main process executes from, never the whole app. A present copy is reused as is. Otherwise the helper is cloned (APFS clone, regular copy otherwise) into a `.staging--*` sibling, verified once with @@ -55,6 +56,12 @@ Signing the helper with the app's own identifier lets it inherit every existing Disk Access, which a user can only add by hand. A distinct identifier would be a new client: new folder prompts naming it, and a new Full Disk Access row for every user. +The helper's bundle, executable and display name are `Orca Agents`; its identifier, signing team +and designated requirement still match Orca.app. This names the existing terminal-agent process +without changing its privacy client. Native chat providers still run under the GUI process. An +adopted older daemon keeps its original name until it exits; the fork fallback and Windows names +are unchanged. + ## macOS floor The helper's Node declares `LC_BUILD_VERSION minos 13.5`, which is also the helper's @@ -108,6 +115,8 @@ The helper declares no links, documents or types, has a lower `CFBundleVersion` `.noindex` folder, which Spotlight skips, and Orca never registers them. Starting the daemon through launchd leaves no record, but another process running the copy's executable directly can make macOS register it, so retirement runs `lsregister -u` on the bundle before deleting it. +Retirement recognizes both `Orca Agents.app` and the legacy `Orca Terminal Host.app` inside unused +copies, so changing the current bundle name does not leave old LaunchServices registrations behind. The helper's main-executable UUID is Node's, shared by every official Node 24.21.0 binary of that architecture, so it is not unique to Orca. Local Network access still passed in the signed spike: diff --git a/mobile/rpc-foundation/goldens/b2.json b/mobile/rpc-foundation/goldens/b2.json deleted file mode 100644 index 42b19181b12..00000000000 --- a/mobile/rpc-foundation/goldens/b2.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "project.update-metadata", - "family": "project-explicit-false", - "namedDeltas": [], - "values": { - "0c4dced3e005": { - "error": "", - "mutating": true, - "row": { - "content": { - "assignees": [], - "labels": [], - "number": 1, - "repository": "owner/repo" - }, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "1158580f696d": { - "name": "github.project.updateIssueBySlug#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "github.project.updateIssueBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "number": 1, - "owner": "owner", - "repo": "repo", - "updates": { - "addLabels": ["recorded"] - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "$rpc": "null" - } - } - } - }, - "5d32aa29303c": { - "name": "projectMutating", - "ordinal": 1, - "value": true - }, - "7ecf3a14081d": { - "name": "github.project.updateIssueBySlug#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "github.project.updateIssueBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "number": 1, - "owner": "owner", - "repo": "repo", - "updates": { - "addLabels": ["recorded"] - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "87a06aebc58e": { - "error": "The host sent a reply this app could not read (github.project.updateIssueBySlug)", - "mutating": false, - "row": { - "content": { - "assignees": [], - "labels": [], - "number": 1, - "repository": "owner/repo" - }, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "c4a308482e58": { - "name": "github.project.updateIssueBySlug#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateIssueBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"number\":1,\"updates\":{\"addLabels\":[\"recorded\"]}}}" - }, - "cee96a551fcd": { - "name": "projectRowDetailError", - "ordinal": 4, - "value": "The host sent a reply this app could not read (github.project.updateIssueBySlug)" - }, - "e9296dde8e41": { - "name": "projectMutating", - "ordinal": 5, - "value": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "b2", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": ["7ecf3a14081d"], - "payloads": ["c4a308482e58"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "9270aeb7d9c6" - }, - "state": "0c4dced3e005", - "effects": ["5d32aa29303c"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["1158580f696d"], - "payloads": ["c4a308482e58"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "eb79a9b3682a" - }, - "state": "87a06aebc58e", - "effects": ["5d32aa29303c", "cee96a551fcd", "e9296dde8e41"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/diff-review-branch-compare.json b/mobile/rpc-foundation/goldens/diff-review-branch-compare.json deleted file mode 100644 index 1b35ff75735..00000000000 --- a/mobile/rpc-foundation/goldens/diff-review-branch-compare.json +++ /dev/null @@ -1,346 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.diff-review", - "namedDeltas": [], - "values": { - "284ce622e74a": { - "name": "worktree.show#2", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "linkedPR": 12 - } - } - } - } - }, - "347ad3543d28": { - "branchCompare": { - "error": "The host sent a reply this app could not read (git.branchCompare)", - "result": { - "$rpc": "null" - } - }, - "diff": "unloaded", - "snapshot": "unloaded" - }, - "412402e093cc": { - "name": "git.branchCompare#2", - "ordinal": 12, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"git.branchCompare\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"baseRef\":\"origin/main\"}}" - }, - "4b4f2d7405b8": { - "name": "repo.list#2", - "ordinal": 8, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - } - }, - "4e6543b26313": { - "name": "git.branchCompare#2", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "git.branchCompare" - }, - { - "name": "params", - "value": { - "baseRef": "origin/main", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "entries": [], - "summary": {} - } - } - } - }, - "5b296b205440": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - } - }, - "75328af2b182": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "The host sent a reply this app could not read (git.branchCompare)", - "result": { - "$rpc": "null" - } - } - }, - "80d0ff3c81e8": { - "name": "worktree.show#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "94cc9c5a329b": { - "name": "worktree.show#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "linkedPR": 12 - } - } - } - } - }, - "9f5d0ac26269": { - "branchCompare": { - "result": { - "$rpc": "null" - } - }, - "diff": "unloaded", - "snapshot": "unloaded" - }, - "ca8f7f7c9891": { - "name": "repo.list#2", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "cf9290001484": { - "name": "git.branchCompare#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "git.branchCompare" - }, - { - "name": "params", - "value": { - "baseRef": "origin/main", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "forbidden", - "message": "git is not available" - }, - "id": "frame-3", - "ok": false - } - } - }, - "d64700b9de3b": { - "name": "repo.list#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "ee6fc162c326": { - "name": "worktree.show#2", - "ordinal": 9, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "ef9013648cfb": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "result": { - "$rpc": "null" - } - } - }, - "fb450de97b86": { - "name": "git.branchCompare#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"git.branchCompare\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"baseRef\":\"origin/main\"}}" - } - }, - "recording": { - "scenario": "diff-review-branch-compare", - "checkpoints": [ - { - "id": "unavailable", - "observation": { - "sender": ["94cc9c5a329b", "5b296b205440", "cf9290001484"], - "payloads": ["80d0ff3c81e8", "d64700b9de3b", "fb450de97b86"], - "settlements": { - "unavailable": "ef9013648cfb" - }, - "state": "9f5d0ac26269", - "effects": [] - } - }, - { - "id": "invalid", - "observation": { - "sender": [ - "94cc9c5a329b", - "5b296b205440", - "cf9290001484", - "284ce622e74a", - "4b4f2d7405b8", - "4e6543b26313" - ], - "payloads": [ - "80d0ff3c81e8", - "d64700b9de3b", - "fb450de97b86", - "ee6fc162c326", - "ca8f7f7c9891", - "412402e093cc" - ], - "settlements": { - "unavailable": "ef9013648cfb", - "invalid": "75328af2b182" - }, - "state": "347ad3543d28", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/diff-review-branch-file-diff.json b/mobile/rpc-foundation/goldens/diff-review-branch-file-diff.json deleted file mode 100644 index 7271a34bd62..00000000000 --- a/mobile/rpc-foundation/goldens/diff-review-branch-file-diff.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.diff-review", - "namedDeltas": [], - "values": { - "365c17523d76": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "itemKey": "branch:src/app.ts", - "kind": "binary" - } - }, - "38fb361f406c": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Committed diff is unavailable", - "isRpcDeliveryUnknown": false - } - }, - "534cf7badcbc": { - "branchCompare": "unloaded", - "diff": { - "itemKey": "branch:src/app.ts", - "kind": "binary" - }, - "snapshot": "unloaded" - }, - "ce804facf021": { - "name": "git.branchDiff#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.branchDiff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"compare\":{\"baseRef\":\"origin/main\",\"baseOid\":\"a1b2c3d4e5f60718293a4b5c6d7e8f9012345678\",\"headOid\":\"f0e1d2c3b4a5968778695a4b3c2d1e0f98765432\",\"mergeBase\":\"0123456789abcdef0123456789abcdef01234567\"}}}" - }, - "d24ea9d9187c": { - "name": "git.branchDiff#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.branchDiff" - }, - { - "name": "params", - "value": { - "compare": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/main", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567" - }, - "filePath": "src/app.ts", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "kind": "binary" - } - } - } - } - }, - "recording": { - "scenario": "diff-review-branch-file-diff", - "checkpoints": [ - { - "id": "branch", - "observation": { - "sender": ["d24ea9d9187c"], - "payloads": ["ce804facf021"], - "settlements": { - "branch": "365c17523d76" - }, - "state": "534cf7badcbc", - "effects": [] - } - }, - { - "id": "no-compare", - "observation": { - "sender": ["d24ea9d9187c"], - "payloads": ["ce804facf021"], - "settlements": { - "branch": "365c17523d76", - "no-compare": "38fb361f406c" - }, - "state": "534cf7badcbc", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/diff-review-commit-file-diff.json b/mobile/rpc-foundation/goldens/diff-review-commit-file-diff.json deleted file mode 100644 index 2c347ca999c..00000000000 --- a/mobile/rpc-foundation/goldens/diff-review-commit-file-diff.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.diff-review", - "namedDeltas": [], - "values": { - "5dc9494ad121": { - "name": "git.commitDiff#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"git.commitDiff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"commitOid\":\"c0ffee0123456789abcdef0123456789abcdef01\",\"parentOid\":\"beef0123456789abcdef0123456789abcdef0123\"}}" - }, - "61b51593919d": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [], - "commit": { - "commitOid": "c0ffee0123456789abcdef0123456789abcdef01", - "entries": [ - { - "added": 2, - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "parentOid": "beef0123456789abcdef0123456789abcdef0123" - }, - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "conflictOperation": "unknown", - "entries": [] - } - } - }, - "731c50dc5312": { - "branchCompare": "unloaded", - "diff": { - "itemKey": "commit:src/app.ts", - "kind": "ready", - "lines": [ - { - "highlighted": true, - "kind": "context", - "newLineNumber": 1, - "oldLineNumber": 1, - "segments": [ - { - "kind": "plain", - "text": "a" - } - ], - "text": "a" - }, - { - "highlighted": true, - "kind": "add", - "newLineNumber": 2, - "segments": [ - { - "kind": "plain", - "text": "b" - } - ], - "text": "b" - } - ], - "truncated": false - }, - "snapshot": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [], - "commit": { - "commitOid": "c0ffee0123456789abcdef0123456789abcdef01", - "entries": [ - { - "added": 2, - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "parentOid": "beef0123456789abcdef0123456789abcdef0123" - }, - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "conflictOperation": "unknown", - "entries": [] - } - } - }, - "73a10d522a32": { - "branchCompare": "unloaded", - "diff": "unloaded", - "snapshot": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [], - "commit": { - "commitOid": "c0ffee0123456789abcdef0123456789abcdef01", - "entries": [ - { - "added": 2, - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "parentOid": "beef0123456789abcdef0123456789abcdef0123" - }, - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "conflictOperation": "unknown", - "entries": [] - } - } - }, - "78129084c077": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "itemKey": "commit:src/app.ts", - "kind": "ready", - "lines": [ - { - "highlighted": true, - "kind": "context", - "newLineNumber": 1, - "oldLineNumber": 1, - "segments": [ - { - "kind": "plain", - "text": "a" - } - ], - "text": "a" - }, - { - "highlighted": true, - "kind": "add", - "newLineNumber": 2, - "segments": [ - { - "kind": "plain", - "text": "b" - } - ], - "text": "b" - } - ], - "truncated": false - } - }, - "8c562385dc94": { - "name": "git.commitDiff#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "git.commitDiff" - }, - { - "name": "params", - "value": { - "commitOid": "c0ffee0123456789abcdef0123456789abcdef01", - "filePath": "src/app.ts", - "parentOid": "beef0123456789abcdef0123456789abcdef0123", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "kind": "text", - "modifiedContent": "a\nb\n", - "modifiedIsBinary": false, - "originalContent": "a\n", - "originalIsBinary": false - } - } - } - }, - "9d48143d94db": { - "name": "git.commitCompare#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.commitCompare\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"commitId\":\"c0ffee0123456789abcdef0123456789abcdef01\"}}" - }, - "f9d60d9b8a69": { - "name": "git.commitCompare#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.commitCompare" - }, - { - "name": "params", - "value": { - "commitId": "c0ffee0123456789abcdef0123456789abcdef01", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "entries": [ - { - "added": 2, - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "summary": { - "baseRef": "beef012", - "changedFiles": 1, - "commitOid": "c0ffee0123456789abcdef0123456789abcdef01", - "compareRef": "c0ffee0", - "parentOid": "beef0123456789abcdef0123456789abcdef0123", - "status": "ready" - } - } - } - } - } - }, - "recording": { - "scenario": "diff-review-commit-file-diff", - "checkpoints": [ - { - "id": "commit", - "observation": { - "sender": ["f9d60d9b8a69"], - "payloads": ["9d48143d94db"], - "settlements": { - "commit": "61b51593919d" - }, - "state": "73a10d522a32", - "effects": [] - } - }, - { - "id": "commit-file", - "observation": { - "sender": ["f9d60d9b8a69", "8c562385dc94"], - "payloads": ["9d48143d94db", "5dc9494ad121"], - "settlements": { - "commit": "61b51593919d", - "commit-file": "78129084c077" - }, - "state": "731c50dc5312", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/diff-review-refused-file-diff.json b/mobile/rpc-foundation/goldens/diff-review-refused-file-diff.json deleted file mode 100644 index becc31b4f3a..00000000000 --- a/mobile/rpc-foundation/goldens/diff-review-refused-file-diff.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.diff-review", - "namedDeltas": [], - "values": { - "0698901154de": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "itemKey": "unstaged:src/app.ts", - "kind": "too-large" - } - }, - "18072d796980": { - "name": "git.diff#3", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":false}}" - }, - "2ecd0366533c": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "itemKey": "unstaged:src/app.ts", - "kind": "deleted" - } - }, - "33908d1938b7": { - "name": "git.diff#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":false}}" - }, - "481bd3924019": { - "name": "git.diff#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":false}}" - }, - "5768cc374e1d": { - "branchCompare": "unloaded", - "diff": { - "itemKey": "unstaged:src/app.ts", - "kind": "too-large" - }, - "snapshot": "unloaded" - }, - "67daf7391fee": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Unable to load diff", - "isRpcDeliveryUnknown": false - } - }, - "a71fa2bf76b8": { - "name": "git.diff#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": false, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "diff_too_large", - "message": "Diff exceeds the limit" - }, - "id": "frame-1", - "ok": false - } - } - }, - "abf08f796be3": { - "name": "git.diff#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": false, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "internal", - "message": "boom" - }, - "id": "frame-2", - "ok": false - } - } - }, - "b9d9c7cacbea": { - "name": "git.diff#3", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": false, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "internal", - "message": "" - }, - "id": "frame-3", - "ok": false - } - } - }, - "f10ae0495f82": { - "branchCompare": "unloaded", - "diff": { - "itemKey": "unstaged:src/app.ts", - "kind": "deleted" - }, - "snapshot": "unloaded" - } - }, - "recording": { - "scenario": "diff-review-refused-file-diff", - "checkpoints": [ - { - "id": "diff-too-large", - "observation": { - "sender": ["a71fa2bf76b8"], - "payloads": ["481bd3924019"], - "settlements": { - "diff-too-large": "0698901154de" - }, - "state": "5768cc374e1d", - "effects": [] - } - }, - { - "id": "deleted", - "observation": { - "sender": ["a71fa2bf76b8", "abf08f796be3"], - "payloads": ["481bd3924019", "33908d1938b7"], - "settlements": { - "diff-too-large": "0698901154de", - "deleted": "2ecd0366533c" - }, - "state": "f10ae0495f82", - "effects": [] - } - }, - { - "id": "refused", - "observation": { - "sender": ["a71fa2bf76b8", "abf08f796be3", "b9d9c7cacbea"], - "payloads": ["481bd3924019", "33908d1938b7", "18072d796980"], - "settlements": { - "diff-too-large": "0698901154de", - "deleted": "2ecd0366533c", - "refused": "67daf7391fee" - }, - "state": "f10ae0495f82", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/diff-review-snapshot.json b/mobile/rpc-foundation/goldens/diff-review-snapshot.json deleted file mode 100644 index 94055347fae..00000000000 --- a/mobile/rpc-foundation/goldens/diff-review-snapshot.json +++ /dev/null @@ -1,537 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.diff-review", - "namedDeltas": [], - "values": { - "11e9ea6be860": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "1f10fad6906c": { - "name": "worktree.show#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "3374ccf2bc9a": { - "name": "repo.list#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "411c662db736": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "branchCompare": { - "entries": [ - { - "added": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/old.ts", - "removed": 0, - "status": "modified" - } - ], - "summary": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/main", - "changedFiles": 1, - "commitsAhead": { - "$rpc": "undefined" - }, - "compareRef": "feature", - "errorMessage": { - "$rpc": "undefined" - }, - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "status": "ready" - } - }, - "branchError": { - "$rpc": "undefined" - }, - "comments": [], - "kind": "ready", - "reviewState": { - "completedAt": { - "$rpc": "undefined" - }, - "files": { - "branch\u0000branch\u0000\u0000src/old.ts": { - "filePath": "src/old.ts", - "key": "branch\u0000branch\u0000\u0000src/old.ts", - "lastOpenedAt": { - "$rpc": "undefined" - }, - "lastSeenDiffIdentity": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "reviewDiffIdentity": { - "$rpc": "undefined" - }, - "reviewedAt": { - "$rpc": "undefined" - }, - "scope": "branch" - }, - "unstaged\u0000unstaged\u0000\u0000src/app.ts": { - "filePath": "src/app.ts", - "key": "unstaged\u0000unstaged\u0000\u0000src/app.ts", - "lastOpenedAt": { - "$rpc": "undefined" - }, - "lastSeenDiffIdentity": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "reviewDiffIdentity": { - "$rpc": "undefined" - }, - "reviewedAt": { - "$rpc": "undefined" - }, - "scope": "unstaged" - } - }, - "updatedAt": 1767225600000, - "version": 1 - }, - "status": { - "branch": "feature", - "entries": [ - { - "added": 3, - "area": "unstaged", - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "head": "head-sha-1", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - }, - "5abf3b2ba503": { - "branchCompare": "unloaded", - "diff": "unloaded", - "snapshot": { - "branchCompare": { - "entries": [ - { - "added": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/old.ts", - "removed": 0, - "status": "modified" - } - ], - "summary": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/main", - "changedFiles": 1, - "commitsAhead": { - "$rpc": "undefined" - }, - "compareRef": "feature", - "errorMessage": { - "$rpc": "undefined" - }, - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "status": "ready" - } - }, - "branchError": { - "$rpc": "undefined" - }, - "comments": [], - "kind": "ready", - "reviewState": { - "completedAt": { - "$rpc": "undefined" - }, - "files": { - "branch\u0000branch\u0000\u0000src/old.ts": { - "filePath": "src/old.ts", - "key": "branch\u0000branch\u0000\u0000src/old.ts", - "lastOpenedAt": { - "$rpc": "undefined" - }, - "lastSeenDiffIdentity": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "reviewDiffIdentity": { - "$rpc": "undefined" - }, - "reviewedAt": { - "$rpc": "undefined" - }, - "scope": "branch" - }, - "unstaged\u0000unstaged\u0000\u0000src/app.ts": { - "filePath": "src/app.ts", - "key": "unstaged\u0000unstaged\u0000\u0000src/app.ts", - "lastOpenedAt": { - "$rpc": "undefined" - }, - "lastSeenDiffIdentity": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "reviewDiffIdentity": { - "$rpc": "undefined" - }, - "reviewedAt": { - "$rpc": "undefined" - }, - "scope": "unstaged" - } - }, - "updatedAt": 1767225600000, - "version": 1 - }, - "status": { - "branch": "feature", - "entries": [ - { - "added": 3, - "area": "unstaged", - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "head": "head-sha-1", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - }, - "5dbd52d6a1c7": { - "name": "worktree.show#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "5dd74fdeb001": { - "name": "worktree.show#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "diffComments": [], - "linkedPR": 12, - "mobileDiffReview": { - "files": [] - } - } - } - } - } - }, - "622e5aadb43d": { - "name": "git.branchCompare#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"git.branchCompare\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"baseRef\":\"origin/main\"}}" - }, - "648638103acb": { - "name": "repo.list#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "8db27b0778a5": { - "name": "git.status#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "9affac551982": { - "name": "repo.list#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - } - }, - "c0f7fd87f4a5": { - "name": "git.branchCompare#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "git.branchCompare" - }, - { - "name": "params", - "value": { - "baseRef": "origin/main", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "entries": [ - { - "added": 1, - "path": "src/old.ts", - "removed": 0, - "status": "modified" - } - ], - "summary": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/main", - "changedFiles": 1, - "compareRef": "feature", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "status": "ready" - } - } - } - } - }, - "d0e28a73dae6": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "branch": "feature", - "entries": [ - { - "added": 3, - "area": "unstaged", - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "head": "head-sha-1", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - } - }, - "e39817462870": { - "branchCompare": "unloaded", - "diff": "unloaded", - "snapshot": "unloaded" - } - }, - "recording": { - "scenario": "diff-review-snapshot", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": ["11e9ea6be860", "1f10fad6906c", "3374ccf2bc9a"], - "payloads": ["8db27b0778a5", "5dbd52d6a1c7", "648638103acb"], - "settlements": { - "snapshot": "9270aeb7d9c6" - }, - "state": "e39817462870", - "effects": [] - } - }, - { - "id": "snapshot", - "observation": { - "sender": ["d0e28a73dae6", "5dd74fdeb001", "9affac551982", "c0f7fd87f4a5"], - "payloads": ["8db27b0778a5", "5dbd52d6a1c7", "648638103acb", "622e5aadb43d"], - "settlements": { - "snapshot": "411c662db736" - }, - "state": "5abf3b2ba503", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/diff-review-status-unavailable.json b/mobile/rpc-foundation/goldens/diff-review-status-unavailable.json deleted file mode 100644 index e2932cf1785..00000000000 --- a/mobile/rpc-foundation/goldens/diff-review-status-unavailable.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.diff-review", - "namedDeltas": [], - "values": { - "1f10fad6906c": { - "name": "worktree.show#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "3374ccf2bc9a": { - "name": "repo.list#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "45d1ea7c0b42": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-1", - "ok": false - } - } - }, - "5dbd52d6a1c7": { - "name": "worktree.show#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "648638103acb": { - "name": "repo.list#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "8db27b0778a5": { - "name": "git.status#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "e39817462870": { - "branchCompare": "unloaded", - "diff": "unloaded", - "snapshot": "unloaded" - } - }, - "recording": { - "scenario": "diff-review-status-unavailable", - "checkpoints": [ - { - "id": "unavailable", - "observation": { - "sender": ["45d1ea7c0b42", "1f10fad6906c", "3374ccf2bc9a"], - "payloads": ["8db27b0778a5", "5dbd52d6a1c7", "648638103acb"], - "settlements": { - "unavailable": "9270aeb7d9c6" - }, - "state": "e39817462870", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/diff-review-worktree-file-diff.json b/mobile/rpc-foundation/goldens/diff-review-worktree-file-diff.json deleted file mode 100644 index c712ae8a777..00000000000 --- a/mobile/rpc-foundation/goldens/diff-review-worktree-file-diff.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.diff-review", - "namedDeltas": [], - "values": { - "168eeea61142": { - "name": "git.diff#3", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": false, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "kind": "unknown" - } - } - } - }, - "18072d796980": { - "name": "git.diff#3", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":false}}" - }, - "481bd3924019": { - "name": "git.diff#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":false}}" - }, - "50bd7426ef76": { - "name": "git.diff#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": false, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "kind": "binary" - } - } - } - }, - "5135c435b058": { - "name": "git.diff#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": true, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "byteLength": 2048, - "kind": "too-large" - } - } - } - }, - "717bd1fbc163": { - "branchCompare": "unloaded", - "diff": { - "byteLength": 2048, - "itemKey": "staged:src/app.ts", - "kind": "too-large" - }, - "snapshot": "unloaded" - }, - "7753343578da": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "The host sent a reply this app could not read (git.diff)", - "isRpcDeliveryUnknown": false - } - }, - "84090dfad90d": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "itemKey": "unstaged:src/app.ts", - "kind": "binary" - } - }, - "8675e0f40158": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "byteLength": 2048, - "itemKey": "staged:src/app.ts", - "kind": "too-large" - } - }, - "ea98fa53e2cc": { - "name": "git.diff#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":true}}" - }, - "f68945ffc2ea": { - "branchCompare": "unloaded", - "diff": { - "itemKey": "unstaged:src/app.ts", - "kind": "binary" - }, - "snapshot": "unloaded" - } - }, - "recording": { - "scenario": "diff-review-worktree-file-diff", - "checkpoints": [ - { - "id": "binary", - "observation": { - "sender": ["50bd7426ef76"], - "payloads": ["481bd3924019"], - "settlements": { - "binary": "84090dfad90d" - }, - "state": "f68945ffc2ea", - "effects": [] - } - }, - { - "id": "too-large", - "observation": { - "sender": ["50bd7426ef76", "5135c435b058"], - "payloads": ["481bd3924019", "ea98fa53e2cc"], - "settlements": { - "binary": "84090dfad90d", - "too-large": "8675e0f40158" - }, - "state": "717bd1fbc163", - "effects": [] - } - }, - { - "id": "invalid", - "observation": { - "sender": ["50bd7426ef76", "5135c435b058", "168eeea61142"], - "payloads": ["481bd3924019", "ea98fa53e2cc", "18072d796980"], - "settlements": { - "binary": "84090dfad90d", - "too-large": "8675e0f40158", - "invalid": "7753343578da" - }, - "state": "717bd1fbc163", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/host-worktree-refresh-stream.json b/mobile/rpc-foundation/goldens/host-worktree-refresh-stream.json deleted file mode 100644 index c03d48f7bea..00000000000 --- a/mobile/rpc-foundation/goldens/host-worktree-refresh-stream.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "worktree.host-refresh", - "family": "host-worktree-refresh", - "namedDeltas": [], - "values": { - "322d549d1882": { - "refreshWorktrees": 0, - "running": true, - "syncViewSettings": 2 - }, - "354b03a10a5d": { - "name": "syncViewSettings", - "ordinal": 5, - "value": { - "options": { - "resend": true - } - } - }, - "6ab454a38bb0": { - "name": "runtime.clientEvents.unsubscribe#2", - "ordinal": 6, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.unsubscribe\",\"params\":{\"subscriptionId\":\"sub-2\"}}" - }, - "85612713e3f0": { - "name": "runtime.clientEvents.unsubscribe#1", - "ordinal": 4, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.unsubscribe\",\"params\":{\"subscriptionId\":\"sub-1\"}}" - }, - "85ed79b276e4": { - "refreshWorktrees": 0, - "running": true, - "syncViewSettings": 1 - }, - "a507a5cf0d43": { - "name": "syncViewSettings", - "ordinal": 2, - "value": { - "options": { - "resend": true - } - } - }, - "cc261d80eae0": { - "name": "runtime.clientEvents.subscribe#2", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "e3e3030326f0": { - "refreshWorktrees": 0, - "running": false, - "syncViewSettings": 2 - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eef1ee3c2773": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "f2af146a9f12": { - "status": "fulfilled", - "startedAt": 3000, - "settledAt": 3000, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "host-worktree-refresh-stream", - "checkpoints": [ - { - "id": "started", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "85ed79b276e4", - "effects": ["a507a5cf0d43"] - } - }, - { - "id": "ready", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "85ed79b276e4", - "effects": ["a507a5cf0d43"] - } - }, - { - "id": "worktrees-changed", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "85ed79b276e4", - "effects": ["a507a5cf0d43"] - } - }, - { - "id": "polled", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "85ed79b276e4", - "effects": ["a507a5cf0d43"] - } - }, - { - "id": "repos-changed", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "85ed79b276e4", - "effects": ["a507a5cf0d43"] - } - }, - { - "id": "re-subscribed", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773", "cc261d80eae0", "85612713e3f0"], - "settlements": { - "start": "eb79a9b3682a", - "cutover": "f2af146a9f12" - }, - "state": "85ed79b276e4", - "effects": ["a507a5cf0d43"] - } - }, - { - "id": "replayed", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773", "cc261d80eae0", "85612713e3f0"], - "settlements": { - "start": "eb79a9b3682a", - "cutover": "f2af146a9f12" - }, - "state": "322d549d1882", - "effects": ["a507a5cf0d43", "354b03a10a5d"] - } - }, - { - "id": "stopped", - "observation": { - "sender": [], - "payloads": ["eef1ee3c2773", "cc261d80eae0", "85612713e3f0", "6ab454a38bb0"], - "settlements": { - "start": "eb79a9b3682a", - "cutover": "f2af146a9f12", - "stop": "f2af146a9f12" - }, - "state": "e3e3030326f0", - "effects": ["a507a5cf0d43", "354b03a10a5d"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json deleted file mode 100644 index d2c3253735a..00000000000 --- a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "workspace.file-inventory", - "family": "legacy-inventory", - "namedDeltas": [], - "values": { - "13ef648b37c5": { - "name": "files.list#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "files.list" - }, - { - "name": "params", - "value": { - "worktree": "id:A" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 120, - "settledAt": 120, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "32c9018052ba": { - "name": "files.searchPaths#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "files.searchPaths" - }, - { - "name": "params", - "value": { - "limit": 16, - "query": "old", - "worktree": "id:A" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 120, - "settledAt": 120, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-1", - "ok": false - } - } - }, - "4d27427720e9": { - "name": "files.list#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "files.list" - }, - { - "name": "params", - "value": { - "worktree": "id:A" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 120, - "settledAt": 30120, - "error": { - "category": "Error", - "message": "Request timed out: files.list", - "isRpcDeliveryUnknown": true - } - } - }, - "602e35a92eec": { - "files": [] - }, - "8db0d1234c94": { - "name": "files.searchPaths#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"old\",\"limit\":16}}" - }, - "c9b9d7a9b388": { - "name": "files.list#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.list\",\"params\":{\"worktree\":\"id:A\"}}" - }, - "d2ad71e601c4": { - "status": "fulfilled", - "startedAt": 120, - "settledAt": 120, - "value": { - "$rpc": "undefined" - } - }, - "d831c788243a": { - "name": "files.list#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "files.list" - }, - { - "name": "params", - "value": { - "worktree": "id:A" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 120, - "settledAt": 120, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "interruptions-inventory-lifecycle", - "checkpoints": [ - { - "id": "inventory-lifecycle.timeout:interrupted", - "observation": { - "sender": ["32c9018052ba", "4d27427720e9"], - "payloads": ["8db0d1234c94", "c9b9d7a9b388"], - "settlements": { - "mount": "eb79a9b3682a", - "old": "eb79a9b3682a" - }, - "state": "602e35a92eec", - "effects": [] - } - }, - { - "id": "inventory-lifecycle.timeout:settled", - "observation": { - "sender": ["32c9018052ba", "4d27427720e9"], - "payloads": ["8db0d1234c94", "c9b9d7a9b388"], - "settlements": { - "mount": "eb79a9b3682a", - "old": "eb79a9b3682a" - }, - "state": "602e35a92eec", - "effects": [] - } - }, - { - "id": "inventory-lifecycle.disconnect:interrupted", - "observation": { - "sender": ["32c9018052ba", "13ef648b37c5"], - "payloads": ["8db0d1234c94", "c9b9d7a9b388"], - "settlements": { - "mount": "eb79a9b3682a", - "old": "eb79a9b3682a", - "disconnect": "d2ad71e601c4" - }, - "state": "602e35a92eec", - "effects": [] - } - }, - { - "id": "inventory-lifecycle.disconnect:settled", - "observation": { - "sender": ["32c9018052ba", "13ef648b37c5"], - "payloads": ["8db0d1234c94", "c9b9d7a9b388"], - "settlements": { - "mount": "eb79a9b3682a", - "old": "eb79a9b3682a", - "disconnect": "d2ad71e601c4" - }, - "state": "602e35a92eec", - "effects": [] - } - }, - { - "id": "inventory-lifecycle.cutover:interrupted", - "observation": { - "sender": ["32c9018052ba", "d831c788243a"], - "payloads": ["8db0d1234c94", "c9b9d7a9b388"], - "settlements": { - "mount": "eb79a9b3682a", - "old": "eb79a9b3682a", - "cutover": "d2ad71e601c4" - }, - "state": "602e35a92eec", - "effects": [] - } - }, - { - "id": "inventory-lifecycle.cutover:settled", - "observation": { - "sender": ["32c9018052ba", "d831c788243a"], - "payloads": ["8db0d1234c94", "c9b9d7a9b388"], - "settlements": { - "mount": "eb79a9b3682a", - "old": "eb79a9b3682a", - "cutover": "d2ad71e601c4" - }, - "state": "602e35a92eec", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json deleted file mode 100644 index a81d89d082d..00000000000 --- a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json +++ /dev/null @@ -1,242 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.bot-overrides", - "family": "settings.bot-overrides", - "namedDeltas": [], - "values": { - "1a10a74b4157": { - "name": "settings.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: settings.get", - "isRpcDeliveryUnknown": true - } - } - }, - "1e38f5df2fc6": { - "name": "settings.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "4f53cda18c2b": [], - "b6a74921f3bd": { - "name": "settings.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "c8c77ac17e0a": { - "name": "settings.get#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "e3973bb12da1": { - "name": "settings.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "interruptions-settings-bot-overrides-fulfilled", - "checkpoints": [ - { - "id": "settings-bot-overrides-fulfilled.prelude:settings-pending", - "observation": { - "sender": ["e3973bb12da1"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "4f53cda18c2b", - "effects": [] - } - }, - { - "id": "settings-bot-overrides-fulfilled.timeout:interrupted", - "observation": { - "sender": ["1a10a74b4157"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "4f53cda18c2b", - "effects": [] - } - }, - { - "id": "settings-bot-overrides-fulfilled.timeout:settled", - "observation": { - "sender": ["1a10a74b4157"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "4f53cda18c2b", - "effects": [] - } - }, - { - "id": "settings-bot-overrides-fulfilled.disconnect:interrupted", - "observation": { - "sender": ["b6a74921f3bd"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a", - "disconnect": "eb79a9b3682a" - }, - "state": "4f53cda18c2b", - "effects": [] - } - }, - { - "id": "settings-bot-overrides-fulfilled.disconnect:settled", - "observation": { - "sender": ["b6a74921f3bd"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a", - "disconnect": "eb79a9b3682a" - }, - "state": "4f53cda18c2b", - "effects": [] - } - }, - { - "id": "settings-bot-overrides-fulfilled.cutover:interrupted", - "observation": { - "sender": ["1e38f5df2fc6"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a", - "cutover": "eb79a9b3682a" - }, - "state": "4f53cda18c2b", - "effects": [] - } - }, - { - "id": "settings-bot-overrides-fulfilled.cutover:settled", - "observation": { - "sender": ["1e38f5df2fc6"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a", - "cutover": "eb79a9b3682a" - }, - "state": "4f53cda18c2b", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-image-paste-single.json b/mobile/rpc-foundation/goldens/native-chat-image-paste-single.json deleted file mode 100644 index d0da2bf95c9..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-image-paste-single.json +++ /dev/null @@ -1,175 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.image-paste", - "family": "nativeChat.image-paste", - "namedDeltas": [], - "values": { - "0f02c1a90f93": { - "name": "terminal.send#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "15a9fbee07a2": { - "name": "terminal.read#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.read" - }, - { - "name": "params", - "value": { - "limit": 1, - "screen": true, - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 2000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "terminal": {} - } - } - } - }, - "40c4c5738c96": { - "name": "terminal.send#2", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b[200~@/tmp/a.png\\u001b[201~ \",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "47a22f9d0047": { - "failure": { - "$rpc": "null" - }, - "pasted": true - }, - "703c117d5bca": { - "name": "terminal.send#2", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u001b[200~@/tmp/a.png\u001b[201~ " - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "a3e305c984c6": { - "name": "terminal.send#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "abebd0f45ba2": { - "name": "terminal.read#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.read\",\"params\":{\"terminal\":\"terminal-1\",\"screen\":true,\"limit\":1}}" - } - }, - "recording": { - "scenario": "native-chat-image-paste-single", - "checkpoints": [ - { - "id": "pasted", - "observation": { - "sender": ["15a9fbee07a2", "a3e305c984c6", "703c117d5bca"], - "payloads": ["abebd0f45ba2", "0f02c1a90f93", "40c4c5738c96"], - "settlements": { - "one": "84e5ca07cb7a" - }, - "state": "47a22f9d0047", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-image-upload-start-refused.json b/mobile/rpc-foundation/goldens/native-chat-image-upload-start-refused.json deleted file mode 100644 index 4c23ed09fc1..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-image-upload-start-refused.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.image-upload", - "family": "nativeChat.image-upload", - "namedDeltas": [], - "values": { - "3c402c915494": { - "name": "clipboard.startImageUpload#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "clipboard.startImageUpload" - }, - { - "name": "params", - "value": { - "connectionId": "connection-1", - "expectedBase64Length": 32 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "too_large", - "message": "Image is too large" - }, - "id": "frame-1", - "ok": false - } - } - }, - "6696a47819e1": { - "name": "clipboard.startImageUpload#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"clipboard.startImageUpload\",\"params\":{\"expectedBase64Length\":32,\"connectionId\":\"connection-1\"}}" - }, - "765ab192e1a5": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Image is too large", - "isRpcDeliveryUnknown": false - } - }, - "994fccf9b305": { - "name": "upload-start", - "ordinal": 1, - "value": {} - }, - "b2b1a4389f58": { - "failure": "Image is too large", - "uploaded": "unuploaded" - } - }, - "recording": { - "scenario": "native-chat-image-upload-start-refused", - "checkpoints": [ - { - "id": "refused", - "observation": { - "sender": ["3c402c915494"], - "payloads": ["6696a47819e1"], - "settlements": { - "normal": "765ab192e1a5" - }, - "state": "b2b1a4389f58", - "effects": ["994fccf9b305"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-image-upload-two.json b/mobile/rpc-foundation/goldens/native-chat-image-upload-two.json deleted file mode 100644 index 3581f44ea22..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-image-upload-two.json +++ /dev/null @@ -1,326 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.image-upload", - "family": "nativeChat.image-upload", - "namedDeltas": [], - "values": { - "31f4965e4ed4": { - "name": "image-uploaded", - "ordinal": 8, - "value": { - "path": "/tmp/img-1.png", - "previewUri": "data:image/png;base64,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - } - }, - "5c19acb9611e": { - "name": "clipboard.commitImageUpload#2", - "ordinal": 13, - "args": [ - { - "name": "method", - "value": "clipboard.commitImageUpload" - }, - { - "name": "params", - "value": { - "uploadId": "upload-2" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": "/tmp/img-2.png" - } - } - }, - "6696a47819e1": { - "name": "clipboard.startImageUpload#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"clipboard.startImageUpload\",\"params\":{\"expectedBase64Length\":32,\"connectionId\":\"connection-1\"}}" - }, - "7c2e3ea286aa": { - "name": "clipboard.startImageUpload#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "clipboard.startImageUpload" - }, - { - "name": "params", - "value": { - "connectionId": "connection-1", - "expectedBase64Length": 32 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "uploadId": "upload-1" - } - } - } - }, - "814ccd56a769": { - "name": "clipboard.appendImageUploadChunk#1", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"clipboard.appendImageUploadChunk\",\"params\":{\"uploadId\":\"upload-1\",\"offset\":0,\"contentBase64\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}}" - }, - "8452698ac11a": { - "name": "clipboard.commitImageUpload#1", - "ordinal": 7, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"clipboard.commitImageUpload\",\"params\":{\"uploadId\":\"upload-1\"}}" - }, - "87c17cf78a60": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "path": "/tmp/img-1.png", - "previewUri": "data:image/png;base64,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - { - "path": "/tmp/img-2.png", - "previewUri": "file:///b.png" - } - ] - }, - "994fccf9b305": { - "name": "upload-start", - "ordinal": 1, - "value": {} - }, - "a77c2409e01f": { - "name": "clipboard.commitImageUpload#2", - "ordinal": 14, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"clipboard.commitImageUpload\",\"params\":{\"uploadId\":\"upload-2\"}}" - }, - "ae523d108575": { - "name": "clipboard.appendImageUploadChunk#2", - "ordinal": 12, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"clipboard.appendImageUploadChunk\",\"params\":{\"uploadId\":\"upload-2\",\"offset\":0,\"contentBase64\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}}" - }, - "b437cd69b0bf": { - "name": "clipboard.startImageUpload#2", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "clipboard.startImageUpload" - }, - { - "name": "params", - "value": { - "connectionId": "connection-1", - "expectedBase64Length": 32 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "uploadId": "upload-2" - } - } - } - }, - "d7c8ee357003": { - "name": "clipboard.appendImageUploadChunk#2", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "clipboard.appendImageUploadChunk" - }, - { - "name": "params", - "value": { - "contentBase64": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "offset": 0, - "uploadId": "upload-2" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "received": 32 - } - } - } - }, - "d7dc1460b465": { - "name": "image-uploaded", - "ordinal": 15, - "value": { - "path": "/tmp/img-2.png", - "previewUri": "file:///b.png" - } - }, - "e74ddb684ed1": { - "name": "clipboard.startImageUpload#2", - "ordinal": 10, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"clipboard.startImageUpload\",\"params\":{\"expectedBase64Length\":32,\"connectionId\":\"connection-1\"}}" - }, - "ec8f73d25f26": { - "name": "clipboard.commitImageUpload#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "clipboard.commitImageUpload" - }, - { - "name": "params", - "value": { - "uploadId": "upload-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": "/tmp/img-1.png" - } - } - }, - "f05e4695ffa3": { - "name": "clipboard.appendImageUploadChunk#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "clipboard.appendImageUploadChunk" - }, - { - "name": "params", - "value": { - "contentBase64": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "offset": 0, - "uploadId": "upload-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "received": 32 - } - } - } - }, - "f6cdfabc3790": { - "failure": { - "$rpc": "null" - }, - "uploaded": [ - { - "path": "/tmp/img-1.png", - "previewUri": "data:image/png;base64,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - { - "path": "/tmp/img-2.png", - "previewUri": "file:///b.png" - } - ] - } - }, - "recording": { - "scenario": "native-chat-image-upload-two", - "checkpoints": [ - { - "id": "uploaded-both", - "observation": { - "sender": [ - "7c2e3ea286aa", - "f05e4695ffa3", - "ec8f73d25f26", - "b437cd69b0bf", - "d7c8ee357003", - "5c19acb9611e" - ], - "payloads": [ - "6696a47819e1", - "814ccd56a769", - "8452698ac11a", - "e74ddb684ed1", - "ae523d108575", - "a77c2409e01f" - ], - "settlements": { - "two": "87c17cf78a60" - }, - "state": "f6cdfabc3790", - "effects": ["994fccf9b305", "31f4965e4ed4", "d7dc1460b465"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-empty.json b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-empty.json deleted file mode 100644 index c8c9d6adac4..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-empty.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.session-option-pick", - "family": "nativeChat.session-option-pick", - "namedDeltas": [], - "values": { - "0aa1124bf746": { - "settled": "settled" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "native-chat-session-option-pick-empty", - "checkpoints": [ - { - "id": "no-wire", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "empty": "eb79a9b3682a" - }, - "state": "0aa1124bf746", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-refused.json b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-refused.json deleted file mode 100644 index 8f61c9059ce..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-refused.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.session-option-pick", - "family": "nativeChat.session-option-pick", - "namedDeltas": [], - "values": { - "0aa1124bf746": { - "settled": "settled" - }, - "23f8f4ed8c86": { - "name": "settings.mutateNativeChatSessionOptions#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.mutateNativeChatSessionOptions" - }, - { - "name": "params", - "value": { - "agent": "claude", - "picks": [ - { - "modelId": "opus", - "optionId": "model", - "value": "opus" - } - ], - "type": "apply-picks" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-1", - "ok": false - } - } - }, - "3284376ef9b6": { - "name": "settings.mutateNativeChatSessionOptions#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.mutateNativeChatSessionOptions\",\"params\":{\"type\":\"apply-picks\",\"agent\":\"claude\",\"picks\":[{\"modelId\":\"opus\",\"optionId\":\"model\",\"value\":\"opus\"}]}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "native-chat-session-option-pick-refused", - "checkpoints": [ - { - "id": "refusal-swallowed", - "observation": { - "sender": ["23f8f4ed8c86"], - "payloads": ["3284376ef9b6"], - "settlements": { - "pick": "eb79a9b3682a" - }, - "state": "0aa1124bf746", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-written.json b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-written.json deleted file mode 100644 index 5a50b473371..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-written.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.session-option-pick", - "family": "nativeChat.session-option-pick", - "namedDeltas": [], - "values": { - "0aa1124bf746": { - "settled": "settled" - }, - "3284376ef9b6": { - "name": "settings.mutateNativeChatSessionOptions#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.mutateNativeChatSessionOptions\",\"params\":{\"type\":\"apply-picks\",\"agent\":\"claude\",\"picks\":[{\"modelId\":\"opus\",\"optionId\":\"model\",\"value\":\"opus\"}]}}" - }, - "baf33df29104": { - "name": "settings.mutateNativeChatSessionOptions#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.mutateNativeChatSessionOptions" - }, - { - "name": "params", - "value": { - "agent": "claude", - "picks": [ - { - "modelId": "opus", - "optionId": "model", - "value": "opus" - } - ], - "type": "apply-picks" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "applied": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "native-chat-session-option-pick-written", - "checkpoints": [ - { - "id": "written", - "observation": { - "sender": ["baf33df29104"], - "payloads": ["3284376ef9b6"], - "settlements": { - "pick": "eb79a9b3682a" - }, - "state": "0aa1124bf746", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-stop-accepted.json b/mobile/rpc-foundation/goldens/native-chat-stop-accepted.json deleted file mode 100644 index e7505c4462a..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-stop-accepted.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.native-chat-stop", - "family": "session.native-chat-stop", - "namedDeltas": [], - "values": { - "3e2d28f3728b": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 1000, - "value": true - }, - "5cd1d4a9aed5": { - "name": "terminal.send#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b\",\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "75263c07c807": { - "name": "cancel-pending", - "ordinal": 1, - "value": {} - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "ab0f3d65723e": { - "name": "terminal.send#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "d5972c43f562": { - "name": "terminal.send#2", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b\",\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "da95ce195845": { - "name": "terminal.send#2", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 14000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 1000, - "settledAt": 1000, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "debf84af8d66": { - "errors": [] - } - }, - "recording": { - "scenario": "native-chat-stop-accepted", - "checkpoints": [ - { - "id": "first-accepted", - "observation": { - "sender": ["ab0f3d65723e"], - "payloads": ["5cd1d4a9aed5"], - "settlements": { - "stop": "9270aeb7d9c6" - }, - "state": "debf84af8d66", - "effects": ["75263c07c807"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["ab0f3d65723e", "da95ce195845"], - "payloads": ["5cd1d4a9aed5", "d5972c43f562"], - "settlements": { - "stop": "3e2d28f3728b" - }, - "state": "debf84af8d66", - "effects": ["75263c07c807"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-stop-both-rejected.json b/mobile/rpc-foundation/goldens/native-chat-stop-both-rejected.json deleted file mode 100644 index a0195d1297b..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-stop-both-rejected.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.native-chat-stop", - "family": "session.native-chat-stop", - "namedDeltas": [], - "values": { - "5cd1d4a9aed5": { - "name": "terminal.send#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b\",\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "6b21adc16f94": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 1000, - "value": false - }, - "75263c07c807": { - "name": "cancel-pending", - "ordinal": 1, - "value": {} - }, - "81225cffe7a1": { - "name": "terminal.send#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - } - }, - "d5972c43f562": { - "name": "terminal.send#2", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b\",\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "db139841535a": { - "name": "terminal.send#2", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 14000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 1000, - "settledAt": 1000, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - } - }, - "e6e087b39540": { - "errors": ["Stop not sent"] - } - }, - "recording": { - "scenario": "native-chat-stop-both-rejected", - "checkpoints": [ - { - "id": "reported", - "observation": { - "sender": ["81225cffe7a1", "db139841535a"], - "payloads": ["5cd1d4a9aed5", "d5972c43f562"], - "settlements": { - "stop": "6b21adc16f94" - }, - "state": "e6e087b39540", - "effects": ["75263c07c807"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-write-accepted.json b/mobile/rpc-foundation/goldens/native-chat-write-accepted.json deleted file mode 100644 index d82a2b86690..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-write-accepted.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "namedDeltas": [], - "values": { - "0c75127e9c76": { - "name": "terminal.send#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": true, - "terminal": "terminal-1", - "text": "hello" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "37750614a050": { - "name": "terminal.send#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"hello\",\"enter\":true,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "46771288e046": { - "body": "accepted" - }, - "7291a73df186": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": "accepted" - } - }, - "recording": { - "scenario": "native-chat-write-accepted", - "checkpoints": [ - { - "id": "accepted", - "observation": { - "sender": ["0c75127e9c76"], - "payloads": ["37750614a050"], - "settlements": { - "body": "7291a73df186" - }, - "state": "46771288e046", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-write-clear-line.json b/mobile/rpc-foundation/goldens/native-chat-write-clear-line.json deleted file mode 100644 index f4dd70c5d1e..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-write-clear-line.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "namedDeltas": [], - "values": { - "098c51e345e3": { - "name": "terminal.send#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u0015\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "7e7356ce5972": { - "name": "terminal.send#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u0015" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "e8cd309e2293": { - "clear": true - } - }, - "recording": { - "scenario": "native-chat-write-clear-line", - "checkpoints": [ - { - "id": "cleared", - "observation": { - "sender": ["7e7356ce5972"], - "payloads": ["098c51e345e3"], - "settlements": { - "clear": "84e5ca07cb7a" - }, - "state": "e8cd309e2293", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-write-rejected.json b/mobile/rpc-foundation/goldens/native-chat-write-rejected.json deleted file mode 100644 index 59ee5986ccf..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-write-rejected.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "namedDeltas": [], - "values": { - "0143e6e129bc": { - "name": "terminal.send#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": true, - "terminal": "terminal-1", - "text": "hello" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - } - }, - "19f53fb21e4e": { - "body": "rejected" - }, - "37750614a050": { - "name": "terminal.send#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"hello\",\"enter\":true,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "9bd3ea1ff2bb": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": "rejected" - } - }, - "recording": { - "scenario": "native-chat-write-rejected", - "checkpoints": [ - { - "id": "rejected", - "observation": { - "sender": ["0143e6e129bc"], - "payloads": ["37750614a050"], - "settlements": { - "body": "9bd3ea1ff2bb" - }, - "state": "19f53fb21e4e", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/native-chat-write-typed-command.json b/mobile/rpc-foundation/goldens/native-chat-write-typed-command.json deleted file mode 100644 index b3279cf792c..00000000000 --- a/mobile/rpc-foundation/goldens/native-chat-write-typed-command.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "namedDeltas": [], - "values": { - "098c51e345e3": { - "name": "terminal.send#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u0015\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "1c80024cfa2c": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 48, - "value": "accepted" - }, - "1fc08660fafb": { - "name": "terminal.send#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"o\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "6da4938e6ef2": { - "name": "terminal.send#3", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "k" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 32, - "settledAt": 32, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "75e0554b8621": { - "name": "terminal.send#3", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"k\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "7e7356ce5972": { - "name": "terminal.send#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u0015" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "9c7eabe1bc26": { - "name": "terminal.send#4", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\r" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 48, - "settledAt": 48, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "a8df21337a5a": { - "name": "terminal.send#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "o" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 16, - "settledAt": 16, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "bf797abab699": { - "command": "accepted" - }, - "dcda79a6c159": { - "name": "terminal.send#4", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\r\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - } - }, - "recording": { - "scenario": "native-chat-write-typed-command", - "checkpoints": [ - { - "id": "typed", - "observation": { - "sender": ["7e7356ce5972", "a8df21337a5a", "6da4938e6ef2", "9c7eabe1bc26"], - "payloads": ["098c51e345e3", "1fc08660fafb", "75e0554b8621", "dcda79a6c159"], - "settlements": { - "command": "1c80024cfa2c" - }, - "state": "bf797abab699", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/new-workspace-repositories-fulfilled.json b/mobile/rpc-foundation/goldens/new-workspace-repositories-fulfilled.json deleted file mode 100644 index 70b4a9ba4ca..00000000000 --- a/mobile/rpc-foundation/goldens/new-workspace-repositories-fulfilled.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "workspace.repositories", - "family": "components.new-workspace-repositories", - "namedDeltas": [], - "values": { - "19b2979d7fc2": { - "name": "repo.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "35f85fe3b71c": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "413e29f6e78e": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "repos": [ - { - "displayName": "alpha", - "id": "repo-a", - "path": "/tmp/repo-a" - }, - { - "displayName": "beta", - "id": "repo-b", - "path": "/tmp/repo-b" - } - ] - } - } - } - }, - "4e8b4e3e814f": { - "crash": { - "$rpc": "null" - }, - "loading": true, - "repos": [], - "selected": { - "$rpc": "null" - } - }, - "eac6e56c2d2c": { - "crash": { - "$rpc": "null" - }, - "loading": false, - "repos": ["repo-a", "repo-b"], - "selected": "repo-b" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "new-workspace-repositories-fulfilled", - "checkpoints": [ - { - "id": "loading", - "observation": { - "sender": ["35f85fe3b71c"], - "payloads": ["19b2979d7fc2"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "4e8b4e3e814f", - "effects": [] - } - }, - { - "id": "selected", - "observation": { - "sender": ["413e29f6e78e"], - "payloads": ["19b2979d7fc2"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "eac6e56c2d2c", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/notifications-desktop-stream.json b/mobile/rpc-foundation/goldens/notifications-desktop-stream.json deleted file mode 100644 index 591a0c1926b..00000000000 --- a/mobile/rpc-foundation/goldens/notifications-desktop-stream.json +++ /dev/null @@ -1,236 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "notifications.desktop-stream", - "family": "notifications.desktop-stream", - "namedDeltas": [], - "values": { - "18a100fb6bae": { - "name": "notifications.getMissedSince#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "notifications.getMissedSince" - }, - { - "name": "params", - "value": { - "deliveredPushes": [ - { - "notificationEpoch": "epoch-1", - "notificationId": "note-1", - "notificationSeq": 7 - }, - { - "notificationEpoch": "epoch-1", - "notificationId": "note-2", - "notificationSeq": 8 - } - ], - "lastSeenSeq": 9007199254740991 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "dismissedPushes": [ - { - "notificationEpoch": "epoch-1", - "notificationId": "note-1", - "notificationSeq": 7 - } - ] - } - } - } - }, - "2637263140a2": { - "name": "notifications.unsubscribe#1", - "ordinal": 8, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"notifications.unsubscribe\",\"params\":{\"subscriptionId\":\"sub-1\"}}" - }, - "45aca32cac62": { - "name": "notification-tray.dismiss", - "ordinal": 7, - "value": { - "identifier": "tray-2" - } - }, - "4924583cde9d": { - "name": "device-store.setItem", - "ordinal": 6, - "value": { - "key": "orca:pushDismissalWatermarks:v1", - "value": "[{\"key\":\"[\\\"Yw3NKWbEM2aRElRI\\\",\\\"epoch-1\\\",\\\"note-2\\\"]\",\"seq\":8,\"expiresAt\":1767312000000}]" - } - }, - "5359579cc62d": { - "running": true - }, - "67485a6a910e": { - "name": "notifications.getMissedSince#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "notifications.getMissedSince" - }, - { - "name": "params", - "value": { - "deliveredPushes": [ - { - "notificationEpoch": "epoch-1", - "notificationId": "note-1", - "notificationSeq": 7 - }, - { - "notificationEpoch": "epoch-1", - "notificationId": "note-2", - "notificationSeq": 8 - } - ], - "lastSeenSeq": 9007199254740991 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "a0b2bcfcde77": { - "running": false - }, - "e074c0b6fa0a": { - "name": "notifications.getMissedSince#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"notifications.getMissedSince\",\"params\":{\"lastSeenSeq\":9007199254740991,\"deliveredPushes\":[{\"notificationId\":\"note-1\",\"notificationEpoch\":\"epoch-1\",\"notificationSeq\":7},{\"notificationId\":\"note-2\",\"notificationEpoch\":\"epoch-1\",\"notificationSeq\":8}]}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f552b5040ec7": { - "name": "notifications.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"notifications.subscribe\",\"params\":{\"includeDesktopSuppressed\":true}}" - }, - "f79cc42f0819": { - "name": "notification-tray.dismiss", - "ordinal": 5, - "value": { - "identifier": "tray-1" - } - }, - "ff11f542ada5": { - "name": "device-store.setItem", - "ordinal": 4, - "value": { - "key": "orca:pushDismissalWatermarks:v1", - "value": "[{\"key\":\"[\\\"Yw3NKWbEM2aRElRI\\\",\\\"epoch-1\\\",\\\"note-1\\\"]\",\"seq\":7,\"expiresAt\":1767312000000}]" - } - } - }, - "recording": { - "scenario": "notifications-desktop-stream", - "checkpoints": [ - { - "id": "subscribed", - "observation": { - "sender": [], - "payloads": ["f552b5040ec7"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "5359579cc62d", - "effects": [] - } - }, - { - "id": "ready", - "observation": { - "sender": ["67485a6a910e"], - "payloads": ["f552b5040ec7", "e074c0b6fa0a"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "5359579cc62d", - "effects": [] - } - }, - { - "id": "caught-up", - "observation": { - "sender": ["18a100fb6bae"], - "payloads": ["f552b5040ec7", "e074c0b6fa0a"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "5359579cc62d", - "effects": ["ff11f542ada5", "f79cc42f0819"] - } - }, - { - "id": "dismissed", - "observation": { - "sender": ["18a100fb6bae"], - "payloads": ["f552b5040ec7", "e074c0b6fa0a"], - "settlements": { - "start": "eb79a9b3682a" - }, - "state": "5359579cc62d", - "effects": ["ff11f542ada5", "f79cc42f0819", "4924583cde9d", "45aca32cac62"] - } - }, - { - "id": "unsubscribing", - "observation": { - "sender": ["18a100fb6bae"], - "payloads": ["f552b5040ec7", "e074c0b6fa0a", "2637263140a2"], - "settlements": { - "start": "eb79a9b3682a", - "stop": "eb79a9b3682a" - }, - "state": "a0b2bcfcde77", - "effects": ["ff11f542ada5", "f79cc42f0819", "4924583cde9d", "45aca32cac62"] - } - }, - { - "id": "stopped", - "observation": { - "sender": ["18a100fb6bae"], - "payloads": ["f552b5040ec7", "e074c0b6fa0a", "2637263140a2"], - "settlements": { - "start": "eb79a9b3682a", - "stop": "eb79a9b3682a" - }, - "state": "a0b2bcfcde77", - "effects": ["ff11f542ada5", "f79cc42f0819", "4924583cde9d", "45aca32cac62"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/notifications-display-test-accepted.json b/mobile/rpc-foundation/goldens/notifications-display-test-accepted.json deleted file mode 100644 index a8723e17b02..00000000000 --- a/mobile/rpc-foundation/goldens/notifications-display-test-accepted.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "notifications.display-test-screen", - "family": "notifications.display-test-screen", - "namedDeltas": [], - "values": { - "0bfc5a373e4d": { - "name": "notifications.testPush#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "notifications.testPush" - }, - { - "name": "params", - "value": { - "$rpc": "null" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true, - "timeoutMs": 20000 - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "649d12c8eb9b": { - "name": "notifications.testPush#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "notifications.testPush" - }, - { - "name": "params", - "value": { - "$rpc": "null" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true, - "timeoutMs": 20000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "accepted": true - } - } - } - }, - "6b7fba36efde": { - "crash": { - "$rpc": "null" - }, - "elements": { - "ChevronRight": 1, - "Pressable": 2, - "Text": 5, - "View": 7 - }, - "labels": ["Send test notification", "Troubleshooting"], - "text": [ - "Having trouble receiving alerts?", - "Send test notification", - "Troubleshooting", - "Test push delivery, or a local notification when push is unavailable.", - "Accepted by Orca’s push service. Check for the notification." - ] - }, - "8a172d4948a9": { - "crash": { - "$rpc": "null" - }, - "elements": { - "ChevronRight": 1, - "Pressable": 2, - "Text": 4, - "View": 7 - }, - "labels": ["Send test notification", "Troubleshooting"], - "text": [ - "Having trouble receiving alerts?", - "Send test notification", - "Troubleshooting", - "Test push delivery, or a local notification when push is unavailable." - ] - }, - "9585b40ac04d": { - "crash": { - "$rpc": "null" - }, - "elements": { - "ChevronRight": 1, - "Pressable": 2, - "Text": 5, - "View": 7 - }, - "labels": ["Sending…", "Troubleshooting"], - "text": [ - "Having trouble receiving alerts?", - "Send test notification", - "Sending…", - "Troubleshooting", - "Test push delivery, or a local notification when push is unavailable." - ] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f68b017d64bd": { - "name": "notifications.testPush#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"notifications.testPush\",\"params\":null}" - } - }, - "recording": { - "scenario": "notifications-display-test-accepted", - "checkpoints": [ - { - "id": "mounted", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "8a172d4948a9", - "effects": [] - } - }, - { - "id": "sending", - "observation": { - "sender": ["0bfc5a373e4d"], - "payloads": ["f68b017d64bd"], - "settlements": { - "mount": "eb79a9b3682a", - "press": "eb79a9b3682a" - }, - "state": "9585b40ac04d", - "effects": [] - } - }, - { - "id": "accepted", - "observation": { - "sender": ["649d12c8eb9b"], - "payloads": ["f68b017d64bd"], - "settlements": { - "mount": "eb79a9b3682a", - "press": "eb79a9b3682a" - }, - "state": "6b7fba36efde", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pairing-pre-profile-direct-wins-and-provisions.json b/mobile/rpc-foundation/goldens/pairing-pre-profile-direct-wins-and-provisions.json deleted file mode 100644 index 4f4eeef3c4b..00000000000 --- a/mobile/rpc-foundation/goldens/pairing-pre-profile-direct-wins-and-provisions.json +++ /dev/null @@ -1,270 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "pairing.pre-profile", - "family": "pairing.pre-profile", - "namedDeltas": [], - "values": { - "061b247f2805": { - "name": "host-saved", - "ordinal": 13, - "value": "relay-host-0001x" - }, - "077b94702eb7": { - "name": "candidate-closed", - "ordinal": 15, - "value": "direct" - }, - "1f647ffe77b0": { - "name": "pairing.getEndpoints#1", - "ordinal": 11, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.getEndpoints\",\"params\":{\"installReqId\":\"install-l99UBPM71AZiC1ghz2glnA\"}}" - }, - "28a5fc6036c5": { - "name": "pairing.provisionRelay#1", - "ordinal": 8, - "args": [ - { - "name": "method", - "value": "pairing.provisionRelay" - }, - { - "name": "params", - "value": { - "newResumeTokenHash": "yrnYzw4B0YZ_R6Tcm4arO3oysaG7lsPjvyp4uWmdBtU", - "reqId": "install-l99UBPM71AZiC1ghz2glnA" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "reqId": "install-l99UBPM71AZiC1ghz2glnA", - "resumeExpiresAt": 1767830400000, - "v": 1 - } - } - } - }, - "33c6a36cc4b6": { - "name": "journal-cleared", - "ordinal": 14, - "value": "pair-fixture-1" - }, - "406c8ab0b9b6": { - "name": "journal-saved", - "ordinal": 1, - "value": "pair-fixture-1" - }, - "6995d6b0bd4c": { - "name": "status.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "capabilities": [] - } - } - } - }, - "6d04596c636d": { - "name": "status.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "8bf25ca8d4ae": { - "name": "bundle-written", - "ordinal": 12, - "value": { - "version": 4 - } - }, - "8e378786864c": { - "name": "candidate-closed", - "ordinal": 6, - "value": "relay" - }, - "9b50435fa2f8": { - "outcome": "host-1", - "savedHost": "relay-host-0001x", - "timedOut": false - }, - "c86730581187": { - "name": "status.get#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "capabilities": [] - } - } - } - }, - "d1b2eddf66f4": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "hostId": "host-1" - } - }, - "e29d4c104dd3": { - "name": "journal-updated", - "ordinal": 7, - "value": "pair-fixture-1" - }, - "ea163bb1f5e0": { - "name": "pairing.getEndpoints#1", - "ordinal": 10, - "args": [ - { - "name": "method", - "value": "pairing.getEndpoints" - }, - { - "name": "params", - "value": { - "installReqId": "install-l99UBPM71AZiC1ghz2glnA" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "installStatus": { - "reqId": "install-l99UBPM71AZiC1ghz2glnA", - "result": { - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "reqId": "install-l99UBPM71AZiC1ghz2glnA", - "resumeExpiresAt": 1767830400000, - "v": 1 - }, - "state": "committed", - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - }, - "v": 1 - } - } - } - }, - "edde120654bf": { - "name": "status.get#2", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "f49423f836f9": { - "name": "pairing.provisionRelay#1", - "ordinal": 9, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.provisionRelay\",\"params\":{\"reqId\":\"install-l99UBPM71AZiC1ghz2glnA\",\"newResumeTokenHash\":\"yrnYzw4B0YZ_R6Tcm4arO3oysaG7lsPjvyp4uWmdBtU\"}}" - }, - "f6b99510eefb": { - "name": "candidate-closed", - "ordinal": 16, - "value": "relay" - } - }, - "recording": { - "scenario": "pairing-pre-profile-direct-wins-and-provisions", - "checkpoints": [ - { - "id": "paired-over-direct", - "observation": { - "sender": ["6995d6b0bd4c", "c86730581187", "28a5fc6036c5", "ea163bb1f5e0"], - "payloads": ["6d04596c636d", "edde120654bf", "f49423f836f9", "1f647ffe77b0"], - "settlements": { - "pair": "d1b2eddf66f4" - }, - "state": "9b50435fa2f8", - "effects": [ - "406c8ab0b9b6", - "8e378786864c", - "e29d4c104dd3", - "8bf25ca8d4ae", - "061b247f2805", - "33c6a36cc4b6", - "077b94702eb7", - "f6b99510eefb" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pairing-pre-profile-times-out.json b/mobile/rpc-foundation/goldens/pairing-pre-profile-times-out.json deleted file mode 100644 index 5493980f25a..00000000000 --- a/mobile/rpc-foundation/goldens/pairing-pre-profile-times-out.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "pairing.pre-profile", - "family": "pairing.pre-profile", - "namedDeltas": [], - "values": { - "03106dceb986": { - "name": "status.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "406c8ab0b9b6": { - "name": "journal-saved", - "ordinal": 1, - "value": "pair-fixture-1" - }, - "6d04596c636d": { - "name": "status.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "6fd2524785ca": { - "name": "candidate-closed", - "ordinal": 7, - "value": "relay" - }, - "76572b132647": { - "name": "candidate-closed", - "ordinal": 6, - "value": "direct" - }, - "86d361a0bf7c": { - "outcome": "unpaired", - "savedHost": { - "$rpc": "null" - }, - "timedOut": false - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "ccefc12fda27": { - "outcome": "unpaired", - "savedHost": { - "$rpc": "null" - }, - "timedOut": true - }, - "edde120654bf": { - "name": "status.get#2", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "f6d9975e7a13": { - "name": "status.get#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - } - }, - "recording": { - "scenario": "pairing-pre-profile-times-out", - "checkpoints": [ - { - "id": "racing", - "observation": { - "sender": ["03106dceb986", "f6d9975e7a13"], - "payloads": ["6d04596c636d", "edde120654bf"], - "settlements": { - "pair": "9270aeb7d9c6" - }, - "state": "86d361a0bf7c", - "effects": ["406c8ab0b9b6"] - } - }, - { - "id": "timed-out", - "observation": { - "sender": ["03106dceb986", "f6d9975e7a13"], - "payloads": ["6d04596c636d", "edde120654bf"], - "settlements": { - "pair": "9270aeb7d9c6" - }, - "state": "ccefc12fda27", - "effects": ["406c8ab0b9b6", "76572b132647", "6fd2524785ca"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-branch-identity.json b/mobile/rpc-foundation/goldens/pr-branch-identity.json deleted file mode 100644 index 42765d4ae19..00000000000 --- a/mobile/rpc-foundation/goldens/pr-branch-identity.json +++ /dev/null @@ -1,427 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-branch-context", - "family": "session.pr-branch-context", - "namedDeltas": [], - "values": { - "064ec5d09de8": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "branch": "feature", - "headSha": "head-sha-1", - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [ - { - "added": 3, - "area": "unstaged", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/app.ts", - "removed": 1, - "status": "modified", - "submodule": { - "$rpc": "undefined" - }, - "submoduleRoot": { - "$rpc": "undefined" - } - } - ], - "head": "head-sha-1", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - } - } - }, - "0fc11d9bf2a5": { - "name": "worktree.show#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "linkedPR": 12 - } - } - } - } - }, - "11e9ea6be860": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "189a62313626": { - "name": "repo.list#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - } - }, - "1f10fad6906c": { - "name": "worktree.show#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "622e5aadb43d": { - "name": "git.branchCompare#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"git.branchCompare\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"baseRef\":\"origin/main\"}}" - }, - "648638103acb": { - "name": "repo.list#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "6da1f95af186": { - "identity": "unread", - "repoContext": "unread" - }, - "738aa9f40ba9": { - "name": "repo.list#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "c0f7fd87f4a5": { - "name": "git.branchCompare#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "git.branchCompare" - }, - { - "name": "params", - "value": { - "baseRef": "origin/main", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "entries": [ - { - "added": 1, - "path": "src/old.ts", - "removed": 0, - "status": "modified" - } - ], - "summary": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/main", - "changedFiles": 1, - "compareRef": "feature", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "status": "ready" - } - } - } - } - }, - "d0e28a73dae6": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "branch": "feature", - "entries": [ - { - "added": 3, - "area": "unstaged", - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "head": "head-sha-1", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - } - }, - "d45add7a8589": { - "name": "git.status#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "ea4c904bfb5f": { - "name": "worktree.show#1", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "eddcdff704c3": { - "identity": { - "branch": "feature", - "headSha": "head-sha-1", - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [ - { - "added": 3, - "area": "unstaged", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/app.ts", - "removed": 1, - "status": "modified", - "submodule": { - "$rpc": "undefined" - }, - "submoduleRoot": { - "$rpc": "undefined" - } - } - ], - "head": "head-sha-1", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - } - }, - "repoContext": "unread" - } - }, - "recording": { - "scenario": "pr-branch-identity", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": ["11e9ea6be860", "1f10fad6906c", "738aa9f40ba9"], - "payloads": ["d45add7a8589", "ea4c904bfb5f", "648638103acb"], - "settlements": { - "identity": "9270aeb7d9c6" - }, - "state": "6da1f95af186", - "effects": [] - } - }, - { - "id": "identity", - "observation": { - "sender": ["d0e28a73dae6", "0fc11d9bf2a5", "189a62313626", "c0f7fd87f4a5"], - "payloads": ["d45add7a8589", "ea4c904bfb5f", "648638103acb", "622e5aadb43d"], - "settlements": { - "identity": "064ec5d09de8" - }, - "state": "eddcdff704c3", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-branch-repo-context.json b/mobile/rpc-foundation/goldens/pr-branch-repo-context.json deleted file mode 100644 index e574fdd4b11..00000000000 --- a/mobile/rpc-foundation/goldens/pr-branch-repo-context.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-branch-context", - "family": "session.pr-branch-context", - "namedDeltas": [], - "values": { - "191e3c96ad53": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - } - }, - "1f5765918736": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" - }, - "364d823c309f": { - "identity": "unread", - "repoContext": { - "isGithubRepo": true - } - }, - "79c69a644fe2": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "isGithubRepo": true - } - } - }, - "recording": { - "scenario": "pr-branch-repo-context", - "checkpoints": [ - { - "id": "repo-context", - "observation": { - "sender": ["191e3c96ad53"], - "payloads": ["1f5765918736"], - "settlements": { - "repo-context": "79c69a644fe2" - }, - "state": "364d823c309f", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-comment-mutation.json b/mobile/rpc-foundation/goldens/pr-comment-mutation.json deleted file mode 100644 index ade0b135294..00000000000 --- a/mobile/rpc-foundation/goldens/pr-comment-mutation.json +++ /dev/null @@ -1,384 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-mutations", - "family": "github.pr-comment-mutation", - "namedDeltas": [], - "values": { - "14120b04af8e": { - "name": "github.project.updateIssueCommentBySlug#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.project.updateIssueCommentBySlug" - }, - { - "name": "params", - "value": { - "body": "edited", - "commentId": 55, - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "2dd1ced3c6e3": { - "edit-comment": { - "ok": true - }, - "reply": { - "ok": true - }, - "resolve-thread": { - "ok": true - }, - "root-comment": { - "ok": true - } - }, - "44136fa355b3": {}, - "58627406aba1": { - "name": "github.addPRReviewCommentReply#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.addPRReviewCommentReply\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"commentId\":55,\"body\":\"recorded reply\",\"threadId\":\"thread-1\",\"path\":\"src/app.ts\",\"line\":3}}" - }, - "6053fd8b5f02": { - "name": "github.resolveReviewThread#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.resolveReviewThread\",\"params\":{\"repo\":\"id:repo-9\",\"threadId\":\"thread-1\",\"resolve\":true}}" - }, - "720507281e9c": { - "reply": { - "ok": true - }, - "resolve-thread": { - "ok": true - }, - "root-comment": { - "ok": true - } - }, - "a03244774599": { - "reply": { - "ok": true - }, - "root-comment": { - "ok": true - } - }, - "a07493bedc8a": { - "name": "github.project.deleteIssueCommentBySlug#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.project.deleteIssueCommentBySlug" - }, - { - "name": "params", - "value": { - "commentId": 55, - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "a76ab6b460fe": { - "name": "github.addIssueComment#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.addIssueComment\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"body\":\"recorded comment\",\"type\":\"pr\"}}" - }, - "a780f3a81230": { - "name": "github.addIssueComment#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.addIssueComment" - }, - { - "name": "params", - "value": { - "body": "recorded comment", - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "comment": { - "id": 57 - }, - "ok": true - } - } - } - }, - "a80b00127a67": { - "name": "github.resolveReviewThread#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.resolveReviewThread" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9", - "resolve": true, - "threadId": "thread-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": true - } - } - }, - "aaea0ed8039c": { - "name": "github.project.updateIssueCommentBySlug#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateIssueCommentBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"commentId\":55,\"body\":\"edited\"}}" - }, - "b038a4dffade": { - "name": "github.project.deleteIssueCommentBySlug#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.deleteIssueCommentBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"commentId\":55}}" - }, - "b9fd8579bf37": { - "name": "github.addPRReviewCommentReply#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.addPRReviewCommentReply" - }, - { - "name": "params", - "value": { - "body": "recorded reply", - "commentId": 55, - "line": 3, - "path": "src/app.ts", - "prNumber": 12, - "repo": "id:repo-9", - "threadId": "thread-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "comment": { - "id": 56 - }, - "ok": true - } - } - } - }, - "d65744cb322a": { - "delete-comment": { - "ok": true - }, - "edit-comment": { - "ok": true - }, - "reply": { - "ok": true - }, - "resolve-thread": { - "ok": true - }, - "root-comment": { - "ok": true - } - }, - "d7020c20297f": { - "reply": { - "ok": true - } - }, - "fbc958e4d46e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true - } - } - }, - "recording": { - "scenario": "pr-comment-mutation", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": [], - "payloads": [], - "settlements": {}, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "reply", - "observation": { - "sender": ["b9fd8579bf37"], - "payloads": ["58627406aba1"], - "settlements": { - "reply": "fbc958e4d46e" - }, - "state": "d7020c20297f", - "effects": [] - } - }, - { - "id": "root-comment", - "observation": { - "sender": ["b9fd8579bf37", "a780f3a81230"], - "payloads": ["58627406aba1", "a76ab6b460fe"], - "settlements": { - "reply": "fbc958e4d46e", - "root-comment": "fbc958e4d46e" - }, - "state": "a03244774599", - "effects": [] - } - }, - { - "id": "resolve-thread", - "observation": { - "sender": ["b9fd8579bf37", "a780f3a81230", "a80b00127a67"], - "payloads": ["58627406aba1", "a76ab6b460fe", "6053fd8b5f02"], - "settlements": { - "reply": "fbc958e4d46e", - "root-comment": "fbc958e4d46e", - "resolve-thread": "fbc958e4d46e" - }, - "state": "720507281e9c", - "effects": [] - } - }, - { - "id": "edit-comment", - "observation": { - "sender": ["b9fd8579bf37", "a780f3a81230", "a80b00127a67", "14120b04af8e"], - "payloads": ["58627406aba1", "a76ab6b460fe", "6053fd8b5f02", "aaea0ed8039c"], - "settlements": { - "reply": "fbc958e4d46e", - "root-comment": "fbc958e4d46e", - "resolve-thread": "fbc958e4d46e", - "edit-comment": "fbc958e4d46e" - }, - "state": "2dd1ced3c6e3", - "effects": [] - } - }, - { - "id": "delete-comment", - "observation": { - "sender": [ - "b9fd8579bf37", - "a780f3a81230", - "a80b00127a67", - "14120b04af8e", - "a07493bedc8a" - ], - "payloads": [ - "58627406aba1", - "a76ab6b460fe", - "6053fd8b5f02", - "aaea0ed8039c", - "b038a4dffade" - ], - "settlements": { - "reply": "fbc958e4d46e", - "root-comment": "fbc958e4d46e", - "resolve-thread": "fbc958e4d46e", - "edit-comment": "fbc958e4d46e", - "delete-comment": "fbc958e4d46e" - }, - "state": "d65744cb322a", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-comment-posted-in-place.json b/mobile/rpc-foundation/goldens/pr-comment-posted-in-place.json deleted file mode 100644 index ebd3e2354a8..00000000000 --- a/mobile/rpc-foundation/goldens/pr-comment-posted-in-place.json +++ /dev/null @@ -1,877 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-sidebar", - "family": "session.pr-sidebar", - "namedDeltas": [], - "values": { - "0730389db3e9": { - "name": "hostedReview.forBranch#1", - "ordinal": 7, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":null,\"active\":true}}" - }, - "0d9f7988ff86": { - "name": "github.prChecks#1", - "ordinal": 13, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" - }, - "1287167eaf56": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - } - }, - "1e1163c70eba": { - "name": "github.prComments#1", - "ordinal": 19, - "args": [ - { - "name": "method", - "value": "github.prComments" - }, - { - "name": "params", - "value": { - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "1f5765918736": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" - }, - "2dc2ca47b4e7": { - "name": "github.prForBranch#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "acceptMergedFallbackPR": true, - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "35045fa5a752": { - "commentError": { - "$rpc": "null" - }, - "pr": { - "kind": "loading" - } - }, - "357f9b7862e3": { - "name": "worktree.show#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "3a8e6b13f380": { - "name": "github.prForBranch#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":12,\"acceptMergedFallbackPR\":true,\"currentHeadOid\":null}}" - }, - "3b2df6b54829": { - "name": "github.addIssueComment#1", - "ordinal": 17, - "args": [ - { - "name": "method", - "value": "github.addIssueComment" - }, - { - "name": "params", - "value": { - "body": "recorded comment", - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-9", - "ok": true, - "result": { - "comment": { - "id": 57 - }, - "ok": true - } - } - } - }, - "3ecc2d44a209": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "4da7ea39401b": { - "name": "worktree.show#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "worktree": { - "linkedPR": { - "$rpc": "null" - } - } - } - } - } - }, - "5d309fcf43a7": { - "name": "github.workItemDetails#1", - "ordinal": 16, - "json": "{\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemDetails\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"type\":\"pr\"}}" - }, - "75885386f005": { - "name": "hostedReview.forBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "hostedReview.forBranch" - }, - { - "name": "params", - "value": { - "active": true, - "branch": "feature", - "linkedGitHubPR": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - }, - "7881ab1fb5d1": { - "name": "github.addIssueComment#1", - "ordinal": 18, - "json": "{\"id\":\"frame-9\",\"deviceToken\":\"recording-device\",\"method\":\"github.addIssueComment\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"body\":\"recorded comment\",\"type\":\"pr\"}}" - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "861c8796ae1f": { - "name": "github.prChecks#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed" - } - ] - } - } - }, - "870c2b9bacd0": { - "name": "status.get#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "8b7e690466d7": { - "name": "status.get#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-7", - "ok": true, - "result": { - "runtimeId": "recorded" - } - } - } - }, - "8f35f3a8538e": { - "name": "github.prComments#1", - "ordinal": 20, - "json": "{\"id\":\"frame-10\",\"deviceToken\":\"recording-device\",\"method\":\"github.prComments\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"noCache\":true,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"}}}" - }, - "9091d133c3b0": { - "name": "reply-salvage", - "ordinal": 8, - "value": { - "droppedCount": 1, - "droppedPaths": ["linkedPR"], - "method": "worktree.show", - "operation": "worktree.summary-or-skip", - "variant": "worktree-summary" - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "9be162e088f2": { - "name": "streams-registered-at-teardown", - "ordinal": 21, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "a55c83eeaeea": { - "name": "github.prForBranch#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "acceptMergedFallbackPR": true, - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - } - }, - "a7e609fcb031": { - "name": "github.prChecks#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "bfedf583a747": { - "name": "github.workItemDetails#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-8", - "ok": true, - "result": { - "body": "body", - "comments": [ - { - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "id": 55, - "isResolved": false, - "line": 3, - "path": "src/app.ts", - "threadId": "thread-1", - "url": "https://github.com/owner/repo/pull/12#discussion_r55" - } - ], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "id": "PR_1", - "labels": [], - "number": 12, - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - } - }, - "d39b1bf1038a": { - "commentError": { - "$rpc": "null" - }, - "pr": { - "checks": ["build:success"], - "checksError": { - "$rpc": "null" - }, - "comments": [ - { - "body": "please fix", - "id": 55, - "resolved": false - }, - { - "body": "recorded comment", - "id": 57, - "resolved": false - } - ], - "kind": "ready", - "pr": { - "headSha": "head-sha-1", - "number": 12, - "title": "Recorded" - }, - "refreshFailed": false - } - }, - "e0a11d8a1005": { - "commentError": { - "$rpc": "null" - }, - "pr": { - "checks": ["build:success"], - "checksError": { - "$rpc": "null" - }, - "comments": [ - { - "body": "please fix", - "id": 55, - "resolved": false - } - ], - "kind": "ready", - "pr": { - "headSha": "head-sha-1", - "number": 12, - "title": "Recorded" - }, - "refreshFailed": false - } - }, - "e10925fa98de": { - "name": "status.get#1", - "ordinal": 14, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "e40828b3dc78": { - "name": "github.prComments#1", - "ordinal": 19, - "args": [ - { - "name": "method", - "value": "github.prComments" - }, - { - "name": "params", - "value": { - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-10", - "ok": true, - "result": [ - { - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "id": 55, - "isResolved": false, - "line": 3, - "path": "src/app.ts", - "threadId": "thread-1", - "url": "https://github.com/owner/repo/pull/12#discussion_r55" - }, - { - "author": "me", - "body": "recorded comment", - "createdAt": "2026-01-01T00:01:00Z", - "id": 57, - "url": "https://github.com/owner/repo/pull/12#issuecomment-57" - } - ] - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "pr-comment-posted-in-place", - "checkpoints": [ - { - "id": "branch-hint", - "observation": { - "sender": ["1287167eaf56", "4da7ea39401b", "75885386f005", "2dc2ca47b4e7"], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "35045fa5a752", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "pr", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "a7e609fcb031", - "870c2b9bacd0" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "35045fa5a752", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "loaded", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "861c8796ae1f", - "8b7e690466d7", - "bfedf583a747" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "e0a11d8a1005", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "comment-sent", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "861c8796ae1f", - "8b7e690466d7", - "bfedf583a747", - "3b2df6b54829", - "1e1163c70eba" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7", - "7881ab1fb5d1", - "8f35f3a8538e" - ], - "settlements": { - "mount": "eb79a9b3682a", - "post-comment": "9270aeb7d9c6" - }, - "state": "e0a11d8a1005", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "comment-shown", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "861c8796ae1f", - "8b7e690466d7", - "bfedf583a747", - "3b2df6b54829", - "e40828b3dc78" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7", - "7881ab1fb5d1", - "8f35f3a8538e" - ], - "settlements": { - "mount": "eb79a9b3682a", - "post-comment": "84e5ca07cb7a" - }, - "state": "d39b1bf1038a", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "cleanup", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "861c8796ae1f", - "8b7e690466d7", - "bfedf583a747", - "3b2df6b54829", - "e40828b3dc78" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7", - "7881ab1fb5d1", - "8f35f3a8538e" - ], - "settlements": { - "mount": "eb79a9b3682a", - "post-comment": "84e5ca07cb7a" - }, - "state": "d39b1bf1038a", - "effects": ["9091d133c3b0", "9be162e088f2"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-comment-resolve-unconfirmed.json b/mobile/rpc-foundation/goldens/pr-comment-resolve-unconfirmed.json deleted file mode 100644 index 838a2347ca0..00000000000 --- a/mobile/rpc-foundation/goldens/pr-comment-resolve-unconfirmed.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-mutations", - "family": "github.pr-comment-mutation", - "namedDeltas": [], - "values": { - "0e0226959068": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "The host sent a reply this app could not read (github.resolveReviewThread)", - "ok": false - } - }, - "1165af07b50f": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Failed to update review thread.", - "ok": false - } - }, - "2b8d60101912": { - "name": "github.resolveReviewThread#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.resolveReviewThread\",\"params\":{\"repo\":\"id:repo-9\",\"threadId\":\"thread-1\",\"resolve\":true}}" - }, - "38f037a31b80": { - "name": "github.resolveReviewThread#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.resolveReviewThread" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9", - "resolve": true, - "threadId": "thread-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true - } - } - }, - "483de03b566e": { - "name": "github.resolveReviewThread#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.resolveReviewThread\",\"params\":{\"repo\":\"id:repo-9\",\"threadId\":\"thread-1\",\"resolve\":true}}" - }, - "5603f79b1c06": { - "resolve-thread": { - "error": "Failed to update review thread.", - "ok": false - } - }, - "699651595413": { - "resolve-thread": { - "error": "The host sent a reply this app could not read (github.resolveReviewThread)", - "ok": false - } - }, - "8b60835c8142": { - "name": "github.resolveReviewThread#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.resolveReviewThread" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9", - "resolve": true, - "threadId": "thread-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": false - } - } - } - }, - "recording": { - "scenario": "pr-comment-resolve-unconfirmed", - "checkpoints": [ - { - "id": "explicit-false", - "observation": { - "sender": ["8b60835c8142"], - "payloads": ["2b8d60101912"], - "settlements": { - "explicit-false": "1165af07b50f" - }, - "state": "5603f79b1c06", - "effects": [] - } - }, - { - "id": "absent-result", - "observation": { - "sender": ["8b60835c8142", "38f037a31b80"], - "payloads": ["2b8d60101912", "483de03b566e"], - "settlements": { - "explicit-false": "1165af07b50f", - "absent-result": "0e0226959068" - }, - "state": "699651595413", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-line-comment-and-file-viewed.json b/mobile/rpc-foundation/goldens/pr-line-comment-and-file-viewed.json deleted file mode 100644 index 628fa51a1d0..00000000000 --- a/mobile/rpc-foundation/goldens/pr-line-comment-and-file-viewed.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-mutations", - "family": "github.pr-comment-mutation", - "namedDeltas": [], - "values": { - "00e36cc2e1a3": { - "file-viewed": { - "ok": true - }, - "line-comment": { - "ok": true - } - }, - "0632a06c33cb": { - "name": "github.addPRReviewComment#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.addPRReviewComment\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"commitId\":\"head-sha-1\",\"path\":\"src/app.ts\",\"line\":5,\"body\":\"recorded line comment\",\"startLine\":3}}" - }, - "1da2b9026f18": { - "name": "github.setPRFileViewed#2", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.setPRFileViewed" - }, - { - "name": "params", - "value": { - "path": "src/app.ts", - "pullRequestId": "PR_kwDO", - "repo": "id:repo-9", - "viewed": true - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": false - } - } - }, - "29a4002b51d7": { - "file-viewed": { - "error": "Failed to update viewed state.", - "ok": false - }, - "line-comment": { - "ok": true - } - }, - "5af21c5f4fe0": { - "name": "github.setPRFileViewed#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.setPRFileViewed" - }, - { - "name": "params", - "value": { - "path": "src/app.ts", - "pullRequestId": "PR_kwDO", - "repo": "id:repo-9", - "viewed": true - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": true - } - } - }, - "65a217bed712": { - "line-comment": { - "ok": true - } - }, - "94ed6c684a96": { - "name": "github.setPRFileViewed#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.setPRFileViewed\",\"params\":{\"repo\":\"id:repo-9\",\"pullRequestId\":\"PR_kwDO\",\"path\":\"src/app.ts\",\"viewed\":true}}" - }, - "afe0045df4a7": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Failed to update viewed state.", - "ok": false - } - }, - "c655a2fc8c3a": { - "name": "github.addPRReviewComment#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.addPRReviewComment" - }, - { - "name": "params", - "value": { - "body": "recorded line comment", - "commitId": "head-sha-1", - "line": 5, - "path": "src/app.ts", - "prNumber": 12, - "repo": "id:repo-9", - "startLine": 3 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "comment": { - "id": 57 - }, - "ok": true - } - } - } - }, - "de607d31ed8c": { - "name": "github.setPRFileViewed#2", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.setPRFileViewed\",\"params\":{\"repo\":\"id:repo-9\",\"pullRequestId\":\"PR_kwDO\",\"path\":\"src/app.ts\",\"viewed\":true}}" - }, - "fbc958e4d46e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true - } - } - }, - "recording": { - "scenario": "pr-line-comment-and-file-viewed", - "checkpoints": [ - { - "id": "line-comment", - "observation": { - "sender": ["c655a2fc8c3a"], - "payloads": ["0632a06c33cb"], - "settlements": { - "line-comment": "fbc958e4d46e" - }, - "state": "65a217bed712", - "effects": [] - } - }, - { - "id": "viewed", - "observation": { - "sender": ["c655a2fc8c3a", "5af21c5f4fe0"], - "payloads": ["0632a06c33cb", "94ed6c684a96"], - "settlements": { - "line-comment": "fbc958e4d46e", - "viewed": "fbc958e4d46e" - }, - "state": "00e36cc2e1a3", - "effects": [] - } - }, - { - "id": "refused", - "observation": { - "sender": ["c655a2fc8c3a", "5af21c5f4fe0", "1da2b9026f18"], - "payloads": ["0632a06c33cb", "94ed6c684a96", "de607d31ed8c"], - "settlements": { - "line-comment": "fbc958e4d46e", - "viewed": "fbc958e4d46e", - "refused": "afe0045df4a7" - }, - "state": "29a4002b51d7", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-mutation-in-band-failure.json b/mobile/rpc-foundation/goldens/pr-mutation-in-band-failure.json deleted file mode 100644 index aa03c1179ca..00000000000 --- a/mobile/rpc-foundation/goldens/pr-mutation-in-band-failure.json +++ /dev/null @@ -1,320 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-mutations", - "family": "github.pr-mutation", - "namedDeltas": [], - "values": { - "0724cf7c0f6d": { - "name": "github.updatePRState#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.updatePRState" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9", - "updates": { - "state": "closed" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "error": { - "message": "Branch is protected" - }, - "ok": false - } - } - } - }, - "18863a025ec7": { - "auto-merge": { - "ok": true - }, - "close": { - "error": "Branch is protected", - "ok": false - }, - "merge": { - "error": "Pull request is not mergeable", - "ok": false - }, - "rerun-checks": { - "error": "Request failed: github.rerunPRChecks", - "ok": false - } - }, - "1dbd11ea2634": { - "merge": { - "error": "Pull request is not mergeable", - "ok": false - } - }, - "323e40d512cb": { - "name": "github.setPRAutoMerge#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.setPRAutoMerge" - }, - { - "name": "params", - "value": { - "enabled": true, - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": true - } - } - }, - "3cc9fca74bf6": { - "name": "github.rerunPRChecks#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.rerunPRChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"failedOnly\":true,\"headSha\":\"head-sha-1\"}}" - }, - "5b819e88a0c1": { - "close": { - "error": "Branch is protected", - "ok": false - }, - "merge": { - "error": "Pull request is not mergeable", - "ok": false - } - }, - "75b6d425bd33": { - "name": "github.setPRAutoMerge#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.setPRAutoMerge\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"enabled\":true}}" - }, - "7fe97d8036c2": { - "name": "github.mergePR#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.mergePR" - }, - { - "name": "params", - "value": { - "method": "squash", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "error": "Pull request is not mergeable", - "ok": false - } - } - } - }, - "8aaaf574bb6f": { - "auto-merge": { - "ok": true - }, - "close": { - "error": "Branch is protected", - "ok": false - }, - "merge": { - "error": "Pull request is not mergeable", - "ok": false - } - }, - "8be705a6533e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Request failed: github.rerunPRChecks", - "ok": false - } - }, - "beaae579e18a": { - "name": "github.updatePRState#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.updatePRState\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"updates\":{\"state\":\"closed\"}}}" - }, - "c6cd1f9aeefc": { - "name": "github.mergePR#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.mergePR\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"method\":\"squash\"}}" - }, - "e847c3eef6b5": { - "name": "github.rerunPRChecks#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.rerunPRChecks" - }, - { - "name": "params", - "value": { - "failedOnly": true, - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "error": { - "message": "" - }, - "ok": false - } - } - } - }, - "f2d0a4251252": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Branch is protected", - "ok": false - } - }, - "f8ef6dd619cb": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Pull request is not mergeable", - "ok": false - } - }, - "fbc958e4d46e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true - } - } - }, - "recording": { - "scenario": "pr-mutation-in-band-failure", - "checkpoints": [ - { - "id": "string-error", - "observation": { - "sender": ["7fe97d8036c2"], - "payloads": ["c6cd1f9aeefc"], - "settlements": { - "string-error": "f8ef6dd619cb" - }, - "state": "1dbd11ea2634", - "effects": [] - } - }, - { - "id": "object-error", - "observation": { - "sender": ["7fe97d8036c2", "0724cf7c0f6d"], - "payloads": ["c6cd1f9aeefc", "beaae579e18a"], - "settlements": { - "string-error": "f8ef6dd619cb", - "object-error": "f2d0a4251252" - }, - "state": "5b819e88a0c1", - "effects": [] - } - }, - { - "id": "unstructured", - "observation": { - "sender": ["7fe97d8036c2", "0724cf7c0f6d", "323e40d512cb"], - "payloads": ["c6cd1f9aeefc", "beaae579e18a", "75b6d425bd33"], - "settlements": { - "string-error": "f8ef6dd619cb", - "object-error": "f2d0a4251252", - "unstructured": "fbc958e4d46e" - }, - "state": "8aaaf574bb6f", - "effects": [] - } - }, - { - "id": "empty-object-error", - "observation": { - "sender": ["7fe97d8036c2", "0724cf7c0f6d", "323e40d512cb", "e847c3eef6b5"], - "payloads": ["c6cd1f9aeefc", "beaae579e18a", "75b6d425bd33", "3cc9fca74bf6"], - "settlements": { - "string-error": "f8ef6dd619cb", - "object-error": "f2d0a4251252", - "unstructured": "fbc958e4d46e", - "empty-object-error": "8be705a6533e" - }, - "state": "18863a025ec7", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-mutation-status.json b/mobile/rpc-foundation/goldens/pr-mutation-status.json deleted file mode 100644 index e6948b4e1dd..00000000000 --- a/mobile/rpc-foundation/goldens/pr-mutation-status.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-mutations", - "family": "github.pr-mutation", - "namedDeltas": [], - "values": { - "053eb7126f9a": { - "auto-merge": { - "ok": true - }, - "close": { - "ok": true - }, - "merge": { - "ok": true - } - }, - "0e14bd119328": { - "merge": { - "ok": true - } - }, - "217757a427ce": { - "auto-merge": { - "ok": true - }, - "merge": { - "ok": true - } - }, - "258eb619fcbb": { - "auto-merge": { - "ok": true - }, - "close": { - "ok": true - }, - "merge": { - "ok": true - }, - "request-reviewers": { - "ok": true - } - }, - "2b56dde57d4f": { - "name": "github.mergePR#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.mergePR" - }, - { - "name": "params", - "value": { - "method": "squash", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "3e98a51bf209": { - "name": "github.setPRAutoMerge#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.setPRAutoMerge" - }, - { - "name": "params", - "value": { - "enabled": true, - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "44136fa355b3": {}, - "5145e99589f6": { - "name": "github.requestPRReviewers#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"reviewers\":[\"octocat\"]}}" - }, - "5a3a15468816": { - "name": "github.removePRReviewers#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.removePRReviewers\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"reviewers\":[\"octocat\"]}}" - }, - "6e912bd10baa": { - "name": "github.updatePRState#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.updatePRState" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9", - "updates": { - "state": "closed" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "89a20acf05d3": { - "name": "github.updatePRState#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.updatePRState\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"updates\":{\"state\":\"closed\"}}}" - }, - "91638fa7c927": { - "name": "github.rerunPRChecks#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.rerunPRChecks" - }, - { - "name": "params", - "value": { - "failedOnly": true, - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "948fde384959": { - "name": "github.requestPRReviewers#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.requestPRReviewers" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9", - "reviewers": ["octocat"] - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "98a9268b04e2": { - "auto-merge": { - "ok": true - }, - "close": { - "ok": true - }, - "merge": { - "ok": true - }, - "remove-reviewers": { - "ok": true - }, - "request-reviewers": { - "ok": true - } - }, - "c6cd1f9aeefc": { - "name": "github.mergePR#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.mergePR\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"method\":\"squash\"}}" - }, - "d026cfa35ea0": { - "auto-merge": { - "ok": true - }, - "close": { - "ok": true - }, - "merge": { - "ok": true - }, - "remove-reviewers": { - "ok": true - }, - "request-reviewers": { - "ok": true - }, - "rerun-checks": { - "ok": true - } - }, - "e5820e16ca2c": { - "name": "github.rerunPRChecks#1", - "ordinal": 12, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.rerunPRChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"failedOnly\":true,\"headSha\":\"head-sha-1\"}}" - }, - "e70f88fb717a": { - "name": "github.setPRAutoMerge#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.setPRAutoMerge\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"enabled\":true}}" - }, - "fbc958e4d46e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true - } - }, - "ff463b2bc96b": { - "name": "github.removePRReviewers#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.removePRReviewers" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9", - "reviewers": ["octocat"] - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "ok": true - } - } - } - } - }, - "recording": { - "scenario": "pr-mutation-status", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": [], - "payloads": [], - "settlements": {}, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "merge", - "observation": { - "sender": ["2b56dde57d4f"], - "payloads": ["c6cd1f9aeefc"], - "settlements": { - "merge": "fbc958e4d46e" - }, - "state": "0e14bd119328", - "effects": [] - } - }, - { - "id": "auto-merge", - "observation": { - "sender": ["2b56dde57d4f", "3e98a51bf209"], - "payloads": ["c6cd1f9aeefc", "e70f88fb717a"], - "settlements": { - "merge": "fbc958e4d46e", - "auto-merge": "fbc958e4d46e" - }, - "state": "217757a427ce", - "effects": [] - } - }, - { - "id": "close", - "observation": { - "sender": ["2b56dde57d4f", "3e98a51bf209", "6e912bd10baa"], - "payloads": ["c6cd1f9aeefc", "e70f88fb717a", "89a20acf05d3"], - "settlements": { - "merge": "fbc958e4d46e", - "auto-merge": "fbc958e4d46e", - "close": "fbc958e4d46e" - }, - "state": "053eb7126f9a", - "effects": [] - } - }, - { - "id": "request-reviewers", - "observation": { - "sender": ["2b56dde57d4f", "3e98a51bf209", "6e912bd10baa", "948fde384959"], - "payloads": ["c6cd1f9aeefc", "e70f88fb717a", "89a20acf05d3", "5145e99589f6"], - "settlements": { - "merge": "fbc958e4d46e", - "auto-merge": "fbc958e4d46e", - "close": "fbc958e4d46e", - "request-reviewers": "fbc958e4d46e" - }, - "state": "258eb619fcbb", - "effects": [] - } - }, - { - "id": "remove-reviewers", - "observation": { - "sender": [ - "2b56dde57d4f", - "3e98a51bf209", - "6e912bd10baa", - "948fde384959", - "ff463b2bc96b" - ], - "payloads": [ - "c6cd1f9aeefc", - "e70f88fb717a", - "89a20acf05d3", - "5145e99589f6", - "5a3a15468816" - ], - "settlements": { - "merge": "fbc958e4d46e", - "auto-merge": "fbc958e4d46e", - "close": "fbc958e4d46e", - "request-reviewers": "fbc958e4d46e", - "remove-reviewers": "fbc958e4d46e" - }, - "state": "98a9268b04e2", - "effects": [] - } - }, - { - "id": "rerun-checks", - "observation": { - "sender": [ - "2b56dde57d4f", - "3e98a51bf209", - "6e912bd10baa", - "948fde384959", - "ff463b2bc96b", - "91638fa7c927" - ], - "payloads": [ - "c6cd1f9aeefc", - "e70f88fb717a", - "89a20acf05d3", - "5145e99589f6", - "5a3a15468816", - "e5820e16ca2c" - ], - "settlements": { - "merge": "fbc958e4d46e", - "auto-merge": "fbc958e4d46e", - "close": "fbc958e4d46e", - "request-reviewers": "fbc958e4d46e", - "remove-reviewers": "fbc958e4d46e", - "rerun-checks": "fbc958e4d46e" - }, - "state": "d026cfa35ea0", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-read-fork-routing.json b/mobile/rpc-foundation/goldens/pr-read-fork-routing.json deleted file mode 100644 index 49ddb40ee0d..00000000000 --- a/mobile/rpc-foundation/goldens/pr-read-fork-routing.json +++ /dev/null @@ -1,337 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-reads", - "family": "github.pr-read", - "namedDeltas": [], - "values": { - "08e5cc0c504e": { - "name": "github.prChecks#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"prRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"},\"headSha\":\"head-sha-1\"}}" - }, - "1c88fe396b45": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - } - }, - "3d3e04f5c1cb": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "observedHeadSha": { - "$rpc": "undefined" - }, - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, - "88a456608739": { - "name": "github.prChecks#2", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed" - } - ] - } - } - }, - "997e2aac6183": { - "name": "github.prCheckDetails#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.prCheckDetails" - }, - { - "name": "params", - "value": { - "checkName": "build", - "checkRunId": 7, - "prRepo": { - "host": "github.enterprise.test", - "owner": "fork-owner", - "repo": "fork-repo" - }, - "repo": "id:repo-9", - "url": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "annotations": [], - "conclusion": "success", - "jobs": [], - "name": "build", - "status": "completed" - } - } - } - }, - "9ad46f0a24c7": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "observedHeadSha": { - "$rpc": "undefined" - }, - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, - "c0db062cb341": { - "name": "github.prChecks#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "prRepo": { - "host": "github.enterprise.test", - "owner": "fork-owner", - "repo": "fork-repo" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed" - } - ] - } - } - }, - "d982d58879cb": { - "name": "github.prCheckDetails#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null,\"prRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"}}}" - }, - "dd2205e9f2fb": { - "name": "github.prChecks#2", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12}}" - }, - "ff556464fa8e": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "observedHeadSha": { - "$rpc": "undefined" - }, - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - } - }, - "recording": { - "scenario": "pr-read-fork-routing", - "checkpoints": [ - { - "id": "fork-checks", - "observation": { - "sender": ["c0db062cb341"], - "payloads": ["08e5cc0c504e"], - "settlements": { - "fork-checks": "3d3e04f5c1cb" - }, - "state": "9ad46f0a24c7", - "effects": [] - } - }, - { - "id": "fork-check-details", - "observation": { - "sender": ["c0db062cb341", "997e2aac6183"], - "payloads": ["08e5cc0c504e", "d982d58879cb"], - "settlements": { - "fork-checks": "3d3e04f5c1cb", - "fork-check-details": "1c88fe396b45" - }, - "state": "ff556464fa8e", - "effects": [] - } - }, - { - "id": "no-head-sha", - "observation": { - "sender": ["c0db062cb341", "997e2aac6183", "88a456608739"], - "payloads": ["08e5cc0c504e", "d982d58879cb", "dd2205e9f2fb"], - "settlements": { - "fork-checks": "3d3e04f5c1cb", - "fork-check-details": "1c88fe396b45", - "no-head-sha": "3d3e04f5c1cb" - }, - "state": "ff556464fa8e", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-read-surface.json b/mobile/rpc-foundation/goldens/pr-read-surface.json deleted file mode 100644 index c0b3ed424c7..00000000000 --- a/mobile/rpc-foundation/goldens/pr-read-surface.json +++ /dev/null @@ -1,1716 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-reads", - "family": "github.pr-read", - "namedDeltas": [], - "values": { - "026ad16c841b": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "observedHeadSha": { - "$rpc": "undefined" - }, - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "0644012ff2a3": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - } - }, - "0a9f2ff19df4": { - "name": "github.workItemDetails#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemDetails\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"type\":\"pr\"}}" - }, - "0c83b4de61f4": { - "name": "reply-salvage", - "ordinal": 17, - "value": { - "droppedCount": 1, - "droppedPaths": ["0.avatarUrl"], - "method": "github.listAssignableUsers", - "operation": "github.pr-assignable-users", - "variant": "pr-assignable-users" - } - }, - "1554c8f6753b": { - "name": "github.prForBranch#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, - "191e3c96ad53": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - } - }, - "1c88fe396b45": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - } - }, - "1f5765918736": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" - }, - "2709bde96386": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "observedHeadSha": { - "$rpc": "undefined" - }, - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "3d3e04f5c1cb": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "observedHeadSha": { - "$rpc": "undefined" - }, - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, - "41113a109089": { - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "44136fa355b3": {}, - "471a75cee137": { - "name": "github.workItemDetails#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "body": "body", - "headSha": "head-sha-1", - "item": { - "assignees": [], - "id": "PR_1", - "labels": [], - "number": 12, - "state": "open", - "title": "Recorded", - "type": "pr" - } - } - } - } - }, - "4bf8f27dd319": { - "name": "hostedReview.forBranch#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "hostedReview.forBranch" - }, - { - "name": "params", - "value": { - "active": true, - "branch": "feature", - "linkedGitHubPR": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - } - } - }, - "52504eafec78": { - "name": "github.prChecks#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" - }, - "53bcb749e0ed": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "5b33c8cfd938": { - "name": "status.get#1", - "ordinal": 13, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-7", - "ok": true, - "result": { - "capabilities": ["github.exact-work-item-target.v1"], - "hostDescriptor": { - "installationId": "recorded" - }, - "runtimeId": "recorded" - } - } - } - }, - "6a3f611aad80": { - "name": "github.prCheckDetails#1", - "ordinal": 12, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" - }, - "9a87ba2ee54f": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "9bb9d9b8c502": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "observedHeadSha": { - "$rpc": "undefined" - }, - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "a20f0d944ba5": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, - "a3e588709bde": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "a93bcc7122e8": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - } - }, - "cdbefce64e00": { - "name": "hostedReview.forBranch#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":12,\"active\":true}}" - }, - "d01444e13d4c": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - } - }, - "d036e2bdda12": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "d89e7b8ce2a0": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "df34e36b0fb7": { - "name": "github.listAssignableUsers#1", - "ordinal": 16, - "json": "{\"expectedRuntimeSource\":{\"sourceId\":\"recorded\",\"runtimeId\":\"recorded\"},\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.listAssignableUsers\",\"params\":{\"repo\":\"id:repo-9\",\"ownerRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"}}}" - }, - "e10925fa98de": { - "name": "status.get#1", - "ordinal": 14, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "e97a125cdb88": { - "name": "github.prCheckDetails#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prCheckDetails" - }, - { - "name": "params", - "value": { - "checkName": "build", - "checkRunId": 7, - "repo": "id:repo-9", - "url": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "annotations": [], - "conclusion": "success", - "jobs": [], - "name": "build", - "status": "completed" - } - } - } - }, - "f79c91454bac": { - "name": "github.listAssignableUsers#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.listAssignableUsers" - }, - { - "name": "params", - "value": { - "ownerRepo": { - "host": "github.enterprise.test", - "owner": "fork-owner", - "repo": "fork-repo" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "envelope": { - "expectedRuntimeSource": { - "runtimeId": "recorded", - "sourceId": "recorded" - } - }, - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-8", - "ok": true, - "result": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": "Octo Cat" - } - ] - } - } - }, - "fa4bf991415d": { - "name": "github.prChecks#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed" - } - ] - } - } - } - }, - "recording": { - "scenario": "pr-read-surface", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": [], - "payloads": [], - "settlements": {}, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "repo-slug", - "observation": { - "sender": ["191e3c96ad53"], - "payloads": ["1f5765918736"], - "settlements": { - "repo-slug": "d89e7b8ce2a0" - }, - "state": "41113a109089", - "effects": [] - } - }, - { - "id": "hosted-review", - "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319"], - "payloads": ["1f5765918736", "cdbefce64e00"], - "settlements": { - "repo-slug": "d89e7b8ce2a0", - "hosted-review": "0644012ff2a3" - }, - "state": "9a87ba2ee54f", - "effects": [] - } - }, - { - "id": "pr-for-branch", - "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], - "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], - "settlements": { - "repo-slug": "d89e7b8ce2a0", - "hosted-review": "0644012ff2a3", - "pr-for-branch": "d01444e13d4c" - }, - "state": "53bcb749e0ed", - "effects": [] - } - }, - { - "id": "work-item", - "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], - "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], - "settlements": { - "repo-slug": "d89e7b8ce2a0", - "hosted-review": "0644012ff2a3", - "pr-for-branch": "d01444e13d4c", - "work-item": "d036e2bdda12" - }, - "state": "a3e588709bde", - "effects": [] - } - }, - { - "id": "checks", - "observation": { - "sender": [ - "191e3c96ad53", - "4bf8f27dd319", - "a20f0d944ba5", - "471a75cee137", - "fa4bf991415d" - ], - "payloads": [ - "1f5765918736", - "cdbefce64e00", - "1554c8f6753b", - "0a9f2ff19df4", - "52504eafec78" - ], - "settlements": { - "repo-slug": "d89e7b8ce2a0", - "hosted-review": "0644012ff2a3", - "pr-for-branch": "d01444e13d4c", - "work-item": "d036e2bdda12", - "checks": "3d3e04f5c1cb" - }, - "state": "026ad16c841b", - "effects": [] - } - }, - { - "id": "check-details", - "observation": { - "sender": [ - "191e3c96ad53", - "4bf8f27dd319", - "a20f0d944ba5", - "471a75cee137", - "fa4bf991415d", - "e97a125cdb88" - ], - "payloads": [ - "1f5765918736", - "cdbefce64e00", - "1554c8f6753b", - "0a9f2ff19df4", - "52504eafec78", - "6a3f611aad80" - ], - "settlements": { - "repo-slug": "d89e7b8ce2a0", - "hosted-review": "0644012ff2a3", - "pr-for-branch": "d01444e13d4c", - "work-item": "d036e2bdda12", - "checks": "3d3e04f5c1cb", - "check-details": "1c88fe396b45" - }, - "state": "2709bde96386", - "effects": [] - } - }, - { - "id": "assignable", - "observation": { - "sender": [ - "191e3c96ad53", - "4bf8f27dd319", - "a20f0d944ba5", - "471a75cee137", - "fa4bf991415d", - "e97a125cdb88", - "5b33c8cfd938", - "f79c91454bac" - ], - "payloads": [ - "1f5765918736", - "cdbefce64e00", - "1554c8f6753b", - "0a9f2ff19df4", - "52504eafec78", - "6a3f611aad80", - "e10925fa98de", - "df34e36b0fb7" - ], - "settlements": { - "repo-slug": "d89e7b8ce2a0", - "hosted-review": "0644012ff2a3", - "pr-for-branch": "d01444e13d4c", - "work-item": "d036e2bdda12", - "checks": "3d3e04f5c1cb", - "check-details": "1c88fe396b45", - "assignable": "a93bcc7122e8" - }, - "state": "9bb9d9b8c502", - "effects": ["0c83b4de61f4"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-read-upstream-error.json b/mobile/rpc-foundation/goldens/pr-read-upstream-error.json deleted file mode 100644 index 04645a816a7..00000000000 --- a/mobile/rpc-foundation/goldens/pr-read-upstream-error.json +++ /dev/null @@ -1,254 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-reads", - "family": "github.pr-read", - "namedDeltas": [], - "values": { - "0159703ebadf": { - "name": "github.prForBranch#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "state": "open" - } - } - } - } - }, - "04c85ffba34f": { - "pr-for-branch": { - "error": "The host sent a reply this app could not read (github.prForBranch)", - "ok": false - } - }, - "0a56183795de": { - "pr-for-branch": { - "ok": true, - "result": { - "$rpc": "null" - } - } - }, - "0bd591f1a6ca": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "The host sent a reply this app could not read (github.prForBranch)", - "ok": false - } - }, - "1a108e871484": { - "name": "github.prForBranch#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, - "213941c6e0b6": { - "name": "github.prForBranch#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, - "2df5868d46c4": { - "name": "github.prForBranch#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "upstream-error", - "message": "GitHub API rate limit exceeded" - } - } - } - }, - "331d7e1af815": { - "pr-for-branch": { - "error": "GitHub API rate limit exceeded", - "ok": false - } - }, - "6ecd2f6475ab": { - "name": "github.prForBranch#3", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "$rpc": "null" - } - } - } - }, - "7c6cc446e5da": { - "name": "github.prForBranch#3", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, - "8a5cb8b66303": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "$rpc": "null" - } - } - }, - "fe9c1046b91d": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "GitHub API rate limit exceeded", - "ok": false - } - } - }, - "recording": { - "scenario": "pr-read-upstream-error", - "checkpoints": [ - { - "id": "upstream", - "observation": { - "sender": ["2df5868d46c4"], - "payloads": ["1a108e871484"], - "settlements": { - "upstream": "fe9c1046b91d" - }, - "state": "331d7e1af815", - "effects": [] - } - }, - { - "id": "malformed", - "observation": { - "sender": ["2df5868d46c4", "0159703ebadf"], - "payloads": ["1a108e871484", "213941c6e0b6"], - "settlements": { - "upstream": "fe9c1046b91d", - "malformed": "0bd591f1a6ca" - }, - "state": "04c85ffba34f", - "effects": [] - } - }, - { - "id": "no-pr", - "observation": { - "sender": ["2df5868d46c4", "0159703ebadf", "6ecd2f6475ab"], - "payloads": ["1a108e871484", "213941c6e0b6", "7c6cc446e5da"], - "settlements": { - "upstream": "fe9c1046b91d", - "malformed": "0bd591f1a6ca", - "no-pr": "8a5cb8b66303" - }, - "state": "0a56183795de", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json b/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json deleted file mode 100644 index e1266f43f0b..00000000000 --- a/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json +++ /dev/null @@ -1,616 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-sidebar", - "family": "session.pr-sidebar", - "namedDeltas": [], - "values": { - "0730389db3e9": { - "name": "hostedReview.forBranch#1", - "ordinal": 7, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":null,\"active\":true}}" - }, - "0d9f7988ff86": { - "name": "github.prChecks#1", - "ordinal": 13, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" - }, - "1287167eaf56": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - } - }, - "1f5765918736": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" - }, - "2dc2ca47b4e7": { - "name": "github.prForBranch#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "acceptMergedFallbackPR": true, - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "341c71d5f61d": { - "commentError": { - "$rpc": "null" - }, - "pr": { - "checks": [], - "checksError": "The host sent a reply this app could not read (github.prChecks)", - "comments": [ - { - "body": "please fix", - "id": 55, - "resolved": false - } - ], - "kind": "ready", - "pr": { - "headSha": "head-sha-1", - "number": 12, - "title": "Recorded" - }, - "refreshFailed": false - } - }, - "35045fa5a752": { - "commentError": { - "$rpc": "null" - }, - "pr": { - "kind": "loading" - } - }, - "357f9b7862e3": { - "name": "worktree.show#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "3a8e6b13f380": { - "name": "github.prForBranch#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":12,\"acceptMergedFallbackPR\":true,\"currentHeadOid\":null}}" - }, - "3ecc2d44a209": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "4da7ea39401b": { - "name": "worktree.show#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "worktree": { - "linkedPR": { - "$rpc": "null" - } - } - } - } - } - }, - "5d309fcf43a7": { - "name": "github.workItemDetails#1", - "ordinal": 16, - "json": "{\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemDetails\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"type\":\"pr\"}}" - }, - "75885386f005": { - "name": "hostedReview.forBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "hostedReview.forBranch" - }, - { - "name": "params", - "value": { - "active": true, - "branch": "feature", - "linkedGitHubPR": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - }, - "870c2b9bacd0": { - "name": "status.get#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "8b7e690466d7": { - "name": "status.get#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-7", - "ok": true, - "result": { - "runtimeId": "recorded" - } - } - } - }, - "9091d133c3b0": { - "name": "reply-salvage", - "ordinal": 8, - "value": { - "droppedCount": 1, - "droppedPaths": ["linkedPR"], - "method": "worktree.show", - "operation": "worktree.summary-or-skip", - "variant": "worktree-summary" - } - }, - "98eb9b836539": { - "name": "github.prChecks#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "checks": [] - } - } - } - }, - "a55c83eeaeea": { - "name": "github.prForBranch#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "acceptMergedFallbackPR": true, - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - } - }, - "a7e609fcb031": { - "name": "github.prChecks#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "bfedf583a747": { - "name": "github.workItemDetails#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-8", - "ok": true, - "result": { - "body": "body", - "comments": [ - { - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "id": 55, - "isResolved": false, - "line": 3, - "path": "src/app.ts", - "threadId": "thread-1", - "url": "https://github.com/owner/repo/pull/12#discussion_r55" - } - ], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "id": "PR_1", - "labels": [], - "number": 12, - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - } - }, - "c70e6fd19823": { - "name": "streams-registered-at-teardown", - "ordinal": 17, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "e10925fa98de": { - "name": "status.get#1", - "ordinal": 14, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "pr-sidebar-checks-refused", - "checkpoints": [ - { - "id": "branch-hint", - "observation": { - "sender": ["1287167eaf56", "4da7ea39401b", "75885386f005", "2dc2ca47b4e7"], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "35045fa5a752", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "pr", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "a7e609fcb031", - "870c2b9bacd0" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "35045fa5a752", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "checks-refused", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "98eb9b836539", - "8b7e690466d7", - "bfedf583a747" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "341c71d5f61d", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "cleanup", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "98eb9b836539", - "8b7e690466d7", - "bfedf583a747" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "341c71d5f61d", - "effects": ["9091d133c3b0", "c70e6fd19823"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-sidebar-load.json b/mobile/rpc-foundation/goldens/pr-sidebar-load.json deleted file mode 100644 index 66f4cd67b65..00000000000 --- a/mobile/rpc-foundation/goldens/pr-sidebar-load.json +++ /dev/null @@ -1,623 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-sidebar", - "family": "session.pr-sidebar", - "namedDeltas": [], - "values": { - "0730389db3e9": { - "name": "hostedReview.forBranch#1", - "ordinal": 7, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":null,\"active\":true}}" - }, - "0d9f7988ff86": { - "name": "github.prChecks#1", - "ordinal": 13, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" - }, - "1287167eaf56": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - } - }, - "1f5765918736": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" - }, - "2dc2ca47b4e7": { - "name": "github.prForBranch#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "acceptMergedFallbackPR": true, - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "35045fa5a752": { - "commentError": { - "$rpc": "null" - }, - "pr": { - "kind": "loading" - } - }, - "357f9b7862e3": { - "name": "worktree.show#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "3a8e6b13f380": { - "name": "github.prForBranch#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":12,\"acceptMergedFallbackPR\":true,\"currentHeadOid\":null}}" - }, - "3ecc2d44a209": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "4da7ea39401b": { - "name": "worktree.show#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "worktree": { - "linkedPR": { - "$rpc": "null" - } - } - } - } - } - }, - "5d309fcf43a7": { - "name": "github.workItemDetails#1", - "ordinal": 16, - "json": "{\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemDetails\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"type\":\"pr\"}}" - }, - "75885386f005": { - "name": "hostedReview.forBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "hostedReview.forBranch" - }, - { - "name": "params", - "value": { - "active": true, - "branch": "feature", - "linkedGitHubPR": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - }, - "861c8796ae1f": { - "name": "github.prChecks#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed" - } - ] - } - } - }, - "870c2b9bacd0": { - "name": "status.get#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "8b7e690466d7": { - "name": "status.get#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-7", - "ok": true, - "result": { - "runtimeId": "recorded" - } - } - } - }, - "9091d133c3b0": { - "name": "reply-salvage", - "ordinal": 8, - "value": { - "droppedCount": 1, - "droppedPaths": ["linkedPR"], - "method": "worktree.show", - "operation": "worktree.summary-or-skip", - "variant": "worktree-summary" - } - }, - "a55c83eeaeea": { - "name": "github.prForBranch#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "acceptMergedFallbackPR": true, - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - } - }, - "a7e609fcb031": { - "name": "github.prChecks#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "bfedf583a747": { - "name": "github.workItemDetails#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-8", - "ok": true, - "result": { - "body": "body", - "comments": [ - { - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "id": 55, - "isResolved": false, - "line": 3, - "path": "src/app.ts", - "threadId": "thread-1", - "url": "https://github.com/owner/repo/pull/12#discussion_r55" - } - ], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "id": "PR_1", - "labels": [], - "number": 12, - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - } - } - } - } - }, - "c70e6fd19823": { - "name": "streams-registered-at-teardown", - "ordinal": 17, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "e0a11d8a1005": { - "commentError": { - "$rpc": "null" - }, - "pr": { - "checks": ["build:success"], - "checksError": { - "$rpc": "null" - }, - "comments": [ - { - "body": "please fix", - "id": 55, - "resolved": false - } - ], - "kind": "ready", - "pr": { - "headSha": "head-sha-1", - "number": 12, - "title": "Recorded" - }, - "refreshFailed": false - } - }, - "e10925fa98de": { - "name": "status.get#1", - "ordinal": 14, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "pr-sidebar-load", - "checkpoints": [ - { - "id": "branch-hint", - "observation": { - "sender": ["1287167eaf56", "4da7ea39401b", "75885386f005", "2dc2ca47b4e7"], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "35045fa5a752", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "pr", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "a7e609fcb031", - "870c2b9bacd0" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "35045fa5a752", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "loaded", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "861c8796ae1f", - "8b7e690466d7", - "bfedf583a747" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "e0a11d8a1005", - "effects": ["9091d133c3b0"] - } - }, - { - "id": "cleanup", - "observation": { - "sender": [ - "1287167eaf56", - "4da7ea39401b", - "75885386f005", - "a55c83eeaeea", - "861c8796ae1f", - "8b7e690466d7", - "bfedf583a747" - ], - "payloads": [ - "1f5765918736", - "3ecc2d44a209", - "357f9b7862e3", - "0730389db3e9", - "3a8e6b13f380", - "0d9f7988ff86", - "e10925fa98de", - "5d309fcf43a7" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "e0a11d8a1005", - "effects": ["9091d133c3b0", "c70e6fd19823"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-title-mutation.json b/mobile/rpc-foundation/goldens/pr-title-mutation.json deleted file mode 100644 index 6362d519aa0..00000000000 --- a/mobile/rpc-foundation/goldens/pr-title-mutation.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-mutations", - "family": "github.pr-title-mutation", - "namedDeltas": [], - "values": { - "55b590476b96": { - "name": "github.updatePRTitle#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.updatePRTitle\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"title\":\"Recorded title\"}}" - }, - "578bc8950993": { - "title": { - "ok": true - } - }, - "a53dd29bf747": { - "name": "github.updatePRTitle#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.updatePRTitle" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9", - "title": "Recorded title" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": true - } - } - }, - "fbc958e4d46e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true - } - } - }, - "recording": { - "scenario": "pr-title-mutation", - "checkpoints": [ - { - "id": "title", - "observation": { - "sender": ["a53dd29bf747"], - "payloads": ["55b590476b96"], - "settlements": { - "title": "fbc958e4d46e" - }, - "state": "578bc8950993", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-title-unconfirmed.json b/mobile/rpc-foundation/goldens/pr-title-unconfirmed.json deleted file mode 100644 index 4a655d48dbe..00000000000 --- a/mobile/rpc-foundation/goldens/pr-title-unconfirmed.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-mutations", - "family": "github.pr-title-mutation", - "namedDeltas": [], - "values": { - "0400bbb4177c": { - "title": { - "error": "Request failed: github.updatePRTitle", - "ok": false - } - }, - "2b545b6c1aca": { - "name": "github.updatePRTitle#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.updatePRTitle\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"title\":\"Recorded title\"}}" - }, - "2b6d48d3739e": { - "name": "github.updatePRTitle#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.updatePRTitle" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9", - "title": "Recorded title" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "" - }, - "id": "frame-2", - "ok": false - } - } - }, - "55b590476b96": { - "name": "github.updatePRTitle#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.updatePRTitle\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"title\":\"Recorded title\"}}" - }, - "5ff779cd8c84": { - "title": { - "error": "Failed to update title.", - "ok": false - } - }, - "6e9fb05124f5": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Failed to update title.", - "ok": false - } - }, - "73a201bf0d92": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Request failed: github.updatePRTitle", - "ok": false - } - }, - "c62a75c4c092": { - "name": "github.updatePRTitle#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.updatePRTitle" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "repo": "id:repo-9", - "title": "Recorded title" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": false - } - } - } - }, - "recording": { - "scenario": "pr-title-unconfirmed", - "checkpoints": [ - { - "id": "explicit-false", - "observation": { - "sender": ["c62a75c4c092"], - "payloads": ["55b590476b96"], - "settlements": { - "explicit-false": "6e9fb05124f5" - }, - "state": "5ff779cd8c84", - "effects": [] - } - }, - { - "id": "refused", - "observation": { - "sender": ["c62a75c4c092", "2b6d48d3739e"], - "payloads": ["55b590476b96", "2b545b6c1aca"], - "settlements": { - "explicit-false": "6e9fb05124f5", - "refused": "73a201bf0d92" - }, - "state": "0400bbb4177c", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/pr-triage-launch.json b/mobile/rpc-foundation/goldens/pr-triage-launch.json deleted file mode 100644 index 0be5ea15b10..00000000000 --- a/mobile/rpc-foundation/goldens/pr-triage-launch.json +++ /dev/null @@ -1,300 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.pr-triage-launch", - "family": "session.pr-triage", - "namedDeltas": [], - "values": { - "02188f091419": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [] - } - } - } - } - }, - "1c2564f1daca": { - "name": "settings.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "28339abecf78": { - "name": "agent.launchReplay#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"agent.launchReplay\",\"params\":{\"agent\":\"codex\",\"operationId\":\"1767225600000-00000000000040008000000000000001\",\"target\":{\"kind\":\"existing\",\"worktree\":\"id:repo-9::/w\"},\"prompt\":{\"text\":\"Fix the failing checks\",\"delivery\":\"submit\"},\"launchSource\":\"task_page\"}}" - }, - "35f85fe3b71c": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "3e6a0417d2ee": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9" - } - ] - } - } - } - }, - "51d4cb56be85": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "742db574bda3": { - "name": "preflight.detectAgents#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\",\"params\":{\"worktreeId\":\"repo-9::/w\"}}" - }, - "8ea2eb0159dd": { - "launched": { - "kind": "sent", - "opens": { - "paneKey": { - "$rpc": "null" - }, - "worktreeId": "repo-9::/w" - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "a4273b38df83": { - "launched": "unlaunched" - }, - "ba3fac1eb199": { - "name": "agent.launchReplay#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "agent.launchReplay" - }, - { - "name": "params", - "value": { - "agent": "codex", - "launchSource": "task_page", - "operationId": "1767225600000-00000000000040008000000000000001", - "prompt": { - "delivery": "submit", - "text": "Fix the failing checks" - }, - "target": { - "kind": "existing", - "worktree": "id:repo-9::/w" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 90000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "outcome": { - "handle": "term-1", - "kind": "terminal" - }, - "prompt": { - "delivery": "submit", - "outcome": "handed-to-terminal" - }, - "receipt": { - "detail": "Started a terminal agent, the default for new agent tabs in your settings.", - "mode": "terminal", - "preferred": "terminal", - "reason": "user_default" - }, - "worktreeId": "repo-9::/w" - } - } - } - }, - "e0eef7c9fafe": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "e5392ac00e18": { - "name": "preflight.detectAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectAgents" - }, - { - "name": "params", - "value": { - "worktreeId": "repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": ["codex"] - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "pr-triage-launch", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": ["35f85fe3b71c", "51d4cb56be85"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca"], - "settlements": { - "launch": "9270aeb7d9c6" - }, - "state": "a4273b38df83", - "effects": [] - } - }, - { - "id": "launched", - "observation": { - "sender": ["3e6a0417d2ee", "02188f091419", "e5392ac00e18", "ba3fac1eb199"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "742db574bda3", "28339abecf78"], - "settlements": { - "launch": "eb79a9b3682a" - }, - "state": "8ea2eb0159dd", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/quick-commands-load-refused.json b/mobile/rpc-foundation/goldens/quick-commands-load-refused.json deleted file mode 100644 index b37cb742fa8..00000000000 --- a/mobile/rpc-foundation/goldens/quick-commands-load-refused.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.quick-commands", - "family": "settings.quick-commands", - "namedDeltas": [], - "values": { - "3a752c2955e2": { - "name": "settings.getTerminalQuickCommands#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.getTerminalQuickCommands\"}" - }, - "990fb5428d1f": { - "commands": [], - "error": "Unknown method", - "loading": false, - "persisted": [], - "ready": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f7798a9d2071": { - "name": "settings.getTerminalQuickCommands#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.getTerminalQuickCommands" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-1", - "ok": false - } - } - } - }, - "recording": { - "scenario": "quick-commands-load-refused", - "checkpoints": [ - { - "id": "errored", - "observation": { - "sender": ["f7798a9d2071"], - "payloads": ["3a752c2955e2"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "990fb5428d1f", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/relay-direct-upgrade-commits.json b/mobile/rpc-foundation/goldens/relay-direct-upgrade-commits.json deleted file mode 100644 index ed4dbd617e4..00000000000 --- a/mobile/rpc-foundation/goldens/relay-direct-upgrade-commits.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "relay.direct-upgrade", - "family": "relay.direct-upgrade", - "namedDeltas": [], - "values": { - "10098087f961": { - "name": "pairing.getEndpoints#2", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.getEndpoints\",\"params\":{\"installReqId\":\"install-fixture-1\"}}" - }, - "161baaed4df3": { - "name": "host-saved", - "ordinal": 8, - "value": "host-1" - }, - "232ca274f695": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "bundle": { - "current": { - "expiresAt": 1767830400000, - "hash": "7ehR_WuQWkxwOFJdkHfI5jEg4DeVYWImtDuip60LHK4", - "token": "pending00000000000000000000000000000000001x", - "version": 4 - }, - "deviceToken": "device-token-1", - "hostId": "host-1", - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - } - } - }, - "240d8ec7e573": { - "name": "pairing.getEndpoints#2", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "pairing.getEndpoints" - }, - { - "name": "params", - "value": { - "installReqId": "install-fixture-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "installStatus": { - "reqId": "install-fixture-1", - "result": { - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "reqId": "install-fixture-1", - "resumeExpiresAt": 1767830400000, - "v": 1 - }, - "state": "committed", - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - }, - "v": 1 - } - } - } - }, - "2fce658b56a1": { - "name": "pairing.provisionRelay#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "pairing.provisionRelay" - }, - { - "name": "params", - "value": { - "newResumeTokenHash": "7ehR_WuQWkxwOFJdkHfI5jEg4DeVYWImtDuip60LHK4", - "reqId": "install-fixture-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "reqId": "install-fixture-1", - "resumeExpiresAt": 1767830400000, - "v": 1 - } - } - } - }, - "691df8767d71": { - "name": "journal-cleared", - "ordinal": 9, - "value": "upgrade" - }, - "6e14239ef339": { - "name": "pairing.getEndpoints#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "pairing.getEndpoints" - }, - { - "name": "params", - "value": { - "installReqId": "install-fixture-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "installStatus": { - "reqId": "install-fixture-1", - "state": "not-found", - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - }, - "v": 1 - } - } - } - }, - "980bbba0b617": { - "journal": { - "$rpc": "null" - }, - "outcome": "relay-host-0001x" - }, - "aaef09eec3f3": { - "name": "bundle-written", - "ordinal": 7, - "value": { - "version": 4 - } - }, - "c5d28dd067e4": { - "name": "pairing.getEndpoints#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.getEndpoints\",\"params\":{\"installReqId\":\"install-fixture-1\"}}" - }, - "f41ffc93936f": { - "name": "pairing.provisionRelay#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.provisionRelay\",\"params\":{\"reqId\":\"install-fixture-1\",\"newResumeTokenHash\":\"7ehR_WuQWkxwOFJdkHfI5jEg4DeVYWImtDuip60LHK4\"}}" - } - }, - "recording": { - "scenario": "relay-direct-upgrade-commits", - "checkpoints": [ - { - "id": "direct-upgrade-committed", - "observation": { - "sender": ["6e14239ef339", "2fce658b56a1", "240d8ec7e573"], - "payloads": ["c5d28dd067e4", "f41ffc93936f", "10098087f961"], - "settlements": { - "upgrade": "232ca274f695" - }, - "state": "980bbba0b617", - "effects": ["aaef09eec3f3", "161baaed4df3", "691df8767d71"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/relay-direct-upgrade-unsupported-host-declines.json b/mobile/rpc-foundation/goldens/relay-direct-upgrade-unsupported-host-declines.json deleted file mode 100644 index 9a69be444e6..00000000000 --- a/mobile/rpc-foundation/goldens/relay-direct-upgrade-unsupported-host-declines.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "relay.direct-upgrade", - "family": "relay.direct-upgrade", - "namedDeltas": [], - "values": { - "6c43da669636": { - "journal": { - "$rpc": "null" - }, - "outcome": "declined" - }, - "72fb9f223ba7": { - "name": "journal-cleared", - "ordinal": 3, - "value": "upgrade" - }, - "baacb3770d4b": { - "name": "pairing.getEndpoints#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "pairing.getEndpoints" - }, - { - "name": "params", - "value": { - "installReqId": "install-fixture-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-1", - "ok": false - } - } - }, - "c5d28dd067e4": { - "name": "pairing.getEndpoints#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.getEndpoints\",\"params\":{\"installReqId\":\"install-fixture-1\"}}" - }, - "ee20a1dc39e7": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "relay-direct-upgrade-unsupported-host-declines", - "checkpoints": [ - { - "id": "upgrade-declined", - "observation": { - "sender": ["baacb3770d4b"], - "payloads": ["c5d28dd067e4"], - "settlements": { - "upgrade": "ee20a1dc39e7" - }, - "state": "6c43da669636", - "effects": ["72fb9f223ba7"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/relay-pairing-recovery-resume-committed.json b/mobile/rpc-foundation/goldens/relay-pairing-recovery-resume-committed.json deleted file mode 100644 index 399e8582ffd..00000000000 --- a/mobile/rpc-foundation/goldens/relay-pairing-recovery-resume-committed.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "relay.pairing-recovery", - "family": "relay.pairing-recovery", - "namedDeltas": [], - "values": { - "1020838fc104": { - "name": "pairing.getEndpoints#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.getEndpoints\",\"params\":{\"installReqId\":\"install-fixture-1\",\"resumeConfirmReqId\":\"confirm-fixture-1\"}}" - }, - "4b87f8374959": { - "name": "bundle-written", - "ordinal": 4, - "value": { - "version": 4 - } - }, - "6fd2524785ca": { - "name": "candidate-closed", - "ordinal": 7, - "value": "relay" - }, - "792cb678f228": { - "name": "host-saved", - "ordinal": 5, - "value": "host-1" - }, - "7a3e4e5413b5": { - "outcome": "recovered", - "winner": { - "$rpc": "null" - } - }, - "87db1a2d2066": { - "name": "journal-cleared", - "ordinal": 6, - "value": "recovery" - }, - "a0ee987f0809": { - "name": "pairing.getEndpoints#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "pairing.getEndpoints" - }, - { - "name": "params", - "value": { - "installReqId": "install-fixture-1", - "resumeConfirmReqId": "confirm-fixture-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "installStatus": { - "reqId": "install-fixture-1", - "result": { - "authorizationMode": "relay-basis", - "currentVersion": 4, - "reqId": "install-fixture-1", - "resumeExpiresAt": 1767830400000, - "v": 1 - }, - "state": "committed", - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - }, - "v": 1 - } - } - } - }, - "c7269155f70c": { - "name": "journal-updated", - "ordinal": 3, - "value": "relay-basis" - }, - "f0723ea3ab16": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": "recovered" - } - }, - "recording": { - "scenario": "relay-pairing-recovery-resume-committed", - "checkpoints": [ - { - "id": "recovered-on-resume", - "observation": { - "sender": ["a0ee987f0809"], - "payloads": ["1020838fc104"], - "settlements": { - "recover": "f0723ea3ab16" - }, - "state": "7a3e4e5413b5", - "effects": [ - "c7269155f70c", - "4b87f8374959", - "792cb678f228", - "87db1a2d2066", - "6fd2524785ca" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/relay-rotation-installs-and-commits.json b/mobile/rpc-foundation/goldens/relay-rotation-installs-and-commits.json deleted file mode 100644 index b37e1d21bdc..00000000000 --- a/mobile/rpc-foundation/goldens/relay-rotation-installs-and-commits.json +++ /dev/null @@ -1,243 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "relay.credential-rotation", - "family": "relay.credential-rotation", - "namedDeltas": [], - "values": { - "1d5e608b0cda": { - "name": "pairing.provisionRelay#1", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.provisionRelay\",\"params\":{\"reqId\":\"rotate-VftjjHf-4Lb1-Sdfryl-LA\",\"newResumeTokenHash\":\"yrnYzw4B0YZ_R6Tcm4arO3oysaG7lsPjvyp4uWmdBtU\",\"expectedCurrentHash\":\"r_9byaBlTZTXS3aLLlWTKwss-nmx4vGRrjKskxWyP30\"}}" - }, - "63d099cfe6d6": { - "name": "pairing.getEndpoints#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.getEndpoints\",\"params\":{\"installReqId\":\"rotate-VftjjHf-4Lb1-Sdfryl-LA\"}}" - }, - "9f5831bc9cdf": { - "name": "bundle-written", - "ordinal": 8, - "value": { - "grace": { - "$rpc": "null" - }, - "pending": false, - "version": 4 - } - }, - "d5e189e21a0a": { - "name": "pairing.getEndpoints#2", - "ordinal": 7, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"pairing.getEndpoints\",\"params\":{\"installReqId\":\"rotate-VftjjHf-4Lb1-Sdfryl-LA\"}}" - }, - "df4532078f99": { - "name": "bundle-written", - "ordinal": 1, - "value": { - "grace": { - "$rpc": "null" - }, - "pending": true, - "version": 3 - } - }, - "ed1dba77fd44": { - "name": "pairing.getEndpoints#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "pairing.getEndpoints" - }, - { - "name": "params", - "value": { - "installReqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "installStatus": { - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "state": "not-found", - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - }, - "v": 1 - } - } - } - }, - "ed53b3008cb7": { - "name": "pairing.getEndpoints#2", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "pairing.getEndpoints" - }, - { - "name": "params", - "value": { - "installReqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "installStatus": { - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "result": { - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "resumeExpiresAt": 1767830400000, - "v": 1 - }, - "state": "committed", - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - }, - "v": 1 - } - } - } - }, - "f2c843a9b548": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "bundle": { - "current": { - "expiresAt": 1767830400000, - "hash": "yrnYzw4B0YZ_R6Tcm4arO3oysaG7lsPjvyp4uWmdBtU", - "token": "PF6BtAxexo4Eo0Bsl9Y8-9xTrog3GhJRIbWVYUPA7i0", - "version": 4 - }, - "deviceToken": "device-token-1", - "grace": { - "$rpc": "undefined" - }, - "hostId": "host-1", - "pending": { - "$rpc": "undefined" - }, - "v": 1 - }, - "relay": { - "assignmentEpoch": 1, - "cellUrl": "https://cell.example", - "directorUrl": "https://director.example", - "e2eeFraming": 2, - "relayHostId": "relay-host-0001x", - "v": 1 - } - } - }, - "fdf764b375ae": { - "outcome": { - "relayHostId": "relay-host-0001x", - "version": 4 - }, - "pending": false, - "version": 4 - }, - "fe8f0a52315d": { - "name": "pairing.provisionRelay#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "pairing.provisionRelay" - }, - { - "name": "params", - "value": { - "expectedCurrentHash": "r_9byaBlTZTXS3aLLlWTKwss-nmx4vGRrjKskxWyP30", - "newResumeTokenHash": "yrnYzw4B0YZ_R6Tcm4arO3oysaG7lsPjvyp4uWmdBtU", - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "resumeExpiresAt": 1767830400000, - "v": 1 - } - } - } - } - }, - "recording": { - "scenario": "relay-rotation-installs-and-commits", - "checkpoints": [ - { - "id": "credential-rotated", - "observation": { - "sender": ["ed1dba77fd44", "fe8f0a52315d", "ed53b3008cb7"], - "payloads": ["63d099cfe6d6", "1d5e608b0cda", "d5e189e21a0a"], - "settlements": { - "rotate": "f2c843a9b548" - }, - "state": "fdf764b375ae", - "effects": ["df4532078f99", "9f5831bc9cdf"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-branch-diff-shapes.json b/mobile/rpc-foundation/goldens/review-branch-diff-shapes.json deleted file mode 100644 index 94c2b4e2ece..00000000000 --- a/mobile/rpc-foundation/goldens/review-branch-diff-shapes.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.review-branch-diff", - "namedDeltas": [], - "values": { - "365c17523d76": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "itemKey": "branch:src/app.ts", - "kind": "binary" - } - }, - "38fb361f406c": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Committed diff is unavailable", - "isRpcDeliveryUnknown": false - } - }, - "534cf7badcbc": { - "branchCompare": "unloaded", - "diff": { - "itemKey": "branch:src/app.ts", - "kind": "binary" - }, - "snapshot": "unloaded" - }, - "ce804facf021": { - "name": "git.branchDiff#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.branchDiff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"compare\":{\"baseRef\":\"origin/main\",\"baseOid\":\"a1b2c3d4e5f60718293a4b5c6d7e8f9012345678\",\"headOid\":\"f0e1d2c3b4a5968778695a4b3c2d1e0f98765432\",\"mergeBase\":\"0123456789abcdef0123456789abcdef01234567\"}}}" - }, - "d24ea9d9187c": { - "name": "git.branchDiff#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.branchDiff" - }, - { - "name": "params", - "value": { - "compare": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/main", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567" - }, - "filePath": "src/app.ts", - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "kind": "binary" - } - } - } - } - }, - "recording": { - "scenario": "review-branch-diff-shapes", - "checkpoints": [ - { - "id": "branch", - "observation": { - "sender": ["d24ea9d9187c"], - "payloads": ["ce804facf021"], - "settlements": { - "branch": "365c17523d76" - }, - "state": "534cf7badcbc", - "effects": [] - } - }, - { - "id": "no-compare", - "observation": { - "sender": ["d24ea9d9187c"], - "payloads": ["ce804facf021"], - "settlements": { - "branch": "365c17523d76", - "no-compare": "38fb361f406c" - }, - "state": "534cf7badcbc", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-create-agent-refused.json b/mobile/rpc-foundation/goldens/review-create-agent-refused.json deleted file mode 100644 index 087db686266..00000000000 --- a/mobile/rpc-foundation/goldens/review-create-agent-refused.json +++ /dev/null @@ -1,240 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "namedDeltas": [], - "values": { - "1c2564f1daca": { - "name": "settings.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "2398eeb5ec74": { - "name": "preflight.detectAgents#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\",\"params\":{\"worktreeId\":\"workspace-1\"}}" - }, - "3dc53a43cb5e": { - "name": "agent.launchReplay#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"agent.launchReplay\",\"params\":{\"agent\":\"claude\",\"operationId\":\"1767225600000-00000000000040008000000000000001\",\"target\":{\"kind\":\"existing\",\"worktree\":\"id:workspace-1\"},\"prompt\":{\"text\":\"File: src/app.ts\\nLine: 4\\nUser comment: \\\"needs a test\\\"\",\"delivery\":\"submit\"},\"launchSource\":\"notes_send\"}}" - }, - "85b2d08ce134": { - "name": "agent.launchReplay#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "agent.launchReplay" - }, - { - "name": "params", - "value": { - "agent": "claude", - "launchSource": "notes_send", - "operationId": "1767225600000-00000000000040008000000000000001", - "prompt": { - "delivery": "submit", - "text": "File: src/app.ts\nLine: 4\nUser comment: \"needs a test\"" - }, - "target": { - "kind": "existing", - "worktree": "id:workspace-1" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 90000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "selector_not_found", - "message": "Workspace not found" - }, - "id": "frame-4", - "ok": false - } - } - }, - "9239a4f232b8": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "repos": [ - { - "id": "workspace-1" - } - ] - } - } - } - }, - "96a9a954e28f": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": { - "$rpc": "null" - }, - "disabledTuiAgents": [] - } - } - } - } - }, - "bca41ddb4705": { - "name": "preflight.detectAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectAgents" - }, - { - "name": "params", - "value": { - "worktreeId": "workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": ["claude"] - } - } - }, - "e0eef7c9fafe": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "fc1691a7deca": { - "actionError": "Workspace not found", - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "review-create-agent-refused", - "checkpoints": [ - { - "id": "refused", - "observation": { - "sender": ["9239a4f232b8", "96a9a954e28f", "bca41ddb4705", "85b2d08ce134"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "2398eeb5ec74", "3dc53a43cb5e"], - "settlements": { - "create-and-send": "eb79a9b3682a" - }, - "state": "fc1691a7deca", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-file-diff-shapes.json b/mobile/rpc-foundation/goldens/review-file-diff-shapes.json deleted file mode 100644 index d8e9ed98991..00000000000 --- a/mobile/rpc-foundation/goldens/review-file-diff-shapes.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-load", - "family": "session.review-file-diff", - "namedDeltas": [], - "values": { - "168eeea61142": { - "name": "git.diff#3", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": false, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "kind": "unknown" - } - } - } - }, - "18072d796980": { - "name": "git.diff#3", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":false}}" - }, - "481bd3924019": { - "name": "git.diff#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":false}}" - }, - "50bd7426ef76": { - "name": "git.diff#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": false, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "kind": "binary" - } - } - } - }, - "5135c435b058": { - "name": "git.diff#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "git.diff" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "staged": true, - "worktree": "id:repo-9::/w" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "byteLength": 2048, - "kind": "too-large" - } - } - } - }, - "717bd1fbc163": { - "branchCompare": "unloaded", - "diff": { - "byteLength": 2048, - "itemKey": "staged:src/app.ts", - "kind": "too-large" - }, - "snapshot": "unloaded" - }, - "7753343578da": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "The host sent a reply this app could not read (git.diff)", - "isRpcDeliveryUnknown": false - } - }, - "84090dfad90d": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "itemKey": "unstaged:src/app.ts", - "kind": "binary" - } - }, - "8675e0f40158": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "byteLength": 2048, - "itemKey": "staged:src/app.ts", - "kind": "too-large" - } - }, - "ea98fa53e2cc": { - "name": "git.diff#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"git.diff\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"filePath\":\"src/app.ts\",\"staged\":true}}" - }, - "f68945ffc2ea": { - "branchCompare": "unloaded", - "diff": { - "itemKey": "unstaged:src/app.ts", - "kind": "binary" - }, - "snapshot": "unloaded" - } - }, - "recording": { - "scenario": "review-file-diff-shapes", - "checkpoints": [ - { - "id": "binary", - "observation": { - "sender": ["50bd7426ef76"], - "payloads": ["481bd3924019"], - "settlements": { - "binary": "84090dfad90d" - }, - "state": "f68945ffc2ea", - "effects": [] - } - }, - { - "id": "too-large", - "observation": { - "sender": ["50bd7426ef76", "5135c435b058"], - "payloads": ["481bd3924019", "ea98fa53e2cc"], - "settlements": { - "binary": "84090dfad90d", - "too-large": "8675e0f40158" - }, - "state": "717bd1fbc163", - "effects": [] - } - }, - { - "id": "invalid", - "observation": { - "sender": ["50bd7426ef76", "5135c435b058", "168eeea61142"], - "payloads": ["481bd3924019", "ea98fa53e2cc", "18072d796980"], - "settlements": { - "binary": "84090dfad90d", - "too-large": "8675e0f40158", - "invalid": "7753343578da" - }, - "state": "717bd1fbc163", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-git-mutations-run.json b/mobile/rpc-foundation/goldens/review-git-mutations-run.json deleted file mode 100644 index c986486de4a..00000000000 --- a/mobile/rpc-foundation/goldens/review-git-mutations-run.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.review-git-mutations", - "namedDeltas": [], - "values": { - "2fc890e4b748": { - "actionError": { - "$rpc": "null" - }, - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "$rpc": "null" - } - }, - "53b792409cec": { - "name": "load-review-data", - "ordinal": 3, - "value": {} - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "a0c4d58800db": { - "name": "load-review-data", - "ordinal": 6, - "value": {} - }, - "aa50219ebe9a": { - "name": "git.discard#1", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"git.discard\",\"params\":{\"worktree\":\"id:workspace-1\",\"filePath\":\"src/app.ts\"}}" - }, - "d1de63d44a74": { - "name": "git.discard#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "git.discard" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "discarded": true - } - } - } - }, - "f39122ee30fc": { - "name": "git.stage#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.stage\",\"params\":{\"worktree\":\"id:workspace-1\",\"filePath\":\"src/app.ts\"}}" - }, - "fd1322e39fc5": { - "name": "git.stage#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.stage" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "staged": true - } - } - } - } - }, - "recording": { - "scenario": "review-git-mutations-run", - "checkpoints": [ - { - "id": "staged", - "observation": { - "sender": ["fd1322e39fc5"], - "payloads": ["f39122ee30fc"], - "settlements": { - "stage": "84e5ca07cb7a" - }, - "state": "2fc890e4b748", - "effects": ["53b792409cec"] - } - }, - { - "id": "discarded", - "observation": { - "sender": ["fd1322e39fc5", "d1de63d44a74"], - "payloads": ["f39122ee30fc", "aa50219ebe9a"], - "settlements": { - "stage": "84e5ca07cb7a", - "discard": "84e5ca07cb7a" - }, - "state": "2fc890e4b748", - "effects": ["53b792409cec", "a0c4d58800db"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-mark-reviewed-persists.json b/mobile/rpc-foundation/goldens/review-mark-reviewed-persists.json deleted file mode 100644 index bee98a71364..00000000000 --- a/mobile/rpc-foundation/goldens/review-mark-reviewed-persists.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "namedDeltas": [], - "values": { - "02c4a9358dee": { - "actionError": { - "$rpc": "null" - }, - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "completedAt": 1767225600000, - "files": { - "unstaged:src/app.ts": { - "filePath": "src/app.ts", - "key": "unstaged:src/app.ts", - "lastOpenedAt": { - "$rpc": "undefined" - }, - "lastSeenDiffIdentity": "identity-1", - "oldPath": { - "$rpc": "undefined" - }, - "reviewDiffIdentity": "identity-1", - "reviewedAt": 1767225600000, - "scope": "unstaged" - } - }, - "updatedAt": 1767225600000, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "$rpc": "null" - } - }, - "81c9edeaad86": { - "name": "worktree.set#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.set\",\"params\":{\"worktree\":\"id:workspace-1\",\"diffComments\":[{\"side\":\"modified\",\"id\":\"note-1\",\"worktreeId\":\"workspace-1\",\"filePath\":\"src/app.ts\",\"lineNumber\":4,\"body\":\"needs a test\",\"createdAt\":0}],\"diffCommentsBase\":[{\"side\":\"modified\",\"id\":\"note-1\",\"worktreeId\":\"workspace-1\",\"filePath\":\"src/app.ts\",\"lineNumber\":4,\"body\":\"needs a test\",\"createdAt\":0}],\"mobileDiffReview\":{\"version\":1,\"files\":{\"unstaged:src/app.ts\":{\"key\":\"unstaged:src/app.ts\",\"filePath\":\"src/app.ts\",\"scope\":\"unstaged\",\"lastSeenDiffIdentity\":\"identity-1\",\"reviewedAt\":1767225600000,\"reviewDiffIdentity\":\"identity-1\"}},\"updatedAt\":1767225600000,\"completedAt\":1767225600000}}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ebfe5f82347b": { - "name": "worktree.set#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.set" - }, - { - "name": "params", - "value": { - "diffComments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "diffCommentsBase": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "mobileDiffReview": { - "completedAt": 1767225600000, - "files": { - "unstaged:src/app.ts": { - "filePath": "src/app.ts", - "key": "unstaged:src/app.ts", - "lastOpenedAt": { - "$rpc": "undefined" - }, - "lastSeenDiffIdentity": "identity-1", - "oldPath": { - "$rpc": "undefined" - }, - "reviewDiffIdentity": "identity-1", - "reviewedAt": 1767225600000, - "scope": "unstaged" - } - }, - "updatedAt": 1767225600000, - "version": 1 - }, - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "updated": true - } - } - } - } - }, - "recording": { - "scenario": "review-mark-reviewed-persists", - "checkpoints": [ - { - "id": "persisted", - "observation": { - "sender": ["ebfe5f82347b"], - "payloads": ["81c9edeaad86"], - "settlements": { - "mark-reviewed": "eb79a9b3682a" - }, - "state": "02c4a9358dee", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-open-in-session.json b/mobile/rpc-foundation/goldens/review-open-in-session.json deleted file mode 100644 index e52844e2ae3..00000000000 --- a/mobile/rpc-foundation/goldens/review-open-in-session.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "namedDeltas": [], - "values": { - "1e2ced5a5f5a": { - "name": "files.openDiff#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.openDiff\",\"params\":{\"worktree\":\"id:workspace-1\",\"relativePath\":\"src/app.ts\",\"staged\":false}}" - }, - "2fc890e4b748": { - "actionError": { - "$rpc": "null" - }, - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "$rpc": "null" - } - }, - "4353ae13dc10": { - "name": "open-session", - "ordinal": 3, - "value": {} - }, - "ab27560e03f6": { - "name": "files.openDiff#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "files.openDiff" - }, - { - "name": "params", - "value": { - "relativePath": "src/app.ts", - "staged": false, - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "opened": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "review-open-in-session", - "checkpoints": [ - { - "id": "opened", - "observation": { - "sender": ["ab27560e03f6"], - "payloads": ["1e2ced5a5f5a"], - "settlements": { - "open-in-session": "eb79a9b3682a" - }, - "state": "2fc890e4b748", - "effects": ["4353ae13dc10"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json b/mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json deleted file mode 100644 index e855c4f34c2..00000000000 --- a/mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "namedDeltas": [], - "values": { - "0db3b6958ec7": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": "terminal-1" - }, - "15a9fbee07a2": { - "name": "terminal.read#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.read" - }, - { - "name": "params", - "value": { - "limit": 1, - "screen": true, - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 2000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "terminal": {} - } - } - } - }, - "2fc890e4b748": { - "actionError": { - "$rpc": "null" - }, - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "$rpc": "null" - } - }, - "8a39711b3244": { - "name": "terminal.send#2", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"File: src/app.ts\\nLine: 4\\nUser comment: \\\"needs a test\\\"\",\"enter\":true}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "96246abc8742": { - "name": "terminal.send#2", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "enter": true, - "terminal": "terminal-1", - "text": "File: src/app.ts\nLine: 4\nUser comment: \"needs a test\"" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "abebd0f45ba2": { - "name": "terminal.read#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.read\",\"params\":{\"terminal\":\"terminal-1\",\"screen\":true,\"limit\":1}}" - }, - "eac83a42a48c": { - "name": "terminal.send#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u0015\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\\u000b\",\"enter\":false}}" - }, - "f56bee9b4829": { - "name": "terminal.send#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "enter": false, - "terminal": "terminal-1", - "text": "\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b" - } - }, - { - "name": "options", - "value": { - "budgetSpansConnect": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - } - }, - "recording": { - "scenario": "review-send-notes-heals-stale-input", - "checkpoints": [ - { - "id": "healed", - "observation": { - "sender": ["15a9fbee07a2", "f56bee9b4829", "96246abc8742"], - "payloads": ["abebd0f45ba2", "eac83a42a48c", "8a39711b3244"], - "settlements": { - "mark-stale": "0db3b6958ec7", - "send-notes": "9270aeb7d9c6" - }, - "state": "2fc890e4b748", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-send-sheet-lists-terminals.json b/mobile/rpc-foundation/goldens/review-send-sheet-lists-terminals.json deleted file mode 100644 index d97ef0a7628..00000000000 --- a/mobile/rpc-foundation/goldens/review-send-sheet-lists-terminals.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.review-send-sheet", - "namedDeltas": [], - "values": { - "697177595a0a": { - "actionError": { - "$rpc": "null" - }, - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "kind": "ready", - "terminals": [ - { - "id": "tab-1", - "terminal": "terminal-1", - "title": "codex" - } - ] - } - }, - "6eb439bad25e": { - "name": "reply-salvage", - "ordinal": 3, - "value": { - "droppedCount": 1, - "droppedPaths": ["1"], - "method": "session.tabs.list", - "operation": "session.review-terminal-list", - "variant": "review-terminal-tabs" - } - }, - "9a3dbd49ee14": { - "name": "session.tabs.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.list" - }, - { - "name": "params", - "value": { - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "tabs": [ - { - "id": "tab-1", - "terminal": "terminal-1", - "title": "codex", - "type": "terminal" - }, - { - "id": "tab-2", - "title": "notes.md", - "type": "markdown" - } - ] - } - } - } - }, - "acb5ae38e750": { - "name": "session.tabs.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.list\",\"params\":{\"worktree\":\"id:workspace-1\"}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "review-send-sheet-lists-terminals", - "checkpoints": [ - { - "id": "listed", - "observation": { - "sender": ["9a3dbd49ee14"], - "payloads": ["acb5ae38e750"], - "settlements": { - "open": "eb79a9b3682a" - }, - "state": "697177595a0a", - "effects": ["6eb439bad25e"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-stage-file.json b/mobile/rpc-foundation/goldens/review-stage-file.json deleted file mode 100644 index 8b0bef297bd..00000000000 --- a/mobile/rpc-foundation/goldens/review-stage-file.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "namedDeltas": [], - "values": { - "2fc890e4b748": { - "actionError": { - "$rpc": "null" - }, - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "$rpc": "null" - } - }, - "53b792409cec": { - "name": "load-review-data", - "ordinal": 3, - "value": {} - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "f39122ee30fc": { - "name": "git.stage#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.stage\",\"params\":{\"worktree\":\"id:workspace-1\",\"filePath\":\"src/app.ts\"}}" - }, - "fd1322e39fc5": { - "name": "git.stage#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.stage" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "staged": true - } - } - } - } - }, - "recording": { - "scenario": "review-stage-file", - "checkpoints": [ - { - "id": "staged", - "observation": { - "sender": ["fd1322e39fc5"], - "payloads": ["f39122ee30fc"], - "settlements": { - "stage": "84e5ca07cb7a" - }, - "state": "2fc890e4b748", - "effects": ["53b792409cec"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/review-stage-refused.json b/mobile/rpc-foundation/goldens/review-stage-refused.json deleted file mode 100644 index ea85877d000..00000000000 --- a/mobile/rpc-foundation/goldens/review-stage-refused.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "namedDeltas": [], - "values": { - "36787858f78b": { - "actionError": "Cannot discard during a merge", - "busyAction": { - "$rpc": "null" - }, - "screenState": { - "branchCompare": { - "$rpc": "null" - }, - "comments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "side": "modified", - "worktreeId": "workspace-1" - } - ], - "kind": "ready", - "reviewState": { - "files": {}, - "version": 1 - }, - "status": { - "entries": [] - } - }, - "sendSheet": { - "$rpc": "null" - } - }, - "7ed3d39f0607": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": false - }, - "ccba3a78ab93": { - "name": "git.discard#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.discard\",\"params\":{\"worktree\":\"id:workspace-1\",\"filePath\":\"src/app.ts\"}}" - }, - "f4ea7cb3a3d2": { - "name": "git.discard#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.discard" - }, - { - "name": "params", - "value": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "git_conflict", - "message": "Cannot discard during a merge" - }, - "id": "frame-1", - "ok": false - } - } - } - }, - "recording": { - "scenario": "review-stage-refused", - "checkpoints": [ - { - "id": "refused", - "observation": { - "sender": ["f4ea7cb3a3d2"], - "payloads": ["ccba3a78ab93"], - "settlements": { - "discard": "7ed3d39f0607" - }, - "state": "36787858f78b", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-changes-loaded.json b/mobile/rpc-foundation/goldens/sc-changes-loaded.json deleted file mode 100644 index ed045bdb30b..00000000000 --- a/mobile/rpc-foundation/goldens/sc-changes-loaded.json +++ /dev/null @@ -1,548 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.changes-load", - "family": "git.changes-load", - "namedDeltas": [], - "values": { - "1934c215114a": { - "name": "repo.list#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "1c2564f1daca": { - "name": "settings.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "1d461278a0ae": { - "branchCompareState": { - "kind": "ready", - "result": { - "entries": [ - { - "added": 2, - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "summary": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/dev", - "changedFiles": 1, - "compareRef": "feature", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "status": "ready" - } - } - }, - "screenState": { - "kind": "ready", - "status": { - "branch": "feature", - "entries": [ - { - "added": 4, - "area": "unstaged", - "path": "src/app.ts", - "removed": 1, - "status": "modified" - }, - { - "area": "staged", - "oldPath": "src/older.ts", - "path": "src/old.ts", - "status": "renamed" - } - ], - "head": "head-oid", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true, - "upstreamName": "origin/feature" - } - } - } - }, - "2ab4c978da8d": { - "name": "git.status#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "2ca33da4d135": { - "name": "repo.list#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "repos": [] - } - } - } - }, - "3088889ce80e": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - }, - "5d30d477f0d5": { - "name": "git.branchCompare#1", - "ordinal": 10, - "args": [ - { - "name": "method", - "value": "git.branchCompare" - }, - { - "name": "params", - "value": { - "baseRef": "origin/dev", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "entries": [ - { - "added": 2, - "path": "src/app.ts", - "removed": 1, - "status": "modified" - } - ], - "summary": { - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "baseRef": "origin/dev", - "changedFiles": 1, - "compareRef": "feature", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "status": "ready" - } - } - } - } - }, - "5e74c6d574e1": { - "name": "git.branchCompare#1", - "ordinal": 11, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"git.branchCompare\",\"params\":{\"worktree\":\"id:repo42::/p\",\"baseRef\":\"origin/dev\"}}" - }, - "6f4a5d6a5a86": { - "name": "worktree.show#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "71f3760dfea1": { - "name": "repo.list#1", - "ordinal": 9, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "74d102469d68": { - "name": "worktree.show#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/dev" - } - } - } - } - }, - "76c784c63522": { - "name": "streams-registered-at-teardown", - "ordinal": 12, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "8fda864c66d6": { - "branchCompareState": { - "kind": "loading" - }, - "screenState": { - "kind": "ready", - "status": { - "branch": "feature", - "entries": [ - { - "added": 4, - "area": "unstaged", - "path": "src/app.ts", - "removed": 1, - "status": "modified" - }, - { - "area": "staged", - "oldPath": "src/older.ts", - "path": "src/old.ts", - "status": "renamed" - } - ], - "head": "head-oid", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true, - "upstreamName": "origin/feature" - } - } - } - }, - "92a577a15fcc": { - "name": "git.status#1", - "ordinal": 5, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "962f91336a50": { - "name": "git.status#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "branch": "feature", - "entries": [ - { - "added": 4, - "area": "unstaged", - "path": "src/app.ts", - "removed": 1, - "status": "modified" - }, - { - "area": "staged", - "oldPath": "src/older.ts", - "path": "src/old.ts", - "status": "renamed" - } - ], - "head": "head-oid", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true, - "upstreamName": "origin/feature" - } - } - } - } - }, - "a0e527bdf205": { - "branchCompareState": { - "kind": "idle" - }, - "screenState": { - "kind": "loading" - } - }, - "b823fdc0d205": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "cb462f8b50a3": { - "name": "worktree.show#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eef1ee3c2773": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - } - }, - "recording": { - "scenario": "sc-changes-loaded", - "checkpoints": [ - { - "id": "status-pending", - "observation": { - "sender": ["b823fdc0d205", "2ab4c978da8d"], - "payloads": ["eef1ee3c2773", "1c2564f1daca", "92a577a15fcc"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "a0e527bdf205", - "effects": [] - } - }, - { - "id": "compare-pending", - "observation": { - "sender": ["b823fdc0d205", "962f91336a50", "6f4a5d6a5a86", "1934c215114a"], - "payloads": [ - "eef1ee3c2773", - "1c2564f1daca", - "92a577a15fcc", - "cb462f8b50a3", - "71f3760dfea1" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "8fda864c66d6", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": [ - "b823fdc0d205", - "962f91336a50", - "74d102469d68", - "2ca33da4d135", - "5d30d477f0d5" - ], - "payloads": [ - "eef1ee3c2773", - "1c2564f1daca", - "92a577a15fcc", - "cb462f8b50a3", - "71f3760dfea1", - "5e74c6d574e1" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "1d461278a0ae", - "effects": [] - } - }, - { - "id": "cleanup", - "observation": { - "sender": [ - "3088889ce80e", - "962f91336a50", - "74d102469d68", - "2ca33da4d135", - "5d30d477f0d5" - ], - "payloads": [ - "eef1ee3c2773", - "1c2564f1daca", - "92a577a15fcc", - "cb462f8b50a3", - "71f3760dfea1", - "5e74c6d574e1" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "1d461278a0ae", - "effects": ["76c784c63522"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json deleted file mode 100644 index 572837bf850..00000000000 --- a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json +++ /dev/null @@ -1,1123 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.create-intent", - "family": "hostedReview.create-intent", - "namedDeltas": [], - "values": { - "0e4c5b9b4b61": { - "name": "git.commit#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "git.commit" - }, - { - "name": "params", - "value": { - "message": "feat: recorded", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "success": true - } - } - } - }, - "0f6982ada2e6": { - "name": "git.commit#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "git.commit" - }, - { - "name": "params", - "value": { - "message": "feat: recorded", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "10f528114aef": { - "name": "git.generateCommitMessage#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "git.generateCommitMessage" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "1858779f58e9": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "branch": "feature", - "entries": [ - { - "area": "staged", - "path": "src/app.ts", - "status": "modified" - }, - { - "area": "untracked", - "path": "src/new.ts", - "status": "untracked" - } - ], - "head": "abc1234", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - } - }, - "201cece6e0bb": { - "name": "git.status#3", - "ordinal": 15, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "22cb4850c7e9": { - "name": "git.generateCommitMessage#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "git.generateCommitMessage" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "message": "feat: recorded", - "success": true - } - } - } - }, - "324be6bef431": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 16, - "args": [ - { - "name": "method", - "value": "hostedReview.getCreationEligibility" - }, - { - "name": "params", - "value": { - "ahead": 1, - "base": { - "$rpc": "null" - }, - "behind": 0, - "branch": "feature", - "hasUncommittedChanges": false, - "hasUpstream": true, - "linkedGitHubPR": { - "$rpc": "null" - }, - "linkedGitLabMR": { - "$rpc": "null" - }, - "repo": "id:repo42", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-7", - "ok": true, - "result": { - "blockedReason": "needs_push", - "body": "Host body", - "canCreate": false, - "defaultBaseRef": "main", - "nextAction": { - "$rpc": "null" - }, - "provider": "github", - "reviewLookupOutcome": "not_found", - "title": "Host title" - } - } - } - }, - "395c47c3d42e": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 17, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.getCreationEligibility\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"branch\":\"feature\",\"base\":null,\"hasUncommittedChanges\":false,\"hasUpstream\":true,\"ahead\":1,\"behind\":0,\"linkedGitHubPR\":null,\"linkedGitLabMR\":null}}" - }, - "42e0a785c289": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 16, - "args": [ - { - "name": "method", - "value": "hostedReview.getCreationEligibility" - }, - { - "name": "params", - "value": { - "ahead": 1, - "base": { - "$rpc": "null" - }, - "behind": 0, - "branch": "feature", - "hasUncommittedChanges": false, - "hasUpstream": true, - "linkedGitHubPR": { - "$rpc": "null" - }, - "linkedGitLabMR": { - "$rpc": "null" - }, - "repo": "id:repo42", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "43ccfe31d2a4": { - "outcome": { - "committed": true, - "ok": true, - "prefill": { - "base": "main", - "blockedReason": { - "$rpc": "null" - }, - "body": "Host body", - "canCreate": true, - "nextAction": { - "$rpc": "null" - }, - "provider": "github", - "reviewLookupOutcome": "not_found", - "title": "Host title" - }, - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [], - "head": "def5678", - "upstreamStatus": { - "ahead": 0, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - }, - "url": "https://review.test/5", - "warning": { - "$rpc": "undefined" - } - } - }, - "49a4ef454656": { - "name": "git.generateCommitMessage#1", - "ordinal": 10, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"git.generateCommitMessage\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "4e72cd693c7e": { - "name": "progress", - "ordinal": 25, - "value": "creating_review" - }, - "570c09f158bd": { - "name": "git.status#4", - "ordinal": 21, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-9", - "ok": true, - "result": { - "branch": "feature", - "entries": [], - "head": "def5678", - "upstreamStatus": { - "ahead": 0, - "behind": 0, - "hasUpstream": true - } - } - } - } - }, - "682fbd1f6b74": { - "name": "progress", - "ordinal": 11, - "value": "committing" - }, - "6a9e29548c49": { - "name": "hostedReview.getCreationEligibility#2", - "ordinal": 23, - "args": [ - { - "name": "method", - "value": "hostedReview.getCreationEligibility" - }, - { - "name": "params", - "value": { - "ahead": 0, - "base": { - "$rpc": "null" - }, - "behind": 0, - "branch": "feature", - "hasUncommittedChanges": false, - "hasUpstream": true, - "linkedGitHubPR": { - "$rpc": "null" - }, - "linkedGitLabMR": { - "$rpc": "null" - }, - "repo": "id:repo42", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-10", - "ok": true, - "result": { - "blockedReason": { - "$rpc": "null" - }, - "body": "Host body", - "canCreate": true, - "defaultBaseRef": "main", - "nextAction": { - "$rpc": "null" - }, - "provider": "github", - "reviewLookupOutcome": "not_found", - "title": "Host title" - } - } - } - }, - "6b3d90cdf382": { - "name": "hostedReview.create#1", - "ordinal": 26, - "args": [ - { - "name": "method", - "value": "hostedReview.create" - }, - { - "name": "params", - "value": { - "base": "main", - "body": "Host body", - "draft": false, - "head": "feature", - "provider": "github", - "repo": "id:repo42", - "title": "Host title", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "6e227482ca80": { - "name": "git.push#1", - "ordinal": 19, - "args": [ - { - "name": "method", - "value": "git.push" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-8", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "6f8094ed6558": { - "name": "git.status#4", - "ordinal": 22, - "json": "{\"id\":\"frame-9\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "72b388fd3302": { - "outcome": "unrun" - }, - "77a1112e7648": { - "name": "hostedReview.create#1", - "ordinal": 27, - "json": "{\"id\":\"frame-11\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.create\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"provider\":\"github\",\"base\":\"main\",\"head\":\"feature\",\"title\":\"Host title\",\"body\":\"Host body\",\"draft\":false}}" - }, - "7b98416e2b81": { - "name": "git.status#3", - "ordinal": 14, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "branch": "feature", - "entries": [], - "head": "def5678", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - } - }, - "81faa0ecff79": { - "name": "git.bulkStage#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "git.bulkStage" - }, - { - "name": "params", - "value": { - "filePaths": ["src/new.ts"], - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "8601995022f5": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "8b784bb9dff5": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "committed": true, - "ok": true, - "prefill": { - "base": "main", - "blockedReason": { - "$rpc": "null" - }, - "body": "Host body", - "canCreate": true, - "nextAction": { - "$rpc": "null" - }, - "provider": "github", - "reviewLookupOutcome": "not_found", - "title": "Host title" - }, - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [], - "head": "def5678", - "upstreamStatus": { - "ahead": 0, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - }, - "url": "https://review.test/5", - "warning": { - "$rpc": "undefined" - } - } - }, - "8f3b0ba895a1": { - "name": "hostedReview.create#1", - "ordinal": 26, - "args": [ - { - "name": "method", - "value": "hostedReview.create" - }, - { - "name": "params", - "value": { - "base": "main", - "body": "Host body", - "draft": false, - "head": "feature", - "provider": "github", - "repo": "id:repo42", - "title": "Host title", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-11", - "ok": true, - "result": { - "number": 5, - "ok": true, - "url": "https://review.test/5" - } - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "962b56dc8acd": { - "name": "git.bulkStage#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "git.bulkStage" - }, - { - "name": "params", - "value": { - "filePaths": ["src/new.ts"], - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "96f0e8413cda": { - "name": "git.push#1", - "ordinal": 20, - "json": "{\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"git.push\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "982c7a7a656d": { - "name": "worktree.set#1", - "ordinal": 28, - "args": [ - { - "name": "method", - "value": "worktree.set" - }, - { - "name": "params", - "value": { - "baseRef": "main", - "linkedPR": 5, - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-12", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "9df18368de2c": { - "name": "git.status#2", - "ordinal": 7, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "b2ae4b8e30b7": { - "name": "progress", - "ordinal": 8, - "value": "generating_commit_message" - }, - "d7fed979e629": { - "name": "git.push#1", - "ordinal": 19, - "args": [ - { - "name": "method", - "value": "git.push" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "d921a388f59f": { - "name": "git.status#2", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "branch": "feature", - "entries": [ - { - "area": "staged", - "path": "src/app.ts", - "status": "modified" - } - ], - "head": "abc1234", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - } - }, - "ddee63fd3bf5": { - "name": "git.status#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "e20a71f63f51": { - "name": "git.bulkStage#1", - "ordinal": 5, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"git.bulkStage\",\"params\":{\"worktree\":\"id:repo42::/p\",\"filePaths\":[\"src/new.ts\"]}}" - }, - "e6dbcef99c41": { - "name": "hostedReview.getCreationEligibility#2", - "ordinal": 24, - "json": "{\"id\":\"frame-10\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.getCreationEligibility\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"branch\":\"feature\",\"base\":null,\"hasUncommittedChanges\":false,\"hasUpstream\":true,\"ahead\":0,\"behind\":0,\"linkedGitHubPR\":null,\"linkedGitLabMR\":null}}" - }, - "e83dca631c9c": { - "name": "progress", - "ordinal": 3, - "value": "staging" - }, - "f192f1898bef": { - "name": "git.commit#1", - "ordinal": 13, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"git.commit\",\"params\":{\"worktree\":\"id:repo42::/p\",\"message\":\"feat: recorded\"}}" - }, - "fccf28a4e541": { - "name": "progress", - "ordinal": 18, - "value": "pushing" - }, - "ffef2a178ce4": { - "name": "worktree.set#1", - "ordinal": 29, - "json": "{\"id\":\"frame-12\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.set\",\"params\":{\"worktree\":\"id:repo42::/p\",\"baseRef\":\"main\",\"linkedPR\":5}}" - } - }, - "recording": { - "scenario": "sc-create-intent-stage-commit-push-create", - "checkpoints": [ - { - "id": "initial-status-pending", - "observation": { - "sender": ["8601995022f5"], - "payloads": ["ddee63fd3bf5"], - "settlements": { - "run": "9270aeb7d9c6" - }, - "state": "72b388fd3302", - "effects": [] - } - }, - { - "id": "stage-pending", - "observation": { - "sender": ["1858779f58e9", "962b56dc8acd"], - "payloads": ["ddee63fd3bf5", "e20a71f63f51"], - "settlements": { - "run": "9270aeb7d9c6" - }, - "state": "72b388fd3302", - "effects": ["e83dca631c9c"] - } - }, - { - "id": "generate-message-pending", - "observation": { - "sender": ["1858779f58e9", "81faa0ecff79", "d921a388f59f", "10f528114aef"], - "payloads": ["ddee63fd3bf5", "e20a71f63f51", "9df18368de2c", "49a4ef454656"], - "settlements": { - "run": "9270aeb7d9c6" - }, - "state": "72b388fd3302", - "effects": ["e83dca631c9c", "b2ae4b8e30b7"] - } - }, - { - "id": "commit-pending", - "observation": { - "sender": [ - "1858779f58e9", - "81faa0ecff79", - "d921a388f59f", - "22cb4850c7e9", - "0f6982ada2e6" - ], - "payloads": [ - "ddee63fd3bf5", - "e20a71f63f51", - "9df18368de2c", - "49a4ef454656", - "f192f1898bef" - ], - "settlements": { - "run": "9270aeb7d9c6" - }, - "state": "72b388fd3302", - "effects": ["e83dca631c9c", "b2ae4b8e30b7", "682fbd1f6b74"] - } - }, - { - "id": "prefill-pending", - "observation": { - "sender": [ - "1858779f58e9", - "81faa0ecff79", - "d921a388f59f", - "22cb4850c7e9", - "0e4c5b9b4b61", - "7b98416e2b81", - "42e0a785c289" - ], - "payloads": [ - "ddee63fd3bf5", - "e20a71f63f51", - "9df18368de2c", - "49a4ef454656", - "f192f1898bef", - "201cece6e0bb", - "395c47c3d42e" - ], - "settlements": { - "run": "9270aeb7d9c6" - }, - "state": "72b388fd3302", - "effects": ["e83dca631c9c", "b2ae4b8e30b7", "682fbd1f6b74"] - } - }, - { - "id": "push-pending", - "observation": { - "sender": [ - "1858779f58e9", - "81faa0ecff79", - "d921a388f59f", - "22cb4850c7e9", - "0e4c5b9b4b61", - "7b98416e2b81", - "324be6bef431", - "d7fed979e629" - ], - "payloads": [ - "ddee63fd3bf5", - "e20a71f63f51", - "9df18368de2c", - "49a4ef454656", - "f192f1898bef", - "201cece6e0bb", - "395c47c3d42e", - "96f0e8413cda" - ], - "settlements": { - "run": "9270aeb7d9c6" - }, - "state": "72b388fd3302", - "effects": ["e83dca631c9c", "b2ae4b8e30b7", "682fbd1f6b74", "fccf28a4e541"] - } - }, - { - "id": "create-pending", - "observation": { - "sender": [ - "1858779f58e9", - "81faa0ecff79", - "d921a388f59f", - "22cb4850c7e9", - "0e4c5b9b4b61", - "7b98416e2b81", - "324be6bef431", - "6e227482ca80", - "570c09f158bd", - "6a9e29548c49", - "6b3d90cdf382" - ], - "payloads": [ - "ddee63fd3bf5", - "e20a71f63f51", - "9df18368de2c", - "49a4ef454656", - "f192f1898bef", - "201cece6e0bb", - "395c47c3d42e", - "96f0e8413cda", - "6f8094ed6558", - "e6dbcef99c41", - "77a1112e7648" - ], - "settlements": { - "run": "9270aeb7d9c6" - }, - "state": "72b388fd3302", - "effects": [ - "e83dca631c9c", - "b2ae4b8e30b7", - "682fbd1f6b74", - "fccf28a4e541", - "4e72cd693c7e" - ] - } - }, - { - "id": "settled", - "observation": { - "sender": [ - "1858779f58e9", - "81faa0ecff79", - "d921a388f59f", - "22cb4850c7e9", - "0e4c5b9b4b61", - "7b98416e2b81", - "324be6bef431", - "6e227482ca80", - "570c09f158bd", - "6a9e29548c49", - "8f3b0ba895a1", - "982c7a7a656d" - ], - "payloads": [ - "ddee63fd3bf5", - "e20a71f63f51", - "9df18368de2c", - "49a4ef454656", - "f192f1898bef", - "201cece6e0bb", - "395c47c3d42e", - "96f0e8413cda", - "6f8094ed6558", - "e6dbcef99c41", - "77a1112e7648", - "ffef2a178ce4" - ], - "settlements": { - "run": "8b784bb9dff5" - }, - "state": "43ccfe31d2a4", - "effects": [ - "e83dca631c9c", - "b2ae4b8e30b7", - "682fbd1f6b74", - "fccf28a4e541", - "4e72cd693c7e" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json deleted file mode 100644 index e5668af8453..00000000000 --- a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json +++ /dev/null @@ -1,300 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.hosted-review-create", - "family": "hostedReview.create-chain", - "namedDeltas": [], - "values": { - "0122a4affef8": { - "name": "hostedReview.create#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.create\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"provider\":\"github\",\"base\":\"main\",\"head\":\"feature\",\"title\":\"Recorded title\",\"body\":\"Recorded body\",\"draft\":false}}" - }, - "121d8ad302a6": { - "name": "worktree.set#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.set\",\"params\":{\"worktree\":\"id:repo42::/p\",\"baseRef\":\"main\",\"linkedPR\":5}}" - }, - "147a3131d1b9": { - "name": "hostedReview.create#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "hostedReview.create" - }, - { - "name": "params", - "value": { - "base": "main", - "body": "Recorded body", - "draft": false, - "head": "feature", - "provider": "github", - "repo": "id:repo42", - "title": "Recorded title", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "number": 5, - "ok": true, - "url": "https://review.test/5" - } - } - } - }, - "2b7bba64b59e": { - "name": "git.push#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.push" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "3f946ad0279c": { - "outcome": "uncreated" - }, - "7cd929185e93": { - "name": "worktree.set#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "worktree.set" - }, - { - "name": "params", - "value": { - "baseRef": "main", - "linkedPR": 5, - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "840445dcb569": { - "name": "git.push#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.push\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "9fca4a23f963": { - "outcome": { - "number": 5, - "ok": true, - "url": "https://review.test/5" - } - }, - "a95ae8a9ee57": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "number": 5, - "ok": true, - "url": "https://review.test/5" - } - }, - "b9099560487b": { - "name": "git.push#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.push" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "cbe1742f3b41": { - "name": "worktree.set#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "worktree.set" - }, - { - "name": "params", - "value": { - "baseRef": "main", - "linkedPR": 5, - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "dfaf8f437106": { - "name": "hostedReview.create#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "hostedReview.create" - }, - { - "name": "params", - "value": { - "base": "main", - "body": "Recorded body", - "draft": false, - "head": "feature", - "provider": "github", - "repo": "id:repo42", - "title": "Recorded title", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - } - }, - "recording": { - "scenario": "sc-create-pushes-then-creates", - "checkpoints": [ - { - "id": "push-pending", - "observation": { - "sender": ["b9099560487b"], - "payloads": ["840445dcb569"], - "settlements": { - "create": "9270aeb7d9c6" - }, - "state": "3f946ad0279c", - "effects": [] - } - }, - { - "id": "create-pending", - "observation": { - "sender": ["2b7bba64b59e", "dfaf8f437106"], - "payloads": ["840445dcb569", "0122a4affef8"], - "settlements": { - "create": "9270aeb7d9c6" - }, - "state": "3f946ad0279c", - "effects": [] - } - }, - { - "id": "link-pending", - "observation": { - "sender": ["2b7bba64b59e", "147a3131d1b9", "cbe1742f3b41"], - "payloads": ["840445dcb569", "0122a4affef8", "121d8ad302a6"], - "settlements": { - "create": "9270aeb7d9c6" - }, - "state": "3f946ad0279c", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["2b7bba64b59e", "147a3131d1b9", "7cd929185e93"], - "payloads": ["840445dcb569", "0122a4affef8", "121d8ad302a6"], - "settlements": { - "create": "a95ae8a9ee57" - }, - "state": "9fca4a23f963", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json deleted file mode 100644 index 265cb1b3360..00000000000 --- a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.hosted-review-create", - "family": "hostedReview.create-chain", - "namedDeltas": [], - "values": { - "38143ba8e1d0": { - "name": "hostedReview.create#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.create\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"provider\":\"github\",\"base\":\"main\",\"head\":\"feature\",\"title\":\"Recorded title\",\"body\":\"Recorded body\",\"draft\":false}}" - }, - "a75f3e11f830": { - "name": "hostedReview.create#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "hostedReview.create" - }, - { - "name": "params", - "value": { - "base": "main", - "body": "Recorded body", - "draft": false, - "head": "feature", - "provider": "github", - "repo": "id:repo42", - "title": "Recorded title", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "internal", - "message": "" - }, - "id": "frame-1", - "ok": false - } - } - }, - "d14a0dd639ad": { - "outcome": { - "error": "Failed to create pull request", - "ok": false - } - }, - "e12183bfd2c3": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Failed to create pull request", - "ok": false - } - } - }, - "recording": { - "scenario": "sc-create-refused-empty-message", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["a75f3e11f830"], - "payloads": ["38143ba8e1d0"], - "settlements": { - "create": "e12183bfd2c3" - }, - "state": "d14a0dd639ad", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json deleted file mode 100644 index 0ca5809ea79..00000000000 --- a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.hosted-review-create", - "family": "hostedReview.create-chain", - "namedDeltas": [], - "values": { - "38143ba8e1d0": { - "name": "hostedReview.create#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.create\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"provider\":\"github\",\"base\":\"main\",\"head\":\"feature\",\"title\":\"Recorded title\",\"body\":\"Recorded body\",\"draft\":false}}" - }, - "3c6a5a164e8a": { - "outcome": { - "error": "", - "ok": false - } - }, - "702854b17b9b": { - "name": "hostedReview.create#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "hostedReview.create" - }, - { - "name": "params", - "value": { - "base": "main", - "body": "Recorded body", - "draft": false, - "head": "feature", - "provider": "github", - "repo": "id:repo42", - "title": "Recorded title", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "", - "isRpcDeliveryUnknown": true - } - } - }, - "fb4429083480": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "", - "ok": false - } - } - }, - "recording": { - "scenario": "sc-create-rejected-empty-message", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["702854b17b9b"], - "payloads": ["38143ba8e1d0"], - "settlements": { - "create": "fb4429083480" - }, - "state": "3c6a5a164e8a", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json deleted file mode 100644 index ba0a4e4bfa5..00000000000 --- a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.hosted-review-eligibility", - "family": "hostedReview.eligibility", - "namedDeltas": [], - "values": { - "24bd84c9fb40": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "blockedReason": { - "$rpc": "null" - }, - "body": "Host body", - "canCreate": true, - "defaultBaseRef": "main", - "nextAction": { - "$rpc": "null" - }, - "provider": "gitlab", - "reviewLookupOutcome": "none", - "title": "Host title" - } - }, - "2cbc383a17fc": { - "eligibility": { - "blockedReason": { - "$rpc": "null" - }, - "body": "Host body", - "canCreate": true, - "defaultBaseRef": "main", - "nextAction": { - "$rpc": "null" - }, - "provider": "gitlab", - "reviewLookupOutcome": "none", - "title": "Host title" - }, - "prefill": "unresolved" - }, - "482bc172202f": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "hostedReview.getCreationEligibility" - }, - { - "name": "params", - "value": { - "base": { - "$rpc": "null" - }, - "branch": "feature", - "linkedGitHubPR": { - "$rpc": "null" - }, - "linkedGitLabMR": { - "$rpc": "null" - }, - "repo": "id:repo42", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "485a0942bda3": { - "eligibility": "unfetched", - "prefill": "unresolved" - }, - "8bbf03da5e8d": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.getCreationEligibility\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"branch\":\"feature\",\"base\":null,\"linkedGitHubPR\":null,\"linkedGitLabMR\":null}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "ef2ac85133d3": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "hostedReview.getCreationEligibility" - }, - { - "name": "params", - "value": { - "base": { - "$rpc": "null" - }, - "branch": "feature", - "linkedGitHubPR": { - "$rpc": "null" - }, - "linkedGitLabMR": { - "$rpc": "null" - }, - "repo": "id:repo42", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "blockedReason": { - "$rpc": "null" - }, - "body": "Host body", - "canCreate": true, - "defaultBaseRef": "main", - "nextAction": { - "$rpc": "null" - }, - "provider": "gitlab", - "reviewLookupOutcome": "none", - "title": "Host title" - } - } - } - } - }, - "recording": { - "scenario": "sc-eligibility-fetched", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": ["482bc172202f"], - "payloads": ["8bbf03da5e8d"], - "settlements": { - "fetch": "9270aeb7d9c6" - }, - "state": "485a0942bda3", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["ef2ac85133d3"], - "payloads": ["8bbf03da5e8d"], - "settlements": { - "fetch": "24bd84c9fb40" - }, - "state": "2cbc383a17fc", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-history-branch-commits.json b/mobile/rpc-foundation/goldens/sc-history-branch-commits.json deleted file mode 100644 index 4f3d446327f..00000000000 --- a/mobile/rpc-foundation/goldens/sc-history-branch-commits.json +++ /dev/null @@ -1,329 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.history-branch-commits", - "family": "git.history-branch-commits", - "namedDeltas": [], - "values": { - "006a91b993e0": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "2325497ad5bc": { - "commitRow": ["first", "aaaaaaa · dev · 1h"], - "crash": { - "$rpc": "null" - }, - "elements": { - "FlatList": 1, - "View": 1 - }, - "labels": [], - "text": [] - }, - "337dba1b9080": { - "name": "git.history#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "git.history" - }, - { - "name": "params", - "value": { - "baseRef": "origin/main", - "branchOnly": true, - "limit": 50, - "skip": 0, - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "branch": { - "ahead": 1, - "baseRef": { - "id": "refs/remotes/origin/main", - "name": "origin/main" - }, - "behind": 2, - "unpushed": 1 - }, - "hasMore": false, - "items": [ - { - "author": "dev", - "displayId": "aaaaaaa", - "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", - "message": "first\n\nExplains the change.\n\nCo-authored-by: Pair ", - "parentIds": ["bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"], - "pushed": false, - "statistics": { - "deletions": 1, - "files": 2, - "insertions": 13 - }, - "subject": "first", - "timestamp": 1767222000000 - } - ], - "skip": 0 - } - } - } - }, - "3b589774484d": { - "name": "worktree.show#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main" - } - } - } - } - }, - "5ad8bfe89483": { - "commitRow": "unrendered", - "crash": { - "$rpc": "null" - }, - "elements": { - "ActivityIndicator": 1, - "Text": 1, - "View": 2 - }, - "labels": [], - "text": ["Loading commits…"] - }, - "5ff1385fce3c": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "id": "repo42", - "worktreeBaseRef": { - "$rpc": "null" - } - } - ] - } - } - } - }, - "62fe63a20a07": { - "name": "worktree.show#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "b1d31f6bf592": { - "name": "git.history#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"git.history\",\"params\":{\"worktree\":\"id:repo42::/p\",\"limit\":50,\"skip\":0,\"baseRef\":\"origin/main\",\"branchOnly\":true}}" - }, - "c2424f466a69": { - "name": "git.history#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "git.history" - }, - { - "name": "params", - "value": { - "baseRef": "origin/main", - "branchOnly": true, - "limit": 50, - "skip": 0, - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "d45289c61d23": { - "name": "history.open-commit", - "ordinal": 7, - "value": { - "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - } - }, - "d64700b9de3b": { - "name": "repo.list#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "dfcd2e1792cb": { - "name": "worktree.show#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "sc-history-branch-commits", - "checkpoints": [ - { - "id": "base-pending", - "observation": { - "sender": ["62fe63a20a07", "006a91b993e0"], - "payloads": ["dfcd2e1792cb", "d64700b9de3b"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "5ad8bfe89483", - "effects": [] - } - }, - { - "id": "history-pending", - "observation": { - "sender": ["3b589774484d", "5ff1385fce3c", "c2424f466a69"], - "payloads": ["dfcd2e1792cb", "d64700b9de3b", "b1d31f6bf592"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "5ad8bfe89483", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["3b589774484d", "5ff1385fce3c", "337dba1b9080"], - "payloads": ["dfcd2e1792cb", "d64700b9de3b", "b1d31f6bf592"], - "settlements": { - "mount": "eb79a9b3682a", - "open": "eb79a9b3682a" - }, - "state": "2325497ad5bc", - "effects": ["d45289c61d23"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json deleted file mode 100644 index 9fbe322ab53..00000000000 --- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.hosted-review-eligibility", - "family": "hostedReview.eligibility", - "namedDeltas": [], - "values": { - "478df34536dc": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "base": "main", - "blockedReason": { - "$rpc": "null" - }, - "body": "", - "nextAction": { - "$rpc": "null" - }, - "provider": "github", - "reviewLookupOutcome": "unavailable", - "title": "Recorded title" - } - }, - "8bbf03da5e8d": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.getCreationEligibility\",\"params\":{\"repo\":\"id:repo42\",\"worktree\":\"id:repo42::/p\",\"branch\":\"feature\",\"base\":null,\"linkedGitHubPR\":null,\"linkedGitLabMR\":null}}" - }, - "a0eed8835645": { - "name": "hostedReview.getCreationEligibility#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "hostedReview.getCreationEligibility" - }, - { - "name": "params", - "value": { - "base": { - "$rpc": "null" - }, - "branch": "feature", - "linkedGitHubPR": { - "$rpc": "null" - }, - "linkedGitLabMR": { - "$rpc": "null" - }, - "repo": "id:repo42", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "transport failure", - "isRpcDeliveryUnknown": true - } - } - }, - "ac13623773fe": { - "eligibility": "unfetched", - "prefill": { - "base": "main", - "blockedReason": { - "$rpc": "null" - }, - "body": "", - "nextAction": { - "$rpc": "null" - }, - "provider": "github", - "reviewLookupOutcome": "unavailable", - "title": "Recorded title" - } - } - }, - "recording": { - "scenario": "sc-prefill-unavailable-on-rejection", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["a0eed8835645"], - "payloads": ["8bbf03da5e8d"], - "settlements": { - "prefill": "478df34536dc" - }, - "state": "ac13623773fe", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json deleted file mode 100644 index 7d2f553452f..00000000000 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.remote-prerequisite", - "family": "git.remote-prerequisite", - "namedDeltas": [], - "values": { - "00e8a3bac22f": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "ran": true - } - }, - "03b4110a11c7": { - "name": "git.push#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.push\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - }, - "0fe2eb2410a4": { - "outcome": { - "ok": true, - "ran": true - } - }, - "1cfd4ed2f051": { - "name": "progress", - "ordinal": 1, - "value": "pushing" - }, - "7fbeade80602": { - "name": "git.push#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "git.push" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "c1ca3b60f701": { - "name": "git.push#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "git.push" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "cf19981c2114": { - "outcome": "unapplied" - } - }, - "recording": { - "scenario": "sc-prerequisite-push", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": ["c1ca3b60f701"], - "payloads": ["03b4110a11c7"], - "settlements": { - "apply": "9270aeb7d9c6" - }, - "state": "cf19981c2114", - "effects": ["1cfd4ed2f051"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["7fbeade80602"], - "payloads": ["03b4110a11c7"], - "settlements": { - "apply": "00e8a3bac22f" - }, - "state": "0fe2eb2410a4", - "effects": ["1cfd4ed2f051"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json deleted file mode 100644 index 7a96be5a02f..00000000000 --- a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "namedDeltas": [], - "values": { - "342343f97688": { - "name": "git.commit#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.commit\",\"params\":{\"worktree\":\"id:repo42::/p\",\"message\":\"recorded message\"}}" - }, - "45f289a0f3ae": { - "committed": { - "error": "Commit failed", - "ok": false - }, - "status": "unread" - }, - "9dac5d637ed4": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Commit failed", - "ok": false - } - }, - "b14d9ec6b441": { - "name": "git.commit#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.commit" - }, - { - "name": "params", - "value": { - "message": "recorded message", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "internal", - "message": "" - }, - "id": "frame-1", - "ok": false - } - } - } - }, - "recording": { - "scenario": "sc-review-commit-refused-empty-message", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["b14d9ec6b441"], - "payloads": ["342343f97688"], - "settlements": { - "commit": "9dac5d637ed4" - }, - "state": "45f289a0f3ae", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json deleted file mode 100644 index c108efe47c7..00000000000 --- a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "namedDeltas": [], - "values": { - "342343f97688": { - "name": "git.commit#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.commit\",\"params\":{\"worktree\":\"id:repo42::/p\",\"message\":\"recorded message\"}}" - }, - "465d78c22406": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "connection lost", - "ok": false - } - }, - "7c923ba16626": { - "committed": { - "error": "connection lost", - "ok": false - }, - "status": "unread" - }, - "b5383f4d86af": { - "name": "git.commit#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.commit" - }, - { - "name": "params", - "value": { - "message": "recorded message", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "connection lost", - "isRpcDeliveryUnknown": true - } - } - } - }, - "recording": { - "scenario": "sc-review-commit-rejected", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["b5383f4d86af"], - "payloads": ["342343f97688"], - "settlements": { - "commit": "465d78c22406" - }, - "state": "7c923ba16626", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-review-commit.json b/mobile/rpc-foundation/goldens/sc-review-commit.json deleted file mode 100644 index 990308832f9..00000000000 --- a/mobile/rpc-foundation/goldens/sc-review-commit.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "namedDeltas": [], - "values": { - "17bb401abe83": { - "committed": { - "ok": true - }, - "status": "unread" - }, - "2a7ee2985949": { - "name": "git.commit#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.commit" - }, - { - "name": "params", - "value": { - "message": "recorded message", - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "commit": "abc1234", - "success": true - } - } - } - }, - "342343f97688": { - "name": "git.commit#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.commit\",\"params\":{\"worktree\":\"id:repo42::/p\",\"message\":\"recorded message\"}}" - }, - "fbc958e4d46e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true - } - } - }, - "recording": { - "scenario": "sc-review-commit", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["2a7ee2985949"], - "payloads": ["342343f97688"], - "settlements": { - "commit": "fbc958e4d46e" - }, - "state": "17bb401abe83", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json deleted file mode 100644 index 6729e504a3f..00000000000 --- a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json +++ /dev/null @@ -1,300 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "namedDeltas": [], - "values": { - "1858779f58e9": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "branch": "feature", - "entries": [ - { - "area": "staged", - "path": "src/app.ts", - "status": "modified" - }, - { - "area": "untracked", - "path": "src/new.ts", - "status": "untracked" - } - ], - "head": "abc1234", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - } - }, - "8601995022f5": { - "name": "git.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "git.status" - }, - { - "name": "params", - "value": { - "worktree": "id:repo42::/p" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "95c11f23ad0d": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [ - { - "added": { - "$rpc": "undefined" - }, - "area": "staged", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/app.ts", - "removed": { - "$rpc": "undefined" - }, - "status": "modified", - "submodule": { - "$rpc": "undefined" - }, - "submoduleRoot": { - "$rpc": "undefined" - } - }, - { - "added": { - "$rpc": "undefined" - }, - "area": "untracked", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/new.ts", - "removed": { - "$rpc": "undefined" - }, - "status": "untracked", - "submodule": { - "$rpc": "undefined" - }, - "submoduleRoot": { - "$rpc": "undefined" - } - } - ], - "head": "abc1234", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - } - } - }, - "ac07554f62ad": { - "committed": "uncommitted", - "status": "unread" - }, - "ace37e236a18": { - "committed": "uncommitted", - "status": { - "ok": true, - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [ - { - "added": { - "$rpc": "undefined" - }, - "area": "staged", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/app.ts", - "removed": { - "$rpc": "undefined" - }, - "status": "modified", - "submodule": { - "$rpc": "undefined" - }, - "submoduleRoot": { - "$rpc": "undefined" - } - }, - { - "added": { - "$rpc": "undefined" - }, - "area": "untracked", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/new.ts", - "removed": { - "$rpc": "undefined" - }, - "status": "untracked", - "submodule": { - "$rpc": "undefined" - }, - "submoduleRoot": { - "$rpc": "undefined" - } - } - ], - "head": "abc1234", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - } - } - }, - "ddee63fd3bf5": { - "name": "git.status#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"git.status\",\"params\":{\"worktree\":\"id:repo42::/p\"}}" - } - }, - "recording": { - "scenario": "sc-review-status-normalized", - "checkpoints": [ - { - "id": "pending", - "observation": { - "sender": ["8601995022f5"], - "payloads": ["ddee63fd3bf5"], - "settlements": { - "status": "9270aeb7d9c6" - }, - "state": "ac07554f62ad", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["1858779f58e9"], - "payloads": ["ddee63fd3bf5"], - "settlements": { - "status": "95c11f23ad0d" - }, - "state": "ace37e236a18", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/schedules-b3.json b/mobile/rpc-foundation/goldens/schedules-b3.json deleted file mode 100644 index 3d84cdf4f0b..00000000000 --- a/mobile/rpc-foundation/goldens/schedules-b3.json +++ /dev/null @@ -1,759 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "linear.issue-detail", - "family": "linear-detail-barrier", - "namedDeltas": [], - "values": { - "0056f47b204a": { - "name": "linear.getIssue#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "linear.getIssue" - }, - { - "name": "params", - "value": { - "id": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "1127f274b58c": { - "name": "linear.getIssue#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "linear.getIssue" - }, - { - "name": "params", - "value": { - "id": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: linear.getIssue", - "isRpcDeliveryUnknown": true - } - } - }, - "1d3774209877": { - "name": "linear.issueComments#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "linear.issueComments" - }, - { - "name": "params", - "value": { - "issueId": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "comments transport error", - "isRpcDeliveryUnknown": true - } - } - }, - "1eaad537f925": { - "name": "linear.getIssue#1", - "ordinal": 6, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.getIssue\",\"params\":{\"id\":\"issue-1\",\"workspaceId\":\"linear-workspace\"}}" - }, - "24f3de063dfd": { - "error": "linear.issueComments#1 rejected", - "loading": false, - "payload": { - "$rpc": "null" - } - }, - "264010756b38": { - "name": "detailLoading", - "ordinal": 3, - "value": true - }, - "325dc4e1af5c": { - "name": "linear.issueComments#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "linear.issueComments" - }, - { - "name": "params", - "value": { - "issueId": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "33614c90b6eb": { - "name": "detailPayload", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "42903545f0f8": { - "error": "comments transport error", - "loading": false, - "payload": { - "$rpc": "null" - } - }, - "44556e4bd91e": { - "name": "linear.issueComments#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "linear.issueComments" - }, - { - "name": "params", - "value": { - "issueId": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "linear.issueComments#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "485053bffe22": { - "name": "linear.getIssue#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "linear.getIssue" - }, - { - "name": "params", - "value": { - "id": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "51ea77da7dbd": { - "name": "detailError", - "ordinal": 8, - "value": "comments transport error" - }, - "5f9cfa2482e9": { - "name": "detailError", - "ordinal": 8, - "value": "linear.issueComments#1 rejected" - }, - "780aaf1d97be": { - "error": "", - "loading": true, - "payload": { - "$rpc": "null" - } - }, - "7d8d46d494ff": { - "name": "linear.issueComments#1", - "ordinal": 7, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.issueComments\",\"params\":{\"issueId\":\"issue-1\",\"workspaceId\":\"linear-workspace\"}}" - }, - "881cdeb6ce57": { - "name": "detailError", - "ordinal": 8, - "value": "RPC interrupted by connection migration" - }, - "88573133f7d5": { - "error": "RPC interrupted by connection migration", - "loading": false, - "payload": { - "$rpc": "null" - } - }, - "8aacae6d3ab3": { - "name": "detailError", - "ordinal": 8, - "value": "Request timed out: linear.getIssue" - }, - "8ccd4fa759a5": { - "name": "detailLoading", - "ordinal": 9, - "value": false - }, - "a4f1a8696a24": { - "name": "detailError", - "ordinal": 2, - "value": "" - }, - "a778223fed77": { - "error": "linear.getIssue#1 rejected", - "loading": false, - "payload": { - "$rpc": "null" - } - }, - "b1228a23df33": { - "name": "linear.getIssue#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "linear.getIssue" - }, - { - "name": "params", - "value": { - "id": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "b6399147a999": { - "name": "linear.getIssue#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "linear.getIssue" - }, - { - "name": "params", - "value": { - "id": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "linear.getIssue#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "c834373cd824": { - "name": "detailError", - "ordinal": 8, - "value": "Connection lost" - }, - "d3dc79e5717b": { - "name": "linear.getIssue#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "linear.getIssue" - }, - { - "name": "params", - "value": { - "id": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "issue refused" - }, - "id": "frame-1", - "ok": false - } - } - }, - "d40dd5c93d21": { - "error": "Connection lost", - "loading": false, - "payload": { - "$rpc": "null" - } - }, - "de8da0e14206": { - "name": "linear.issueComments#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "linear.issueComments" - }, - { - "name": "params", - "value": { - "issueId": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "dfab6810321b": { - "name": "linear.issueComments#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "linear.issueComments" - }, - { - "name": "params", - "value": { - "issueId": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: linear.issueComments", - "isRpcDeliveryUnknown": true - } - } - }, - "ea4a4f6523e7": { - "name": "linear.issueComments#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "linear.issueComments" - }, - { - "name": "params", - "value": { - "issueId": "issue-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f2c4f4180915": { - "name": "detailError", - "ordinal": 8, - "value": "linear.getIssue#1 rejected" - }, - "fc6d55bc97ed": { - "error": "Request timed out: linear.getIssue", - "loading": false, - "payload": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "schedules-b3", - "checkpoints": [ - { - "id": "b3.forward:sibling-pending", - "observation": { - "sender": ["d3dc79e5717b", "ea4a4f6523e7"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "780aaf1d97be", - "effects": ["33614c90b6eb", "a4f1a8696a24", "264010756b38"] - } - }, - { - "id": "b3.forward:settled", - "observation": { - "sender": ["d3dc79e5717b", "1d3774209877"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "42903545f0f8", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "51ea77da7dbd", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.reverse:sibling-pending", - "observation": { - "sender": ["0056f47b204a", "1d3774209877"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "42903545f0f8", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "51ea77da7dbd", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.reverse:settled", - "observation": { - "sender": ["d3dc79e5717b", "1d3774209877"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "42903545f0f8", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "51ea77da7dbd", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.both-reject-forward:sibling-pending", - "observation": { - "sender": ["b6399147a999", "ea4a4f6523e7"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "a778223fed77", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "f2c4f4180915", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.both-reject-forward:settled", - "observation": { - "sender": ["b6399147a999", "44556e4bd91e"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "a778223fed77", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "f2c4f4180915", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.both-reject-reverse:sibling-pending", - "observation": { - "sender": ["0056f47b204a", "44556e4bd91e"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "24f3de063dfd", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "5f9cfa2482e9", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.both-reject-reverse:settled", - "observation": { - "sender": ["b6399147a999", "44556e4bd91e"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "24f3de063dfd", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "5f9cfa2482e9", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.reject-peer-pending:sibling-pending", - "observation": { - "sender": ["b6399147a999", "ea4a4f6523e7"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "a778223fed77", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "f2c4f4180915", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.reject-peer-pending:settled", - "observation": { - "sender": ["b6399147a999", "ea4a4f6523e7"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "a778223fed77", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "f2c4f4180915", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.timeout:settled", - "observation": { - "sender": ["1127f274b58c", "dfab6810321b"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "fc6d55bc97ed", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "8aacae6d3ab3", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.disconnect:settled", - "observation": { - "sender": ["485053bffe22", "325dc4e1af5c"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a", - "disconnect": "eb79a9b3682a" - }, - "state": "d40dd5c93d21", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "c834373cd824", - "8ccd4fa759a5" - ] - } - }, - { - "id": "b3.client-cutover:settled", - "observation": { - "sender": ["b1228a23df33", "de8da0e14206"], - "payloads": ["1eaad537f925", "7d8d46d494ff"], - "settlements": { - "mount": "eb79a9b3682a", - "cutover": "eb79a9b3682a" - }, - "state": "88573133f7d5", - "effects": [ - "33614c90b6eb", - "a4f1a8696a24", - "264010756b38", - "881cdeb6ce57", - "8ccd4fa759a5" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json deleted file mode 100644 index 1937c9e6229..00000000000 --- a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json +++ /dev/null @@ -1,695 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.new-tab-agents", - "family": "settings-agent-read", - "namedDeltas": [], - "values": { - "02188f091419": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [] - } - } - } - } - }, - "1c2564f1daca": { - "name": "settings.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "3cac466cd7ee": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "44136fa355b3": {}, - "51d4cb56be85": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "6d0209806267": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - }, - "7023dde78391": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "repos": [ - { - "connectionId": "ssh-1", - "id": "repo-1" - } - ] - } - } - } - }, - "7e9a4c0e6082": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings.get#1 rejected", - "isRpcDeliveryUnknown": true - } - }, - "7e9eedbb267f": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "8277c8a13a15": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: settings.get", - "isRpcDeliveryUnknown": true - } - }, - "9058971b9337": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: preflight.detectRemoteAgents", - "isRpcDeliveryUnknown": true - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "95a3d59bc187": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": ["codex", "claude"] - } - } - }, - "a05ac6b15c2d": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" - }, - "adabd410f1bc": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings.get#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "b27c85677730": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "agent": "codex", - "label": "Codex" - }, - { - "agent": "claude", - "label": "Claude" - } - ] - }, - "be0c6d8ba1f9": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "c5b670e82bb4": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "d58a51553d50": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - }, - "e0eef7c9fafe": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "e465a7e0746d": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "preflight.detectRemoteAgents#1 rejected", - "isRpcDeliveryUnknown": true - } - }, - "e56f41c68af0": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "preflight.detectRemoteAgents#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f6928aa5b0ba": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: settings.get", - "isRpcDeliveryUnknown": true - } - } - }, - "fdf6a3099c89": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - } - }, - "recording": { - "scenario": "schedules-settings-new-tab-ssh", - "checkpoints": [ - { - "id": "settings-new-tab-ssh.forward:sibling-pending", - "observation": { - "sender": ["7023dde78391", "02188f091419", "be0c6d8ba1f9"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "9270aeb7d9c6" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.forward:settled", - "observation": { - "sender": ["7023dde78391", "02188f091419", "95a3d59bc187"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "b27c85677730" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.reverse:sibling-pending", - "observation": { - "sender": ["7023dde78391", "51d4cb56be85", "95a3d59bc187"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "9270aeb7d9c6" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.reverse:settled", - "observation": { - "sender": ["7023dde78391", "02188f091419", "95a3d59bc187"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "b27c85677730" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.both-reject-forward:sibling-pending", - "observation": { - "sender": ["7023dde78391", "adabd410f1bc", "be0c6d8ba1f9"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "7e9a4c0e6082" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.both-reject-forward:settled", - "observation": { - "sender": ["7023dde78391", "adabd410f1bc", "e56f41c68af0"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "7e9a4c0e6082" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.both-reject-reverse:sibling-pending", - "observation": { - "sender": ["7023dde78391", "51d4cb56be85", "e56f41c68af0"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "e465a7e0746d" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.both-reject-reverse:settled", - "observation": { - "sender": ["7023dde78391", "adabd410f1bc", "e56f41c68af0"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "e465a7e0746d" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.reject-peer-pending:sibling-pending", - "observation": { - "sender": ["7023dde78391", "adabd410f1bc", "be0c6d8ba1f9"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "7e9a4c0e6082" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.reject-peer-pending:settled", - "observation": { - "sender": ["7023dde78391", "adabd410f1bc", "be0c6d8ba1f9"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "7e9a4c0e6082" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.timeout:settled", - "observation": { - "sender": ["7023dde78391", "f6928aa5b0ba", "9058971b9337"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "8277c8a13a15" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.disconnect:settled", - "observation": { - "sender": ["7023dde78391", "c5b670e82bb4", "3cac466cd7ee"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "6d0209806267", - "disconnect": "eb79a9b3682a" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settings-new-tab-ssh.client-cutover:settled", - "observation": { - "sender": ["7023dde78391", "fdf6a3099c89", "7e9eedbb267f"], - "payloads": ["e0eef7c9fafe", "1c2564f1daca", "a05ac6b15c2d"], - "settlements": { - "load": "d58a51553d50", - "cutover": "eb79a9b3682a" - }, - "state": "44136fa355b3", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json deleted file mode 100644 index 8b602d23024..00000000000 --- a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json +++ /dev/null @@ -1,1230 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "namedDeltas": [], - "values": { - "08124c6d14ec": { - "name": "streams-registered-at-teardown", - "ordinal": 16, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - }, - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#2" - } - ] - }, - "091af476e5cc": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 9, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}" - }, - "20200b8feac4": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "platform": "linux" - } - } - } - }, - "21069b5e026b": { - "name": "streams-registered-at-teardown", - "ordinal": 15, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "353f0cb8ea69": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "37521eb2eef2": { - "name": "runtime.clientEvents.subscribe#2", - "ordinal": 12, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "455c68e82d1a": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - }, - "4578d91f2dd3": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "host.platform#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "564f54c8d902": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "56ab81cb67dc": { - "name": "hostLabelById", - "ordinal": 13, - "value": [["ssh:ssh-1", "SSH"]] - }, - "5e0ee4c76136": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "6063e534d9db": { - "name": "hostHealthById", - "ordinal": 13, - "value": [] - }, - "68916f125c3c": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "6d43117882f3": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "hostHealthById": [], - "hostLabelById": [["ssh:ssh-1", "SSH"]], - "hostPlatform": "linux", - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "76c784c63522": { - "name": "streams-registered-at-teardown", - "ordinal": 12, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "7999924c608c": { - "name": "settings.get#1", - "ordinal": 10, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "80e40a970f99": { - "name": "host.platform#1", - "ordinal": 11, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}" - }, - "84c1dde54c62": { - "name": "hostHealthById", - "ordinal": 12, - "value": [] - }, - "8cfdd18c5fe6": { - "name": "repoHostIdByRepoId", - "ordinal": 8, - "value": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "8e76374272ce": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - } - } - } - } - }, - "8ee028bc34fd": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: settings.get", - "isRpcDeliveryUnknown": true - } - } - }, - "913d2a349d4d": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "ssh.listTargetSummaries" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - } - }, - "9d20695fdb34": { - "name": "hostPlatform", - "ordinal": 15, - "value": { - "$rpc": "null" - } - }, - "b2746491ac07": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "afterSnapshotId": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "connectionId": { - "$rpc": "null" - }, - "displayName": "Local", - "id": "repo-1" - }, - { - "connectionId": "ssh-1", - "displayName": "Remote", - "id": "repo-2" - } - ] - } - } - } - }, - "bb52caf215f6": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "bea13a4a2e87": { - "name": "hostLabelById", - "ordinal": 14, - "value": [["ssh:ssh-1", "SSH"]] - }, - "beb4ddf549da": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\",\"params\":{\"afterSnapshotId\":null}}" - }, - "d2692bd43ef0": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "d88cba4e044f": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "hostHealthById": [], - "hostLabelById": [["ssh:ssh-1", "SSH"]], - "hostPlatform": { - "$rpc": "null" - }, - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "d983dca3bcc1": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: host.platform", - "isRpcDeliveryUnknown": true - } - } - }, - "e4b24d9ceb7b": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "e7b605a67b1f": { - "name": "desktopRepos", - "ordinal": 7, - "value": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ] - }, - "e9480602a4c6": { - "name": "hostPlatform", - "ordinal": 14, - "value": { - "$rpc": "null" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eeecd54446b9": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings.get#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "eef1ee3c2773": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "f9193cae5824": { - "name": "hostPlatform", - "ordinal": 14, - "value": "linux" - } - }, - "recording": { - "scenario": "schedules-settings-repo-metadata-fulfilled", - "checkpoints": [ - { - "id": "settings-repo-metadata-fulfilled.forward:sibling-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8e76374272ce", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settings-repo-metadata-fulfilled.forward:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8e76374272ce", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.forward:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8e76374272ce", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824", - "21069b5e026b" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.reverse:sibling-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "353f0cb8ea69", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settings-repo-metadata-fulfilled.reverse:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8e76374272ce", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.reverse:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8e76374272ce", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824", - "21069b5e026b" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.both-reject-forward:sibling-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settings-repo-metadata-fulfilled.both-reject-forward:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "4578d91f2dd3"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.both-reject-forward:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "4578d91f2dd3"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6", - "21069b5e026b" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.both-reject-reverse:sibling-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "353f0cb8ea69", "4578d91f2dd3"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settings-repo-metadata-fulfilled.both-reject-reverse:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "4578d91f2dd3"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.both-reject-reverse:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "4578d91f2dd3"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6", - "21069b5e026b" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.reject-peer-pending:sibling-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settings-repo-metadata-fulfilled.reject-peer-pending:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settings-repo-metadata-fulfilled.reject-peer-pending:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "eeecd54446b9", "455c68e82d1a"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6", "76c784c63522"] - } - }, - { - "id": "settings-repo-metadata-fulfilled.timeout:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8ee028bc34fd", "d983dca3bcc1"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.timeout:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8ee028bc34fd", "d983dca3bcc1"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6", - "21069b5e026b" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.disconnect:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "e4b24d9ceb7b", "5e0ee4c76136"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a", - "disconnect": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.disconnect:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "e4b24d9ceb7b", "5e0ee4c76136"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a", - "disconnect": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "e9480602a4c6", - "21069b5e026b" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.client-cutover:settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "d2692bd43ef0", "bb52caf215f6"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99", - "37521eb2eef2" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a", - "cutover": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "6063e534d9db", - "bea13a4a2e87", - "9d20695fdb34" - ] - } - }, - { - "id": "settings-repo-metadata-fulfilled.client-cutover:cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "d2692bd43ef0", "bb52caf215f6"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99", - "37521eb2eef2" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a", - "cutover": "eb79a9b3682a" - }, - "state": "d88cba4e044f", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "6063e534d9db", - "bea13a4a2e87", - "9d20695fdb34", - "08124c6d14ec" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json deleted file mode 100644 index c3f48169024..00000000000 --- a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json +++ /dev/null @@ -1,2210 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.task-hydration", - "family": "settings.task-hydration", - "namedDeltas": [], - "values": { - "05ccd79ba4af": { - "name": "linear.status#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "0919c52e10c6": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "0ebb7f0660a0": { - "name": "showLinearTeamPicker", - "ordinal": 4, - "value": false - }, - "1305e04da46a": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "15cdb7759e6b": { - "name": "ui.get#1", - "ordinal": 41, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}" - }, - "1833d0fa5f1d": { - "name": "jira.status#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "19505460d94b": { - "name": "githubMode", - "ordinal": 55, - "value": "items" - }, - "1a1091da11b2": { - "name": "githubProjectSettings", - "ordinal": 61, - "value": { - "activeProject": { - "$rpc": "null" - }, - "lastViewByProject": {}, - "pinned": [], - "recent": [] - } - }, - "1dfcd3f6163d": { - "name": "preflight.check#1", - "ordinal": 37, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "1f343058c9bd": { - "name": "tasksSupportState", - "ordinal": 45, - "value": { - "client": "logical-client", - "kind": "unknown" - } - }, - "20ef49331589": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: ui.get", - "isRpcDeliveryUnknown": true - } - } - }, - "22b355deb2df": { - "name": "provider", - "ordinal": 54, - "value": "github" - }, - "26ece795530e": { - "name": "showGitHubIssueSourcePicker", - "ordinal": 14, - "value": false - }, - "276a60ed41a5": { - "name": "mergeMethodTaskItem", - "ordinal": 28, - "value": { - "$rpc": "null" - } - }, - "2aad05f979a9": { - "name": "selectedRepoIds", - "ordinal": 52, - "value": [] - }, - "2b39b469a001": { - "name": "pendingGitHubProjectViewSelection", - "ordinal": 19, - "value": { - "$rpc": "null" - } - }, - "2bf05835527f": { - "name": "showLinearFilterPicker", - "ordinal": 11, - "value": false - }, - "2c3706d59dd5": { - "name": "linearTeams", - "ordinal": 49, - "value": [] - }, - "2d9ce55cc13a": { - "name": "query", - "ordinal": 62, - "value": "is:issue is:open" - }, - "301bdbdf1dec": { - "name": "taskStateHydrated", - "ordinal": 1, - "value": false - }, - "302df5159005": { - "name": "jira.status#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: jira.status", - "isRpcDeliveryUnknown": true - } - } - }, - "3082bf4965fa": { - "name": "selectedLinearWorkspaceId", - "ordinal": 51, - "value": { - "$rpc": "null" - } - }, - "32b1c27f9f78": { - "name": "taskStateHydrated", - "ordinal": 47, - "value": false - }, - "330e27e080b0": { - "name": "error", - "ordinal": 44, - "value": "settings.get#1 rejected" - }, - "354e99da4ba4": { - "name": "pendingHostedStateChange", - "ordinal": 27, - "value": { - "$rpc": "null" - } - }, - "37e9eb7f2e21": { - "name": "preflight.check#1", - "ordinal": 37, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "394fb5675266": { - "name": "mergeMethodProjectRow", - "ordinal": 29, - "value": { - "$rpc": "null" - } - }, - "3a03e162efd9": { - "name": "selectedLinearTeamIds", - "ordinal": 50, - "value": [] - }, - "3a94dcc00915": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "3c66c971fe96": { - "name": "showGitHubProjectViewPicker", - "ordinal": 17, - "value": false - }, - "3d31b2fc3a47": { - "name": "jiraConnection", - "ordinal": 47, - "value": { - "connected": false, - "credentialError": { - "$rpc": "null" - }, - "selection": { - "$rpc": "null" - }, - "sites": [], - "unavailableReason": { - "$rpc": "null" - } - } - }, - "3ff235330cbe": { - "name": "jiraFilter", - "ordinal": 60, - "value": "assigned" - }, - "4075b6316e30": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "ui.get#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "40f00017ad77": { - "name": "linearWorkspaces", - "ordinal": 48, - "value": [] - }, - "42c4d0584b72": { - "name": "error", - "ordinal": 45, - "value": "Connection lost" - }, - "430c28cba43c": { - "name": "taskStateHydrated", - "ordinal": 64, - "value": true - }, - "43f5e0efb7d5": { - "name": "jira.status#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "4526d5d74acb": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings.get#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "45cfb5ee97ea": { - "name": "pendingHostedMerge", - "ordinal": 25, - "value": { - "$rpc": "null" - } - }, - "45e466d86a07": { - "name": "showLinearWorkspacePicker", - "ordinal": 3, - "value": false - }, - "4a0377b4ac3c": { - "name": "jira.status#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "4cbaceb42c08": { - "name": "detailPayload", - "ordinal": 21, - "value": { - "$rpc": "null" - } - }, - "4fe7877fc963": { - "name": "error", - "ordinal": 45, - "value": "RPC interrupted by connection migration" - }, - "525789d7c3fa": { - "name": "linear.status#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "57087f926eaf": { - "name": "preflight.check#1", - "ordinal": 37, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: preflight.check", - "isRpcDeliveryUnknown": true - } - } - }, - "5729b7cdb4ba": { - "name": "showFilterSheet", - "ordinal": 12, - "value": false - }, - "57568fbaf4f7": { - "name": "linearConnected", - "ordinal": 47, - "value": false - }, - "5886b76643d9": { - "name": "appliedQuery", - "ordinal": 63, - "value": "is:issue is:open" - }, - "58c52d8b7c76": { - "hydrated": true, - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - } - }, - "5c7f665de6c4": { - "name": "githubPreset", - "ordinal": 57, - "value": "issues" - }, - "600862ad27b3": { - "name": "githubProjectHiddenFieldIdsByView", - "ordinal": 46, - "value": {} - }, - "688fe01c6196": { - "name": "jira.status#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "connected": false - } - } - } - }, - "714d4b3547ff": { - "name": "projectRepoNotInOrca", - "ordinal": 20, - "value": { - "$rpc": "null" - } - }, - "71bedad13169": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "74d8785ba556": { - "name": "linear.status#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: linear.status", - "isRpcDeliveryUnknown": true - } - } - }, - "756c11d6e5bc": { - "name": "settings.get#1", - "ordinal": 40, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "7b0ad7b958dd": { - "name": "tasksSupportState", - "ordinal": 2, - "value": { - "client": "logical-client", - "kind": "unknown" - } - }, - "800b1afcceea": { - "name": "preflight.check#1", - "ordinal": 37, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "glab": { - "installed": false - } - } - } - } - }, - "8015a69c7774": { - "name": "showGitLabFilterPicker", - "ordinal": 10, - "value": false - }, - "82daca007272": { - "name": "jiraConnection", - "ordinal": 65, - "value": { - "connected": false, - "credentialError": { - "$rpc": "null" - }, - "selection": { - "$rpc": "null" - }, - "sites": [], - "unavailableReason": { - "$rpc": "null" - } - } - }, - "87bd323da79d": { - "name": "trustedOrcaHooks", - "ordinal": 45, - "value": {} - }, - "8a053731b837": { - "name": "visibleProviders", - "ordinal": 53, - "value": ["github", "linear"] - }, - "8c4056edb811": { - "name": "linear.status#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "connected": false - } - } - } - }, - "8db7a6a7d531": { - "name": "status.get#1", - "ordinal": 30, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "capabilities": ["mobile.tasks.v1"] - } - } - } - }, - "931e8e15095d": { - "name": "showGitHubProjectPicker", - "ordinal": 16, - "value": false - }, - "93acc26335bc": { - "name": "githubKind", - "ordinal": 58, - "value": "issues" - }, - "95d5a2a2f417": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "965996579b8a": { - "name": "preflight.check#1", - "ordinal": 37, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "98281d0e8b13": { - "name": "projectRowDetail", - "ordinal": 22, - "value": { - "$rpc": "null" - } - }, - "9b2188f8d6b7": { - "name": "showGitHubPagePicker", - "ordinal": 15, - "value": false - }, - "9d27c74981a1": { - "name": "error", - "ordinal": 33, - "value": "" - }, - "9f545b97e888": { - "name": "showCreateTargetPicker", - "ordinal": 23, - "value": false - }, - "a103fa2e507b": { - "name": "error", - "ordinal": 44, - "value": "ui.get#1 rejected" - }, - "a20a93879807": { - "name": "jiraConnection", - "ordinal": 44, - "value": { - "connected": false, - "credentialError": { - "$rpc": "null" - }, - "selection": { - "$rpc": "null" - }, - "sites": [], - "unavailableReason": "Update Orca desktop to browse Jira on mobile." - } - }, - "a4b7901e0372": { - "name": "linear.status#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "a5addaab38bf": { - "name": "linearFilter", - "ordinal": 59, - "value": "all" - }, - "aa9af10b3812": { - "name": "preflight.check#1", - "ordinal": 42, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}" - }, - "ab4a6032b0e4": { - "name": "jira.status#1", - "ordinal": 39, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"jira.status\"}" - }, - "ad03aa751af2": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: settings.get", - "isRpcDeliveryUnknown": true - } - } - }, - "ba788c58e435": { - "name": "runtimeTaskSettings", - "ordinal": 44, - "value": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - } - }, - "bbce658fe3f5": { - "name": "showRepoPicker", - "ordinal": 13, - "value": false - }, - "c11fe123ce70": { - "name": "showGitHubProjectFieldsPicker", - "ordinal": 18, - "value": false - }, - "c1630da260c7": { - "name": "showLinearDisplayPicker", - "ordinal": 5, - "value": false - }, - "c32aa6b83185": { - "name": "tasksSupportState", - "ordinal": 46, - "value": { - "client": "logical-client", - "kind": "unknown" - } - }, - "c37873342ba8": { - "name": "linearStatusPickerItem", - "ordinal": 24, - "value": { - "$rpc": "null" - } - }, - "c6178e6a0f4e": { - "hydrated": false, - "settings": {} - }, - "c87109595a65": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "ui": {} - } - } - } - }, - "ccf853380b13": { - "name": "taskStateHydrated", - "ordinal": 46, - "value": false - }, - "d100b9546c3d": { - "name": "showGitHubKindPicker", - "ordinal": 7, - "value": false - }, - "d1af3771ebfa": { - "name": "status.get#1", - "ordinal": 31, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "d208e8015339": { - "name": "showGitHubPresetPicker", - "ordinal": 8, - "value": false - }, - "d50362207233": { - "name": "tasksSupportState", - "ordinal": 32, - "value": { - "client": "logical-client", - "kind": "supported" - } - }, - "d53e8fa810a5": { - "name": "error", - "ordinal": 45, - "value": "Request timed out: settings.get" - }, - "dd6fb20daf67": { - "name": "linear.status#1", - "ordinal": 43, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}" - }, - "e033cf17e121": { - "name": "showGitLabViewPicker", - "ordinal": 9, - "value": false - }, - "e44e17349036": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "e61de5a1b27e": { - "name": "defaultGitHubPreset", - "ordinal": 56, - "value": "issues" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f164de325151": { - "name": "pendingProjectGitHubMerge", - "ordinal": 26, - "value": { - "$rpc": "null" - } - }, - "fdb0bbb8aa59": { - "name": "showLinearConnect", - "ordinal": 6, - "value": false - }, - "ffc5c47817a5": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - } - } - } - } - } - }, - "recording": { - "scenario": "schedules-settings-task-hydration-fulfilled", - "checkpoints": [ - { - "id": "settings-task-hydration-fulfilled.forward:sibling-pending", - "observation": { - "sender": [ - "8db7a6a7d531", - "1833d0fa5f1d", - "ffc5c47817a5", - "71bedad13169", - "1dfcd3f6163d", - "05ccd79ba4af" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.forward:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "688fe01c6196", - "ffc5c47817a5", - "c87109595a65", - "800b1afcceea", - "8c4056edb811" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "58c52d8b7c76", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "ba788c58e435", - "87bd323da79d", - "600862ad27b3", - "57568fbaf4f7", - "40f00017ad77", - "2c3706d59dd5", - "3a03e162efd9", - "3082bf4965fa", - "2aad05f979a9", - "8a053731b837", - "22b355deb2df", - "19505460d94b", - "e61de5a1b27e", - "5c7f665de6c4", - "93acc26335bc", - "a5addaab38bf", - "3ff235330cbe", - "1a1091da11b2", - "2d9ce55cc13a", - "5886b76643d9", - "430c28cba43c", - "82daca007272" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.reverse:sibling-pending", - "observation": { - "sender": [ - "8db7a6a7d531", - "1833d0fa5f1d", - "3a94dcc00915", - "c87109595a65", - "1dfcd3f6163d", - "05ccd79ba4af" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.reverse:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "688fe01c6196", - "ffc5c47817a5", - "c87109595a65", - "800b1afcceea", - "8c4056edb811" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "58c52d8b7c76", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "ba788c58e435", - "87bd323da79d", - "600862ad27b3", - "57568fbaf4f7", - "40f00017ad77", - "2c3706d59dd5", - "3a03e162efd9", - "3082bf4965fa", - "2aad05f979a9", - "8a053731b837", - "22b355deb2df", - "19505460d94b", - "e61de5a1b27e", - "5c7f665de6c4", - "93acc26335bc", - "a5addaab38bf", - "3ff235330cbe", - "1a1091da11b2", - "2d9ce55cc13a", - "5886b76643d9", - "430c28cba43c", - "82daca007272" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.both-reject-forward:sibling-pending", - "observation": { - "sender": [ - "8db7a6a7d531", - "1833d0fa5f1d", - "4526d5d74acb", - "71bedad13169", - "1dfcd3f6163d", - "05ccd79ba4af" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "330e27e080b0", - "1f343058c9bd", - "ccf853380b13" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.both-reject-forward:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "688fe01c6196", - "4526d5d74acb", - "4075b6316e30", - "800b1afcceea", - "8c4056edb811" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "330e27e080b0", - "1f343058c9bd", - "ccf853380b13", - "3d31b2fc3a47" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.both-reject-reverse:sibling-pending", - "observation": { - "sender": [ - "8db7a6a7d531", - "1833d0fa5f1d", - "3a94dcc00915", - "4075b6316e30", - "1dfcd3f6163d", - "05ccd79ba4af" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "a103fa2e507b", - "1f343058c9bd", - "ccf853380b13" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.both-reject-reverse:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "688fe01c6196", - "4526d5d74acb", - "4075b6316e30", - "800b1afcceea", - "8c4056edb811" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "a103fa2e507b", - "1f343058c9bd", - "ccf853380b13", - "3d31b2fc3a47" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.reject-peer-pending:sibling-pending", - "observation": { - "sender": [ - "8db7a6a7d531", - "1833d0fa5f1d", - "4526d5d74acb", - "71bedad13169", - "1dfcd3f6163d", - "05ccd79ba4af" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "330e27e080b0", - "1f343058c9bd", - "ccf853380b13" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.reject-peer-pending:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "688fe01c6196", - "4526d5d74acb", - "71bedad13169", - "800b1afcceea", - "8c4056edb811" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "330e27e080b0", - "1f343058c9bd", - "ccf853380b13", - "3d31b2fc3a47" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.timeout:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "302df5159005", - "ad03aa751af2", - "20ef49331589", - "57087f926eaf", - "74d8785ba556" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "a20a93879807", - "d53e8fa810a5", - "c32aa6b83185", - "32b1c27f9f78" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.disconnect:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "4a0377b4ac3c", - "e44e17349036", - "95d5a2a2f417", - "37e9eb7f2e21", - "525789d7c3fa" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a", - "disconnect": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "a20a93879807", - "42c4d0584b72", - "c32aa6b83185", - "32b1c27f9f78" - ] - } - }, - { - "id": "settings-task-hydration-fulfilled.client-cutover:settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "43f5e0efb7d5", - "1305e04da46a", - "0919c52e10c6", - "965996579b8a", - "a4b7901e0372" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a", - "cutover": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "a20a93879807", - "4fe7877fc963", - "c32aa6b83185", - "32b1c27f9f78" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json deleted file mode 100644 index d07a6665540..00000000000 --- a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json +++ /dev/null @@ -1,1262 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.workspace-context", - "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], - "values": { - "1e7f9a45facb": { - "name": "linear.status#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "21ac0fbb969f": { - "name": "jira.status#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: jira.status", - "isRpcDeliveryUnknown": true - } - } - }, - "21b939d94e15": { - "name": "preflight.check#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "232e57d66a75": { - "name": "settings.get#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: settings.get", - "isRpcDeliveryUnknown": true - } - } - }, - "2703952e1ca3": { - "name": "ui.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "ui.get#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "273d1f7fd962": { - "name": "preflight.check#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: preflight.check", - "isRpcDeliveryUnknown": true - } - } - }, - "28d96d1b6f24": { - "name": "linear.status#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "2a7485a88169": { - "providers": ["github"], - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - }, - "trust": {} - }, - "37c4e321f6ed": { - "name": "settings.get#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings.get#1 rejected", - "isRpcDeliveryUnknown": true - } - } - }, - "3d249e57942b": { - "name": "ui.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "527c048244cc": { - "name": "ui.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "5f38435ef2d3": { - "name": "ui.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: ui.get", - "isRpcDeliveryUnknown": true - } - } - }, - "65e027dec060": { - "name": "ui.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "ui": {} - } - } - } - }, - "7c5e5635081d": { - "name": "settings.get#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "82132b79b8f7": { - "name": "settings.get#1", - "ordinal": 9, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "83e12a6721ec": { - "name": "jira.status#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "84863e6a7119": { - "name": "settings.get#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "8566e2463d90": { - "name": "jira.status#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "connected": false - } - } - } - }, - "8bec70b5cc2c": { - "name": "preflight.check#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "903ba5a79900": { - "name": "preflight.check#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "glab": { - "installed": false - } - } - } - } - }, - "9523a5ec7949": { - "providers": ["github", "jira"], - "settings": { - "$rpc": "null" - }, - "trust": {} - }, - "9cf8484d8b20": { - "name": "linear.status#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "connected": false - } - } - } - }, - "a2fd5d449008": { - "name": "jira.status#1", - "ordinal": 8, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"jira.status\"}" - }, - "aa5197e9af84": { - "name": "jira.status#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "ab92af857792": { - "name": "linear.status#1", - "ordinal": 7, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}" - }, - "ad559d2e55ab": { - "name": "jira.status#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "b69f454508d6": { - "name": "preflight.check#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "c02caa4460cf": { - "name": "linear.status#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "c46f950058f0": { - "name": "settings.get#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "cc61428a1b82": { - "name": "preflight.check#1", - "ordinal": 6, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}" - }, - "d13ca77439fc": { - "name": "settings.get#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - } - } - } - } - }, - "e3468ef861b0": { - "name": "ui.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "LogicalClientCutoverError", - "message": "RPC interrupted by connection migration", - "isRpcDeliveryUnknown": true, - "cause": { - "category": "Error", - "message": "Connection closed", - "isRpcDeliveryUnknown": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda20c48bd66": { - "name": "linear.status#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 30000, - "error": { - "category": "Error", - "message": "Request timed out: linear.status", - "isRpcDeliveryUnknown": true - } - } - }, - "edb8f0fe6906": { - "name": "ui.get#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}" - }, - "f6a09f8c5b85": { - "providers": [], - "settings": { - "$rpc": "null" - }, - "trust": {} - } - }, - "recording": { - "scenario": "schedules-settings-workspace-context-fulfilled", - "checkpoints": [ - { - "id": "settings-workspace-context-fulfilled.forward:sibling-pending", - "observation": { - "sender": [ - "b69f454508d6", - "1e7f9a45facb", - "83e12a6721ec", - "d13ca77439fc", - "3d249e57942b" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "f6a09f8c5b85", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.forward:settled", - "observation": { - "sender": [ - "903ba5a79900", - "9cf8484d8b20", - "8566e2463d90", - "d13ca77439fc", - "65e027dec060" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "2a7485a88169", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.reverse:sibling-pending", - "observation": { - "sender": [ - "b69f454508d6", - "1e7f9a45facb", - "83e12a6721ec", - "7c5e5635081d", - "65e027dec060" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "f6a09f8c5b85", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.reverse:settled", - "observation": { - "sender": [ - "903ba5a79900", - "9cf8484d8b20", - "8566e2463d90", - "d13ca77439fc", - "65e027dec060" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "2a7485a88169", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.both-reject-forward:sibling-pending", - "observation": { - "sender": [ - "b69f454508d6", - "1e7f9a45facb", - "83e12a6721ec", - "37c4e321f6ed", - "3d249e57942b" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "f6a09f8c5b85", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.both-reject-forward:settled", - "observation": { - "sender": [ - "903ba5a79900", - "9cf8484d8b20", - "8566e2463d90", - "37c4e321f6ed", - "2703952e1ca3" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "9523a5ec7949", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.both-reject-reverse:sibling-pending", - "observation": { - "sender": [ - "b69f454508d6", - "1e7f9a45facb", - "83e12a6721ec", - "7c5e5635081d", - "2703952e1ca3" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "f6a09f8c5b85", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.both-reject-reverse:settled", - "observation": { - "sender": [ - "903ba5a79900", - "9cf8484d8b20", - "8566e2463d90", - "37c4e321f6ed", - "2703952e1ca3" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "9523a5ec7949", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.reject-peer-pending:sibling-pending", - "observation": { - "sender": [ - "b69f454508d6", - "1e7f9a45facb", - "83e12a6721ec", - "37c4e321f6ed", - "3d249e57942b" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "f6a09f8c5b85", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.reject-peer-pending:settled", - "observation": { - "sender": [ - "903ba5a79900", - "9cf8484d8b20", - "8566e2463d90", - "37c4e321f6ed", - "3d249e57942b" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "f6a09f8c5b85", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.timeout:settled", - "observation": { - "sender": [ - "273d1f7fd962", - "eda20c48bd66", - "21ac0fbb969f", - "232e57d66a75", - "5f38435ef2d3" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "9523a5ec7949", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.disconnect:settled", - "observation": { - "sender": [ - "8bec70b5cc2c", - "28d96d1b6f24", - "aa5197e9af84", - "c46f950058f0", - "527c048244cc" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a", - "disconnect": "eb79a9b3682a" - }, - "state": "9523a5ec7949", - "effects": [] - } - }, - { - "id": "settings-workspace-context-fulfilled.client-cutover:settled", - "observation": { - "sender": [ - "21b939d94e15", - "c02caa4460cf", - "ad559d2e55ab", - "84863e6a7119", - "e3468ef861b0" - ], - "payloads": [ - "cc61428a1b82", - "ab92af857792", - "a2fd5d449008", - "82132b79b8f7", - "edb8f0fe6906" - ], - "settlements": { - "mount": "eb79a9b3682a", - "cutover": "eb79a9b3682a" - }, - "state": "9523a5ec7949", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-browser-tab-created.json b/mobile/rpc-foundation/goldens/session-browser-tab-created.json deleted file mode 100644 index af938d0716e..00000000000 --- a/mobile/rpc-foundation/goldens/session-browser-tab-created.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.content-create", - "family": "session.browser-tab-create", - "namedDeltas": [], - "values": { - "4a842fa3c9c1": { - "name": "browser.tabCreate#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "browser.tabCreate" - }, - { - "name": "params", - "value": { - "activate": true, - "url": "https://example.com/", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "browserPageId": "page-1" - } - } - } - }, - "6248a3dd0710": { - "name": "fetch-session-tabs", - "ordinal": 3, - "value": {} - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "d9a882adde26": { - "name": "browser.tabCreate#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"browser.tabCreate\",\"params\":{\"worktree\":\"id:workspace-1\",\"url\":\"https://example.com/\",\"activate\":true}}" - }, - "dfb723df461a": { - "name": "fetch-pending-browser-tabs", - "ordinal": 5, - "value": {} - }, - "eda7d625e4b6": { - "name": "fetch-pending-browser-tabs", - "ordinal": 4, - "value": {} - }, - "f1e12d7f04c7": { - "createError": "", - "creatingBrowser": false, - "creatingMarkdown": false, - "pendingBrowserFocusPageId": "page-1" - } - }, - "recording": { - "scenario": "session-browser-tab-created", - "checkpoints": [ - { - "id": "created", - "observation": { - "sender": ["4a842fa3c9c1"], - "payloads": ["d9a882adde26"], - "settlements": { - "browser": "84e5ca07cb7a" - }, - "state": "f1e12d7f04c7", - "effects": ["6248a3dd0710", "eda7d625e4b6", "dfb723df461a"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-create-browser-refused.json b/mobile/rpc-foundation/goldens/session-create-browser-refused.json deleted file mode 100644 index 185d964db1d..00000000000 --- a/mobile/rpc-foundation/goldens/session-create-browser-refused.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.content-create", - "family": "session.content-create", - "namedDeltas": [], - "values": { - "7ed3d39f0607": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": false - }, - "7f4ea6e4256c": { - "name": "toast", - "ordinal": 3, - "value": { - "message": "Browser unavailable" - } - }, - "d9a882adde26": { - "name": "browser.tabCreate#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"browser.tabCreate\",\"params\":{\"worktree\":\"id:workspace-1\",\"url\":\"https://example.com/\",\"activate\":true}}" - }, - "dd0b5e7b9130": { - "createError": "Browser unavailable", - "creatingBrowser": false, - "creatingMarkdown": false, - "pendingBrowserFocusPageId": { - "$rpc": "null" - } - }, - "eb4b8e1128bd": { - "name": "browser.tabCreate#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "browser.tabCreate" - }, - { - "name": "params", - "value": { - "activate": true, - "url": "https://example.com/", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "browser_unavailable", - "message": "Browser unavailable" - }, - "id": "frame-1", - "ok": false - } - } - } - }, - "recording": { - "scenario": "session-create-browser-refused", - "checkpoints": [ - { - "id": "refused", - "observation": { - "sender": ["eb4b8e1128bd"], - "payloads": ["d9a882adde26"], - "settlements": { - "browser": "7ed3d39f0607" - }, - "state": "dd0b5e7b9130", - "effects": ["7f4ea6e4256c"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-create-browser-tab.json b/mobile/rpc-foundation/goldens/session-create-browser-tab.json deleted file mode 100644 index 12284d67ec1..00000000000 --- a/mobile/rpc-foundation/goldens/session-create-browser-tab.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.content-create", - "family": "session.content-create", - "namedDeltas": [], - "values": { - "4a842fa3c9c1": { - "name": "browser.tabCreate#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "browser.tabCreate" - }, - { - "name": "params", - "value": { - "activate": true, - "url": "https://example.com/", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "browserPageId": "page-1" - } - } - } - }, - "6248a3dd0710": { - "name": "fetch-session-tabs", - "ordinal": 3, - "value": {} - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "d9a882adde26": { - "name": "browser.tabCreate#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"browser.tabCreate\",\"params\":{\"worktree\":\"id:workspace-1\",\"url\":\"https://example.com/\",\"activate\":true}}" - }, - "dfb723df461a": { - "name": "fetch-pending-browser-tabs", - "ordinal": 5, - "value": {} - }, - "eda7d625e4b6": { - "name": "fetch-pending-browser-tabs", - "ordinal": 4, - "value": {} - }, - "f1e12d7f04c7": { - "createError": "", - "creatingBrowser": false, - "creatingMarkdown": false, - "pendingBrowserFocusPageId": "page-1" - } - }, - "recording": { - "scenario": "session-create-browser-tab", - "checkpoints": [ - { - "id": "created", - "observation": { - "sender": ["4a842fa3c9c1"], - "payloads": ["d9a882adde26"], - "settlements": { - "browser": "84e5ca07cb7a" - }, - "state": "f1e12d7f04c7", - "effects": ["6248a3dd0710", "eda7d625e4b6", "dfb723df461a"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-create-markdown-note.json b/mobile/rpc-foundation/goldens/session-create-markdown-note.json deleted file mode 100644 index 3ec9eb75252..00000000000 --- a/mobile/rpc-foundation/goldens/session-create-markdown-note.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.content-create", - "family": "session.content-create", - "namedDeltas": [], - "values": { - "3e7bfd4c59c3": { - "name": "files.open#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "files.open" - }, - { - "name": "params", - "value": { - "relativePath": "untitled.md", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "opened": true - } - } - } - }, - "4e53935c13ac": { - "name": "worktree.show#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "worktree.show" - }, - { - "name": "params", - "value": { - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "worktree": { - "hostId": "local" - } - } - } - } - }, - "4e9c5ab0de1c": { - "name": "files.open#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"files.open\",\"params\":{\"worktree\":\"id:workspace-1\",\"relativePath\":\"untitled.md\"}}" - }, - "a4f53f7fb1d7": { - "name": "fetch-session-tabs", - "ordinal": 9, - "value": {} - }, - "b5ae4bb70d31": { - "name": "files.createFile#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "files.createFile" - }, - { - "name": "params", - "value": { - "expectedExecutionHostId": "local", - "relativePath": "untitled.md", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "created": true - } - } - } - }, - "c924e7a5a7da": { - "name": "worktree.show#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:workspace-1\"}}" - }, - "d08f74d65ee6": { - "name": "status.get#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "d574cdcd4bef": { - "createError": "", - "creatingBrowser": false, - "creatingMarkdown": false, - "pendingBrowserFocusPageId": { - "$rpc": "null" - } - }, - "e81d3a627ac2": { - "name": "status.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "capabilities": ["files.mutation-ownership.v1"] - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f1279bf9f173": { - "name": "files.createFile#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"files.createFile\",\"params\":{\"worktree\":\"id:workspace-1\",\"relativePath\":\"untitled.md\",\"expectedExecutionHostId\":\"local\"}}" - } - }, - "recording": { - "scenario": "session-create-markdown-note", - "checkpoints": [ - { - "id": "created", - "observation": { - "sender": ["e81d3a627ac2", "4e53935c13ac", "b5ae4bb70d31", "3e7bfd4c59c3"], - "payloads": ["d08f74d65ee6", "c924e7a5a7da", "f1279bf9f173", "4e9c5ab0de1c"], - "settlements": { - "markdown": "eb79a9b3682a" - }, - "state": "d574cdcd4bef", - "effects": ["a4f53f7fb1d7"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-refused.json b/mobile/rpc-foundation/goldens/session-create-terminal-refused.json deleted file mode 100644 index f874d7b5119..00000000000 --- a/mobile/rpc-foundation/goldens/session-create-terminal-refused.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.create-terminal", - "family": "session.create-terminal", - "namedDeltas": [], - "values": { - "023a38d473d3": { - "name": "session.tabs.createTerminal#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.createTerminal" - }, - { - "name": "params", - "value": { - "activate": false, - "afterTabId": "tab-0", - "clientMutationId": "mobile-create:mjuohs00-8ig2hens", - "navigation": "caller", - "select": true, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "pty_exhausted", - "message": "No pty slots left on the host" - }, - "id": "frame-1", - "ok": false - } - } - }, - "6275ace50da2": { - "activeHandle": "terminal-0", - "activeSessionTabId": "tab-0", - "createError": "", - "creating": true, - "initializedHandles": ["terminal-0"], - "pendingSelection": { - "$rpc": "null" - }, - "sessionTabs": [], - "terminals": [] - }, - "7853d5a23971": { - "activeHandle": "terminal-0", - "activeSessionTabId": "tab-0", - "createError": "No pty slots left on the host", - "creating": false, - "initializedHandles": ["terminal-0"], - "pendingSelection": { - "$rpc": "null" - }, - "sessionTabs": [], - "terminals": [] - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "b1d637072fc8": { - "name": "session.tabs.createTerminal#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.createTerminal" - }, - { - "name": "params", - "value": { - "activate": false, - "afterTabId": "tab-0", - "clientMutationId": "mobile-create:mjuohs00-8ig2hens", - "navigation": "caller", - "select": true, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "bacf357ed220": { - "name": "toast", - "ordinal": 3, - "value": { - "durationMs": 1800, - "message": "No pty slots left on the host" - } - }, - "cce8a731064a": { - "name": "session.tabs.createTerminal#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.createTerminal\",\"params\":{\"worktree\":\"id:wt-1\",\"afterTabId\":\"tab-0\",\"clientMutationId\":\"mobile-create:mjuohs00-8ig2hens\",\"activate\":false,\"select\":true,\"navigation\":\"caller\"}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-create-terminal-refused", - "checkpoints": [ - { - "id": "creating", - "observation": { - "sender": ["b1d637072fc8"], - "payloads": ["cce8a731064a"], - "settlements": { - "mount": "eb79a9b3682a", - "create": "9270aeb7d9c6" - }, - "state": "6275ace50da2", - "effects": [] - } - }, - { - "id": "refused", - "observation": { - "sender": ["023a38d473d3"], - "payloads": ["cce8a731064a"], - "settlements": { - "mount": "eb79a9b3682a", - "create": "eb79a9b3682a" - }, - "state": "7853d5a23971", - "effects": ["bacf357ed220"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-with-prompt.json b/mobile/rpc-foundation/goldens/session-create-terminal-with-prompt.json deleted file mode 100644 index edd0cfc4cde..00000000000 --- a/mobile/rpc-foundation/goldens/session-create-terminal-with-prompt.json +++ /dev/null @@ -1,305 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.create-terminal", - "family": "session.create-terminal", - "namedDeltas": [], - "values": { - "2977cbddd89f": { - "name": "session.tabs.createTerminal#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.createTerminal" - }, - { - "name": "params", - "value": { - "activate": false, - "afterTabId": "tab-0", - "clientMutationId": "mobile-create:mjuohs00-8ig2hens", - "navigation": "caller", - "select": true, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "tab": { - "id": "tab-1", - "isActive": true, - "terminal": "terminal-1", - "title": "zsh", - "type": "terminal" - } - } - } - } - }, - "4d318de3b635": { - "name": "unsubscribe-terminal", - "ordinal": 3, - "value": { - "handle": "terminal-0" - } - }, - "4e377b1c4bf7": { - "activeHandle": "terminal-1", - "activeSessionTabId": "tab-1", - "createError": "", - "creating": false, - "initializedHandles": [], - "pendingSelection": { - "handle": "terminal-1", - "kind": "terminal", - "tabId": "tab-1" - }, - "sessionTabs": ["tab-1"], - "terminals": ["terminal-1"] - }, - "579afe83429e": { - "name": "terminal.send#1", - "ordinal": 7, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"review these notes\",\"enter\":true,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "6275ace50da2": { - "activeHandle": "terminal-0", - "activeSessionTabId": "tab-0", - "createError": "", - "creating": true, - "initializedHandles": ["terminal-0"], - "pendingSelection": { - "$rpc": "null" - }, - "sessionTabs": [], - "terminals": [] - }, - "8b5144e3301d": { - "name": "schedule-delayed-action", - "ordinal": 6, - "value": { - "delayMs": 500 - } - }, - "8c66ae259b06": { - "name": "terminal.send#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": true, - "terminal": "terminal-1", - "text": "review these notes" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "a4f53f7fb1d7": { - "name": "fetch-session-tabs", - "ordinal": 9, - "value": {} - }, - "b1d637072fc8": { - "name": "session.tabs.createTerminal#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.createTerminal" - }, - { - "name": "params", - "value": { - "activate": false, - "afterTabId": "tab-0", - "clientMutationId": "mobile-create:mjuohs00-8ig2hens", - "navigation": "caller", - "select": true, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "c9f8d8917777": { - "name": "subscribe-terminal", - "ordinal": 4, - "value": { - "handle": "terminal-1" - } - }, - "cc673665ea16": { - "name": "terminal.send#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": true, - "terminal": "terminal-1", - "text": "review these notes" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "cce8a731064a": { - "name": "session.tabs.createTerminal#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.createTerminal\",\"params\":{\"worktree\":\"id:wt-1\",\"afterTabId\":\"tab-0\",\"clientMutationId\":\"mobile-create:mjuohs00-8ig2hens\",\"activate\":false,\"select\":true,\"navigation\":\"caller\"}}" - }, - "cf7e2c3136b3": { - "name": "toast", - "ordinal": 8, - "value": { - "durationMs": { - "$rpc": "null" - }, - "message": "Notes sent" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-create-terminal-with-prompt", - "checkpoints": [ - { - "id": "creating", - "observation": { - "sender": ["b1d637072fc8"], - "payloads": ["cce8a731064a"], - "settlements": { - "mount": "eb79a9b3682a", - "create": "9270aeb7d9c6" - }, - "state": "6275ace50da2", - "effects": [] - } - }, - { - "id": "created", - "observation": { - "sender": ["2977cbddd89f", "8c66ae259b06"], - "payloads": ["cce8a731064a", "579afe83429e"], - "settlements": { - "mount": "eb79a9b3682a", - "create": "eb79a9b3682a" - }, - "state": "4e377b1c4bf7", - "effects": ["4d318de3b635", "c9f8d8917777", "8b5144e3301d"] - } - }, - { - "id": "prompt-sent", - "observation": { - "sender": ["2977cbddd89f", "cc673665ea16"], - "payloads": ["cce8a731064a", "579afe83429e"], - "settlements": { - "mount": "eb79a9b3682a", - "create": "eb79a9b3682a" - }, - "state": "4e377b1c4bf7", - "effects": ["4d318de3b635", "c9f8d8917777", "8b5144e3301d", "cf7e2c3136b3"] - } - }, - { - "id": "tabs-refreshed", - "observation": { - "sender": ["2977cbddd89f", "cc673665ea16"], - "payloads": ["cce8a731064a", "579afe83429e"], - "settlements": { - "mount": "eb79a9b3682a", - "create": "eb79a9b3682a" - }, - "state": "4e377b1c4bf7", - "effects": [ - "4d318de3b635", - "c9f8d8917777", - "8b5144e3301d", - "cf7e2c3136b3", - "a4f53f7fb1d7" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-markdown-save-conflict.json b/mobile/rpc-foundation/goldens/session-markdown-save-conflict.json deleted file mode 100644 index 337d36239af..00000000000 --- a/mobile/rpc-foundation/goldens/session-markdown-save-conflict.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.markdown-save", - "family": "session.markdown-save", - "namedDeltas": [], - "values": { - "48e7060a8031": { - "name": "markdown.saveTab#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"markdown.saveTab\",\"params\":{\"worktree\":\"id:workspace-1\",\"tabId\":\"tab-md\",\"baseVersion\":\"v1\",\"content\":\"# b\"}}" - }, - "52c1632d410d": { - "name": "markdown.saveTab#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "markdown.saveTab" - }, - { - "name": "params", - "value": { - "baseVersion": "v1", - "content": "# b", - "tabId": "tab-md", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "version_conflict", - "message": "Document changed on disk" - }, - "id": "frame-1", - "ok": false - } - } - }, - "d31fbfc2b21a": { - "markdown": { - "tab-md": { - "baseVersion": "v1", - "content": "# a", - "editable": true, - "isDirty": true, - "localContent": "# b", - "localRevision": 2, - "saveError": "Document changed on disk", - "saving": false, - "status": "ready" - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-markdown-save-conflict", - "checkpoints": [ - { - "id": "conflicted", - "observation": { - "sender": ["52c1632d410d"], - "payloads": ["48e7060a8031"], - "settlements": { - "save": "eb79a9b3682a" - }, - "state": "d31fbfc2b21a", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-markdown-saved.json b/mobile/rpc-foundation/goldens/session-markdown-saved.json deleted file mode 100644 index f91dfbd691b..00000000000 --- a/mobile/rpc-foundation/goldens/session-markdown-saved.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.markdown-save", - "family": "session.markdown-save", - "namedDeltas": [], - "values": { - "48e7060a8031": { - "name": "markdown.saveTab#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"markdown.saveTab\",\"params\":{\"worktree\":\"id:workspace-1\",\"tabId\":\"tab-md\",\"baseVersion\":\"v1\",\"content\":\"# b\"}}" - }, - "7fadfe6b63b6": { - "markdown": { - "tab-md": { - "baseVersion": "v2", - "content": "# b", - "editable": true, - "isDirty": false, - "localContent": "# b", - "localRevision": 2, - "status": "ready" - } - } - }, - "807e68f28cfd": { - "name": "toast", - "ordinal": 3, - "value": { - "message": "Saved" - } - }, - "b60a4c682490": { - "name": "markdown.saveTab#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "markdown.saveTab" - }, - { - "name": "params", - "value": { - "baseVersion": "v1", - "content": "# b", - "tabId": "tab-md", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "content": "# b", - "isDirty": false, - "version": "v2" - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-markdown-saved", - "checkpoints": [ - { - "id": "saved", - "observation": { - "sender": ["b60a4c682490"], - "payloads": ["48e7060a8031"], - "settlements": { - "save": "eb79a9b3682a" - }, - "state": "7fadfe6b63b6", - "effects": ["807e68f28cfd"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-markdown-tab-disk-fallback.json b/mobile/rpc-foundation/goldens/session-markdown-tab-disk-fallback.json deleted file mode 100644 index 53e6780530e..00000000000 --- a/mobile/rpc-foundation/goldens/session-markdown-tab-disk-fallback.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-documents", - "family": "session.tab-documents", - "namedDeltas": [], - "values": { - "44abbe2af7aa": { - "name": "markdown.readTab#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"markdown.readTab\",\"params\":{\"worktree\":\"id:workspace-1\",\"tabId\":\"tab-md\"}}" - }, - "c6cea5310098": { - "file": {}, - "markdown": { - "tab-md": { - "baseVersion": "", - "content": "# disk", - "editable": false, - "isDirty": false, - "localContent": "# disk", - "readOnlyReason": "Editing needs Orca desktop running.", - "stale": false, - "status": "ready" - } - } - }, - "d4be01606497": { - "name": "files.read#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.read\",\"params\":{\"worktree\":\"id:workspace-1\",\"relativePath\":\"docs/readme.md\"}}" - }, - "d59404d25d6c": { - "name": "files.read#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "files.read" - }, - { - "name": "params", - "value": { - "relativePath": "docs/readme.md", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "byteLength": 6, - "content": "# disk", - "truncated": false - } - } - } - }, - "e258dafc91f1": { - "name": "markdown.readTab#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "markdown.readTab" - }, - { - "name": "params", - "value": { - "tabId": "tab-md", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "renderer_unavailable", - "message": "Renderer unavailable" - }, - "id": "frame-1", - "ok": false - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-markdown-tab-disk-fallback", - "checkpoints": [ - { - "id": "fell-back", - "observation": { - "sender": ["e258dafc91f1", "d59404d25d6c"], - "payloads": ["44abbe2af7aa", "d4be01606497"], - "settlements": { - "markdown": "eb79a9b3682a" - }, - "state": "c6cea5310098", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-startup-both-activation-sites.json b/mobile/rpc-foundation/goldens/session-startup-both-activation-sites.json deleted file mode 100644 index 51333805d7e..00000000000 --- a/mobile/rpc-foundation/goldens/session-startup-both-activation-sites.json +++ /dev/null @@ -1,453 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.startup", - "family": "session.startup", - "namedDeltas": [], - "values": { - "19efe7a6058c": { - "name": "worktree.activate#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 1800 - } - }, - "1dca7912e0fe": { - "name": "worktree.activate#2", - "ordinal": 15, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.activate\",\"params\":{\"worktree\":\"id:wt-1\",\"notifyClients\":false,\"navigation\":\"caller\"}}" - }, - "1e40b8324af4": { - "name": "worktree.activate#2", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 2550 - } - }, - "38b377793c34": { - "name": "ensure-session-tabs", - "ordinal": 5, - "value": {} - }, - "4319ba45c158": { - "name": "toast", - "ordinal": 9, - "value": { - "durationMs": 3000, - "message": "Open Orca on the host to wake sleeping agents." - } - }, - "4669e4d646e8": { - "name": "fetch-terminals", - "ordinal": 6, - "value": { - "allowEmptyLoaded": false - } - }, - "51ae204eb34b": { - "status": "fulfilled", - "startedAt": 2550, - "settledAt": 2550, - "value": { - "$rpc": "undefined" - } - }, - "5ea84cbe70fc": { - "name": "worktree.activate#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 1800, - "settledAt": 1800, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "sleepingAgentWake": "unsupported-headless" - } - } - } - }, - "63abf3b998b3": { - "name": "fetch-terminals", - "ordinal": 14, - "value": { - "allowEmptyLoaded": false - } - }, - "6419a011f13b": { - "name": "clear-terminal-cache", - "ordinal": 1, - "value": {} - }, - "650e3aedd38c": { - "name": "clear-pending-live-input-commit", - "ordinal": 17, - "value": {} - }, - "6c4561ecc9ee": { - "name": "ensure-session-tabs", - "ordinal": 13, - "value": {} - }, - "854cb236952a": { - "actionSheetRequestSeq": 1, - "activeHandle": { - "$rpc": "null" - }, - "appliedSnapshotMarker": { - "epoch": { - "$rpc": "null" - }, - "version": -1 - }, - "closedTabTombstones": 0, - "initializedHandles": [], - "sessionTabs": [], - "terminalsLoaded": false - }, - "95c8385db422": { - "name": "clear-delayed-action-timers", - "ordinal": 4, - "value": {} - }, - "9a856559977e": { - "name": "toast", - "ordinal": 16, - "value": { - "durationMs": 3000, - "message": "Open Orca on the host to wake sleeping agents." - } - }, - "a509dd4610b2": { - "name": "fetch-terminals", - "ordinal": 11, - "value": { - "allowEmptyLoaded": true - } - }, - "aab012c297bd": { - "name": "diagnostics-reset-route", - "ordinal": 2, - "value": {} - }, - "b86ad4df402e": { - "name": "clear-delayed-action-timers", - "ordinal": 18, - "value": {} - }, - "ba45b883b259": { - "name": "fetch-terminals", - "ordinal": 10, - "value": { - "allowEmptyLoaded": true - } - }, - "d2c3cccdd0b2": { - "name": "worktree.activate#2", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 2550, - "settledAt": 2550, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "sleepingAgentWake": "unsupported-headless" - } - } - } - }, - "e8b978dbecff": { - "name": "worktree.activate#1", - "ordinal": 8, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.activate\",\"params\":{\"worktree\":\"id:wt-1\",\"notifyClients\":false,\"navigation\":\"caller\"}}" - }, - "e927128e41fc": { - "name": "clear-pending-live-input-commit", - "ordinal": 3, - "value": {} - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-startup-both-activation-sites", - "checkpoints": [ - { - "id": "loading", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8" - ] - } - }, - { - "id": "reactivating", - "observation": { - "sender": ["19efe7a6058c"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8" - ] - } - }, - { - "id": "reactivated", - "observation": { - "sender": ["5ea84cbe70fc"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8", - "4319ba45c158", - "ba45b883b259" - ] - } - }, - { - "id": "refreshed", - "observation": { - "sender": ["5ea84cbe70fc"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8", - "4319ba45c158", - "ba45b883b259", - "a509dd4610b2" - ] - } - }, - { - "id": "activating", - "observation": { - "sender": ["5ea84cbe70fc", "1e40b8324af4"], - "payloads": ["e8b978dbecff", "1dca7912e0fe"], - "settlements": { - "mount": "eb79a9b3682a", - "consume-route": "51ae204eb34b" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8", - "4319ba45c158", - "ba45b883b259", - "a509dd4610b2", - "6c4561ecc9ee", - "63abf3b998b3" - ] - } - }, - { - "id": "activated", - "observation": { - "sender": ["5ea84cbe70fc", "d2c3cccdd0b2"], - "payloads": ["e8b978dbecff", "1dca7912e0fe"], - "settlements": { - "mount": "eb79a9b3682a", - "consume-route": "51ae204eb34b" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8", - "4319ba45c158", - "ba45b883b259", - "a509dd4610b2", - "6c4561ecc9ee", - "63abf3b998b3", - "9a856559977e" - ] - } - }, - { - "id": "reloaded", - "observation": { - "sender": ["5ea84cbe70fc", "d2c3cccdd0b2"], - "payloads": ["e8b978dbecff", "1dca7912e0fe"], - "settlements": { - "mount": "eb79a9b3682a", - "consume-route": "51ae204eb34b" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8", - "4319ba45c158", - "ba45b883b259", - "a509dd4610b2", - "6c4561ecc9ee", - "63abf3b998b3", - "9a856559977e" - ] - } - }, - { - "id": "cleanup", - "observation": { - "sender": ["5ea84cbe70fc", "d2c3cccdd0b2"], - "payloads": ["e8b978dbecff", "1dca7912e0fe"], - "settlements": { - "mount": "eb79a9b3682a", - "consume-route": "51ae204eb34b" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8", - "4319ba45c158", - "ba45b883b259", - "a509dd4610b2", - "6c4561ecc9ee", - "63abf3b998b3", - "9a856559977e", - "650e3aedd38c", - "b86ad4df402e" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-startup-floating-route-skips-activation.json b/mobile/rpc-foundation/goldens/session-startup-floating-route-skips-activation.json deleted file mode 100644 index d2f2aa57cf3..00000000000 --- a/mobile/rpc-foundation/goldens/session-startup-floating-route-skips-activation.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.startup", - "family": "session.startup", - "namedDeltas": [], - "values": { - "38b377793c34": { - "name": "ensure-session-tabs", - "ordinal": 5, - "value": {} - }, - "4669e4d646e8": { - "name": "fetch-terminals", - "ordinal": 6, - "value": { - "allowEmptyLoaded": false - } - }, - "481b4ed03a28": { - "name": "clear-pending-live-input-commit", - "ordinal": 7, - "value": {} - }, - "6419a011f13b": { - "name": "clear-terminal-cache", - "ordinal": 1, - "value": {} - }, - "6afa2a4d3bfe": { - "name": "clear-delayed-action-timers", - "ordinal": 8, - "value": {} - }, - "854cb236952a": { - "actionSheetRequestSeq": 1, - "activeHandle": { - "$rpc": "null" - }, - "appliedSnapshotMarker": { - "epoch": { - "$rpc": "null" - }, - "version": -1 - }, - "closedTabTombstones": 0, - "initializedHandles": [], - "sessionTabs": [], - "terminalsLoaded": false - }, - "95c8385db422": { - "name": "clear-delayed-action-timers", - "ordinal": 4, - "value": {} - }, - "aab012c297bd": { - "name": "diagnostics-reset-route", - "ordinal": 2, - "value": {} - }, - "e927128e41fc": { - "name": "clear-pending-live-input-commit", - "ordinal": 3, - "value": {} - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-startup-floating-route-skips-activation", - "checkpoints": [ - { - "id": "loading", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8" - ] - } - }, - { - "id": "settled", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8" - ] - } - }, - { - "id": "cleanup", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "38b377793c34", - "4669e4d646e8", - "481b4ed03a28", - "6afa2a4d3bfe" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-startup-keeps-terminals-visible-on-reconnect.json b/mobile/rpc-foundation/goldens/session-startup-keeps-terminals-visible-on-reconnect.json deleted file mode 100644 index bcaa94b1e50..00000000000 --- a/mobile/rpc-foundation/goldens/session-startup-keeps-terminals-visible-on-reconnect.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.startup", - "family": "session.startup", - "namedDeltas": [], - "values": { - "57e0a895cdde": { - "name": "worktree.activate#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "6419a011f13b": { - "name": "clear-terminal-cache", - "ordinal": 1, - "value": {} - }, - "8c990409ac55": { - "name": "worktree.activate#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": {} - } - } - }, - "95c8385db422": { - "name": "clear-delayed-action-timers", - "ordinal": 4, - "value": {} - }, - "968d084a5a35": { - "name": "clear-delayed-action-timers", - "ordinal": 10, - "value": {} - }, - "a193ad4304cb": { - "name": "fetch-terminals", - "ordinal": 7, - "value": { - "allowEmptyLoaded": false - } - }, - "a98356c9153c": { - "actionSheetRequestSeq": 2, - "activeHandle": { - "$rpc": "null" - }, - "appliedSnapshotMarker": { - "epoch": { - "$rpc": "null" - }, - "version": -1 - }, - "closedTabTombstones": 0, - "initializedHandles": [], - "sessionTabs": [], - "terminalsLoaded": true - }, - "aa6511b23729": { - "status": "fulfilled", - "startedAt": 1500, - "settledAt": 1500, - "value": { - "$rpc": "undefined" - } - }, - "aab012c297bd": { - "name": "diagnostics-reset-route", - "ordinal": 2, - "value": {} - }, - "bc94d6f00eeb": { - "name": "clear-pending-live-input-commit", - "ordinal": 9, - "value": {} - }, - "e022e11065b3": { - "actionSheetRequestSeq": 1, - "activeHandle": { - "$rpc": "null" - }, - "appliedSnapshotMarker": { - "epoch": { - "$rpc": "null" - }, - "version": -1 - }, - "closedTabTombstones": 0, - "initializedHandles": [], - "sessionTabs": [], - "terminalsLoaded": true - }, - "e8b978dbecff": { - "name": "worktree.activate#1", - "ordinal": 8, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.activate\",\"params\":{\"worktree\":\"id:wt-1\",\"notifyClients\":false,\"navigation\":\"caller\"}}" - }, - "e927128e41fc": { - "name": "clear-pending-live-input-commit", - "ordinal": 3, - "value": {} - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed8838ca9a14": { - "name": "ensure-session-tabs", - "ordinal": 6, - "value": {} - } - }, - "recording": { - "scenario": "session-startup-keeps-terminals-visible-on-reconnect", - "checkpoints": [ - { - "id": "loading", - "observation": { - "sender": ["57e0a895cdde"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "e022e11065b3", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "ed8838ca9a14", - "a193ad4304cb" - ] - } - }, - { - "id": "refreshed", - "observation": { - "sender": ["8c990409ac55"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "e022e11065b3", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "ed8838ca9a14", - "a193ad4304cb" - ] - } - }, - { - "id": "unmounted", - "observation": { - "sender": ["8c990409ac55"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a", - "unmount": "aa6511b23729" - }, - "state": "a98356c9153c", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "ed8838ca9a14", - "a193ad4304cb", - "bc94d6f00eeb", - "968d084a5a35" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-startup-refused-tab-load-still-loads-terminals.json b/mobile/rpc-foundation/goldens/session-startup-refused-tab-load-still-loads-terminals.json deleted file mode 100644 index cc15db3252a..00000000000 --- a/mobile/rpc-foundation/goldens/session-startup-refused-tab-load-still-loads-terminals.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.startup", - "family": "session.startup", - "namedDeltas": [], - "values": { - "57e0a895cdde": { - "name": "worktree.activate#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "6419a011f13b": { - "name": "clear-terminal-cache", - "ordinal": 1, - "value": {} - }, - "854cb236952a": { - "actionSheetRequestSeq": 1, - "activeHandle": { - "$rpc": "null" - }, - "appliedSnapshotMarker": { - "epoch": { - "$rpc": "null" - }, - "version": -1 - }, - "closedTabTombstones": 0, - "initializedHandles": [], - "sessionTabs": [], - "terminalsLoaded": false - }, - "8c990409ac55": { - "name": "worktree.activate#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "worktree.activate" - }, - { - "name": "params", - "value": { - "navigation": "caller", - "notifyClients": false, - "worktree": "id:wt-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": {} - } - } - }, - "95c8385db422": { - "name": "clear-delayed-action-timers", - "ordinal": 4, - "value": {} - }, - "968d084a5a35": { - "name": "clear-delayed-action-timers", - "ordinal": 10, - "value": {} - }, - "a193ad4304cb": { - "name": "fetch-terminals", - "ordinal": 7, - "value": { - "allowEmptyLoaded": false - } - }, - "aab012c297bd": { - "name": "diagnostics-reset-route", - "ordinal": 2, - "value": {} - }, - "bc94d6f00eeb": { - "name": "clear-pending-live-input-commit", - "ordinal": 9, - "value": {} - }, - "e8b978dbecff": { - "name": "worktree.activate#1", - "ordinal": 8, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.activate\",\"params\":{\"worktree\":\"id:wt-1\",\"notifyClients\":false,\"navigation\":\"caller\"}}" - }, - "e927128e41fc": { - "name": "clear-pending-live-input-commit", - "ordinal": 3, - "value": {} - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed8838ca9a14": { - "name": "ensure-session-tabs", - "ordinal": 6, - "value": {} - } - }, - "recording": { - "scenario": "session-startup-refused-tab-load-still-loads-terminals", - "checkpoints": [ - { - "id": "tab-load-refused", - "observation": { - "sender": ["57e0a895cdde"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "ed8838ca9a14", - "a193ad4304cb" - ] - } - }, - { - "id": "refreshed", - "observation": { - "sender": ["8c990409ac55"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "ed8838ca9a14", - "a193ad4304cb" - ] - } - }, - { - "id": "cleanup", - "observation": { - "sender": ["8c990409ac55"], - "payloads": ["e8b978dbecff"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "854cb236952a", - "effects": [ - "6419a011f13b", - "aab012c297bd", - "e927128e41fc", - "95c8385db422", - "ed8838ca9a14", - "a193ad4304cb", - "bc94d6f00eeb", - "968d084a5a35" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tab-activation-focus-and-activate.json b/mobile/rpc-foundation/goldens/session-tab-activation-focus-and-activate.json deleted file mode 100644 index 512766198aa..00000000000 --- a/mobile/rpc-foundation/goldens/session-tab-activation-focus-and-activate.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-activation", - "family": "session.tab-activation", - "namedDeltas": [], - "values": { - "36e84700f75b": { - "name": "terminal.focus#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.focus\",\"params\":{\"terminal\":\"terminal-1\",\"navigation\":\"host\"}}" - }, - "3db95ed7902c": { - "name": "terminal.focus#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.focus" - }, - { - "name": "params", - "value": { - "navigation": "host", - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "focused": true - } - } - } - }, - "4e4394afbcef": { - "activate": { - "id": "frame-2", - "ok": true, - "result": { - "activated": true - } - }, - "failure": { - "$rpc": "null" - }, - "focus": { - "id": "frame-1", - "ok": true, - "result": { - "focused": true - } - } - }, - "795aac33fef6": { - "name": "session.tabs.activate#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "session.tabs.activate" - }, - { - "name": "params", - "value": { - "intent": "user", - "navigation": "caller", - "notifyClients": false, - "tabId": "tab-1", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "activated": true - } - } - } - }, - "84d74a6de2ca": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "activated": true - } - } - }, - "9fd53197e14f": { - "name": "session.tabs.activate#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.activate\",\"params\":{\"worktree\":\"id:workspace-1\",\"tabId\":\"tab-1\",\"notifyClients\":false,\"navigation\":\"caller\",\"intent\":\"user\"}}" - }, - "ecc5d1639f16": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "focused": true - } - } - } - }, - "recording": { - "scenario": "session-tab-activation-focus-and-activate", - "checkpoints": [ - { - "id": "activated", - "observation": { - "sender": ["3db95ed7902c", "795aac33fef6"], - "payloads": ["36e84700f75b", "9fd53197e14f"], - "settlements": { - "focus": "ecc5d1639f16", - "activate": "84d74a6de2ca" - }, - "state": "4e4394afbcef", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tab-activation-refused.json b/mobile/rpc-foundation/goldens/session-tab-activation-refused.json deleted file mode 100644 index 447ade8967e..00000000000 --- a/mobile/rpc-foundation/goldens/session-tab-activation-refused.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-activation", - "family": "session.tab-activation", - "namedDeltas": [], - "values": { - "7a0a4e34e537": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "tab_not_found", - "message": "No such tab" - }, - "id": "frame-1", - "ok": false - } - }, - "80b6a2c3dc17": { - "name": "session.tabs.activate#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.activate" - }, - { - "name": "params", - "value": { - "intent": "user", - "navigation": "caller", - "notifyClients": false, - "tabId": "tab-1", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "tab_not_found", - "message": "No such tab" - }, - "id": "frame-1", - "ok": false - } - } - }, - "97f1e4150cc6": { - "activate": { - "error": { - "code": "tab_not_found", - "message": "No such tab" - }, - "id": "frame-1", - "ok": false - }, - "failure": { - "$rpc": "null" - } - }, - "af35a6da041d": { - "name": "session.tabs.activate#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.activate\",\"params\":{\"worktree\":\"id:workspace-1\",\"tabId\":\"tab-1\",\"notifyClients\":false,\"navigation\":\"caller\",\"intent\":\"user\"}}" - } - }, - "recording": { - "scenario": "session-tab-activation-refused", - "checkpoints": [ - { - "id": "refused", - "observation": { - "sender": ["80b6a2c3dc17"], - "payloads": ["af35a6da041d"], - "settlements": { - "activate": "7a0a4e34e537" - }, - "state": "97f1e4150cc6", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tab-activation-transport-error.json b/mobile/rpc-foundation/goldens/session-tab-activation-transport-error.json deleted file mode 100644 index abe6745c411..00000000000 --- a/mobile/rpc-foundation/goldens/session-tab-activation-transport-error.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-activation", - "family": "session.tab-activation", - "namedDeltas": [], - "values": { - "36e84700f75b": { - "name": "terminal.focus#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.focus\",\"params\":{\"terminal\":\"terminal-1\",\"navigation\":\"host\"}}" - }, - "50dc9b14a69a": { - "name": "terminal.focus#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.focus" - }, - { - "name": "params", - "value": { - "navigation": "host", - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Request timed out", - "isRpcDeliveryUnknown": false - } - } - }, - "6b74a7e08acf": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Request timed out", - "isRpcDeliveryUnknown": false - } - }, - "9acb73463ead": { - "failure": "Request timed out" - } - }, - "recording": { - "scenario": "session-tab-activation-transport-error", - "checkpoints": [ - { - "id": "errored", - "observation": { - "sender": ["50dc9b14a69a"], - "payloads": ["36e84700f75b"], - "settlements": { - "focus": "6b74a7e08acf" - }, - "state": "9acb73463ead", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tab-close-host-unavailable-tells-user.json b/mobile/rpc-foundation/goldens/session-tab-close-host-unavailable-tells-user.json deleted file mode 100644 index 19a41ad7993..00000000000 --- a/mobile/rpc-foundation/goldens/session-tab-close-host-unavailable-tells-user.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-close", - "family": "session.tab-close", - "namedDeltas": [], - "values": { - "3e15def58214": { - "activeHandle": "terminal-1", - "sessionTabs": [ - { - "id": "tab-1", - "isActive": true, - "terminal": "terminal-1", - "title": "Terminal", - "type": "terminal" - } - ], - "terminals": [ - { - "handle": "terminal-1", - "isActive": true, - "title": "Terminal" - } - ] - }, - "50a46af5cf5c": { - "name": "session.tabs.close#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.close\",\"params\":{\"worktree\":\"id:workspace-1\",\"tabId\":\"tab-1\",\"reason\":\"user\"}}" - }, - "b8970b98f1e3": { - "name": "toast", - "ordinal": 3, - "value": { - "message": "Couldn't close the tab. Orca on your computer is still loading. Try again in a moment." - } - }, - "d1730750ac1c": { - "name": "session.tabs.close#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.close" - }, - { - "name": "params", - "value": { - "reason": "user", - "tabId": "tab-1", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "runtime_unavailable", - "message": "runtime_unavailable" - }, - "id": "frame-1", - "ok": false - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-tab-close-host-unavailable-tells-user", - "checkpoints": [ - { - "id": "kept", - "observation": { - "sender": ["d1730750ac1c"], - "payloads": ["50a46af5cf5c"], - "settlements": { - "close-tab": "eb79a9b3682a" - }, - "state": "3e15def58214", - "effects": ["b8970b98f1e3"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tab-close-refused-keeps-tab.json b/mobile/rpc-foundation/goldens/session-tab-close-refused-keeps-tab.json deleted file mode 100644 index 5f9eee6af52..00000000000 --- a/mobile/rpc-foundation/goldens/session-tab-close-refused-keeps-tab.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-close", - "family": "session.tab-close", - "namedDeltas": [], - "values": { - "26d1891758e0": { - "name": "toast", - "ordinal": 3, - "value": { - "message": "Couldn't close the tab. Try again." - } - }, - "3e15def58214": { - "activeHandle": "terminal-1", - "sessionTabs": [ - { - "id": "tab-1", - "isActive": true, - "terminal": "terminal-1", - "title": "Terminal", - "type": "terminal" - } - ], - "terminals": [ - { - "handle": "terminal-1", - "isActive": true, - "title": "Terminal" - } - ] - }, - "744d30b1a0ad": { - "name": "terminal.close#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.close" - }, - { - "name": "params", - "value": { - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "terminal_not_found", - "message": "No such terminal" - }, - "id": "frame-1", - "ok": false - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ff9e6fa68d38": { - "name": "terminal.close#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.close\",\"params\":{\"terminal\":\"terminal-1\"}}" - } - }, - "recording": { - "scenario": "session-tab-close-refused-keeps-tab", - "checkpoints": [ - { - "id": "kept", - "observation": { - "sender": ["744d30b1a0ad"], - "payloads": ["ff9e6fa68d38"], - "settlements": { - "close-terminal": "eb79a9b3682a" - }, - "state": "3e15def58214", - "effects": ["26d1891758e0"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tab-close-session-tab.json b/mobile/rpc-foundation/goldens/session-tab-close-session-tab.json deleted file mode 100644 index 9af8f1b38f0..00000000000 --- a/mobile/rpc-foundation/goldens/session-tab-close-session-tab.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-close", - "family": "session.tab-close", - "namedDeltas": [], - "values": { - "1195cdf08e57": { - "name": "unsubscribe-terminal", - "ordinal": 3, - "value": { - "handle": "terminal-1" - } - }, - "50a46af5cf5c": { - "name": "session.tabs.close#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.close\",\"params\":{\"worktree\":\"id:workspace-1\",\"tabId\":\"tab-1\",\"reason\":\"user\"}}" - }, - "567d11711027": { - "activeHandle": { - "$rpc": "null" - }, - "sessionTabs": [], - "terminals": [ - { - "handle": "terminal-1", - "isActive": true, - "title": "Terminal" - } - ] - }, - "de4cc94c0333": { - "name": "session.tabs.close#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "session.tabs.close" - }, - { - "name": "params", - "value": { - "reason": "user", - "tabId": "tab-1", - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "closed": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-tab-close-session-tab", - "checkpoints": [ - { - "id": "closed", - "observation": { - "sender": ["de4cc94c0333"], - "payloads": ["50a46af5cf5c"], - "settlements": { - "close-tab": "eb79a9b3682a" - }, - "state": "567d11711027", - "effects": ["1195cdf08e57"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tab-close-terminal.json b/mobile/rpc-foundation/goldens/session-tab-close-terminal.json deleted file mode 100644 index a095a9d17b6..00000000000 --- a/mobile/rpc-foundation/goldens/session-tab-close-terminal.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tab-close", - "family": "session.tab-close", - "namedDeltas": [], - "values": { - "1195cdf08e57": { - "name": "unsubscribe-terminal", - "ordinal": 3, - "value": { - "handle": "terminal-1" - } - }, - "6d591243ee36": { - "name": "terminal.close#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.close" - }, - { - "name": "params", - "value": { - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "closed": true - } - } - } - }, - "de039f500462": { - "activeHandle": { - "$rpc": "null" - }, - "sessionTabs": [ - { - "id": "tab-1", - "isActive": true, - "terminal": "terminal-1", - "title": "Terminal", - "type": "terminal" - } - ], - "terminals": [] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ff9e6fa68d38": { - "name": "terminal.close#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.close\",\"params\":{\"terminal\":\"terminal-1\"}}" - } - }, - "recording": { - "scenario": "session-tab-close-terminal", - "checkpoints": [ - { - "id": "closed", - "observation": { - "sender": ["6d591243ee36"], - "payloads": ["ff9e6fa68d38"], - "settlements": { - "close-terminal": "eb79a9b3682a" - }, - "state": "de039f500462", - "effects": ["1195cdf08e57"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tabs-health-errored.json b/mobile/rpc-foundation/goldens/session-tabs-health-errored.json deleted file mode 100644 index 05337a4c387..00000000000 --- a/mobile/rpc-foundation/goldens/session-tabs-health-errored.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tabs-stream-health", - "family": "session.tabs-stream-health", - "namedDeltas": [], - "values": { - "0cde28482d1a": { - "name": "session.tabs.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.list\",\"params\":{\"worktree\":\"id:workspace-1\"}}" - }, - "49a2260ea0e7": { - "accepted": "unapplied", - "applicationRevision": 0 - }, - "510d7b10aacf": { - "name": "fetch-started", - "ordinal": 1, - "value": {} - }, - "778c46b2e8ff": { - "name": "fetch-errored", - "ordinal": 4, - "value": "Connection lost" - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "c59ddd1d2f73": { - "name": "session.tabs.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "session.tabs.list" - }, - { - "name": "params", - "value": { - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-tabs-health-errored", - "checkpoints": [ - { - "id": "errored", - "observation": { - "sender": ["c59ddd1d2f73"], - "payloads": ["0cde28482d1a"], - "settlements": { - "activate": "84e5ca07cb7a", - "reconcile": "eb79a9b3682a" - }, - "state": "49a2260ea0e7", - "effects": ["510d7b10aacf", "778c46b2e8ff"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tabs-health-reconciled.json b/mobile/rpc-foundation/goldens/session-tabs-health-reconciled.json deleted file mode 100644 index 411acd5125b..00000000000 --- a/mobile/rpc-foundation/goldens/session-tabs-health-reconciled.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tabs-stream-health", - "family": "session.tabs-stream-health", - "namedDeltas": [], - "values": { - "0cde28482d1a": { - "name": "session.tabs.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.list\",\"params\":{\"worktree\":\"id:workspace-1\"}}" - }, - "18295edda482": { - "name": "session.tabs.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "session.tabs.list" - }, - { - "name": "params", - "value": { - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "tabs": [ - { - "id": "tab-1" - } - ] - } - } - } - }, - "510d7b10aacf": { - "name": "fetch-started", - "ordinal": 1, - "value": {} - }, - "540a1c1f9afc": { - "name": "fetch-succeeded", - "ordinal": 4, - "value": { - "tabs": [ - { - "id": "tab-1" - } - ] - } - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "e29309cc10af": { - "accepted": { - "source": "list", - "tabs": [ - { - "id": "tab-1" - } - ] - }, - "applicationRevision": 0 - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-tabs-health-reconciled", - "checkpoints": [ - { - "id": "reconciled", - "observation": { - "sender": ["18295edda482"], - "payloads": ["0cde28482d1a"], - "settlements": { - "activate": "84e5ca07cb7a", - "reconcile": "eb79a9b3682a" - }, - "state": "e29309cc10af", - "effects": ["510d7b10aacf", "540a1c1f9afc"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-tabs-health-refused.json b/mobile/rpc-foundation/goldens/session-tabs-health-refused.json deleted file mode 100644 index d2575205a91..00000000000 --- a/mobile/rpc-foundation/goldens/session-tabs-health-refused.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.tabs-stream-health", - "family": "session.tabs-stream-health", - "namedDeltas": [], - "values": { - "0cde28482d1a": { - "name": "session.tabs.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.list\",\"params\":{\"worktree\":\"id:workspace-1\"}}" - }, - "49a2260ea0e7": { - "accepted": "unapplied", - "applicationRevision": 0 - }, - "510d7b10aacf": { - "name": "fetch-started", - "ordinal": 1, - "value": {} - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "878af0e23d93": { - "name": "fetch-failed", - "ordinal": 4, - "value": { - "code": "worktree_not_found", - "message": "No such workspace" - } - }, - "c4ac5e6a7071": { - "name": "session.tabs.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "session.tabs.list" - }, - { - "name": "params", - "value": { - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "worktree_not_found", - "message": "No such workspace" - }, - "id": "frame-1", - "ok": false - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-tabs-health-refused", - "checkpoints": [ - { - "id": "refused", - "observation": { - "sender": ["c4ac5e6a7071"], - "payloads": ["0cde28482d1a"], - "settlements": { - "activate": "84e5ca07cb7a", - "reconcile": "eb79a9b3682a" - }, - "state": "49a2260ea0e7", - "effects": ["510d7b10aacf", "878af0e23d93"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-take-floor.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-take-floor.json deleted file mode 100644 index a0693d0d4c2..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-take-floor.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "namedDeltas": [], - "values": { - "39066dc373ed": { - "name": "terminal.setDisplayMode#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.setDisplayMode\",\"params\":{\"terminal\":\"terminal-1\",\"mode\":\"auto\",\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"},\"viewport\":{\"cols\":100,\"rows\":30}}}" - }, - "61b1eb90a019": { - "crash": { - "$rpc": "null" - }, - "inFlight": ["terminal-1"], - "viewport": { - "cols": 100, - "rows": 30 - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "ad499ab069a7": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "mode": "auto", - "terminal": "terminal-1", - "viewport": { - "cols": 100, - "rows": 30 - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "c21196ef3035": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "mode": "auto", - "terminal": "terminal-1", - "viewport": { - "cols": 100, - "rows": 30 - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "mode": "auto" - } - } - } - }, - "e27323f28d10": { - "name": "subscribe-terminal", - "ordinal": 1, - "value": { - "handle": "terminal-1" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "fa46c84fb0ab": { - "crash": { - "$rpc": "null" - }, - "inFlight": [], - "viewport": { - "cols": 100, - "rows": 30 - } - } - }, - "recording": { - "scenario": "session-terminal-display-mode-auto-take-floor", - "checkpoints": [ - { - "id": "in-flight", - "observation": { - "sender": ["ad499ab069a7"], - "payloads": ["39066dc373ed"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "9270aeb7d9c6" - }, - "state": "61b1eb90a019", - "effects": ["e27323f28d10"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["c21196ef3035"], - "payloads": ["39066dc373ed"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "eb79a9b3682a" - }, - "state": "fa46c84fb0ab", - "effects": ["e27323f28d10"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-device-token.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-device-token.json deleted file mode 100644 index 09e2abe41fb..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-device-token.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "namedDeltas": [], - "values": { - "3ba74271a870": { - "name": "terminal.setDisplayMode#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.setDisplayMode\",\"params\":{\"terminal\":\"terminal-1\",\"mode\":\"auto\",\"viewport\":{\"cols\":100,\"rows\":30}}}" - }, - "61b1eb90a019": { - "crash": { - "$rpc": "null" - }, - "inFlight": ["terminal-1"], - "viewport": { - "cols": 100, - "rows": 30 - } - }, - "857d314fbd2c": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "mode": "auto", - "terminal": "terminal-1", - "viewport": { - "cols": 100, - "rows": 30 - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "mode": "auto" - } - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "9d25aa3b9920": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "mode": "auto", - "terminal": "terminal-1", - "viewport": { - "cols": 100, - "rows": 30 - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "e27323f28d10": { - "name": "subscribe-terminal", - "ordinal": 1, - "value": { - "handle": "terminal-1" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "fa46c84fb0ab": { - "crash": { - "$rpc": "null" - }, - "inFlight": [], - "viewport": { - "cols": 100, - "rows": 30 - } - } - }, - "recording": { - "scenario": "session-terminal-display-mode-auto-without-device-token", - "checkpoints": [ - { - "id": "in-flight", - "observation": { - "sender": ["9d25aa3b9920"], - "payloads": ["3ba74271a870"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "9270aeb7d9c6" - }, - "state": "61b1eb90a019", - "effects": ["e27323f28d10"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["857d314fbd2c"], - "payloads": ["3ba74271a870"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "eb79a9b3682a" - }, - "state": "fa46c84fb0ab", - "effects": ["e27323f28d10"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-viewport.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-viewport.json deleted file mode 100644 index f94c96e44e9..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-viewport.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "namedDeltas": [], - "values": { - "36a9812a9d80": { - "crash": { - "$rpc": "null" - }, - "inFlight": [], - "viewport": { - "$rpc": "null" - } - }, - "8dda780d8b54": { - "crash": { - "$rpc": "null" - }, - "inFlight": ["terminal-1"], - "viewport": { - "$rpc": "null" - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "a1c27099bee5": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "mode": "auto", - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "mode": "auto" - } - } - } - }, - "b8202d6f729b": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "mode": "auto", - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "d26d24f38a03": { - "name": "terminal.setDisplayMode#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.setDisplayMode\",\"params\":{\"terminal\":\"terminal-1\",\"mode\":\"auto\",\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "e27323f28d10": { - "name": "subscribe-terminal", - "ordinal": 1, - "value": { - "handle": "terminal-1" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "session-terminal-display-mode-auto-without-viewport", - "checkpoints": [ - { - "id": "in-flight", - "observation": { - "sender": ["b8202d6f729b"], - "payloads": ["d26d24f38a03"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "9270aeb7d9c6" - }, - "state": "8dda780d8b54", - "effects": ["e27323f28d10"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["a1c27099bee5"], - "payloads": ["d26d24f38a03"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "eb79a9b3682a" - }, - "state": "36a9812a9d80", - "effects": ["e27323f28d10"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-to-desktop.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-to-desktop.json deleted file mode 100644 index 5ba97b73847..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-to-desktop.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "namedDeltas": [], - "values": { - "61b1eb90a019": { - "crash": { - "$rpc": "null" - }, - "inFlight": ["terminal-1"], - "viewport": { - "cols": 100, - "rows": 30 - } - }, - "65926da8a267": { - "name": "terminal.setDisplayMode#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.setDisplayMode\",\"params\":{\"terminal\":\"terminal-1\",\"mode\":\"desktop\",\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "bfd37fff9f79": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "mode": "desktop", - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "mode": "desktop" - } - } - } - }, - "e27323f28d10": { - "name": "subscribe-terminal", - "ordinal": 1, - "value": { - "handle": "terminal-1" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "fa46c84fb0ab": { - "crash": { - "$rpc": "null" - }, - "inFlight": [], - "viewport": { - "cols": 100, - "rows": 30 - } - }, - "fe1c824daad7": { - "name": "terminal.setDisplayMode#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "terminal.setDisplayMode" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "mode": "desktop", - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - } - }, - "recording": { - "scenario": "session-terminal-display-mode-to-desktop", - "checkpoints": [ - { - "id": "in-flight", - "observation": { - "sender": ["fe1c824daad7"], - "payloads": ["65926da8a267"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "9270aeb7d9c6" - }, - "state": "61b1eb90a019", - "effects": ["e27323f28d10"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["bfd37fff9f79"], - "payloads": ["65926da8a267"], - "settlements": { - "mount": "eb79a9b3682a", - "toggle": "eb79a9b3682a" - }, - "state": "fa46c84fb0ab", - "effects": ["e27323f28d10"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-dedupes-handles.json b/mobile/rpc-foundation/goldens/session-terminal-list-dedupes-handles.json deleted file mode 100644 index 0298a8b31c1..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-list-dedupes-handles.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "namedDeltas": [], - "values": { - "475f23d61c0e": { - "name": "terminal.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.list\",\"params\":{\"worktree\":\"id:workspace-1\",\"includeVisualLayouts\":false,\"includePreview\":false}}" - }, - "580c77c4c1df": { - "known": [ - { - "handle": "terminal-1", - "terminalTheme": { - "$rpc": "undefined" - }, - "title": "one" - } - ], - "terminals": [ - { - "handle": "terminal-1", - "terminalTheme": { - "$rpc": "undefined" - }, - "title": "one" - } - ] - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "c7073e587980": { - "name": "terminal.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.list" - }, - { - "name": "params", - "value": { - "includePreview": false, - "includeVisualLayouts": false, - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "terminals": [ - { - "handle": "terminal-1", - "title": "one" - }, - { - "handle": "terminal-1", - "title": "renamed" - } - ] - } - } - } - } - }, - "recording": { - "scenario": "session-terminal-list-dedupes-handles", - "checkpoints": [ - { - "id": "deduped", - "observation": { - "sender": ["c7073e587980"], - "payloads": ["475f23d61c0e"], - "settlements": { - "fetch": "84e5ca07cb7a" - }, - "state": "580c77c4c1df", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-empty-guarded.json b/mobile/rpc-foundation/goldens/session-terminal-list-empty-guarded.json deleted file mode 100644 index 2e5573b1235..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-list-empty-guarded.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "namedDeltas": [], - "values": { - "475f23d61c0e": { - "name": "terminal.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.list\",\"params\":{\"worktree\":\"id:workspace-1\",\"includeVisualLayouts\":false,\"includePreview\":false}}" - }, - "6aa9d70c1c82": { - "known": [], - "terminals": [] - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "fd88f17223dd": { - "name": "terminal.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.list" - }, - { - "name": "params", - "value": { - "includePreview": false, - "includeVisualLayouts": false, - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "terminals": [] - } - } - } - } - }, - "recording": { - "scenario": "session-terminal-list-empty-guarded", - "checkpoints": [ - { - "id": "kept", - "observation": { - "sender": ["fd88f17223dd"], - "payloads": ["475f23d61c0e"], - "settlements": { - "no-empty": "84e5ca07cb7a" - }, - "state": "6aa9d70c1c82", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-merged.json b/mobile/rpc-foundation/goldens/session-terminal-list-merged.json deleted file mode 100644 index a1033e22af2..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-list-merged.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "namedDeltas": [], - "values": { - "475f23d61c0e": { - "name": "terminal.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.list\",\"params\":{\"worktree\":\"id:workspace-1\",\"includeVisualLayouts\":false,\"includePreview\":false}}" - }, - "727166f3bc25": { - "known": [ - { - "handle": "terminal-1", - "terminalTheme": { - "$rpc": "undefined" - }, - "title": "one" - }, - { - "handle": "terminal-2", - "terminalTheme": { - "$rpc": "undefined" - }, - "title": "two" - } - ], - "terminals": [ - { - "handle": "terminal-1", - "terminalTheme": { - "$rpc": "undefined" - }, - "title": "one" - }, - { - "handle": "terminal-2", - "terminalTheme": { - "$rpc": "undefined" - }, - "title": "two" - } - ] - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "ee68ebc5fb96": { - "name": "terminal.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.list" - }, - { - "name": "params", - "value": { - "includePreview": false, - "includeVisualLayouts": false, - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "terminals": [ - { - "handle": "terminal-1", - "title": "one" - }, - { - "handle": "terminal-2", - "title": "two" - } - ] - } - } - } - } - }, - "recording": { - "scenario": "session-terminal-list-merged", - "checkpoints": [ - { - "id": "listed", - "observation": { - "sender": ["ee68ebc5fb96"], - "payloads": ["475f23d61c0e"], - "settlements": { - "fetch": "84e5ca07cb7a" - }, - "state": "727166f3bc25", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-refused.json b/mobile/rpc-foundation/goldens/session-terminal-list-refused.json deleted file mode 100644 index efeda9e4612..00000000000 --- a/mobile/rpc-foundation/goldens/session-terminal-list-refused.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "namedDeltas": [], - "values": { - "475f23d61c0e": { - "name": "terminal.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.list\",\"params\":{\"worktree\":\"id:workspace-1\",\"includeVisualLayouts\":false,\"includePreview\":false}}" - }, - "6aa9d70c1c82": { - "known": [], - "terminals": [] - }, - "7ed3d39f0607": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": false - }, - "af74332c1c73": { - "name": "terminal.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.list" - }, - { - "name": "params", - "value": { - "includePreview": false, - "includeVisualLayouts": false, - "worktree": "id:workspace-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "worktree_not_found", - "message": "No such workspace" - }, - "id": "frame-1", - "ok": false - } - } - } - }, - "recording": { - "scenario": "session-terminal-list-refused", - "checkpoints": [ - { - "id": "refused", - "observation": { - "sender": ["af74332c1c73"], - "payloads": ["475f23d61c0e"], - "settlements": { - "fetch": "7ed3d39f0607" - }, - "state": "6aa9d70c1c82", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-icons.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-icons.json deleted file mode 100644 index 0613f83a363..00000000000 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-icons.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "namedDeltas": [], - "values": { - "091af476e5cc": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 9, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}" - }, - "0fd72e1aba93": { - "desktopRepos": [ - { - "badgeColor": "#123456", - "displayName": "Lucide", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1", - "repoIcon": { - "name": "Rocket", - "type": "lucide" - } - }, - { - "displayName": "Emoji", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2", - "repoIcon": { - "emoji": "🐳", - "type": "emoji" - } - }, - { - "displayName": "Avatar", - "executionHostId": "ssh:ssh-1", - "id": "repo-3", - "path": "repo-3", - "repoIcon": { - "label": "acme/orca", - "source": "github", - "src": "https://github.com/acme.png?size=64", - "type": "image" - } - } - ], - "hostHealthById": [], - "hostLabelById": [["ssh:ssh-1", "SSH"]], - "hostPlatform": "darwin", - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"], - ["repo-3", "ssh:ssh-1"] - ] - }, - "12ba3f41d4db": { - "name": "hostPlatform", - "ordinal": 14, - "value": "darwin" - }, - "13397c3d4e28": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [], - "hostSettingOverrides": {} - } - } - } - } - }, - "21069b5e026b": { - "name": "streams-registered-at-teardown", - "ordinal": 15, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "2864022c20ef": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "platform": "darwin" - } - } - } - }, - "353f0cb8ea69": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "51f04c7a4983": { - "name": "desktopRepos", - "ordinal": 7, - "value": [ - { - "badgeColor": "#123456", - "displayName": "Lucide", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1", - "repoIcon": { - "name": "Rocket", - "type": "lucide" - } - }, - { - "displayName": "Emoji", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2", - "repoIcon": { - "emoji": "🐳", - "type": "emoji" - } - }, - { - "displayName": "Avatar", - "executionHostId": "ssh:ssh-1", - "id": "repo-3", - "path": "repo-3", - "repoIcon": { - "label": "acme/orca", - "source": "github", - "src": "https://github.com/acme.png?size=64", - "type": "image" - } - } - ] - }, - "564f54c8d902": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "56ab81cb67dc": { - "name": "hostLabelById", - "ordinal": 13, - "value": [["ssh:ssh-1", "SSH"]] - }, - "7999924c608c": { - "name": "settings.get#1", - "ordinal": 10, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "80e40a970f99": { - "name": "host.platform#1", - "ordinal": 11, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}" - }, - "84c1dde54c62": { - "name": "hostHealthById", - "ordinal": 12, - "value": [] - }, - "910617d262f4": { - "desktopRepos": [ - { - "badgeColor": "#123456", - "displayName": "Lucide", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1", - "repoIcon": { - "name": "Rocket", - "type": "lucide" - } - }, - { - "displayName": "Emoji", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2", - "repoIcon": { - "emoji": "🐳", - "type": "emoji" - } - }, - { - "displayName": "Avatar", - "executionHostId": "ssh:ssh-1", - "id": "repo-3", - "path": "repo-3", - "repoIcon": { - "label": "acme/orca", - "source": "github", - "src": "https://github.com/acme.png?size=64", - "type": "image" - } - } - ], - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"], - ["repo-3", "ssh:ssh-1"] - ] - }, - "913d2a349d4d": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "ssh.listTargetSummaries" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - } - }, - "beb4ddf549da": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\",\"params\":{\"afterSnapshotId\":null}}" - }, - "c042445bb597": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "afterSnapshotId": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "badgeColor": "#123456", - "connectionId": { - "$rpc": "null" - }, - "displayName": "Lucide", - "id": "repo-1", - "repoIcon": { - "name": "Rocket", - "type": "lucide" - } - }, - { - "connectionId": "ssh-1", - "displayName": "Emoji", - "id": "repo-2", - "repoIcon": { - "emoji": "🐳", - "type": "emoji" - } - }, - { - "displayName": "Avatar", - "executionHostId": "ssh:ssh-1", - "id": "repo-3", - "repoIcon": { - "label": "acme/orca", - "source": "github", - "src": "https://github.com/acme.png?size=64", - "type": "image" - } - } - ] - } - } - } - }, - "d4ee33c46b05": { - "name": "repoHostIdByRepoId", - "ordinal": 8, - "value": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"], - ["repo-3", "ssh:ssh-1"] - ] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eef1ee3c2773": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - } - }, - "recording": { - "scenario": "settings-repo-metadata-icons", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["c042445bb597", "913d2a349d4d", "353f0cb8ea69", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "910617d262f4", - "effects": ["51f04c7a4983", "d4ee33c46b05"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["c042445bb597", "913d2a349d4d", "13397c3d4e28", "2864022c20ef"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "0fd72e1aba93", - "effects": [ - "51f04c7a4983", - "d4ee33c46b05", - "84c1dde54c62", - "56ab81cb67dc", - "12ba3f41d4db" - ] - } - }, - { - "id": "cleanup", - "observation": { - "sender": ["c042445bb597", "913d2a349d4d", "13397c3d4e28", "2864022c20ef"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "0fd72e1aba93", - "effects": [ - "51f04c7a4983", - "d4ee33c46b05", - "84c1dde54c62", - "56ab81cb67dc", - "12ba3f41d4db", - "21069b5e026b" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json deleted file mode 100644 index 1ccd86c7a3e..00000000000 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json +++ /dev/null @@ -1,829 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "namedDeltas": [], - "values": { - "04278f519cb2": { - "name": "host.platform#2", - "ordinal": 18, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "091af476e5cc": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 9, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}" - }, - "20200b8feac4": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "platform": "linux" - } - } - } - }, - "353f0cb8ea69": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "44eb39507b75": { - "name": "streams-registered-at-teardown", - "ordinal": 23, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "564f54c8d902": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "56ab81cb67dc": { - "name": "hostLabelById", - "ordinal": 13, - "value": [["ssh:ssh-1", "SSH"]] - }, - "6770aa1912e4": { - "name": "repo.list#2", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "afterSnapshotId": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "repos": [ - { - "connectionId": { - "$rpc": "null" - }, - "displayName": "Local", - "id": "repo-1" - }, - { - "connectionId": "ssh-1", - "displayName": "Remote", - "id": "repo-2" - } - ] - } - } - } - }, - "68916f125c3c": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "689e19c40847": { - "name": "ssh.listTargetSummaries#2", - "ordinal": 16, - "args": [ - { - "name": "method", - "value": "ssh.listTargetSummaries" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "6c56b8af9ea2": { - "name": "host.platform#2", - "ordinal": 22, - "json": "{\"id\":\"frame-9\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}" - }, - "6d43117882f3": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "hostHealthById": [], - "hostLabelById": [["ssh:ssh-1", "SSH"]], - "hostPlatform": "linux", - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "7999924c608c": { - "name": "settings.get#1", - "ordinal": 10, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "80e40a970f99": { - "name": "host.platform#1", - "ordinal": 11, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}" - }, - "84c1dde54c62": { - "name": "hostHealthById", - "ordinal": 12, - "value": [] - }, - "8509974080e2": { - "name": "settings.get#2", - "ordinal": 21, - "json": "{\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "8cfdd18c5fe6": { - "name": "repoHostIdByRepoId", - "ordinal": 8, - "value": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "8e05de8d7963": { - "name": "settings.get#2", - "ordinal": 17, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "settings refused" - }, - "id": "frame-8", - "ok": false - } - } - }, - "8e76374272ce": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - } - } - } - } - }, - "913d2a349d4d": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "ssh.listTargetSummaries" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "b2746491ac07": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "afterSnapshotId": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "connectionId": { - "$rpc": "null" - }, - "displayName": "Local", - "id": "repo-1" - }, - { - "connectionId": "ssh-1", - "displayName": "Remote", - "id": "repo-2" - } - ] - } - } - } - }, - "bb0a00f148b2": { - "name": "ssh.listTargetSummaries#2", - "ordinal": 20, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}" - }, - "beb4ddf549da": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\",\"params\":{\"afterSnapshotId\":null}}" - }, - "c1bc3351532b": { - "name": "repo.list#2", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "afterSnapshotId": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "c54bb879da19": { - "name": "ssh.listTargetSummaries#2", - "ordinal": 16, - "args": [ - { - "name": "method", - "value": "ssh.listTargetSummaries" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-7", - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - } - }, - "d9a8f70590a3": { - "name": "repo.list#2", - "ordinal": 19, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\",\"params\":{\"afterSnapshotId\":null}}" - }, - "dada2e9c7660": { - "name": "host.platform#2", - "ordinal": 18, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-9", - "ok": true, - "result": { - "platform": "linux" - } - } - } - }, - "e7b605a67b1f": { - "name": "desktopRepos", - "ordinal": 7, - "value": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ] - }, - "e9522d7085ef": { - "name": "settings.get#2", - "ordinal": 17, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eef1ee3c2773": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "f9193cae5824": { - "name": "hostPlatform", - "ordinal": 14, - "value": "linux" - } - }, - "recording": { - "scenario": "settings-repo-metadata-refuse-after-data", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "353f0cb8ea69", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8e76374272ce", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "data-present", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "8e76374272ce", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "refresh-pending", - "observation": { - "sender": [ - "b2746491ac07", - "913d2a349d4d", - "8e76374272ce", - "20200b8feac4", - "c1bc3351532b", - "689e19c40847", - "e9522d7085ef", - "04278f519cb2" - ], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99", - "d9a8f70590a3", - "bb0a00f148b2", - "8509974080e2", - "6c56b8af9ea2" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a", - "reload": "9270aeb7d9c6" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "refused-after-data", - "observation": { - "sender": [ - "b2746491ac07", - "913d2a349d4d", - "8e76374272ce", - "20200b8feac4", - "6770aa1912e4", - "c54bb879da19", - "8e05de8d7963", - "dada2e9c7660" - ], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99", - "d9a8f70590a3", - "bb0a00f148b2", - "8509974080e2", - "6c56b8af9ea2" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a", - "reload": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "cleanup", - "observation": { - "sender": [ - "b2746491ac07", - "913d2a349d4d", - "8e76374272ce", - "20200b8feac4", - "6770aa1912e4", - "c54bb879da19", - "8e05de8d7963", - "dada2e9c7660" - ], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99", - "d9a8f70590a3", - "bb0a00f148b2", - "8509974080e2", - "6c56b8af9ea2" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a", - "reload": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824", - "44eb39507b75" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json deleted file mode 100644 index d8b27190089..00000000000 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json +++ /dev/null @@ -1,420 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "namedDeltas": [], - "values": { - "091af476e5cc": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 9, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}" - }, - "20200b8feac4": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "platform": "linux" - } - } - } - }, - "21069b5e026b": { - "name": "streams-registered-at-teardown", - "ordinal": 15, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "353f0cb8ea69": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "564f54c8d902": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "56ab81cb67dc": { - "name": "hostLabelById", - "ordinal": 13, - "value": [["ssh:ssh-1", "SSH"]] - }, - "68916f125c3c": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "6d43117882f3": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "hostHealthById": [], - "hostLabelById": [["ssh:ssh-1", "SSH"]], - "hostPlatform": "linux", - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "7999924c608c": { - "name": "settings.get#1", - "ordinal": 10, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "80e40a970f99": { - "name": "host.platform#1", - "ordinal": 11, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}" - }, - "84c1dde54c62": { - "name": "hostHealthById", - "ordinal": 12, - "value": [] - }, - "8cfdd18c5fe6": { - "name": "repoHostIdByRepoId", - "ordinal": 8, - "value": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "913d2a349d4d": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "ssh.listTargetSummaries" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - } - }, - "b2746491ac07": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "afterSnapshotId": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "connectionId": { - "$rpc": "null" - }, - "displayName": "Local", - "id": "repo-1" - }, - { - "connectionId": "ssh-1", - "displayName": "Remote", - "id": "repo-2" - } - ] - } - } - } - }, - "beb4ddf549da": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\",\"params\":{\"afterSnapshotId\":null}}" - }, - "d2b9a3a50f2e": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "settings refused" - }, - "id": "frame-4", - "ok": false - } - } - }, - "e7b605a67b1f": { - "name": "desktopRepos", - "ordinal": 7, - "value": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eef1ee3c2773": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "f9193cae5824": { - "name": "hostPlatform", - "ordinal": 14, - "value": "linux" - } - }, - "recording": { - "scenario": "settings-repo-metadata-refused", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "353f0cb8ea69", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "d2b9a3a50f2e", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "d2b9a3a50f2e", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824", - "21069b5e026b" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json deleted file mode 100644 index ab358646c4d..00000000000 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json +++ /dev/null @@ -1,417 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "namedDeltas": [], - "values": { - "091af476e5cc": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 9, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}" - }, - "20200b8feac4": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "platform": "linux" - } - } - } - }, - "21069b5e026b": { - "name": "streams-registered-at-teardown", - "ordinal": 15, - "value": [ - { - "cancelled": true, - "method": "runtime.clientEvents.subscribe", - "payload": "runtime.clientEvents.subscribe#1" - } - ] - }, - "353f0cb8ea69": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "564f54c8d902": { - "name": "host.platform#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "host.platform" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "56ab81cb67dc": { - "name": "hostLabelById", - "ordinal": 13, - "value": [["ssh:ssh-1", "SSH"]] - }, - "68916f125c3c": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "6d43117882f3": { - "desktopRepos": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ], - "hostHealthById": [], - "hostLabelById": [["ssh:ssh-1", "SSH"]], - "hostPlatform": "linux", - "repoHostIdByRepoId": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "7999924c608c": { - "name": "settings.get#1", - "ordinal": 10, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "80e40a970f99": { - "name": "host.platform#1", - "ordinal": 11, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}" - }, - "84c1dde54c62": { - "name": "hostHealthById", - "ordinal": 12, - "value": [] - }, - "8cfdd18c5fe6": { - "name": "repoHostIdByRepoId", - "ordinal": 8, - "value": [ - ["repo-1", "local"], - ["repo-2", "ssh:ssh-1"] - ] - }, - "913d2a349d4d": { - "name": "ssh.listTargetSummaries#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "ssh.listTargetSummaries" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - } - }, - "b2746491ac07": { - "name": "repo.list#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "afterSnapshotId": { - "$rpc": "null" - } - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "connectionId": { - "$rpc": "null" - }, - "displayName": "Local", - "id": "repo-1" - }, - { - "connectionId": "ssh-1", - "displayName": "Remote", - "id": "repo-2" - } - ] - } - } - } - }, - "beb4ddf549da": { - "name": "repo.list#1", - "ordinal": 3, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\",\"params\":{\"afterSnapshotId\":null}}" - }, - "e7b605a67b1f": { - "name": "desktopRepos", - "ordinal": 7, - "value": [ - { - "displayName": "Local", - "executionHostId": "local", - "id": "repo-1", - "path": "repo-1" - }, - { - "displayName": "Remote", - "executionHostId": "ssh:ssh-1", - "id": "repo-2", - "path": "repo-2" - } - ] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eef1ee3c2773": { - "name": "runtime.clientEvents.subscribe#1", - "ordinal": 1, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"runtime.clientEvents.subscribe\",\"params\":null}" - }, - "ef11a2e4f9d5": { - "name": "settings.get#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings disconnected", - "isRpcDeliveryUnknown": true - } - } - }, - "f9193cae5824": { - "name": "hostPlatform", - "ordinal": 14, - "value": "linux" - } - }, - "recording": { - "scenario": "settings-repo-metadata-transport-error", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "353f0cb8ea69", "564f54c8d902"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "68916f125c3c", - "effects": ["e7b605a67b1f", "8cfdd18c5fe6"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "ef11a2e4f9d5", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824" - ] - } - }, - { - "id": "cleanup", - "observation": { - "sender": ["b2746491ac07", "913d2a349d4d", "ef11a2e4f9d5", "20200b8feac4"], - "payloads": [ - "eef1ee3c2773", - "beb4ddf549da", - "091af476e5cc", - "7999924c608c", - "80e40a970f99" - ], - "settlements": { - "mount": "eb79a9b3682a", - "load": "eb79a9b3682a" - }, - "state": "6d43117882f3", - "effects": [ - "e7b605a67b1f", - "8cfdd18c5fe6", - "84c1dde54c62", - "56ab81cb67dc", - "f9193cae5824", - "21069b5e026b" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json deleted file mode 100644 index 67e9dbe7c20..00000000000 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json +++ /dev/null @@ -1,846 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.task-hydration", - "family": "settings.task-hydration", - "namedDeltas": [], - "values": { - "05ccd79ba4af": { - "name": "linear.status#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "0ebb7f0660a0": { - "name": "showLinearTeamPicker", - "ordinal": 4, - "value": false - }, - "15cdb7759e6b": { - "name": "ui.get#1", - "ordinal": 41, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}" - }, - "1833d0fa5f1d": { - "name": "jira.status#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "19505460d94b": { - "name": "githubMode", - "ordinal": 55, - "value": "items" - }, - "1a1091da11b2": { - "name": "githubProjectSettings", - "ordinal": 61, - "value": { - "activeProject": { - "$rpc": "null" - }, - "lastViewByProject": {}, - "pinned": [], - "recent": [] - } - }, - "1dfcd3f6163d": { - "name": "preflight.check#1", - "ordinal": 37, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "22b355deb2df": { - "name": "provider", - "ordinal": 54, - "value": "github" - }, - "26ece795530e": { - "name": "showGitHubIssueSourcePicker", - "ordinal": 14, - "value": false - }, - "276a60ed41a5": { - "name": "mergeMethodTaskItem", - "ordinal": 28, - "value": { - "$rpc": "null" - } - }, - "2aad05f979a9": { - "name": "selectedRepoIds", - "ordinal": 52, - "value": [] - }, - "2b39b469a001": { - "name": "pendingGitHubProjectViewSelection", - "ordinal": 19, - "value": { - "$rpc": "null" - } - }, - "2bf05835527f": { - "name": "showLinearFilterPicker", - "ordinal": 11, - "value": false - }, - "2c3706d59dd5": { - "name": "linearTeams", - "ordinal": 49, - "value": [] - }, - "2d9ce55cc13a": { - "name": "query", - "ordinal": 62, - "value": "is:issue is:open" - }, - "301bdbdf1dec": { - "name": "taskStateHydrated", - "ordinal": 1, - "value": false - }, - "3082bf4965fa": { - "name": "selectedLinearWorkspaceId", - "ordinal": 51, - "value": { - "$rpc": "null" - } - }, - "354e99da4ba4": { - "name": "pendingHostedStateChange", - "ordinal": 27, - "value": { - "$rpc": "null" - } - }, - "394fb5675266": { - "name": "mergeMethodProjectRow", - "ordinal": 29, - "value": { - "$rpc": "null" - } - }, - "3a03e162efd9": { - "name": "selectedLinearTeamIds", - "ordinal": 50, - "value": [] - }, - "3a94dcc00915": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "3c66c971fe96": { - "name": "showGitHubProjectViewPicker", - "ordinal": 17, - "value": false - }, - "3ff235330cbe": { - "name": "jiraFilter", - "ordinal": 60, - "value": "assigned" - }, - "40f00017ad77": { - "name": "linearWorkspaces", - "ordinal": 48, - "value": [] - }, - "430c28cba43c": { - "name": "taskStateHydrated", - "ordinal": 64, - "value": true - }, - "45cfb5ee97ea": { - "name": "pendingHostedMerge", - "ordinal": 25, - "value": { - "$rpc": "null" - } - }, - "45e466d86a07": { - "name": "showLinearWorkspacePicker", - "ordinal": 3, - "value": false - }, - "4cbaceb42c08": { - "name": "detailPayload", - "ordinal": 21, - "value": { - "$rpc": "null" - } - }, - "5729b7cdb4ba": { - "name": "showFilterSheet", - "ordinal": 12, - "value": false - }, - "57568fbaf4f7": { - "name": "linearConnected", - "ordinal": 47, - "value": false - }, - "5886b76643d9": { - "name": "appliedQuery", - "ordinal": 63, - "value": "is:issue is:open" - }, - "5c7f665de6c4": { - "name": "githubPreset", - "ordinal": 57, - "value": "issues" - }, - "600862ad27b3": { - "name": "githubProjectHiddenFieldIdsByView", - "ordinal": 46, - "value": {} - }, - "688fe01c6196": { - "name": "jira.status#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "jira.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "connected": false - } - } - } - }, - "714d4b3547ff": { - "name": "projectRepoNotInOrca", - "ordinal": 20, - "value": { - "$rpc": "null" - } - }, - "71bedad13169": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "756c11d6e5bc": { - "name": "settings.get#1", - "ordinal": 40, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "7b0ad7b958dd": { - "name": "tasksSupportState", - "ordinal": 2, - "value": { - "client": "logical-client", - "kind": "unknown" - } - }, - "800b1afcceea": { - "name": "preflight.check#1", - "ordinal": 37, - "args": [ - { - "name": "method", - "value": "preflight.check" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "glab": { - "installed": false - } - } - } - } - }, - "8015a69c7774": { - "name": "showGitLabFilterPicker", - "ordinal": 10, - "value": false - }, - "82daca007272": { - "name": "jiraConnection", - "ordinal": 65, - "value": { - "connected": false, - "credentialError": { - "$rpc": "null" - }, - "selection": { - "$rpc": "null" - }, - "sites": [], - "unavailableReason": { - "$rpc": "null" - } - } - }, - "82fb15a0f7e3": { - "name": "runtimeTaskSettings", - "ordinal": 44, - "value": {} - }, - "87bd323da79d": { - "name": "trustedOrcaHooks", - "ordinal": 45, - "value": {} - }, - "8c4056edb811": { - "name": "linear.status#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "connected": false - } - } - } - }, - "8db7a6a7d531": { - "name": "status.get#1", - "ordinal": 30, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "capabilities": ["mobile.tasks.v1"] - } - } - } - }, - "931e8e15095d": { - "name": "showGitHubProjectPicker", - "ordinal": 16, - "value": false - }, - "93acc26335bc": { - "name": "githubKind", - "ordinal": 58, - "value": "issues" - }, - "963a91c532c8": { - "hydrated": true, - "settings": {} - }, - "98281d0e8b13": { - "name": "projectRowDetail", - "ordinal": 22, - "value": { - "$rpc": "null" - } - }, - "9b2188f8d6b7": { - "name": "showGitHubPagePicker", - "ordinal": 15, - "value": false - }, - "9d27c74981a1": { - "name": "error", - "ordinal": 33, - "value": "" - }, - "9f545b97e888": { - "name": "showCreateTargetPicker", - "ordinal": 23, - "value": false - }, - "a1d4e4be5356": { - "name": "settings.get#1", - "ordinal": 35, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "settings refused" - }, - "id": "frame-3", - "ok": false - } - } - }, - "a5addaab38bf": { - "name": "linearFilter", - "ordinal": 59, - "value": "all" - }, - "aa9af10b3812": { - "name": "preflight.check#1", - "ordinal": 42, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}" - }, - "ab4a6032b0e4": { - "name": "jira.status#1", - "ordinal": 39, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"jira.status\"}" - }, - "b7cc1194ed29": { - "name": "visibleProviders", - "ordinal": 53, - "value": ["github", "jira", "linear"] - }, - "bbce658fe3f5": { - "name": "showRepoPicker", - "ordinal": 13, - "value": false - }, - "c11fe123ce70": { - "name": "showGitHubProjectFieldsPicker", - "ordinal": 18, - "value": false - }, - "c1630da260c7": { - "name": "showLinearDisplayPicker", - "ordinal": 5, - "value": false - }, - "c37873342ba8": { - "name": "linearStatusPickerItem", - "ordinal": 24, - "value": { - "$rpc": "null" - } - }, - "c6178e6a0f4e": { - "hydrated": false, - "settings": {} - }, - "c87109595a65": { - "name": "ui.get#1", - "ordinal": 36, - "args": [ - { - "name": "method", - "value": "ui.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "ui": {} - } - } - } - }, - "d100b9546c3d": { - "name": "showGitHubKindPicker", - "ordinal": 7, - "value": false - }, - "d1af3771ebfa": { - "name": "status.get#1", - "ordinal": 31, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "d208e8015339": { - "name": "showGitHubPresetPicker", - "ordinal": 8, - "value": false - }, - "d50362207233": { - "name": "tasksSupportState", - "ordinal": 32, - "value": { - "client": "logical-client", - "kind": "supported" - } - }, - "dd6fb20daf67": { - "name": "linear.status#1", - "ordinal": 43, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}" - }, - "e033cf17e121": { - "name": "showGitLabViewPicker", - "ordinal": 9, - "value": false - }, - "e61de5a1b27e": { - "name": "defaultGitHubPreset", - "ordinal": 56, - "value": "issues" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f164de325151": { - "name": "pendingProjectGitHubMerge", - "ordinal": 26, - "value": { - "$rpc": "null" - } - }, - "fdb0bbb8aa59": { - "name": "showLinearConnect", - "ordinal": 6, - "value": false - } - }, - "recording": { - "scenario": "settings-task-hydration-refused", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": [ - "8db7a6a7d531", - "1833d0fa5f1d", - "3a94dcc00915", - "71bedad13169", - "1dfcd3f6163d", - "05ccd79ba4af" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "c6178e6a0f4e", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1" - ] - } - }, - { - "id": "settled", - "observation": { - "sender": [ - "8db7a6a7d531", - "688fe01c6196", - "a1d4e4be5356", - "c87109595a65", - "800b1afcceea", - "8c4056edb811" - ], - "payloads": [ - "d1af3771ebfa", - "ab4a6032b0e4", - "756c11d6e5bc", - "15cdb7759e6b", - "aa9af10b3812", - "dd6fb20daf67" - ], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "963a91c532c8", - "effects": [ - "301bdbdf1dec", - "7b0ad7b958dd", - "45e466d86a07", - "0ebb7f0660a0", - "c1630da260c7", - "fdb0bbb8aa59", - "d100b9546c3d", - "d208e8015339", - "e033cf17e121", - "8015a69c7774", - "2bf05835527f", - "5729b7cdb4ba", - "bbce658fe3f5", - "26ece795530e", - "9b2188f8d6b7", - "931e8e15095d", - "3c66c971fe96", - "c11fe123ce70", - "2b39b469a001", - "714d4b3547ff", - "4cbaceb42c08", - "98281d0e8b13", - "9f545b97e888", - "c37873342ba8", - "45cfb5ee97ea", - "f164de325151", - "354e99da4ba4", - "276a60ed41a5", - "394fb5675266", - "d50362207233", - "9d27c74981a1", - "82fb15a0f7e3", - "87bd323da79d", - "600862ad27b3", - "57568fbaf4f7", - "40f00017ad77", - "2c3706d59dd5", - "3a03e162efd9", - "3082bf4965fa", - "2aad05f979a9", - "b7cc1194ed29", - "22b355deb2df", - "19505460d94b", - "e61de5a1b27e", - "5c7f665de6c4", - "93acc26335bc", - "a5addaab38bf", - "3ff235330cbe", - "1a1091da11b2", - "2d9ce55cc13a", - "5886b76643d9", - "430c28cba43c", - "82daca007272" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json b/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json deleted file mode 100644 index 4eb99fdf724..00000000000 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json +++ /dev/null @@ -1,246 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.task-workspace-create", - "family": "settings.task-workspace-create", - "namedDeltas": [], - "values": { - "0e0c27425410": { - "name": "navigation", - "ordinal": 11, - "value": "/h/host-1/session/wt-1?name=ORC-1+Recorded+issue&created=1" - }, - "15a350feeedb": { - "name": "creatingKey", - "ordinal": 12, - "value": { - "$rpc": "null" - } - }, - "2142af96648c": { - "name": "worktree.create#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "worktree.create" - }, - { - "name": "params", - "value": { - "activate": true, - "createdWithAgent": "claude", - "displayName": "ORC-1 Recorded issue", - "displayNameKind": "generated", - "linkedLinearIssue": "ORC-1", - "name": "orc-1", - "repo": "id:repo-1", - "setupDecision": "inherit", - "startupDraft": "https://linear.app/orca/issue/ORC-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 600000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "worktree": { - "displayName": "ORC-1 Recorded issue", - "id": "wt-1" - } - } - } - } - }, - "33e3b949d4c5": { - "creating": { - "$rpc": "null" - }, - "error": "", - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [] - } - }, - "41a2214deb19": { - "name": "settings.get#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "7abdfe20af50": { - "creating": "linear:1", - "error": "", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "85b99a2ca439": { - "name": "workspaceCreateDraft", - "ordinal": 9, - "value": { - "$rpc": "null" - } - }, - "8ac371cf7234": { - "name": "settings.get#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [] - } - } - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "975f2ff9a730": { - "name": "settings.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "ce455f0c9a54": { - "name": "actionItem", - "ordinal": 8, - "value": { - "$rpc": "null" - } - }, - "e0423a9e6995": { - "name": "worktree.create#1", - "ordinal": 7, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"orc-1\",\"displayName\":\"ORC-1 Recorded issue\",\"displayNameKind\":\"generated\",\"linkedLinearIssue\":\"ORC-1\",\"setupDecision\":\"inherit\",\"activate\":true,\"startupDraft\":\"https://linear.app/orca/issue/ORC-1\",\"createdWithAgent\":\"claude\"}}" - }, - "e0a8ee1f3c00": { - "name": "creatingKey", - "ordinal": 1, - "value": "linear:1" - }, - "e445683fd6a5": { - "name": "runtimeTaskSettings", - "ordinal": 5, - "value": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [] - } - }, - "e969ced16929": { - "name": "setupPrompt", - "ordinal": 10, - "value": { - "$rpc": "null" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed3a7d6bc894": { - "name": "error", - "ordinal": 2, - "value": "" - } - }, - "recording": { - "scenario": "settings-task-workspace-create-linear", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["41a2214deb19"], - "payloads": ["975f2ff9a730"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "9270aeb7d9c6" - }, - "state": "7abdfe20af50", - "effects": ["e0a8ee1f3c00", "ed3a7d6bc894"] - } - }, - { - "id": "created", - "observation": { - "sender": ["8ac371cf7234", "2142af96648c"], - "payloads": ["975f2ff9a730", "e0423a9e6995"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "eb79a9b3682a" - }, - "state": "33e3b949d4c5", - "effects": [ - "e0a8ee1f3c00", - "ed3a7d6bc894", - "e445683fd6a5", - "ce455f0c9a54", - "85b99a2ca439", - "e969ced16929", - "0e0c27425410", - "15a350feeedb" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json deleted file mode 100644 index ee6d6a8339b..00000000000 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.task-workspace", - "family": "settings.task-workspace", - "namedDeltas": [], - "values": { - "1a4a4adee14f": { - "name": "creatingKey", - "ordinal": 8, - "value": { - "$rpc": "null" - } - }, - "2c83b2000f2a": { - "name": "settings.get#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "settings refused" - }, - "id": "frame-1", - "ok": false - } - } - }, - "41a2214deb19": { - "name": "settings.get#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "483b4c51c982": { - "name": "error", - "ordinal": 7, - "value": "Selected agent is disabled. Choose an enabled agent before creating." - }, - "626f3cf8fc2d": { - "name": "workspaceAgentOverridden", - "ordinal": 6, - "value": false - }, - "7abdfe20af50": { - "creating": "linear:1", - "error": "", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "975f2ff9a730": { - "name": "settings.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "d1777904aa15": { - "name": "workspaceAgent", - "ordinal": 5, - "value": "codex" - }, - "d5df3f6b123a": { - "creating": { - "$rpc": "null" - }, - "error": "Selected agent is disabled. Choose an enabled agent before creating.", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "e0a8ee1f3c00": { - "name": "creatingKey", - "ordinal": 1, - "value": "linear:1" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed3a7d6bc894": { - "name": "error", - "ordinal": 2, - "value": "" - } - }, - "recording": { - "scenario": "settings-task-workspace-refused", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["41a2214deb19"], - "payloads": ["975f2ff9a730"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "9270aeb7d9c6" - }, - "state": "7abdfe20af50", - "effects": ["e0a8ee1f3c00", "ed3a7d6bc894"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["2c83b2000f2a"], - "payloads": ["975f2ff9a730"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "eb79a9b3682a" - }, - "state": "d5df3f6b123a", - "effects": [ - "e0a8ee1f3c00", - "ed3a7d6bc894", - "d1777904aa15", - "626f3cf8fc2d", - "483b4c51c982", - "1a4a4adee14f" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json deleted file mode 100644 index 62bceef74bc..00000000000 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.task-workspace", - "family": "settings.task-workspace", - "namedDeltas": [], - "values": { - "1a4a4adee14f": { - "name": "creatingKey", - "ordinal": 8, - "value": { - "$rpc": "null" - } - }, - "41a2214deb19": { - "name": "settings.get#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "483b4c51c982": { - "name": "error", - "ordinal": 7, - "value": "Selected agent is disabled. Choose an enabled agent before creating." - }, - "5deea0bbb564": { - "name": "settings.get#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings disconnected", - "isRpcDeliveryUnknown": true - } - } - }, - "626f3cf8fc2d": { - "name": "workspaceAgentOverridden", - "ordinal": 6, - "value": false - }, - "7abdfe20af50": { - "creating": "linear:1", - "error": "", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "975f2ff9a730": { - "name": "settings.get#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "d1777904aa15": { - "name": "workspaceAgent", - "ordinal": 5, - "value": "codex" - }, - "d5df3f6b123a": { - "creating": { - "$rpc": "null" - }, - "error": "Selected agent is disabled. Choose an enabled agent before creating.", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "e0a8ee1f3c00": { - "name": "creatingKey", - "ordinal": 1, - "value": "linear:1" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed3a7d6bc894": { - "name": "error", - "ordinal": 2, - "value": "" - } - }, - "recording": { - "scenario": "settings-task-workspace-transport-error", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["41a2214deb19"], - "payloads": ["975f2ff9a730"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "9270aeb7d9c6" - }, - "state": "7abdfe20af50", - "effects": ["e0a8ee1f3c00", "ed3a7d6bc894"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["5deea0bbb564"], - "payloads": ["975f2ff9a730"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "eb79a9b3682a" - }, - "state": "d5df3f6b123a", - "effects": [ - "e0a8ee1f3c00", - "ed3a7d6bc894", - "d1777904aa15", - "626f3cf8fc2d", - "483b4c51c982", - "1a4a4adee14f" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-task-write.json b/mobile/rpc-foundation/goldens/settings-task-write.json deleted file mode 100644 index 43023fce813..00000000000 --- a/mobile/rpc-foundation/goldens/settings-task-write.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.task-preferences", - "family": "settings-best-effort", - "namedDeltas": [], - "values": { - "03d1fef54a8c": { - "name": "settings.update#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.update\",\"params\":{\"defaultTaskViewPreset\":\"my-issues\"}}" - }, - "38f60ac30222": { - "preset": "my-issues" - }, - "687f86875a7f": { - "name": "settings.update#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.update" - }, - { - "name": "params", - "value": { - "defaultTaskViewPreset": "my-issues" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "write disconnected", - "isRpcDeliveryUnknown": true - } - } - }, - "a10aec8208b3": { - "name": "defaultGitHubPreset", - "ordinal": 1, - "value": "my-issues" - }, - "b6c9da6aafa0": { - "name": "settings.update#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.update" - }, - { - "name": "params", - "value": { - "defaultTaskViewPreset": "my-issues" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "settings-task-write", - "checkpoints": [ - { - "id": "optimistic", - "observation": { - "sender": ["b6c9da6aafa0"], - "payloads": ["03d1fef54a8c"], - "settlements": { - "mount": "eb79a9b3682a", - "write": "eb79a9b3682a" - }, - "state": "38f60ac30222", - "effects": ["a10aec8208b3"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["687f86875a7f"], - "payloads": ["03d1fef54a8c"], - "settlements": { - "mount": "eb79a9b3682a", - "write": "eb79a9b3682a" - }, - "state": "38f60ac30222", - "effects": ["a10aec8208b3"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json deleted file mode 100644 index f5459aab8ed..00000000000 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.workspace-submit", - "family": "settings.workspace-submit", - "namedDeltas": [], - "values": { - "13c996e4ec2b": { - "creating": true, - "error": "", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "2e8e352c8dd1": { - "creating": false, - "error": "Selected agent is disabled. Choose an enabled agent before creating.", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "39f99cf479f0": { - "name": "error", - "ordinal": 1, - "value": "" - }, - "51d4cb56be85": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "5940cb6d5fdf": { - "name": "error", - "ordinal": 6, - "value": "Selected agent is disabled. Choose an enabled agent before creating." - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "94ddc6962cd6": { - "name": "selectedAgent", - "ordinal": 4, - "value": { - "id": "codex", - "label": "Codex" - } - }, - "bc0a5f0f4956": { - "name": "agentOverridden", - "ordinal": 5, - "value": false - }, - "d942c8ef3642": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "settings refused" - }, - "id": "frame-1", - "ok": false - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f648b042d810": { - "name": "settings.get#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - } - }, - "recording": { - "scenario": "settings-workspace-submit-refused", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["51d4cb56be85"], - "payloads": ["f648b042d810"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "9270aeb7d9c6" - }, - "state": "13c996e4ec2b", - "effects": ["39f99cf479f0"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["d942c8ef3642"], - "payloads": ["f648b042d810"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "eb79a9b3682a" - }, - "state": "2e8e352c8dd1", - "effects": ["39f99cf479f0", "94ddc6962cd6", "bc0a5f0f4956", "5940cb6d5fdf"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json deleted file mode 100644 index 20fec5784e9..00000000000 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "settings.workspace-submit", - "family": "settings.workspace-submit", - "namedDeltas": [], - "values": { - "13c996e4ec2b": { - "creating": true, - "error": "", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "2e8e352c8dd1": { - "creating": false, - "error": "Selected agent is disabled. Choose an enabled agent before creating.", - "settings": { - "disabledTuiAgents": ["claude"] - } - }, - "39f99cf479f0": { - "name": "error", - "ordinal": 1, - "value": "" - }, - "51d4cb56be85": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "5940cb6d5fdf": { - "name": "error", - "ordinal": 6, - "value": "Selected agent is disabled. Choose an enabled agent before creating." - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "94ddc6962cd6": { - "name": "selectedAgent", - "ordinal": 4, - "value": { - "id": "codex", - "label": "Codex" - } - }, - "bc0a5f0f4956": { - "name": "agentOverridden", - "ordinal": 5, - "value": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f4c218ff736f": { - "name": "settings.get#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "settings disconnected", - "isRpcDeliveryUnknown": true - } - } - }, - "f648b042d810": { - "name": "settings.get#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - } - }, - "recording": { - "scenario": "settings-workspace-submit-transport-error", - "checkpoints": [ - { - "id": "settings-pending", - "observation": { - "sender": ["51d4cb56be85"], - "payloads": ["f648b042d810"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "9270aeb7d9c6" - }, - "state": "13c996e4ec2b", - "effects": ["39f99cf479f0"] - } - }, - { - "id": "settled", - "observation": { - "sender": ["f4c218ff736f"], - "payloads": ["f648b042d810"], - "settlements": { - "mount": "eb79a9b3682a", - "submit": "eb79a9b3682a" - }, - "state": "2e8e352c8dd1", - "effects": ["39f99cf479f0", "94ddc6962cd6", "bc0a5f0f4956", "5940cb6d5fdf"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-audio-chunk-acknowledged.json b/mobile/rpc-foundation/goldens/speech-audio-chunk-acknowledged.json deleted file mode 100644 index 70bea28d688..00000000000 --- a/mobile/rpc-foundation/goldens/speech-audio-chunk-acknowledged.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.audio-chunk", - "family": "speech.dictation-chunk", - "namedDeltas": [], - "values": { - "02cebe6f0062": { - "failures": [], - "pending": 0 - }, - "5133fafc8626": { - "name": "speech.dictation.chunk#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.dictation.chunk" - }, - { - "name": "params", - "value": { - "audioBase64": "ACVKb5S53gM=", - "dictationId": "dictation-1", - "sampleRate": 16000, - "seq": 0 - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "received": true - } - } - } - }, - "70f6f0244686": { - "name": "speech.dictation.chunk#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.chunk\",\"params\":{\"dictationId\":\"dictation-1\",\"audioBase64\":\"ACVKb5S53gM=\",\"sampleRate\":16000,\"seq\":0}}" - }, - "bc459c132276": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "status": "fulfilled", - "value": { - "$rpc": "undefined" - } - } - ] - } - }, - "recording": { - "scenario": "speech-audio-chunk-acknowledged", - "checkpoints": [ - { - "id": "acknowledged", - "observation": { - "sender": ["5133fafc8626"], - "payloads": ["70f6f0244686"], - "settlements": { - "chunk": "bc459c132276" - }, - "state": "02cebe6f0062", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-desktop-start-superseded.json b/mobile/rpc-foundation/goldens/speech-desktop-start-superseded.json deleted file mode 100644 index 7b5aad5f777..00000000000 --- a/mobile/rpc-foundation/goldens/speech-desktop-start-superseded.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.desktop-start", - "family": "speech.dictation-start", - "namedDeltas": [], - "values": { - "4c42677aca21": { - "name": "speech.dictation.start#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.dictation.start" - }, - { - "name": "params", - "value": { - "dictationId": "dictation-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "started": true - } - } - } - }, - "7ed3d39f0607": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": false - }, - "9ab91ee194b8": { - "name": "speech.dictation.cancel#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "speech.dictation.cancel" - }, - { - "name": "params", - "value": { - "dictationId": "dictation-1" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "cancelled": true - } - } - } - }, - "a7ddd021010a": { - "name": "speech.dictation.start#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.start\",\"params\":{\"dictationId\":\"dictation-1\"}}" - }, - "ce9cbc8837fa": { - "name": "speech.dictation.cancel#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.cancel\",\"params\":{\"dictationId\":\"dictation-1\"}}" - }, - "e0fcd8f8c1a9": { - "activeId": { - "$rpc": "null" - }, - "idle": false, - "started": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "speech-desktop-start-superseded", - "checkpoints": [ - { - "id": "stale-start-cancelled", - "observation": { - "sender": ["4c42677aca21", "9ab91ee194b8"], - "payloads": ["a7ddd021010a", "ce9cbc8837fa"], - "settlements": { - "supersede": "eb79a9b3682a", - "start": "7ed3d39f0607" - }, - "state": "e0fcd8f8c1a9", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-dictation-session-cancelled.json b/mobile/rpc-foundation/goldens/speech-dictation-session-cancelled.json deleted file mode 100644 index c69d15c6603..00000000000 --- a/mobile/rpc-foundation/goldens/speech-dictation-session-cancelled.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.dictation-session", - "family": "speech.dictation-session", - "namedDeltas": [], - "values": { - "6b76435b6f3e": { - "error": { - "$rpc": "null" - }, - "status": "idle", - "transcripts": [] - }, - "859d310e63d6": { - "name": "speech.dictation.start#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.start\",\"params\":{\"dictationId\":\"mobile-dictation-1767225600000-8ig2henseon\"}}" - }, - "bd004568e24c": { - "name": "speech.dictation.start#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.dictation.start" - }, - { - "name": "params", - "value": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "started": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ebdac948a90d": { - "name": "speech.dictation.cancel#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.cancel\",\"params\":{\"dictationId\":\"mobile-dictation-1767225600000-8ig2henseon\"}}" - }, - "ed7a0ff994cd": { - "name": "speech.dictation.cancel#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "speech.dictation.cancel" - }, - { - "name": "params", - "value": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "cancelled": true - } - } - } - } - }, - "recording": { - "scenario": "speech-dictation-session-cancelled", - "checkpoints": [ - { - "id": "cancelled", - "observation": { - "sender": ["bd004568e24c", "ed7a0ff994cd"], - "payloads": ["859d310e63d6", "ebdac948a90d"], - "settlements": { - "mount": "eb79a9b3682a", - "start": "eb79a9b3682a", - "cancel": "eb79a9b3682a" - }, - "state": "6b76435b6f3e", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-dictation-session-transcript.json b/mobile/rpc-foundation/goldens/speech-dictation-session-transcript.json deleted file mode 100644 index 570afbc56d9..00000000000 --- a/mobile/rpc-foundation/goldens/speech-dictation-session-transcript.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.dictation-session", - "family": "speech.dictation-session", - "namedDeltas": [], - "values": { - "1bdc94d60271": { - "name": "speech.dictation.finish#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.finish\",\"params\":{\"dictationId\":\"mobile-dictation-1767225600000-8ig2henseon\"}}" - }, - "4728ad10f92b": { - "name": "speech.dictation.finish#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "speech.dictation.finish" - }, - { - "name": "params", - "value": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 75000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "text": " hello world " - } - } - } - }, - "859d310e63d6": { - "name": "speech.dictation.start#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.start\",\"params\":{\"dictationId\":\"mobile-dictation-1767225600000-8ig2henseon\"}}" - }, - "a19279fc9c65": { - "error": { - "$rpc": "null" - }, - "status": "idle", - "transcripts": ["hello world"] - }, - "bd004568e24c": { - "name": "speech.dictation.start#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.dictation.start" - }, - { - "name": "params", - "value": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "started": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "speech-dictation-session-transcript", - "checkpoints": [ - { - "id": "transcribed", - "observation": { - "sender": ["bd004568e24c", "4728ad10f92b"], - "payloads": ["859d310e63d6", "1bdc94d60271"], - "settlements": { - "mount": "eb79a9b3682a", - "start": "eb79a9b3682a", - "stop": "eb79a9b3682a" - }, - "state": "a19279fc9c65", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-denied-to-mobile.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-denied-to-mobile.json deleted file mode 100644 index 479b08be79d..00000000000 --- a/mobile/rpc-foundation/goldens/speech-setup-sheet-denied-to-mobile.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "namedDeltas": [], - "values": { - "100447f8b483": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Update the paired desktop Orca app to use mobile voice settings.", - "isRpcDeliveryUnknown": false - } - }, - "44136fa355b3": {}, - "4f793e38be31": { - "name": "speech.models.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.models.list\",\"params\":null}" - }, - "9b9e5dcda8ac": { - "name": "speech.models.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.models.list" - }, - { - "name": "params", - "value": { - "$rpc": "null" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "forbidden", - "message": "speech.models.list is not available to mobile clients" - }, - "id": "frame-1", - "ok": false - } - } - } - }, - "recording": { - "scenario": "speech-setup-sheet-denied-to-mobile", - "checkpoints": [ - { - "id": "denied", - "observation": { - "sender": ["9b9e5dcda8ac"], - "payloads": ["4f793e38be31"], - "settlements": { - "list": "100447f8b483" - }, - "state": "44136fa355b3", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-fulfilled.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-fulfilled.json deleted file mode 100644 index 8a0e5e99a5c..00000000000 --- a/mobile/rpc-foundation/goldens/speech-setup-sheet-fulfilled.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "namedDeltas": [], - "values": { - "0e61f11d0307": { - "name": "speech.models.delete#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"speech.models.delete\",\"params\":{\"modelId\":\"whisper-small\"}}" - }, - "38ccf3e1658f": { - "name": "speech.dictation.setup#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "speech.dictation.setup" - }, - { - "name": "params", - "value": { - "enabled": true, - "modelId": "whisper-small" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "enabled": true, - "models": [ - { - "id": "whisper-small", - "name": "Small", - "status": "ready" - } - ], - "selectedModelId": "whisper-small" - } - } - } - }, - "4f793e38be31": { - "name": "speech.models.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.models.list\",\"params\":null}" - }, - "694b34cbeee9": { - "name": "speech.models.download#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"speech.models.download\",\"params\":{\"modelId\":\"whisper-small\"}}" - }, - "6c40f11805ec": { - "name": "speech.models.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.models.list" - }, - { - "name": "params", - "value": { - "$rpc": "null" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "enabled": true, - "models": [ - { - "id": "whisper-small", - "name": "Small", - "status": "ready" - } - ], - "selectedModelId": "whisper-small" - } - } - } - }, - "7c5b27891a8f": { - "configure": { - "enabled": true, - "models": [ - { - "id": "whisper-small", - "name": "Small", - "status": "ready" - } - ], - "selectedModelId": "whisper-small" - }, - "delete": { - "enabled": true, - "models": [], - "selectedModelId": "whisper-small" - }, - "download": "started", - "list": { - "enabled": true, - "models": [ - { - "id": "whisper-small", - "name": "Small", - "status": "ready" - } - ], - "selectedModelId": "whisper-small" - } - }, - "a2879fd6371d": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "enabled": true, - "models": [ - { - "id": "whisper-small", - "name": "Small", - "status": "ready" - } - ], - "selectedModelId": "whisper-small" - } - }, - "adbb96fcc08c": { - "name": "speech.models.download#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "speech.models.download" - }, - { - "name": "params", - "value": { - "modelId": "whisper-small" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "started": true - } - } - } - }, - "d8c329a93e43": { - "name": "speech.models.delete#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "speech.models.delete" - }, - { - "name": "params", - "value": { - "modelId": "whisper-small" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "enabled": true, - "models": [], - "selectedModelId": "whisper-small" - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "fba26d61d9d2": { - "name": "speech.dictation.setup#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"speech.dictation.setup\",\"params\":{\"enabled\":true,\"modelId\":\"whisper-small\"}}" - }, - "fc5fb77f49bb": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "enabled": true, - "models": [], - "selectedModelId": "whisper-small" - } - } - }, - "recording": { - "scenario": "speech-setup-sheet-fulfilled", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["6c40f11805ec", "adbb96fcc08c", "d8c329a93e43", "38ccf3e1658f"], - "payloads": ["4f793e38be31", "694b34cbeee9", "0e61f11d0307", "fba26d61d9d2"], - "settlements": { - "list": "a2879fd6371d", - "download": "eb79a9b3682a", - "delete": "fc5fb77f49bb", - "configure": "a2879fd6371d" - }, - "state": "7c5b27891a8f", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-legacy-desktop.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-legacy-desktop.json deleted file mode 100644 index 53045b2042c..00000000000 --- a/mobile/rpc-foundation/goldens/speech-setup-sheet-legacy-desktop.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "namedDeltas": [], - "values": { - "100447f8b483": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Update the paired desktop Orca app to use mobile voice settings.", - "isRpcDeliveryUnknown": false - } - }, - "103ab24b6298": { - "name": "speech.models.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.models.list" - }, - { - "name": "params", - "value": { - "$rpc": "null" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method: speech.models.list" - }, - "id": "frame-1", - "ok": false - } - } - }, - "44136fa355b3": {}, - "4f793e38be31": { - "name": "speech.models.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.models.list\",\"params\":null}" - } - }, - "recording": { - "scenario": "speech-setup-sheet-legacy-desktop", - "checkpoints": [ - { - "id": "legacy-desktop", - "observation": { - "sender": ["103ab24b6298"], - "payloads": ["4f793e38be31"], - "settlements": { - "list": "100447f8b483" - }, - "state": "44136fa355b3", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-model-vocabulary.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-model-vocabulary.json deleted file mode 100644 index b0f3cd54c7c..00000000000 --- a/mobile/rpc-foundation/goldens/speech-setup-sheet-model-vocabulary.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "namedDeltas": [], - "values": { - "430a60866d83": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "dictationMode": "hold", - "enabled": true, - "models": [ - { - "id": "whisper-small", - "label": "Small", - "progress": 0.42, - "provider": "local", - "recommended": true, - "sizeBytes": 466862080, - "status": "downloading" - }, - { - "id": "gpt-4o-transcribe", - "label": "OpenAI", - "progress": { - "$rpc": "null" - }, - "provider": "openai", - "recommended": false, - "sizeBytes": { - "$rpc": "null" - }, - "status": "ready" - } - ], - "selectedModelId": "gpt-4o-transcribe" - } - }, - "4f793e38be31": { - "name": "speech.models.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"speech.models.list\",\"params\":null}" - }, - "d91e455b7326": { - "list": { - "dictationMode": "hold", - "enabled": true, - "models": [ - { - "id": "whisper-small", - "label": "Small", - "progress": 0.42, - "provider": "local", - "recommended": true, - "sizeBytes": 466862080, - "status": "downloading" - }, - { - "id": "gpt-4o-transcribe", - "label": "OpenAI", - "progress": { - "$rpc": "null" - }, - "provider": "openai", - "recommended": false, - "sizeBytes": { - "$rpc": "null" - }, - "status": "ready" - } - ], - "selectedModelId": "gpt-4o-transcribe" - } - }, - "f4bd63aa8e8f": { - "name": "speech.models.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "speech.models.list" - }, - { - "name": "params", - "value": { - "$rpc": "null" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "dictationMode": "hold", - "enabled": true, - "models": [ - { - "id": "whisper-small", - "label": "Small", - "progress": 0.42, - "provider": "local", - "recommended": true, - "sizeBytes": 466862080, - "status": "downloading" - }, - { - "id": "gpt-4o-transcribe", - "label": "OpenAI", - "progress": { - "$rpc": "null" - }, - "provider": "openai", - "recommended": false, - "sizeBytes": { - "$rpc": "null" - }, - "status": "ready" - } - ], - "selectedModelId": "gpt-4o-transcribe" - } - } - } - } - }, - "recording": { - "scenario": "speech-setup-sheet-model-vocabulary", - "checkpoints": [ - { - "id": "settled", - "observation": { - "sender": ["f4bd63aa8e8f"], - "payloads": ["4f793e38be31"], - "settlements": { - "list": "430a60866d83" - }, - "state": "d91e455b7326", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tasks-route-repo-list.json b/mobile/rpc-foundation/goldens/tasks-route-repo-list.json deleted file mode 100644 index ee7dc80804a..00000000000 --- a/mobile/rpc-foundation/goldens/tasks-route-repo-list.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.route-repo-list", - "family": "tasks.route-repo-list", - "namedDeltas": [], - "values": { - "19b2979d7fc2": { - "name": "repo.list#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "35f85fe3b71c": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "7d0fa424be7c": { - "name": "repo.list#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "repos": [ - { - "id": "repo-1", - "name": "orca" - }, - { - "id": "repo-2", - "name": "relay" - } - ] - } - } - } - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "afa949a66032": { - "crash": { - "$rpc": "null" - }, - "repoListError": "", - "repoListStatus": "idle", - "repos": [] - }, - "b15e86f79919": { - "crash": { - "$rpc": "null" - }, - "repoListError": "", - "repoListStatus": "loading", - "repos": [] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f5484d90b3f7": { - "crash": { - "$rpc": "null" - }, - "repoListError": "", - "repoListStatus": "loaded", - "repos": ["repo-1", "repo-2"] - }, - "fcd8faa86ca8": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "id": "repo-1", - "name": "orca" - }, - { - "id": "repo-2", - "name": "relay" - } - ] - } - }, - "recording": { - "scenario": "tasks-route-repo-list", - "checkpoints": [ - { - "id": "idle", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "afa949a66032", - "effects": [] - } - }, - { - "id": "repos-pending", - "observation": { - "sender": ["35f85fe3b71c"], - "payloads": ["19b2979d7fc2"], - "settlements": { - "mount": "eb79a9b3682a", - "ensure": "9270aeb7d9c6" - }, - "state": "b15e86f79919", - "effects": [] - } - }, - { - "id": "repos-loaded", - "observation": { - "sender": ["7d0fa424be7c"], - "payloads": ["19b2979d7fc2"], - "settlements": { - "mount": "eb79a9b3682a", - "ensure": "fcd8faa86ca8" - }, - "state": "f5484d90b3f7", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/terminal-gesture-flush-and-clear.json b/mobile/rpc-foundation/goldens/terminal-gesture-flush-and-clear.json deleted file mode 100644 index 455a9f9c9d3..00000000000 --- a/mobile/rpc-foundation/goldens/terminal-gesture-flush-and-clear.json +++ /dev/null @@ -1,310 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-gesture-input", - "family": "session.terminal-gesture-input", - "namedDeltas": [], - "values": { - "0cc3e25ebff5": { - "bucketTokens": 63, - "crash": { - "$rpc": "null" - }, - "inFlight": false, - "queuedBytes": { - "$rpc": "null" - }, - "queuedSequences": { - "$rpc": "null" - } - }, - "204da356c8b7": { - "status": "fulfilled", - "startedAt": 16, - "settledAt": 16, - "value": { - "$rpc": "undefined" - } - }, - "3dc7f55dee2a": { - "name": "toast", - "ordinal": 7, - "value": { - "durationMs": { - "$rpc": "null" - }, - "message": "Terminal cleared" - } - }, - "47c387a75ffc": { - "name": "terminal.send#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u001b[<64;10;5M" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 16, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "4b5c402c0aac": { - "name": "terminal.clearBuffer#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "terminal.clearBuffer" - }, - { - "name": "params", - "value": { - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 16 - } - }, - "4d7959cb9208": { - "name": "terminal.clearBuffer#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "terminal.clearBuffer" - }, - { - "name": "params", - "value": { - "terminal": "terminal-1" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 16, - "settledAt": 16, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "clear": { - "cleared": true, - "handle": "terminal-1" - } - } - } - } - }, - "70f80fc43078": { - "name": "terminal-subscribe", - "ordinal": 6, - "value": { - "handle": "terminal-1" - } - }, - "8224ccdb2cd8": { - "name": "terminal.send#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b[<64;10;5M\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "839dec95ae1c": { - "status": "pending", - "startedAt": 16 - }, - "9fa6cd0b7fa0": { - "name": "terminal.send#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u001b[<64;10;5M" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "a8bcca91a365": { - "name": "terminal-unsubscribe", - "ordinal": 5, - "value": { - "handle": "terminal-1" - } - }, - "caa6ece1bdab": { - "bucketTokens": 63, - "crash": { - "$rpc": "null" - }, - "inFlight": true, - "queuedBytes": { - "$rpc": "null" - }, - "queuedSequences": { - "$rpc": "null" - } - }, - "d9c52be2f839": { - "name": "terminal.clearBuffer#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.clearBuffer\",\"params\":{\"terminal\":\"terminal-1\"}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "terminal-gesture-flush-and-clear", - "checkpoints": [ - { - "id": "queued", - "observation": { - "sender": ["9fa6cd0b7fa0"], - "payloads": ["8224ccdb2cd8"], - "settlements": { - "mount": "eb79a9b3682a", - "gesture": "eb79a9b3682a" - }, - "state": "caa6ece1bdab", - "effects": [] - } - }, - { - "id": "flushing", - "observation": { - "sender": ["9fa6cd0b7fa0"], - "payloads": ["8224ccdb2cd8"], - "settlements": { - "mount": "eb79a9b3682a", - "gesture": "eb79a9b3682a" - }, - "state": "caa6ece1bdab", - "effects": [] - } - }, - { - "id": "sent", - "observation": { - "sender": ["47c387a75ffc"], - "payloads": ["8224ccdb2cd8"], - "settlements": { - "mount": "eb79a9b3682a", - "gesture": "eb79a9b3682a" - }, - "state": "0cc3e25ebff5", - "effects": [] - } - }, - { - "id": "reported", - "observation": { - "sender": ["47c387a75ffc"], - "payloads": ["8224ccdb2cd8"], - "settlements": { - "mount": "eb79a9b3682a", - "gesture": "eb79a9b3682a" - }, - "state": "0cc3e25ebff5", - "effects": [] - } - }, - { - "id": "clearing", - "observation": { - "sender": ["47c387a75ffc", "4b5c402c0aac"], - "payloads": ["8224ccdb2cd8", "d9c52be2f839"], - "settlements": { - "mount": "eb79a9b3682a", - "gesture": "eb79a9b3682a", - "clear": "839dec95ae1c" - }, - "state": "0cc3e25ebff5", - "effects": [] - } - }, - { - "id": "cleared", - "observation": { - "sender": ["47c387a75ffc", "4d7959cb9208"], - "payloads": ["8224ccdb2cd8", "d9c52be2f839"], - "settlements": { - "mount": "eb79a9b3682a", - "gesture": "eb79a9b3682a", - "clear": "204da356c8b7" - }, - "state": "0cc3e25ebff5", - "effects": ["a8bcca91a365", "70f80fc43078", "3dc7f55dee2a"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/terminal-live-input-accepted.json b/mobile/rpc-foundation/goldens/terminal-live-input-accepted.json deleted file mode 100644 index 85a525a3aca..00000000000 --- a/mobile/rpc-foundation/goldens/terminal-live-input-accepted.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-input-send", - "family": "session.terminal-input-send", - "namedDeltas": [], - "values": { - "13757a453325": { - "crash": { - "$rpc": "null" - }, - "liveAccepted": true - }, - "49c62bc1232e": { - "name": "terminal.send#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "ls" - } - }, - { - "name": "options", - "value": { - "failWhenDisconnected": true - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "727ebf3d264d": { - "name": "terminal.send#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"ls\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "84e5ca07cb7a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": true - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "terminal-live-input-accepted", - "checkpoints": [ - { - "id": "live-sent", - "observation": { - "sender": ["49c62bc1232e"], - "payloads": ["727ebf3d264d"], - "settlements": { - "mount": "eb79a9b3682a", - "live": "84e5ca07cb7a" - }, - "state": "13757a453325", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/terminal-paste-accepted.json b/mobile/rpc-foundation/goldens/terminal-paste-accepted.json deleted file mode 100644 index 35ce9daa2f4..00000000000 --- a/mobile/rpc-foundation/goldens/terminal-paste-accepted.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-clipboard", - "family": "session.terminal-paste", - "namedDeltas": [], - "values": { - "26d0fe750677": { - "name": "terminal.send#1", - "ordinal": 6, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b[200~echo hi\\u001b[201~\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "3fb0e93ab6cb": { - "name": "settings.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "settings": { - "terminalCopyTrimsGutter": true - } - } - } - } - }, - "50a1efe07486": { - "name": "terminal.send#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u001b[200~echo hi\u001b[201~" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - } - }, - "528166d1face": { - "connectionId": "unresolved", - "crash": { - "$rpc": "null" - }, - "pasteOutcome": "sent" - }, - "84990d8de7e9": { - "connectionId": "unresolved", - "crash": { - "$rpc": "null" - }, - "pasteOutcome": "unpasted" - }, - "87b511344653": { - "name": "refresh-can-paste", - "ordinal": 7, - "value": {} - }, - "8e065efdacec": { - "name": "flush-live-input", - "ordinal": 4, - "value": { - "handle": "terminal-1" - } - }, - "a4fb8cfbcc58": { - "name": "toast", - "ordinal": 3, - "value": { - "durationMs": { - "$rpc": "null" - }, - "message": "Copied" - } - }, - "c8c77ac17e0a": { - "name": "settings.get#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "terminal-paste-accepted", - "checkpoints": [ - { - "id": "copied", - "observation": { - "sender": ["3fb0e93ab6cb"], - "payloads": ["c8c77ac17e0a"], - "settlements": { - "mount": "eb79a9b3682a", - "copy": "eb79a9b3682a" - }, - "state": "84990d8de7e9", - "effects": ["a4fb8cfbcc58"] - } - }, - { - "id": "pasted", - "observation": { - "sender": ["3fb0e93ab6cb", "50a1efe07486"], - "payloads": ["c8c77ac17e0a", "26d0fe750677"], - "settlements": { - "mount": "eb79a9b3682a", - "copy": "eb79a9b3682a", - "paste": "eb79a9b3682a" - }, - "state": "528166d1face", - "effects": ["a4fb8cfbcc58", "8e065efdacec", "87b511344653"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/terminal-paste-refused.json b/mobile/rpc-foundation/goldens/terminal-paste-refused.json deleted file mode 100644 index f75c5aee66d..00000000000 --- a/mobile/rpc-foundation/goldens/terminal-paste-refused.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-clipboard", - "family": "session.terminal-paste", - "namedDeltas": [], - "values": { - "10a954319977": { - "name": "terminal.send#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "terminal.send" - }, - { - "name": "params", - "value": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "enter": false, - "terminal": "terminal-1", - "text": "\u001b[200~echo hi\u001b[201~" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - } - }, - "26d0fe750677": { - "name": "terminal.send#1", - "ordinal": 6, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"terminal-1\",\"text\":\"\\u001b[200~echo hi\\u001b[201~\",\"enter\":false,\"client\":{\"id\":\"device-token-1\",\"type\":\"mobile\"}}}" - }, - "3fb0e93ab6cb": { - "name": "settings.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "settings": { - "terminalCopyTrimsGutter": true - } - } - } - } - }, - "86cf27deee09": { - "name": "toast", - "ordinal": 7, - "value": { - "durationMs": 1500, - "message": "Paste failed" - } - }, - "8e065efdacec": { - "name": "flush-live-input", - "ordinal": 4, - "value": { - "handle": "terminal-1" - } - }, - "a4fb8cfbcc58": { - "name": "toast", - "ordinal": 3, - "value": { - "durationMs": { - "$rpc": "null" - }, - "message": "Copied" - } - }, - "c8c77ac17e0a": { - "name": "settings.get#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ebe2af37c0a0": { - "connectionId": "unresolved", - "crash": { - "$rpc": "null" - }, - "pasteOutcome": "error" - } - }, - "recording": { - "scenario": "terminal-paste-refused", - "checkpoints": [ - { - "id": "not-reported", - "observation": { - "sender": ["3fb0e93ab6cb", "10a954319977"], - "payloads": ["c8c77ac17e0a", "26d0fe750677"], - "settlements": { - "mount": "eb79a9b3682a", - "copy": "eb79a9b3682a", - "paste": "eb79a9b3682a" - }, - "state": "ebe2af37c0a0", - "effects": ["a4fb8cfbcc58", "8e065efdacec", "86cf27deee09"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/terminal-worktree-connection-resolved.json b/mobile/rpc-foundation/goldens/terminal-worktree-connection-resolved.json deleted file mode 100644 index 3e7b855496d..00000000000 --- a/mobile/rpc-foundation/goldens/terminal-worktree-connection-resolved.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "session.terminal-clipboard", - "family": "session.worktree-connection", - "namedDeltas": [], - "values": { - "3fb0e93ab6cb": { - "name": "settings.get#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "settings.get" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "settings": { - "terminalCopyTrimsGutter": true - } - } - } - } - }, - "5a51b87432e2": { - "name": "repo.list#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "repo.list" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "repos": [ - { - "connectionId": "ssh-zeta", - "displayName": "zeta", - "id": "repo-z" - }, - { - "connectionId": "ssh-alpha", - "displayName": "alpha", - "id": "repo-a" - } - ] - } - } - } - }, - "c8c77ac17e0a": { - "name": "settings.get#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" - }, - "d64700b9de3b": { - "name": "repo.list#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}" - }, - "e61132f30b52": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": "ssh-alpha" - }, - "e84b72d7c6fc": { - "connectionId": "ssh-alpha", - "crash": { - "$rpc": "null" - }, - "pasteOutcome": "unpasted" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "terminal-worktree-connection-resolved", - "checkpoints": [ - { - "id": "resolved", - "observation": { - "sender": ["3fb0e93ab6cb", "5a51b87432e2"], - "payloads": ["c8c77ac17e0a", "d64700b9de3b"], - "settlements": { - "mount": "eb79a9b3682a", - "connection": "e61132f30b52" - }, - "state": "e84b72d7c6fc", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-create-github.json b/mobile/rpc-foundation/goldens/tk-create-github.json deleted file mode 100644 index 39f6c96b51e..00000000000 --- a/mobile/rpc-foundation/goldens/tk-create-github.json +++ /dev/null @@ -1,240 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.task-create-github", - "family": "tasks.task-create-github", - "namedDeltas": [], - "values": { - "0fef9dc7845d": { - "name": "createTitle", - "ordinal": 7, - "value": "" - }, - "13b1e9c092d4": { - "name": "createBody", - "ordinal": 8, - "value": "" - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "4e4bdca5791a": { - "name": "github.createIssue#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.createIssue\",\"params\":{\"repo\":\"id:repo-1\",\"title\":\"A new task\",\"body\":\"a body\"}}" - }, - "5294116e0f90": { - "name": "creatingTask", - "ordinal": 1, - "value": true - }, - "5ab5b62983be": { - "composer": false, - "creating": false, - "error": "", - "item": { - "key": "github:repo-1:issue:11", - "provider": "github", - "source": { - "author": { - "$rpc": "null" - }, - "id": "issue:11", - "labels": [], - "number": 11, - "repoId": "repo-1", - "repoName": "Repo", - "state": "open", - "title": "A new task", - "type": "issue", - "updatedAt": "2026-01-01T00:00:00.000Z", - "url": "https://github.com/owner/repo/issues/11" - }, - "status": "Open", - "subtitle": "Repo #11", - "title": "A new task", - "updatedAt": "2026-01-01T00:00:00.000Z" - } - }, - "6608b7892446": { - "name": "actionItem", - "ordinal": 5, - "value": { - "key": "github:repo-1:issue:11", - "provider": "github", - "source": { - "author": { - "$rpc": "null" - }, - "id": "issue:11", - "labels": [], - "number": 11, - "repoId": "repo-1", - "repoName": "Repo", - "state": "open", - "title": "A new task", - "type": "issue", - "updatedAt": "2026-01-01T00:00:00.000Z", - "url": "https://github.com/owner/repo/issues/11" - }, - "status": "Open", - "subtitle": "Repo #11", - "title": "A new task", - "updatedAt": "2026-01-01T00:00:00.000Z" - } - }, - "8a05070aeca4": { - "name": "github.createIssue#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.createIssue" - }, - { - "name": "params", - "value": { - "body": "a body", - "repo": "id:repo-1", - "title": "A new task" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "number": 11, - "ok": true, - "url": "https://github.com/owner/repo/issues/11" - } - } - } - }, - "91dfb0399568": { - "name": "repo.update#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "repo.update" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1", - "updates": { - "issueSourcePreference": "upstream" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "a0dc5663c500": { - "name": "repo.update#1", - "ordinal": 12, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.update\",\"params\":{\"repo\":\"id:repo-1\",\"updates\":{\"issueSourcePreference\":\"upstream\"}}}" - }, - "b1504689c2b3": { - "name": "creatingTask", - "ordinal": 9, - "value": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed3a7d6bc894": { - "name": "error", - "ordinal": 2, - "value": "" - }, - "fa467ac4ab12": { - "name": "showCreateTask", - "ordinal": 6, - "value": false - } - }, - "recording": { - "scenario": "tk-create-github", - "checkpoints": [ - { - "id": "create-settled", - "observation": { - "sender": ["8a05070aeca4"], - "payloads": ["4e4bdca5791a"], - "settlements": { - "mount": "eb79a9b3682a", - "create-0": "eb79a9b3682a" - }, - "state": "5ab5b62983be", - "effects": [ - "5294116e0f90", - "ed3a7d6bc894", - "6608b7892446", - "fa467ac4ab12", - "0fef9dc7845d", - "13b1e9c092d4", - "b1504689c2b3" - ] - } - }, - { - "id": "issue-source-settled", - "observation": { - "sender": ["8a05070aeca4", "91dfb0399568"], - "payloads": ["4e4bdca5791a", "a0dc5663c500"], - "settlements": { - "mount": "eb79a9b3682a", - "create-0": "eb79a9b3682a", - "issue-source-1": "eb79a9b3682a" - }, - "state": "5ab5b62983be", - "effects": [ - "5294116e0f90", - "ed3a7d6bc894", - "6608b7892446", - "fa467ac4ab12", - "0fef9dc7845d", - "13b1e9c092d4", - "b1504689c2b3", - "3aefb3006914" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-create-gitlab.json b/mobile/rpc-foundation/goldens/tk-create-gitlab.json deleted file mode 100644 index cfe3ffd7b23..00000000000 --- a/mobile/rpc-foundation/goldens/tk-create-gitlab.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.task-create-gitlab", - "family": "tasks.task-create-gitlab", - "namedDeltas": [], - "values": { - "0fef9dc7845d": { - "name": "createTitle", - "ordinal": 7, - "value": "" - }, - "13b1e9c092d4": { - "name": "createBody", - "ordinal": 8, - "value": "" - }, - "2b5235cc87a9": { - "name": "actionItem", - "ordinal": 5, - "value": { - "key": "gitlab:repo-1:issue:6", - "provider": "gitlab", - "source": { - "author": { - "$rpc": "null" - }, - "id": "issue:6", - "labels": [], - "number": 6, - "repoId": "repo-1", - "repoName": "Repo", - "state": "opened", - "title": "A new task", - "type": "issue", - "updatedAt": "2026-01-01T00:00:00.000Z", - "url": "https://gitlab.com/group/project/-/issues/6" - }, - "status": "Open", - "subtitle": "Repo #6", - "title": "A new task", - "updatedAt": "2026-01-01T00:00:00.000Z" - } - }, - "5294116e0f90": { - "name": "creatingTask", - "ordinal": 1, - "value": true - }, - "556994c67572": { - "name": "gitlab.createIssue#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.createIssue\",\"params\":{\"repo\":\"id:repo-1\",\"title\":\"A new task\",\"body\":\"a body\"}}" - }, - "580f3724d37b": { - "composer": false, - "creating": false, - "error": "", - "item": { - "key": "gitlab:repo-1:issue:6", - "provider": "gitlab", - "source": { - "author": { - "$rpc": "null" - }, - "id": "issue:6", - "labels": [], - "number": 6, - "repoId": "repo-1", - "repoName": "Repo", - "state": "opened", - "title": "A new task", - "type": "issue", - "updatedAt": "2026-01-01T00:00:00.000Z", - "url": "https://gitlab.com/group/project/-/issues/6" - }, - "status": "Open", - "subtitle": "Repo #6", - "title": "A new task", - "updatedAt": "2026-01-01T00:00:00.000Z" - } - }, - "ac13fff3e6e2": { - "name": "gitlab.createIssue#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "gitlab.createIssue" - }, - { - "name": "params", - "value": { - "body": "a body", - "repo": "id:repo-1", - "title": "A new task" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "number": 6, - "ok": true, - "url": "https://gitlab.com/group/project/-/issues/6" - } - } - } - }, - "b1504689c2b3": { - "name": "creatingTask", - "ordinal": 9, - "value": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed3a7d6bc894": { - "name": "error", - "ordinal": 2, - "value": "" - }, - "fa467ac4ab12": { - "name": "showCreateTask", - "ordinal": 6, - "value": false - } - }, - "recording": { - "scenario": "tk-create-gitlab", - "checkpoints": [ - { - "id": "create-settled", - "observation": { - "sender": ["ac13fff3e6e2"], - "payloads": ["556994c67572"], - "settlements": { - "mount": "eb79a9b3682a", - "create-0": "eb79a9b3682a" - }, - "state": "580f3724d37b", - "effects": [ - "5294116e0f90", - "ed3a7d6bc894", - "2b5235cc87a9", - "fa467ac4ab12", - "0fef9dc7845d", - "13b1e9c092d4", - "b1504689c2b3" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-create-linear.json b/mobile/rpc-foundation/goldens/tk-create-linear.json deleted file mode 100644 index da5a1b847aa..00000000000 --- a/mobile/rpc-foundation/goldens/tk-create-linear.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.task-create-linear", - "family": "tasks.task-create-linear", - "namedDeltas": [], - "values": { - "0fef9dc7845d": { - "name": "createTitle", - "ordinal": 7, - "value": "" - }, - "13b1e9c092d4": { - "name": "createBody", - "ordinal": 8, - "value": "" - }, - "29d4d3d3640c": { - "composer": false, - "creating": false, - "error": "", - "item": { - "key": "linear:linear-workspace:issue-3", - "provider": "linear", - "source": { - "description": "a body", - "id": "issue-3", - "identifier": "ENG-3", - "labels": [], - "priority": 0, - "state": { - "color": "#3276f2", - "name": "Open", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "workspaceId": "linear-workspace", - "workspaceName": "Workspace" - }, - "title": "A sub-issue", - "updatedAt": "2026-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace", - "workspaceName": "Workspace" - }, - "status": "Open", - "subtitle": "ENG-3 · undefined", - "title": "A sub-issue", - "updatedAt": "2026-01-01T00:00:00.000Z" - } - }, - "3c76066eb236": { - "name": "linear.createIssue#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "linear.createIssue" - }, - { - "name": "params", - "value": { - "description": "a body", - "teamId": "team-1", - "title": "A new task", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "id": "issue-3", - "identifier": "ENG-3", - "ok": true, - "title": "A sub-issue", - "url": "" - } - } - } - }, - "5294116e0f90": { - "name": "creatingTask", - "ordinal": 1, - "value": true - }, - "b1504689c2b3": { - "name": "creatingTask", - "ordinal": 9, - "value": false - }, - "ce67fb8d9d58": { - "name": "linear.createIssue#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.createIssue\",\"params\":{\"teamId\":\"team-1\",\"title\":\"A new task\",\"description\":\"a body\",\"workspaceId\":\"linear-workspace\"}}" - }, - "e20c41f15d23": { - "name": "actionItem", - "ordinal": 5, - "value": { - "key": "linear:linear-workspace:issue-3", - "provider": "linear", - "source": { - "description": "a body", - "id": "issue-3", - "identifier": "ENG-3", - "labels": [], - "priority": 0, - "state": { - "color": "#3276f2", - "name": "Open", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "workspaceId": "linear-workspace", - "workspaceName": "Workspace" - }, - "title": "A sub-issue", - "updatedAt": "2026-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace", - "workspaceName": "Workspace" - }, - "status": "Open", - "subtitle": "ENG-3 · undefined", - "title": "A sub-issue", - "updatedAt": "2026-01-01T00:00:00.000Z" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed3a7d6bc894": { - "name": "error", - "ordinal": 2, - "value": "" - }, - "fa467ac4ab12": { - "name": "showCreateTask", - "ordinal": 6, - "value": false - } - }, - "recording": { - "scenario": "tk-create-linear", - "checkpoints": [ - { - "id": "create-settled", - "observation": { - "sender": ["3c76066eb236"], - "payloads": ["ce67fb8d9d58"], - "settlements": { - "mount": "eb79a9b3682a", - "create-0": "eb79a9b3682a" - }, - "state": "29d4d3d3640c", - "effects": [ - "5294116e0f90", - "ed3a7d6bc894", - "e20c41f15d23", - "fa467ac4ab12", - "0fef9dc7845d", - "13b1e9c092d4", - "b1504689c2b3" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-comment-github.json b/mobile/rpc-foundation/goldens/tk-item-comment-github.json deleted file mode 100644 index 082e8e1ec47..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-comment-github.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-comment-github", - "family": "tasks.item-comment-github", - "namedDeltas": [], - "values": { - "1ca30ac68b76": { - "name": "detailPayload", - "ordinal": 7, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000issue\u00009" - } - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "4031bf455f49": { - "name": "mutatingStatus", - "ordinal": 5, - "value": false - }, - "53506297367b": { - "name": "itemCommentDraft", - "ordinal": 3, - "value": "" - }, - "69e396c2097f": { - "name": "github.addIssueComment#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.addIssueComment\",\"params\":{\"repo\":\"id:repo-1\",\"number\":9,\"body\":\"a comment\",\"type\":\"issue\",\"prRepo\":{\"host\":\"github.com\",\"owner\":\"owner\",\"repo\":\"repo\"}}}" - }, - "6f50ec77f02f": { - "name": "itemCommentDraft", - "ordinal": 15, - "value": "" - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "9331fbfa07e4": { - "name": "itemCommentDraft", - "ordinal": 9, - "value": "a comment" - }, - "ac15f5699a77": { - "name": "itemReviewersDraft", - "ordinal": 8, - "value": "octocat" - }, - "ae745d4c2372": { - "name": "detailPayload", - "ordinal": 14, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000issue\u00009" - } - }, - "b36fef11f7dc": { - "draft": "", - "error": "", - "item": { - "provider": "github", - "source": { - "id": "github:issue:9", - "labels": ["bug"], - "number": 9, - "repoId": "repo-1", - "reviewRequests": [], - "state": "open", - "type": "issue", - "url": "https://github.com/owner/repo/issues/9" - }, - "title": "An issue" - }, - "mutating": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000issue\u00009" - } - }, - "c43ab05aed16": { - "name": "actionItem", - "ordinal": 6, - "value": { - "provider": "github", - "source": { - "id": "github:issue:9", - "labels": ["bug"], - "number": 9, - "repoId": "repo-1", - "reviewRequests": [], - "state": "open", - "type": "issue", - "url": "https://github.com/owner/repo/issues/9" - }, - "title": "An issue" - } - }, - "c445ea7e151b": { - "name": "github.addIssueComment#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.addIssueComment" - }, - { - "name": "params", - "value": { - "body": "a comment", - "number": 9, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "type": "issue" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - }, - "ok": true - } - } - } - }, - "c650cf641414": { - "name": "itemReviewersDraft", - "ordinal": 4, - "value": "" - }, - "cbae54d3d351": { - "name": "mutatingStatus", - "ordinal": 16, - "value": false - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tk-item-comment-github", - "checkpoints": [ - { - "id": "comment-settled", - "observation": { - "sender": ["c445ea7e151b"], - "payloads": ["69e396c2097f"], - "settlements": { - "mount": "eb79a9b3682a", - "comment-0": "eb79a9b3682a" - }, - "state": "b36fef11f7dc", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "53506297367b", - "c650cf641414", - "4031bf455f49", - "c43ab05aed16", - "1ca30ac68b76", - "ac15f5699a77", - "9331fbfa07e4", - "3aefb3006914", - "886c60a7e62e", - "ae745d4c2372", - "6f50ec77f02f", - "cbae54d3d351" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab-mr.json b/mobile/rpc-foundation/goldens/tk-item-comment-gitlab-mr.json deleted file mode 100644 index c578aa4f5f8..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab-mr.json +++ /dev/null @@ -1,265 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-comment-gitlab-mr", - "family": "tasks.item-comment-gitlab-mr", - "namedDeltas": [], - "values": { - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "4031bf455f49": { - "name": "mutatingStatus", - "ordinal": 5, - "value": false - }, - "474412c229f4": { - "name": "detailPayload", - "ordinal": 7, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "4c60f1fd22ca": { - "name": "gitlab.addMRComment#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.addMRComment\",\"params\":{\"repo\":\"id:repo-1\",\"iid\":7,\"body\":\"a comment\",\"projectRef\":{\"host\":\"gitlab.com\",\"path\":\"group/project\"}}}" - }, - "53506297367b": { - "name": "itemCommentDraft", - "ordinal": 3, - "value": "" - }, - "622bbddf4f05": { - "name": "actionItem", - "ordinal": 6, - "value": { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": [], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "mr" - }, - "title": "A merge request" - } - }, - "6f50ec77f02f": { - "name": "itemCommentDraft", - "ordinal": 15, - "value": "" - }, - "816c715cd13d": { - "name": "gitlab.addMRComment#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "gitlab.addMRComment" - }, - { - "name": "params", - "value": { - "body": "a comment", - "iid": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 905 - }, - "ok": true - } - } - } - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "9331fbfa07e4": { - "name": "itemCommentDraft", - "ordinal": 9, - "value": "a comment" - }, - "ac15f5699a77": { - "name": "itemReviewersDraft", - "ordinal": 8, - "value": "octocat" - }, - "c650cf641414": { - "name": "itemReviewersDraft", - "ordinal": 4, - "value": "" - }, - "cbae54d3d351": { - "name": "mutatingStatus", - "ordinal": 16, - "value": false - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "ea24a662dd3d": { - "draft": "", - "error": "", - "item": { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": [], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "mr" - }, - "title": "A merge request" - }, - "mutating": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 905 - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "f3cb1a7df6dc": { - "name": "detailPayload", - "ordinal": 14, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 905 - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - } - }, - "recording": { - "scenario": "tk-item-comment-gitlab-mr", - "checkpoints": [ - { - "id": "comment-settled", - "observation": { - "sender": ["816c715cd13d"], - "payloads": ["4c60f1fd22ca"], - "settlements": { - "mount": "eb79a9b3682a", - "comment-0": "eb79a9b3682a" - }, - "state": "ea24a662dd3d", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "53506297367b", - "c650cf641414", - "4031bf455f49", - "622bbddf4f05", - "474412c229f4", - "ac15f5699a77", - "9331fbfa07e4", - "3aefb3006914", - "886c60a7e62e", - "f3cb1a7df6dc", - "6f50ec77f02f", - "cbae54d3d351" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-comment-gitlab.json deleted file mode 100644 index 12c817feb30..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab.json +++ /dev/null @@ -1,265 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-comment-gitlab", - "family": "tasks.item-comment-gitlab", - "namedDeltas": [], - "values": { - "02b5df9521e8": { - "name": "detailPayload", - "ordinal": 14, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 904 - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "17b97af91ff8": { - "draft": "", - "error": "", - "item": { - "provider": "gitlab", - "source": { - "id": "gitlab:issue:4", - "labels": ["bug"], - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "issue" - }, - "title": "A GitLab issue" - }, - "mutating": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 904 - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "4031bf455f49": { - "name": "mutatingStatus", - "ordinal": 5, - "value": false - }, - "474412c229f4": { - "name": "detailPayload", - "ordinal": 7, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "53506297367b": { - "name": "itemCommentDraft", - "ordinal": 3, - "value": "" - }, - "6f50ec77f02f": { - "name": "itemCommentDraft", - "ordinal": 15, - "value": "" - }, - "779d1b9a2edb": { - "name": "actionItem", - "ordinal": 6, - "value": { - "provider": "gitlab", - "source": { - "id": "gitlab:issue:4", - "labels": ["bug"], - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "issue" - }, - "title": "A GitLab issue" - } - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "9331fbfa07e4": { - "name": "itemCommentDraft", - "ordinal": 9, - "value": "a comment" - }, - "ac15f5699a77": { - "name": "itemReviewersDraft", - "ordinal": 8, - "value": "octocat" - }, - "ad33e328b827": { - "name": "gitlab.addIssueComment#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.addIssueComment\",\"params\":{\"repo\":\"id:repo-1\",\"number\":4,\"body\":\"a comment\",\"projectRef\":{\"host\":\"gitlab.com\",\"path\":\"group/project\"}}}" - }, - "c650cf641414": { - "name": "itemReviewersDraft", - "ordinal": 4, - "value": "" - }, - "cbae54d3d351": { - "name": "mutatingStatus", - "ordinal": 16, - "value": false - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "d3b00d7291ae": { - "name": "gitlab.addIssueComment#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "gitlab.addIssueComment" - }, - { - "name": "params", - "value": { - "body": "a comment", - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 904 - }, - "ok": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tk-item-comment-gitlab", - "checkpoints": [ - { - "id": "comment-settled", - "observation": { - "sender": ["d3b00d7291ae"], - "payloads": ["ad33e328b827"], - "settlements": { - "mount": "eb79a9b3682a", - "comment-0": "eb79a9b3682a" - }, - "state": "17b97af91ff8", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "53506297367b", - "c650cf641414", - "4031bf455f49", - "779d1b9a2edb", - "474412c229f4", - "ac15f5699a77", - "9331fbfa07e4", - "3aefb3006914", - "886c60a7e62e", - "02b5df9521e8", - "6f50ec77f02f", - "cbae54d3d351" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-github-reactions.json b/mobile/rpc-foundation/goldens/tk-item-detail-github-reactions.json deleted file mode 100644 index a9a83fcd78e..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-detail-github-reactions.json +++ /dev/null @@ -1,372 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-detail-github", - "family": "tasks.item-detail-github", - "namedDeltas": [], - "values": { - "16125975286b": { - "name": "detailLoading", - "ordinal": 3, - "value": false - }, - "185dd46f0a38": { - "name": "detailLoading", - "ordinal": 8, - "value": true - }, - "20f8d00e8abe": { - "name": "detailLoading", - "ordinal": 12, - "value": false - }, - "4b2ed31e98ae": { - "error": "", - "item": { - "key": "github:repo-1:pr:12", - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - }, - "items": [ - { - "key": "github:repo-1:pr:12", - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ], - "loading": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "authorAvatarUrl": "", - "body": "a review comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "reactions": [ - { - "content": "+1", - "count": 3 - }, - { - "content": "heart", - "count": 1 - } - ], - "url": "https://github.com/owner/repo/pull/12#issuecomment-901" - } - ], - "files": [], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": "APPROVED", - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "617b71ab2cc6": { - "name": "github.workItemDetails#1", - "ordinal": 11, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemDetails\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12,\"type\":\"pr\"}}" - }, - "684c16e60ccd": { - "name": "github.workItemDetails#1", - "ordinal": 10, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-1", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "authorAvatarUrl": "", - "body": "a review comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "reactions": [ - { - "content": "+1", - "count": 3 - }, - { - "content": "heart", - "count": 1 - } - ], - "url": "https://github.com/owner/repo/pull/12#issuecomment-901" - } - ], - "files": [], - "headSha": "head-sha", - "item": { - "author": { - "$rpc": "null" - }, - "id": "pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "reviewDecision": "APPROVED", - "reviewRequests": [], - "state": "open", - "title": "A pull request", - "type": "pr", - "updatedAt": "2026-10-30T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12" - }, - "pullRequestId": "PR_kwDO" - } - } - } - }, - "72c0fc81a418": { - "name": "detailPayload", - "ordinal": 4, - "value": { - "$rpc": "null" - } - }, - "7649c383b850": { - "name": "detailPayload", - "ordinal": 13, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "authorAvatarUrl": "", - "body": "a review comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "reactions": [ - { - "content": "+1", - "count": 3 - }, - { - "content": "heart", - "count": 1 - } - ], - "url": "https://github.com/owner/repo/pull/12#issuecomment-901" - } - ], - "files": [], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": "APPROVED", - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "988fd3d6f1c4": { - "name": "detailRefreshSeq", - "ordinal": 5, - "value": 0 - }, - "a4f1a8696a24": { - "name": "detailError", - "ordinal": 2, - "value": "" - }, - "b99a772c440f": { - "name": "status.get#1", - "ordinal": 9, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "c6baeb478bf3": { - "name": "status.get#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "hostDescriptor": { - "installationId": "detail-host" - }, - "runtimeId": "detail-runtime" - } - } - } - }, - "cacd48cf20dc": { - "name": "actionItem", - "ordinal": 6, - "value": { - "key": "github:repo-1:pr:12", - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "tk-item-detail-github-reactions", - "checkpoints": [ - { - "id": "mounted", - "observation": { - "sender": ["c6baeb478bf3", "684c16e60ccd"], - "payloads": ["b99a772c440f", "617b71ab2cc6"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "4b2ed31e98ae", - "effects": [ - "cc2ece9478f0", - "a4f1a8696a24", - "16125975286b", - "72c0fc81a418", - "988fd3d6f1c4", - "cacd48cf20dc", - "185dd46f0a38", - "20f8d00e8abe", - "7649c383b850" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-gitlab-reactions.json b/mobile/rpc-foundation/goldens/tk-item-detail-gitlab-reactions.json deleted file mode 100644 index a1f4c43b1b1..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-detail-gitlab-reactions.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-detail-gitlab", - "family": "tasks.item-detail-gitlab", - "namedDeltas": [], - "values": { - "0b2033ec0891": { - "name": "gitlab.workItemDetails#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "gitlab.workItemDetails" - }, - { - "name": "params", - "value": { - "iid": 4, - "markViewerComments": true, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "type": "issue" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "approvalState": { - "approvalsLeft": 0, - "approvalsRequired": 1 - }, - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "authorAvatarUrl": "", - "body": "a discussion note", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "reactions": [ - { - "count": 2, - "name": "thumbsup" - } - ], - "url": "https://gitlab.example.com/group/project/-/issues/4#note_901" - } - ], - "item": { - "labels": ["bug"], - "mergeable": "MERGEABLE" - }, - "pipelineJobs": [], - "reviewers": [] - } - } - } - }, - "12958fc227ba": { - "error": "", - "item": { - "key": "gitlab:repo-1:issue:4", - "provider": "gitlab", - "source": { - "checksSummary": { - "cancelled": 0, - "failed": 0, - "neutral": 0, - "passed": 0, - "pending": 0, - "state": "none", - "total": 0 - }, - "id": "gitlab:issue:4", - "labels": ["bug"], - "mergeable": "MERGEABLE", - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "reviewDecision": "approved", - "reviewerCount": 0, - "state": "opened", - "type": "issue", - "url": "https://gitlab.com/group/project/-/issues/4" - }, - "title": "A GitLab issue" - }, - "items": [ - { - "key": "gitlab:repo-1:issue:4", - "provider": "gitlab", - "source": { - "checksSummary": { - "cancelled": 0, - "failed": 0, - "neutral": 0, - "passed": 0, - "pending": 0, - "state": "none", - "total": 0 - }, - "id": "gitlab:issue:4", - "labels": ["bug"], - "mergeable": "MERGEABLE", - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "reviewDecision": "approved", - "reviewerCount": 0, - "state": "opened", - "type": "issue", - "url": "https://gitlab.com/group/project/-/issues/4" - }, - "title": "A GitLab issue" - } - ], - "loading": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "authorAvatarUrl": "", - "body": "a discussion note", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "reactions": [ - { - "count": 2, - "name": "thumbsup" - } - ], - "url": "https://gitlab.example.com/group/project/-/issues/4#note_901" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "16125975286b": { - "name": "detailLoading", - "ordinal": 3, - "value": false - }, - "185dd46f0a38": { - "name": "detailLoading", - "ordinal": 8, - "value": true - }, - "20f8d00e8abe": { - "name": "detailLoading", - "ordinal": 12, - "value": false - }, - "274b8ecb4f73": { - "name": "actionItem", - "ordinal": 6, - "value": { - "key": "gitlab:repo-1:issue:4", - "provider": "gitlab", - "source": { - "id": "gitlab:issue:4", - "labels": ["bug"], - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "issue", - "url": "https://gitlab.com/group/project/-/issues/4" - }, - "title": "A GitLab issue" - } - }, - "5c69a0ab4415": { - "name": "actionItem", - "ordinal": 11, - "value": { - "key": "gitlab:repo-1:issue:4", - "provider": "gitlab", - "source": { - "checksSummary": { - "cancelled": 0, - "failed": 0, - "neutral": 0, - "passed": 0, - "pending": 0, - "state": "none", - "total": 0 - }, - "id": "gitlab:issue:4", - "labels": ["bug"], - "mergeable": "MERGEABLE", - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "reviewDecision": "approved", - "reviewerCount": 0, - "state": "opened", - "type": "issue", - "url": "https://gitlab.com/group/project/-/issues/4" - }, - "title": "A GitLab issue" - } - }, - "72c0fc81a418": { - "name": "detailPayload", - "ordinal": 4, - "value": { - "$rpc": "null" - } - }, - "988fd3d6f1c4": { - "name": "detailRefreshSeq", - "ordinal": 5, - "value": 0 - }, - "a4f1a8696a24": { - "name": "detailError", - "ordinal": 2, - "value": "" - }, - "b4d8ed508667": { - "name": "detailPayload", - "ordinal": 13, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "authorAvatarUrl": "", - "body": "a discussion note", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "reactions": [ - { - "count": 2, - "name": "thumbsup" - } - ], - "url": "https://gitlab.example.com/group/project/-/issues/4#note_901" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "ba6215ed3c22": { - "name": "gitlab.workItemDetails#1", - "ordinal": 9, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.workItemDetails\",\"params\":{\"repo\":\"id:repo-1\",\"iid\":4,\"type\":\"issue\",\"projectRef\":{\"host\":\"gitlab.com\",\"path\":\"group/project\"},\"markViewerComments\":true}}" - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f9f4fedb976a": { - "name": "items", - "ordinal": 10, - "value": [ - { - "key": "gitlab:repo-1:issue:4", - "provider": "gitlab", - "source": { - "checksSummary": { - "cancelled": 0, - "failed": 0, - "neutral": 0, - "passed": 0, - "pending": 0, - "state": "none", - "total": 0 - }, - "id": "gitlab:issue:4", - "labels": ["bug"], - "mergeable": "MERGEABLE", - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "reviewDecision": "approved", - "reviewerCount": 0, - "state": "opened", - "type": "issue", - "url": "https://gitlab.com/group/project/-/issues/4" - }, - "title": "A GitLab issue" - } - ] - } - }, - "recording": { - "scenario": "tk-item-detail-gitlab-reactions", - "checkpoints": [ - { - "id": "mounted", - "observation": { - "sender": ["0b2033ec0891"], - "payloads": ["ba6215ed3c22"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "12958fc227ba", - "effects": [ - "cc2ece9478f0", - "a4f1a8696a24", - "16125975286b", - "72c0fc81a418", - "988fd3d6f1c4", - "274b8ecb4f73", - "185dd46f0a38", - "f9f4fedb976a", - "5c69a0ab4415", - "20f8d00e8abe", - "b4d8ed508667" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-metadata.json b/mobile/rpc-foundation/goldens/tk-item-detail-metadata.json deleted file mode 100644 index 2c1af69792f..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-detail-metadata.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-detail-metadata", - "family": "tasks.item-detail-metadata", - "namedDeltas": [], - "values": { - "1ae1dc53b706": { - "name": "itemBodyDraft", - "ordinal": 13, - "value": "body" - }, - "4c5fe26e1c97": { - "name": "itemLabelsError", - "ordinal": 8, - "value": "" - }, - "5c50471cdd48": { - "name": "mutatingStatus", - "ordinal": 10, - "value": false - }, - "7a1299e1e3ac": { - "name": "itemLabelsLoading", - "ordinal": 9, - "value": false - }, - "9c483a675f4b": { - "name": "itemAvailableLabels", - "ordinal": 6, - "value": [] - }, - "a0ec6c8c4548": { - "labels": [], - "labelsError": "", - "labelsLoading": false, - "users": [], - "usersError": "", - "usersLoading": false - }, - "bcd7aec5dd24": { - "name": "itemAssignableUsersError", - "ordinal": 4, - "value": "" - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "d191f868fc7a": { - "name": "itemAssignableUsersLoading", - "ordinal": 5, - "value": false - }, - "dc200050b5f4": { - "name": "actionItem", - "ordinal": 11, - "value": { - "provider": "github", - "source": { - "id": "github:issue:9", - "labels": ["bug"], - "number": 9, - "repoId": "repo-1", - "reviewRequests": [], - "state": "open", - "type": "issue", - "url": "https://github.com/owner/repo/issues/9" - }, - "title": "An issue" - } - }, - "df267b378e62": { - "name": "itemAssignableUsers", - "ordinal": 3, - "value": [] - }, - "e416a2404225": { - "name": "itemBodyDraft", - "ordinal": 7, - "value": "" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "f5d301978157": { - "name": "detailPayload", - "ordinal": 12, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000issue\u00009" - } - } - }, - "recording": { - "scenario": "tk-item-detail-metadata", - "checkpoints": [ - { - "id": "mounted", - "observation": { - "sender": [], - "payloads": [], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "a0ec6c8c4548", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "df267b378e62", - "bcd7aec5dd24", - "d191f868fc7a", - "9c483a675f4b", - "e416a2404225", - "4c5fe26e1c97", - "7a1299e1e3ac", - "5c50471cdd48", - "dc200050b5f4", - "f5d301978157", - "1ae1dc53b706" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-merge-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-merge-gitlab.json deleted file mode 100644 index b5c7a650107..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-merge-gitlab.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-merge-gitlab", - "family": "tasks.item-merge-gitlab", - "namedDeltas": [], - "values": { - "104bf14d3af8": { - "name": "error", - "ordinal": 8, - "value": "" - }, - "11b6302399f9": { - "name": "mutatingStatus", - "ordinal": 10, - "value": true - }, - "3c854b38217d": { - "name": "detailPayload", - "ordinal": 6, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "40b5b543334f": { - "name": "gitlab.mergeMR#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "gitlab.mergeMR" - }, - { - "name": "params", - "value": { - "iid": 7, - "method": "squash", - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 60000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "42be1ca2bc40": { - "name": "mutatingStatus", - "ordinal": 4, - "value": false - }, - "589373883844": { - "error": "", - "item": { - "$rpc": "null" - }, - "items": [ - { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": [], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "mr" - }, - "title": "A merge request" - } - ], - "mutating": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "81282764182b": { - "name": "itemReplyDrafts", - "ordinal": 7, - "value": { - "501": "a reply", - "comment-2": "a reply" - } - }, - "a45f1237e928": { - "name": "actionItem", - "ordinal": 5, - "value": { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": [], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "mr" - }, - "title": "A merge request" - } - }, - "aa01ca6020fb": { - "name": "itemReplyDrafts", - "ordinal": 3, - "value": {} - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "e0a9defd9b13": { - "name": "mutatingStatus", - "ordinal": 13, - "value": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "f7191833ef4f": { - "name": "gitlab.mergeMR#1", - "ordinal": 11, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.mergeMR\",\"params\":{\"repo\":\"id:repo-1\",\"iid\":7,\"method\":\"squash\",\"projectRef\":{\"host\":\"gitlab.com\",\"path\":\"group/project\"}}}" - }, - "fbf2ffe3d253": { - "name": "actionItem", - "ordinal": 12, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tk-item-merge-gitlab", - "checkpoints": [ - { - "id": "merge-settled", - "observation": { - "sender": ["40b5b543334f"], - "payloads": ["f7191833ef4f"], - "settlements": { - "mount": "eb79a9b3682a", - "merge-0": "eb79a9b3682a" - }, - "state": "589373883844", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "aa01ca6020fb", - "42be1ca2bc40", - "a45f1237e928", - "3c854b38217d", - "81282764182b", - "104bf14d3af8", - "11b6302399f9", - "fbf2ffe3d253", - "e0a9defd9b13" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-metadata-github.json b/mobile/rpc-foundation/goldens/tk-item-metadata-github.json deleted file mode 100644 index 8c5a4754c46..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-metadata-github.json +++ /dev/null @@ -1,438 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-metadata-github", - "family": "tasks.item-metadata-github", - "namedDeltas": [], - "values": { - "091fa60820e6": { - "name": "github.updatePR#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.updatePR" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "updates": { - "body": "new body", - "title": "Renamed" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "14949c71727e": { - "name": "mutatingStatus", - "ordinal": 7, - "value": false - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "534352bbf363": { - "name": "items", - "ordinal": 14, - "value": [ - { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "title": "Renamed", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "Renamed" - } - ] - }, - "62e92e71cb1f": { - "name": "mutatingStatus", - "ordinal": 17, - "value": false - }, - "67c9daa7195e": { - "error": "", - "item": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "title": "Renamed", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "Renamed" - }, - "items": [ - { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "title": "Renamed", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "Renamed" - } - ], - "mutating": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "new body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "6b1d692015cd": { - "name": "detailPayload", - "ordinal": 9, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "8f2e59bf5214": { - "name": "actionItem", - "ordinal": 15, - "value": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "title": "Renamed", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "Renamed" - } - }, - "96990f48ae85": { - "name": "detailPayload", - "ordinal": 16, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "new body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "98fe08e442ec": { - "name": "itemRemoveAssigneesDraft", - "ordinal": 5, - "value": "" - }, - "a80ee9a342f1": { - "name": "itemAddAssigneesDraft", - "ordinal": 3, - "value": "" - }, - "b701ca439037": { - "name": "github.updatePR#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.updatePR\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"updates\":{\"title\":\"Renamed\",\"body\":\"new body\"}}}" - }, - "b93b4f6d74db": { - "name": "itemAddLabelsDraft", - "ordinal": 4, - "value": "" - }, - "c79fe0d83267": { - "name": "itemRemoveLabelsDraft", - "ordinal": 6, - "value": "" - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "cd8620080e8a": { - "name": "actionItem", - "ordinal": 8, - "value": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tk-item-metadata-github", - "checkpoints": [ - { - "id": "update-pr-settled", - "observation": { - "sender": ["091fa60820e6"], - "payloads": ["b701ca439037"], - "settlements": { - "mount": "eb79a9b3682a", - "update-pr-0": "eb79a9b3682a" - }, - "state": "67c9daa7195e", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "a80ee9a342f1", - "b93b4f6d74db", - "98fe08e442ec", - "c79fe0d83267", - "14949c71727e", - "cd8620080e8a", - "6b1d692015cd", - "3aefb3006914", - "886c60a7e62e", - "534352bbf363", - "8f2e59bf5214", - "96990f48ae85", - "62e92e71cb1f" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab-mr.json b/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab-mr.json deleted file mode 100644 index 03e5f944c85..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab-mr.json +++ /dev/null @@ -1,315 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-metadata-gitlab-mr", - "family": "tasks.item-metadata-gitlab-mr", - "namedDeltas": [], - "values": { - "14949c71727e": { - "name": "mutatingStatus", - "ordinal": 7, - "value": false - }, - "23ede8191c86": { - "name": "detailPayload", - "ordinal": 9, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "266686bfdeec": { - "error": "", - "item": { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": ["bug", "triage"], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "title": "Renamed", - "type": "mr" - }, - "title": "Renamed" - }, - "items": [ - { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": ["bug", "triage"], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "title": "Renamed", - "type": "mr" - }, - "title": "Renamed" - } - ], - "mutating": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug", "triage"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "3af513ef8a7e": { - "name": "items", - "ordinal": 14, - "value": [ - { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": ["bug", "triage"], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "title": "Renamed", - "type": "mr" - }, - "title": "Renamed" - } - ] - }, - "62e92e71cb1f": { - "name": "mutatingStatus", - "ordinal": 17, - "value": false - }, - "806d212f3150": { - "name": "actionItem", - "ordinal": 15, - "value": { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": ["bug", "triage"], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "title": "Renamed", - "type": "mr" - }, - "title": "Renamed" - } - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "98fe08e442ec": { - "name": "itemRemoveAssigneesDraft", - "ordinal": 5, - "value": "" - }, - "9e46e6e7c627": { - "name": "detailPayload", - "ordinal": 16, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug", "triage"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "a4c82b4992bd": { - "name": "actionItem", - "ordinal": 8, - "value": { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": [], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "mr" - }, - "title": "A merge request" - } - }, - "a80ee9a342f1": { - "name": "itemAddAssigneesDraft", - "ordinal": 3, - "value": "" - }, - "b93b4f6d74db": { - "name": "itemAddLabelsDraft", - "ordinal": 4, - "value": "" - }, - "c41542d48b3c": { - "name": "gitlab.updateMR#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "gitlab.updateMR" - }, - { - "name": "params", - "value": { - "iid": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "updates": { - "addLabels": ["triage"], - "body": { - "$rpc": "undefined" - }, - "removeLabels": { - "$rpc": "undefined" - }, - "title": "Renamed" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "c79fe0d83267": { - "name": "itemRemoveLabelsDraft", - "ordinal": 6, - "value": "" - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "daa0db125085": { - "name": "gitlab.updateMR#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.updateMR\",\"params\":{\"repo\":\"id:repo-1\",\"iid\":7,\"projectRef\":{\"host\":\"gitlab.com\",\"path\":\"group/project\"},\"updates\":{\"title\":\"Renamed\",\"addLabels\":[\"triage\"]}}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tk-item-metadata-gitlab-mr", - "checkpoints": [ - { - "id": "update-gitlab-settled", - "observation": { - "sender": ["c41542d48b3c"], - "payloads": ["daa0db125085"], - "settlements": { - "mount": "eb79a9b3682a", - "update-gitlab-0": "eb79a9b3682a" - }, - "state": "266686bfdeec", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "a80ee9a342f1", - "b93b4f6d74db", - "98fe08e442ec", - "c79fe0d83267", - "14949c71727e", - "a4c82b4992bd", - "23ede8191c86", - "3aefb3006914", - "886c60a7e62e", - "3af513ef8a7e", - "806d212f3150", - "9e46e6e7c627", - "62e92e71cb1f" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-reply-merge.json b/mobile/rpc-foundation/goldens/tk-item-reply-merge.json deleted file mode 100644 index 0e26bbd1538..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-reply-merge.json +++ /dev/null @@ -1,1013 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-reply-merge-github", - "family": "tasks.item-reply-merge", - "namedDeltas": [], - "values": { - "104bf14d3af8": { - "name": "error", - "ordinal": 8, - "value": "" - }, - "11b6302399f9": { - "name": "mutatingStatus", - "ordinal": 10, - "value": true - }, - "29cadc65bcbb": { - "name": "error", - "ordinal": 15, - "value": "" - }, - "29ed7524dd3c": { - "name": "error", - "ordinal": 22, - "value": "" - }, - "387fc47e347f": { - "name": "github.addIssueComment#1", - "ordinal": 18, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.addIssueComment\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12,\"body\":\"@octocat a reply\",\"type\":\"pr\",\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"}}}" - }, - "3e0fed9df072": { - "error": "", - "item": { - "$rpc": "null" - }, - "items": [ - { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ], - "mutating": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "42be1ca2bc40": { - "name": "mutatingStatus", - "ordinal": 4, - "value": false - }, - "4683a2e1b3f8": { - "name": "actionItem", - "ordinal": 5, - "value": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, - "484e5b3de56e": { - "name": "error", - "ordinal": 28, - "value": "" - }, - "4dd9211bea32": { - "name": "mutatingStatus", - "ordinal": 17, - "value": true - }, - "5b1644d4f9fa": { - "name": "github.mergePR#1", - "ordinal": 25, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.mergePR\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"method\":\"squash\"}}" - }, - "6075f27a5a9a": { - "name": "linear.updateIssue#1", - "ordinal": 29, - "args": [ - { - "name": "method", - "value": "linear.updateIssue" - }, - { - "name": "params", - "value": { - "id": "issue-1", - "updates": { - "stateId": "state-2" - }, - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "68003f9dae22": { - "name": "mutatingStatus", - "ordinal": 24, - "value": true - }, - "804aa0239615": { - "name": "items", - "ordinal": 32, - "value": [ - { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ] - }, - "81282764182b": { - "name": "itemReplyDrafts", - "ordinal": 7, - "value": { - "501": "a reply", - "comment-2": "a reply" - } - }, - "82be5a1db7df": { - "name": "mutatingStatus", - "ordinal": 33, - "value": false - }, - "8427fd4151f1": { - "name": "mutatingStatus", - "ordinal": 14, - "value": false - }, - "869e1e2e047d": { - "name": "detailPayload", - "ordinal": 19, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "86fa3f6d565f": { - "error": "", - "item": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - }, - "items": [ - { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ], - "mutating": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "98eb36f15c01": { - "name": "itemReplyDrafts", - "ordinal": 13, - "value": { - "comment-2": "a reply" - } - }, - "aa01ca6020fb": { - "name": "itemReplyDrafts", - "ordinal": 3, - "value": {} - }, - "c16a0a7d376f": { - "name": "detailPayload", - "ordinal": 12, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "ce2c6bf47801": { - "name": "github.addPRReviewCommentReply#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.addPRReviewCommentReply" - }, - { - "name": "params", - "value": { - "body": "a reply", - "commentId": 501, - "line": 12, - "path": "src/index.ts", - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "threadId": "thread-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - "ok": true - } - } - } - }, - "d1230c20846f": { - "name": "linear.updateIssue#1", - "ordinal": 31, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"linear.updateIssue\",\"params\":{\"id\":\"issue-1\",\"workspaceId\":\"linear-workspace\",\"updates\":{\"stateId\":\"state-2\"}}}" - }, - "dc686891aa6e": { - "name": "github.addIssueComment#1", - "ordinal": 16, - "args": [ - { - "name": "method", - "value": "github.addIssueComment" - }, - { - "name": "params", - "value": { - "body": "@octocat a reply", - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - }, - "ok": true - } - } - } - }, - "e66062a7229b": { - "name": "actionItem", - "ordinal": 26, - "value": { - "$rpc": "null" - } - }, - "e7c30d615df8": { - "error": "", - "item": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - }, - "items": [ - { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ], - "mutating": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "e99d4c89211e": { - "name": "github.mergePR#1", - "ordinal": 23, - "args": [ - { - "name": "method", - "value": "github.mergePR" - }, - { - "name": "params", - "value": { - "method": "squash", - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 60000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ed47309ce73e": { - "name": "github.addPRReviewCommentReply#1", - "ordinal": 11, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.addPRReviewCommentReply\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"commentId\":501,\"body\":\"a reply\",\"threadId\":\"thread-1\",\"path\":\"src/index.ts\",\"line\":12}}" - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "ee46c3c5fe81": { - "name": "mutatingStatus", - "ordinal": 30, - "value": true - }, - "f756dcb64e9c": { - "name": "itemReplyDrafts", - "ordinal": 20, - "value": {} - }, - "f9f88a1b1096": { - "name": "detailPayload", - "ordinal": 6, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "fa2f2de4dfe7": { - "name": "mutatingStatus", - "ordinal": 27, - "value": false - }, - "fc98c233b124": { - "name": "mutatingStatus", - "ordinal": 21, - "value": false - } - }, - "recording": { - "scenario": "tk-item-reply-merge", - "checkpoints": [ - { - "id": "review-reply-settled", - "observation": { - "sender": ["ce2c6bf47801"], - "payloads": ["ed47309ce73e"], - "settlements": { - "mount": "eb79a9b3682a", - "review-reply-0": "eb79a9b3682a" - }, - "state": "e7c30d615df8", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "aa01ca6020fb", - "42be1ca2bc40", - "4683a2e1b3f8", - "f9f88a1b1096", - "81282764182b", - "104bf14d3af8", - "11b6302399f9", - "c16a0a7d376f", - "98eb36f15c01", - "8427fd4151f1" - ] - } - }, - { - "id": "issue-reply-settled", - "observation": { - "sender": ["ce2c6bf47801", "dc686891aa6e"], - "payloads": ["ed47309ce73e", "387fc47e347f"], - "settlements": { - "mount": "eb79a9b3682a", - "review-reply-0": "eb79a9b3682a", - "issue-reply-1": "eb79a9b3682a" - }, - "state": "86fa3f6d565f", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "aa01ca6020fb", - "42be1ca2bc40", - "4683a2e1b3f8", - "f9f88a1b1096", - "81282764182b", - "104bf14d3af8", - "11b6302399f9", - "c16a0a7d376f", - "98eb36f15c01", - "8427fd4151f1", - "29cadc65bcbb", - "4dd9211bea32", - "869e1e2e047d", - "f756dcb64e9c", - "fc98c233b124" - ] - } - }, - { - "id": "merge-settled", - "observation": { - "sender": ["ce2c6bf47801", "dc686891aa6e", "e99d4c89211e"], - "payloads": ["ed47309ce73e", "387fc47e347f", "5b1644d4f9fa"], - "settlements": { - "mount": "eb79a9b3682a", - "review-reply-0": "eb79a9b3682a", - "issue-reply-1": "eb79a9b3682a", - "merge-2": "eb79a9b3682a" - }, - "state": "3e0fed9df072", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "aa01ca6020fb", - "42be1ca2bc40", - "4683a2e1b3f8", - "f9f88a1b1096", - "81282764182b", - "104bf14d3af8", - "11b6302399f9", - "c16a0a7d376f", - "98eb36f15c01", - "8427fd4151f1", - "29cadc65bcbb", - "4dd9211bea32", - "869e1e2e047d", - "f756dcb64e9c", - "fc98c233b124", - "29ed7524dd3c", - "68003f9dae22", - "e66062a7229b", - "fa2f2de4dfe7" - ] - } - }, - { - "id": "linear-status-settled", - "observation": { - "sender": ["ce2c6bf47801", "dc686891aa6e", "e99d4c89211e", "6075f27a5a9a"], - "payloads": ["ed47309ce73e", "387fc47e347f", "5b1644d4f9fa", "d1230c20846f"], - "settlements": { - "mount": "eb79a9b3682a", - "review-reply-0": "eb79a9b3682a", - "issue-reply-1": "eb79a9b3682a", - "merge-2": "eb79a9b3682a", - "linear-status-3": "eb79a9b3682a" - }, - "state": "3e0fed9df072", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "aa01ca6020fb", - "42be1ca2bc40", - "4683a2e1b3f8", - "f9f88a1b1096", - "81282764182b", - "104bf14d3af8", - "11b6302399f9", - "c16a0a7d376f", - "98eb36f15c01", - "8427fd4151f1", - "29cadc65bcbb", - "4dd9211bea32", - "869e1e2e047d", - "f756dcb64e9c", - "fc98c233b124", - "29ed7524dd3c", - "68003f9dae22", - "e66062a7229b", - "fa2f2de4dfe7", - "484e5b3de56e", - "ee46c3c5fe81", - "804aa0239615", - "82be5a1db7df" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-review-github.json b/mobile/rpc-foundation/goldens/tk-item-review-github.json deleted file mode 100644 index 82a001bcefa..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-review-github.json +++ /dev/null @@ -1,881 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-review-github", - "family": "tasks.item-review-github", - "namedDeltas": [], - "values": { - "04f768fb79f6": { - "name": "actionItem", - "ordinal": 6, - "value": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, - "0928f51c9dae": { - "name": "detailPayload", - "ordinal": 16, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "1c3b130f9436": { - "name": "actionItem", - "ordinal": 26, - "value": { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, - "22b1e4293201": { - "name": "mutatingStatus", - "ordinal": 28, - "value": false - }, - "26f442c9e2e5": { - "name": "detailPayload", - "ordinal": 7, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "2d8d5e501a0d": { - "name": "mutatingStatus", - "ordinal": 21, - "value": true - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "4031bf455f49": { - "name": "mutatingStatus", - "ordinal": 5, - "value": false - }, - "4a6545173dbd": { - "draft": "a comment", - "error": "", - "item": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - }, - "mutating": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "53506297367b": { - "name": "itemCommentDraft", - "ordinal": 3, - "value": "" - }, - "593c53b594c5": { - "draft": "a comment", - "error": "", - "item": { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - }, - "mutating": false, - "payload": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "5a6043d5c7cc": { - "name": "actionItem", - "ordinal": 15, - "value": { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, - "69b4fb187f59": { - "name": "detailPayload", - "ordinal": 27, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, - "6f47b9866251": { - "name": "github.prChecks#1", - "ordinal": 23, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ] - } - } - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "9331fbfa07e4": { - "name": "itemCommentDraft", - "ordinal": 9, - "value": "a comment" - }, - "94caa29bceef": { - "name": "error", - "ordinal": 19, - "value": "" - }, - "a17cf032d1cb": { - "name": "mutatingStatus", - "ordinal": 18, - "value": false - }, - "ac15f5699a77": { - "name": "itemReviewersDraft", - "ordinal": 8, - "value": "octocat" - }, - "baa2764f836f": { - "name": "github.prChecks#1", - "ordinal": 24, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" - }, - "c29314fc4896": { - "name": "items", - "ordinal": 14, - "value": [ - { - "provider": "github", - "source": { - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ] - }, - "c448fcc040ee": { - "name": "status.get#1", - "ordinal": 22, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "c650cf641414": { - "name": "itemReviewersDraft", - "ordinal": 4, - "value": "" - }, - "c9e35d56c303": { - "name": "itemReviewersDraft", - "ordinal": 17, - "value": "" - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "cf975363479a": { - "name": "github.requestPRReviewers#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.requestPRReviewers" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "reviewers": ["octocat"] - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "d8e1fd46cd19": { - "name": "github.requestPRReviewers#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"reviewers\":[\"octocat\"]}}" - }, - "e38e4b18b697": { - "name": "items", - "ordinal": 25, - "value": [ - { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ] - }, - "e6b60387dab2": { - "name": "status.get#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 15000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "capabilities": ["github.exact-work-item-target.v1"], - "hostDescriptor": { - "installationId": "recorded" - }, - "runtimeId": "recorded" - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tk-item-review-github", - "checkpoints": [ - { - "id": "reviewers-settled", - "observation": { - "sender": ["cf975363479a"], - "payloads": ["d8e1fd46cd19"], - "settlements": { - "mount": "eb79a9b3682a", - "reviewers-0": "eb79a9b3682a" - }, - "state": "4a6545173dbd", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "53506297367b", - "c650cf641414", - "4031bf455f49", - "04f768fb79f6", - "26f442c9e2e5", - "ac15f5699a77", - "9331fbfa07e4", - "3aefb3006914", - "886c60a7e62e", - "c29314fc4896", - "5a6043d5c7cc", - "0928f51c9dae", - "c9e35d56c303", - "a17cf032d1cb" - ] - } - }, - { - "id": "checks-settled", - "observation": { - "sender": ["cf975363479a", "e6b60387dab2", "6f47b9866251"], - "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], - "settlements": { - "mount": "eb79a9b3682a", - "reviewers-0": "eb79a9b3682a", - "checks-1": "eb79a9b3682a" - }, - "state": "593c53b594c5", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "53506297367b", - "c650cf641414", - "4031bf455f49", - "04f768fb79f6", - "26f442c9e2e5", - "ac15f5699a77", - "9331fbfa07e4", - "3aefb3006914", - "886c60a7e62e", - "c29314fc4896", - "5a6043d5c7cc", - "0928f51c9dae", - "c9e35d56c303", - "a17cf032d1cb", - "94caa29bceef", - "2d8d5e501a0d", - "e38e4b18b697", - "1c3b130f9436", - "69b4fb187f59", - "22b1e4293201" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-status-gitlab-mr.json b/mobile/rpc-foundation/goldens/tk-item-status-gitlab-mr.json deleted file mode 100644 index 7fcd63a2c5f..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-status-gitlab-mr.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-status-gitlab-mr", - "family": "tasks.item-status-gitlab-mr", - "namedDeltas": [], - "values": { - "14949c71727e": { - "name": "mutatingStatus", - "ordinal": 7, - "value": false - }, - "1586a62c0b50": { - "name": "gitlab.updateMRState#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.updateMRState\",\"params\":{\"repo\":\"id:repo-1\",\"iid\":7,\"state\":\"closed\",\"projectRef\":{\"host\":\"gitlab.com\",\"path\":\"group/project\"}}}" - }, - "23ede8191c86": { - "name": "detailPayload", - "ordinal": 9, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "5737a7806a0c": { - "name": "mutatingStatus", - "ordinal": 15, - "value": false - }, - "589373883844": { - "error": "", - "item": { - "$rpc": "null" - }, - "items": [ - { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": [], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "mr" - }, - "title": "A merge request" - } - ], - "mutating": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "6f52cc0afcf0": { - "name": "gitlab.updateMRState#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "gitlab.updateMRState" - }, - { - "name": "params", - "value": { - "iid": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "state": "closed" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "91e56b4fbd5b": { - "name": "actionItem", - "ordinal": 14, - "value": { - "$rpc": "null" - } - }, - "98fe08e442ec": { - "name": "itemRemoveAssigneesDraft", - "ordinal": 5, - "value": "" - }, - "a4c82b4992bd": { - "name": "actionItem", - "ordinal": 8, - "value": { - "provider": "gitlab", - "source": { - "id": "gitlab:mr:7", - "labels": [], - "number": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "mr" - }, - "title": "A merge request" - } - }, - "a80ee9a342f1": { - "name": "itemAddAssigneesDraft", - "ordinal": 3, - "value": "" - }, - "b93b4f6d74db": { - "name": "itemAddLabelsDraft", - "ordinal": 4, - "value": "" - }, - "c79fe0d83267": { - "name": "itemRemoveLabelsDraft", - "ordinal": 6, - "value": "" - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tk-item-status-gitlab-mr", - "checkpoints": [ - { - "id": "gitlab-status-settled", - "observation": { - "sender": ["6f52cc0afcf0"], - "payloads": ["1586a62c0b50"], - "settlements": { - "mount": "eb79a9b3682a", - "gitlab-status-0": "eb79a9b3682a" - }, - "state": "589373883844", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "a80ee9a342f1", - "b93b4f6d74db", - "98fe08e442ec", - "c79fe0d83267", - "14949c71727e", - "a4c82b4992bd", - "23ede8191c86", - "3aefb3006914", - "886c60a7e62e", - "91e56b4fbd5b", - "5737a7806a0c" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-item-status-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-status-gitlab.json deleted file mode 100644 index bce8bd8c120..00000000000 --- a/mobile/rpc-foundation/goldens/tk-item-status-gitlab.json +++ /dev/null @@ -1,498 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.item-status-gitlab", - "family": "tasks.item-status-gitlab", - "namedDeltas": [], - "values": { - "05df5d49a11c": { - "error": "", - "item": { - "$rpc": "null" - }, - "items": [ - { - "provider": "gitlab", - "source": { - "id": "gitlab:issue:4", - "labels": ["bug"], - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "issue" - }, - "title": "A GitLab issue" - } - ], - "mutating": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "14949c71727e": { - "name": "mutatingStatus", - "ordinal": 7, - "value": false - }, - "1d07085d77f7": { - "error": "", - "item": { - "provider": "github", - "source": { - "id": "github:issue:9", - "labels": ["triage"], - "number": 9, - "repoId": "repo-1", - "reviewRequests": [], - "state": "open", - "title": "Renamed", - "type": "issue", - "url": "https://github.com/owner/repo/issues/9" - }, - "title": "Renamed" - }, - "items": [ - { - "provider": "gitlab", - "source": { - "id": "gitlab:issue:4", - "labels": ["bug"], - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "issue" - }, - "title": "A GitLab issue" - } - ], - "mutating": false, - "payload": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "23ede8191c86": { - "name": "detailPayload", - "ordinal": 9, - "value": { - "assignees": [], - "body": "body", - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "labels": ["bug"], - "pipelineJobs": [], - "provider": "gitlab" - } - }, - "38e625888db0": { - "name": "mutatingStatus", - "ordinal": 25, - "value": false - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "5737a7806a0c": { - "name": "mutatingStatus", - "ordinal": 15, - "value": false - }, - "5a062aaf1adc": { - "name": "actionItem", - "ordinal": 18, - "value": { - "provider": "github", - "source": { - "id": "github:issue:9", - "labels": ["bug"], - "number": 9, - "repoId": "repo-1", - "reviewRequests": [], - "state": "open", - "type": "issue", - "url": "https://github.com/owner/repo/issues/9" - }, - "title": "An issue" - } - }, - "5d27fa679339": { - "name": "github.updateIssue#1", - "ordinal": 22, - "json": "{\"expectedRuntimeSource\":{\"sourceId\":\"recorded\",\"runtimeId\":\"recorded\"},\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.updateIssue\",\"params\":{\"repo\":\"id:repo-1\",\"number\":9,\"updates\":{\"title\":\"Renamed\",\"addLabels\":[\"triage\"],\"removeLabels\":[\"bug\"]},\"ownerRepo\":{\"host\":\"github.com\",\"owner\":\"owner\",\"repo\":\"repo\"}}}" - }, - "66a7662321ab": { - "name": "gitlab.updateIssue#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.updateIssue\",\"params\":{\"repo\":\"id:repo-1\",\"number\":4,\"updates\":{\"state\":\"closed\"},\"projectRef\":{\"host\":\"gitlab.com\",\"path\":\"group/project\"}}}" - }, - "69c27ef617a1": { - "name": "items", - "ordinal": 23, - "value": [ - { - "provider": "gitlab", - "source": { - "id": "gitlab:issue:4", - "labels": ["bug"], - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "issue" - }, - "title": "A GitLab issue" - } - ] - }, - "87cd6a741359": { - "name": "status.get#1", - "ordinal": 17, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "capabilities": ["github.exact-work-item-target.v1"], - "hostDescriptor": { - "installationId": "recorded" - }, - "runtimeId": "recorded" - } - } - } - }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "91e56b4fbd5b": { - "name": "actionItem", - "ordinal": 14, - "value": { - "$rpc": "null" - } - }, - "98fe08e442ec": { - "name": "itemRemoveAssigneesDraft", - "ordinal": 5, - "value": "" - }, - "99e035739729": { - "name": "gitlab.updateIssue#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "gitlab.updateIssue" - }, - { - "name": "params", - "value": { - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "updates": { - "state": "closed" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "9d1f08a6e600": { - "name": "error", - "ordinal": 16, - "value": "" - }, - "a80ee9a342f1": { - "name": "itemAddAssigneesDraft", - "ordinal": 3, - "value": "" - }, - "b26dc20548a8": { - "name": "actionItem", - "ordinal": 8, - "value": { - "provider": "gitlab", - "source": { - "id": "gitlab:issue:4", - "labels": ["bug"], - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repoId": "repo-1", - "state": "opened", - "type": "issue" - }, - "title": "A GitLab issue" - } - }, - "b93b4f6d74db": { - "name": "itemAddLabelsDraft", - "ordinal": 4, - "value": "" - }, - "c2fc779dad42": { - "name": "actionItem", - "ordinal": 24, - "value": { - "provider": "github", - "source": { - "id": "github:issue:9", - "labels": ["triage"], - "number": 9, - "repoId": "repo-1", - "reviewRequests": [], - "state": "open", - "title": "Renamed", - "type": "issue", - "url": "https://github.com/owner/repo/issues/9" - }, - "title": "Renamed" - } - }, - "c5b803a7c562": { - "name": "github.updateIssue#1", - "ordinal": 21, - "args": [ - { - "name": "method", - "value": "github.updateIssue" - }, - { - "name": "params", - "value": { - "number": 9, - "ownerRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "updates": { - "addLabels": ["triage"], - "removeLabels": ["bug"], - "title": "Renamed" - } - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "envelope": { - "expectedRuntimeSource": { - "runtimeId": "recorded", - "sourceId": "recorded" - } - }, - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "c79fe0d83267": { - "name": "itemRemoveLabelsDraft", - "ordinal": 6, - "value": "" - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "e0bebf1cd037": { - "name": "status.get#1", - "ordinal": 20, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "f3640f6ae8be": { - "name": "mutatingStatus", - "ordinal": 19, - "value": true - } - }, - "recording": { - "scenario": "tk-item-status-gitlab", - "checkpoints": [ - { - "id": "gitlab-status-settled", - "observation": { - "sender": ["99e035739729"], - "payloads": ["66a7662321ab"], - "settlements": { - "mount": "eb79a9b3682a", - "gitlab-status-0": "eb79a9b3682a" - }, - "state": "05df5d49a11c", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "a80ee9a342f1", - "b93b4f6d74db", - "98fe08e442ec", - "c79fe0d83267", - "14949c71727e", - "b26dc20548a8", - "23ede8191c86", - "3aefb3006914", - "886c60a7e62e", - "91e56b4fbd5b", - "5737a7806a0c" - ] - } - }, - { - "id": "github-metadata-settled", - "observation": { - "sender": ["99e035739729", "87cd6a741359", "c5b803a7c562"], - "payloads": ["66a7662321ab", "e0bebf1cd037", "5d27fa679339"], - "settlements": { - "mount": "eb79a9b3682a", - "gitlab-status-0": "eb79a9b3682a", - "github-metadata-1": "eb79a9b3682a" - }, - "state": "1d07085d77f7", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "a80ee9a342f1", - "b93b4f6d74db", - "98fe08e442ec", - "c79fe0d83267", - "14949c71727e", - "b26dc20548a8", - "23ede8191c86", - "3aefb3006914", - "886c60a7e62e", - "91e56b4fbd5b", - "5737a7806a0c", - "9d1f08a6e600", - "5a062aaf1adc", - "f3640f6ae8be", - "69c27ef617a1", - "c2fc779dad42", - "38e625888db0" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-linear-connect.json b/mobile/rpc-foundation/goldens/tk-linear-connect.json deleted file mode 100644 index 106d07abd39..00000000000 --- a/mobile/rpc-foundation/goldens/tk-linear-connect.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.linear-connect", - "family": "tasks.linear-connect", - "namedDeltas": [], - "values": { - "0d5ee6814ade": { - "name": "linearConnectState", - "ordinal": 6, - "value": "idle" - }, - "0eb2b134d2a8": { - "name": "linearApiKeyDraft", - "ordinal": 5, - "value": "" - }, - "2f8d5603d8c0": { - "connected": true, - "error": "", - "provider": "linear", - "providers": ["github", "linear"], - "state": "idle" - }, - "419764f3b217": { - "name": "linearConnectState", - "ordinal": 1, - "value": "connecting" - }, - "7b027170ab7f": { - "name": "linearConnected", - "ordinal": 8, - "value": true - }, - "7cc9b174cc9e": { - "name": "linearConnectError", - "ordinal": 2, - "value": "" - }, - "90675c627fb4": { - "name": "linear.connect#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "linear.connect" - }, - { - "name": "params", - "value": { - "apiKey": "lin_api_key" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "b59099af6718": { - "name": "linear.connect#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.connect\",\"params\":{\"apiKey\":\"lin_api_key\"}}" - }, - "c78daa2d0ec8": { - "name": "showLinearConnect", - "ordinal": 7, - "value": false - }, - "d35d1934b202": { - "name": "provider", - "ordinal": 10, - "value": "linear" - }, - "dd595ae96cc8": { - "name": "visibleProviders", - "ordinal": 9, - "value": ["github", "linear"] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "tk-linear-connect", - "checkpoints": [ - { - "id": "connect-settled", - "observation": { - "sender": ["90675c627fb4"], - "payloads": ["b59099af6718"], - "settlements": { - "mount": "eb79a9b3682a", - "connect-0": "eb79a9b3682a" - }, - "state": "2f8d5603d8c0", - "effects": [ - "419764f3b217", - "7cc9b174cc9e", - "0eb2b134d2a8", - "0d5ee6814ade", - "c78daa2d0ec8", - "7b027170ab7f", - "dd595ae96cc8", - "d35d1934b202" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-linear-team-context.json b/mobile/rpc-foundation/goldens/tk-linear-team-context.json deleted file mode 100644 index 81ba10022ae..00000000000 --- a/mobile/rpc-foundation/goldens/tk-linear-team-context.json +++ /dev/null @@ -1,270 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.linear-team-context", - "family": "tasks.linear-team-context", - "namedDeltas": [], - "values": { - "031c50459130": { - "name": "createTeamId", - "ordinal": 10, - "value": "team-1" - }, - "2afc4b1311c1": { - "createTeamId": "team-1", - "states": [], - "statesLoading": false, - "teams": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - }, - "38ed617d559f": { - "name": "linearTeams", - "ordinal": 9, - "value": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - }, - "3abc893d377b": { - "name": "mutatingStatus", - "ordinal": 3, - "value": false - }, - "4fcc46dfeb77": { - "name": "linear.listTeams#1", - "ordinal": 8, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listTeams\"}" - }, - "5dcdc7fd7492": { - "name": "linearSubIssueTitle", - "ordinal": 4, - "value": "" - }, - "74335ecb4cd2": { - "name": "linearStatesLoading", - "ordinal": 16, - "value": false - }, - "74505ce2789a": { - "name": "linearStates", - "ordinal": 5, - "value": [] - }, - "77a7eff4a3cc": { - "name": "linearStatesLoading", - "ordinal": 11, - "value": true - }, - "82b36eab5101": { - "name": "creatingTask", - "ordinal": 6, - "value": false - }, - "a14f6c361136": { - "name": "linearStates", - "ordinal": 15, - "value": [ - { - "color": "#000000", - "id": "state-1", - "name": "Todo", - "type": "unstarted" - } - ] - }, - "b5ba6f00c4fb": { - "name": "linear.teamStates#1", - "ordinal": 14, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.teamStates\",\"params\":{\"teamId\":\"team-1\",\"workspaceId\":\"linear-workspace\"}}" - }, - "b6bf81e9e237": { - "createTeamId": "team-1", - "states": [ - { - "color": "#000000", - "id": "state-1", - "name": "Todo", - "type": "unstarted" - } - ], - "statesLoading": false, - "teams": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - }, - "c88d134e7a42": { - "name": "linear.teamStates#1", - "ordinal": 13, - "args": [ - { - "name": "method", - "value": "linear.teamStates" - }, - { - "name": "params", - "value": { - "teamId": "team-1", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": [ - { - "color": "#000000", - "id": "state-1", - "name": "Todo", - "type": "unstarted" - } - ] - } - } - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "db66582f88a9": { - "name": "linearStatesError", - "ordinal": 12, - "value": "" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "ee01f277ffc4": { - "name": "linear.listTeams#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "linear.listTeams" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - } - } - } - }, - "recording": { - "scenario": "tk-linear-team-context", - "checkpoints": [ - { - "id": "open-composer-settled", - "observation": { - "sender": ["ee01f277ffc4"], - "payloads": ["4fcc46dfeb77"], - "settlements": { - "mount": "eb79a9b3682a", - "open-composer-0": "eb79a9b3682a" - }, - "state": "2afc4b1311c1", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "3abc893d377b", - "5dcdc7fd7492", - "74505ce2789a", - "82b36eab5101", - "38ed617d559f", - "031c50459130" - ] - } - }, - { - "id": "select-metadata-item-settled", - "observation": { - "sender": ["ee01f277ffc4", "c88d134e7a42"], - "payloads": ["4fcc46dfeb77", "b5ba6f00c4fb"], - "settlements": { - "mount": "eb79a9b3682a", - "open-composer-0": "eb79a9b3682a", - "select-metadata-item-1": "eb79a9b3682a" - }, - "state": "b6bf81e9e237", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "3abc893d377b", - "5dcdc7fd7492", - "74505ce2789a", - "82b36eab5101", - "38ed617d559f", - "031c50459130", - "77a7eff4a3cc", - "db66582f88a9", - "a14f6c361136", - "74335ecb4cd2" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-list-gitlab-items.json b/mobile/rpc-foundation/goldens/tk-list-gitlab-items.json deleted file mode 100644 index a35e4a9731c..00000000000 --- a/mobile/rpc-foundation/goldens/tk-list-gitlab-items.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.task-list-gitlab-items", - "family": "tasks.task-list-gitlab-items", - "namedDeltas": [], - "values": { - "2af5bdc42011": { - "error": "", - "items": [ - { - "key": "gitlab:repo-1:issue:4", - "provider": "gitlab", - "source": { - "author": { - "$rpc": "null" - }, - "id": "issue:4", - "labels": [], - "number": 4, - "repoId": "repo-1", - "repoName": "Repo", - "state": "opened", - "title": "A GitLab issue", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "status": "Open", - "subtitle": "Repo #4", - "title": "A GitLab issue", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ], - "loading": false, - "refreshing": false - }, - "341101aedcbe": { - "name": "gitlab.listWorkItems#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50}}" - }, - "341ebd23fc0b": { - "name": "gitlab.listWorkItems#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "gitlab.listWorkItems" - }, - { - "name": "params", - "value": { - "page": 1, - "perPage": 50, - "query": { - "$rpc": "undefined" - }, - "repo": "id:repo-1", - "state": "opened" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "items": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:4", - "labels": [], - "number": 4, - "state": "opened", - "title": "A GitLab issue", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ] - } - } - } - }, - "39f99cf479f0": { - "name": "error", - "ordinal": 1, - "value": "" - }, - "411aee2eccd9": { - "name": "refreshing", - "ordinal": 8, - "value": false - }, - "5ac1816a09df": { - "name": "loading", - "ordinal": 7, - "value": false - }, - "609f32a21704": { - "name": "loading", - "ordinal": 2, - "value": true - }, - "a2f93be0d571": { - "name": "items", - "ordinal": 5, - "value": [ - { - "key": "gitlab:repo-1:issue:4", - "provider": "gitlab", - "source": { - "author": { - "$rpc": "null" - }, - "id": "issue:4", - "labels": [], - "number": 4, - "repoId": "repo-1", - "repoName": "Repo", - "state": "opened", - "title": "A GitLab issue", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "status": "Open", - "subtitle": "Repo #4", - "title": "A GitLab issue", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ] - }, - "ba411b67de4b": { - "name": "taskListSettled", - "ordinal": 9, - "value": true - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f1dcb0c02c92": { - "name": "error", - "ordinal": 6, - "value": "" - } - }, - "recording": { - "scenario": "tk-list-gitlab-items", - "checkpoints": [ - { - "id": "load-settled", - "observation": { - "sender": ["341ebd23fc0b"], - "payloads": ["341101aedcbe"], - "settlements": { - "mount": "eb79a9b3682a", - "load-0": "eb79a9b3682a" - }, - "state": "2af5bdc42011", - "effects": [ - "39f99cf479f0", - "609f32a21704", - "a2f93be0d571", - "f1dcb0c02c92", - "5ac1816a09df", - "411aee2eccd9", - "ba411b67de4b" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-list-gitlab-todos.json b/mobile/rpc-foundation/goldens/tk-list-gitlab-todos.json deleted file mode 100644 index 3bbc9fd4964..00000000000 --- a/mobile/rpc-foundation/goldens/tk-list-gitlab-todos.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.task-list-gitlab-todos", - "family": "tasks.task-list-gitlab-todos", - "namedDeltas": [], - "values": { - "038bb64a38ce": { - "name": "gitlab.todos#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.todos\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "2ee5e836afb7": { - "name": "items", - "ordinal": 5, - "value": [ - { - "key": "gitlab-todo:1", - "provider": "gitlabTodo", - "source": { - "actionName": "review_requested", - "authorAvatarUrl": "", - "authorUsername": "octocat", - "id": 1, - "projectPath": "group/project", - "state": "pending", - "targetIid": 4, - "targetTitle": "A GitLab todo", - "targetType": "Issue", - "targetUrl": "https://gitlab.example.com/group/project/-/issues/4", - "updatedAt": "2020-01-01T00:00:00.000Z" - }, - "status": "review requested", - "subtitle": "group/project #4", - "title": "A GitLab todo", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ] - }, - "39f99cf479f0": { - "name": "error", - "ordinal": 1, - "value": "" - }, - "411aee2eccd9": { - "name": "refreshing", - "ordinal": 8, - "value": false - }, - "5ac1816a09df": { - "name": "loading", - "ordinal": 7, - "value": false - }, - "609f32a21704": { - "name": "loading", - "ordinal": 2, - "value": true - }, - "8511d41d7490": { - "name": "gitlab.todos#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "gitlab.todos" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": [ - { - "actionName": "review_requested", - "authorAvatarUrl": "", - "authorUsername": "octocat", - "id": 1, - "projectPath": "group/project", - "state": "pending", - "targetIid": 4, - "targetTitle": "A GitLab todo", - "targetType": "Issue", - "targetUrl": "https://gitlab.example.com/group/project/-/issues/4", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ] - } - } - }, - "ba411b67de4b": { - "name": "taskListSettled", - "ordinal": 9, - "value": true - }, - "d57ec76a49a3": { - "error": "", - "items": [ - { - "key": "gitlab-todo:1", - "provider": "gitlabTodo", - "source": { - "actionName": "review_requested", - "authorAvatarUrl": "", - "authorUsername": "octocat", - "id": 1, - "projectPath": "group/project", - "state": "pending", - "targetIid": 4, - "targetTitle": "A GitLab todo", - "targetType": "Issue", - "targetUrl": "https://gitlab.example.com/group/project/-/issues/4", - "updatedAt": "2020-01-01T00:00:00.000Z" - }, - "status": "review requested", - "subtitle": "group/project #4", - "title": "A GitLab todo", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ], - "loading": false, - "refreshing": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f1dcb0c02c92": { - "name": "error", - "ordinal": 6, - "value": "" - } - }, - "recording": { - "scenario": "tk-list-gitlab-todos", - "checkpoints": [ - { - "id": "load-settled", - "observation": { - "sender": ["8511d41d7490"], - "payloads": ["038bb64a38ce"], - "settlements": { - "mount": "eb79a9b3682a", - "load-0": "eb79a9b3682a" - }, - "state": "d57ec76a49a3", - "effects": [ - "39f99cf479f0", - "609f32a21704", - "2ee5e836afb7", - "f1dcb0c02c92", - "5ac1816a09df", - "411aee2eccd9", - "ba411b67de4b" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-list-linear.json b/mobile/rpc-foundation/goldens/tk-list-linear.json deleted file mode 100644 index 708c5585bc6..00000000000 --- a/mobile/rpc-foundation/goldens/tk-list-linear.json +++ /dev/null @@ -1,420 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.task-list-linear", - "family": "tasks.task-list-linear", - "namedDeltas": [], - "values": { - "0a23a5e47479": { - "name": "loading", - "ordinal": 16, - "value": false - }, - "19d7ea49485f": { - "name": "linear.searchIssues#1", - "ordinal": 13, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" - }, - "29cadc65bcbb": { - "name": "error", - "ordinal": 15, - "value": "" - }, - "39f99cf479f0": { - "name": "error", - "ordinal": 1, - "value": "" - }, - "3aefb3006914": { - "name": "error", - "ordinal": 10, - "value": "" - }, - "3e58b6085f7d": { - "name": "items", - "ordinal": 14, - "value": [ - { - "key": "linear:linear-workspace:issue-2", - "provider": "linear", - "source": { - "description": "", - "id": "issue-2", - "identifier": "ENG-2", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A found issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - }, - "status": "Todo", - "subtitle": "ENG-2 · Engineering", - "title": "A found issue", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ] - }, - "3edde845aed1": { - "error": "", - "items": [ - { - "key": "linear:linear-workspace:issue-2", - "provider": "linear", - "source": { - "description": "", - "id": "issue-2", - "identifier": "ENG-2", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A found issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - }, - "status": "Todo", - "subtitle": "ENG-2 · Engineering", - "title": "A found issue", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ], - "loading": false, - "refreshing": false - }, - "411aee2eccd9": { - "name": "refreshing", - "ordinal": 8, - "value": false - }, - "52e364aee6ba": { - "name": "loading", - "ordinal": 11, - "value": true - }, - "5ac1816a09df": { - "name": "loading", - "ordinal": 7, - "value": false - }, - "609f32a21704": { - "name": "loading", - "ordinal": 2, - "value": true - }, - "7b6df16c2cf0": { - "name": "linear.listIssues#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"all\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" - }, - "837199f7c720": { - "name": "linear.searchIssues#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "linear.searchIssues" - }, - { - "name": "params", - "value": { - "limit": 50, - "query": "bug", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": [ - { - "description": "", - "id": "issue-2", - "identifier": "ENG-2", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A found issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - } - } - }, - "94f44b229d7d": { - "error": "", - "items": [ - { - "key": "linear:linear-workspace:issue-1", - "provider": "linear", - "source": { - "description": "", - "id": "issue-1", - "identifier": "ENG-1", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A Linear issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - }, - "status": "Todo", - "subtitle": "ENG-1 · Engineering", - "title": "A Linear issue", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ], - "loading": false, - "refreshing": false - }, - "b25e7c116f7e": { - "name": "items", - "ordinal": 5, - "value": [ - { - "key": "linear:linear-workspace:issue-1", - "provider": "linear", - "source": { - "description": "", - "id": "issue-1", - "identifier": "ENG-1", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A Linear issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - }, - "status": "Todo", - "subtitle": "ENG-1 · Engineering", - "title": "A Linear issue", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ] - }, - "ba411b67de4b": { - "name": "taskListSettled", - "ordinal": 9, - "value": true - }, - "c6d55e6b8844": { - "name": "linear.listIssues#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "linear.listIssues" - }, - { - "name": "params", - "value": { - "filter": "all", - "limit": 50, - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "items": [ - { - "description": "", - "id": "issue-1", - "identifier": "ENG-1", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A Linear issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - } - } - } - }, - "cbe48ad190bf": { - "name": "taskListSettled", - "ordinal": 18, - "value": true - }, - "e8ba61988aec": { - "name": "refreshing", - "ordinal": 17, - "value": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f1dcb0c02c92": { - "name": "error", - "ordinal": 6, - "value": "" - } - }, - "recording": { - "scenario": "tk-list-linear", - "checkpoints": [ - { - "id": "load-settled", - "observation": { - "sender": ["c6d55e6b8844"], - "payloads": ["7b6df16c2cf0"], - "settlements": { - "mount": "eb79a9b3682a", - "load-0": "eb79a9b3682a" - }, - "state": "94f44b229d7d", - "effects": [ - "39f99cf479f0", - "609f32a21704", - "b25e7c116f7e", - "f1dcb0c02c92", - "5ac1816a09df", - "411aee2eccd9", - "ba411b67de4b" - ] - } - }, - { - "id": "set-query-done", - "observation": { - "sender": ["c6d55e6b8844"], - "payloads": ["7b6df16c2cf0"], - "settlements": { - "mount": "eb79a9b3682a", - "load-0": "eb79a9b3682a", - "set-query-1": "eb79a9b3682a" - }, - "state": "94f44b229d7d", - "effects": [ - "39f99cf479f0", - "609f32a21704", - "b25e7c116f7e", - "f1dcb0c02c92", - "5ac1816a09df", - "411aee2eccd9", - "ba411b67de4b" - ] - } - }, - { - "id": "load-settled", - "observation": { - "sender": ["c6d55e6b8844", "837199f7c720"], - "payloads": ["7b6df16c2cf0", "19d7ea49485f"], - "settlements": { - "mount": "eb79a9b3682a", - "load-0": "eb79a9b3682a", - "set-query-1": "eb79a9b3682a", - "load-2": "eb79a9b3682a" - }, - "state": "3edde845aed1", - "effects": [ - "39f99cf479f0", - "609f32a21704", - "b25e7c116f7e", - "f1dcb0c02c92", - "5ac1816a09df", - "411aee2eccd9", - "ba411b67de4b", - "3aefb3006914", - "52e364aee6ba", - "3e58b6085f7d", - "29cadc65bcbb", - "0a23a5e47479", - "e8ba61988aec", - "cbe48ad190bf" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-board-load.json b/mobile/rpc-foundation/goldens/tk-project-board-load.json deleted file mode 100644 index d0d996e81c1..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-board-load.json +++ /dev/null @@ -1,630 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-board-load", - "family": "tasks.project-board-load", - "namedDeltas": [], - "values": { - "0056704adc0b": { - "name": "githubProjectTable", - "ordinal": 31, - "value": { - "$rpc": "null" - } - }, - "060dcedb3fdb": { - "name": "githubProjectError", - "ordinal": 10, - "value": "" - }, - "0af48d475813": { - "name": "appliedGithubProjectSearch", - "ordinal": 29, - "value": { - "$rpc": "undefined" - } - }, - "0f1aa264f581": { - "name": "github.project.viewTable#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.project.viewTable" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "owner": "owner", - "ownerType": "organization", - "projectNumber": 3, - "viewId": "view-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 60000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "data": { - "fields": [], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [], - "selectedView": { - "filter": "is:open", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - }, - "ok": true - } - } - } - }, - "15cb97c93333": { - "name": "github.project.listViews#1", - "ordinal": 8, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.listViews\",\"params\":{\"owner\":\"owner\",\"host\":\"github.enterprise.test\",\"ownerType\":\"organization\",\"projectNumber\":3}}" - }, - "170fad8cb36b": { - "name": "githubProjectPartialFailures", - "ordinal": 6, - "value": [] - }, - "1b3350f71e56": { - "name": "githubProjectError", - "ordinal": 19, - "value": "" - }, - "2085118de92f": { - "name": "githubProjectError", - "ordinal": 1, - "value": "" - }, - "26921f3a7c09": { - "name": "githubProjectPasteError", - "ordinal": 18, - "value": "" - }, - "2ab1b35ff194": { - "error": "", - "loading": false, - "pasteError": "", - "projects": [ - { - "host": "github.com", - "number": 3, - "owner": "owner", - "ownerType": "organization", - "title": "Board" - } - ], - "table": { - "fields": [], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [], - "selectedView": { - "filter": "is:open", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - }, - "views": [ - { - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - ] - }, - "2f290fa2acf5": { - "name": "githubProjectLoading", - "ordinal": 9, - "value": true - }, - "3493818a7239": { - "name": "githubProjectPasteBusy", - "ordinal": 33, - "value": false - }, - "376c9e8bd72a": { - "error": "", - "loading": false, - "pasteError": "", - "projects": [ - { - "host": "github.com", - "number": 3, - "owner": "owner", - "ownerType": "organization", - "title": "Board" - } - ], - "table": { - "$rpc": "null" - }, - "views": [ - { - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - ] - }, - "3985399034a2": { - "name": "githubProjectPasteBusy", - "ordinal": 17, - "value": true - }, - "3a8617cc8fd8": { - "name": "githubProjectSearch", - "ordinal": 14, - "value": "is:open" - }, - "4809ea7ad5b0": { - "name": "github.project.viewTable#1", - "ordinal": 12, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.viewTable\",\"params\":{\"owner\":\"owner\",\"host\":\"github.enterprise.test\",\"ownerType\":\"organization\",\"projectNumber\":3,\"viewId\":\"view-1\"}}" - }, - "4c9b1e4ad1f5": { - "name": "githubProjectViews", - "ordinal": 28, - "value": [ - { - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - ] - }, - "685bc2bda05d": { - "name": "githubProjects", - "ordinal": 5, - "value": [ - { - "host": "github.com", - "number": 3, - "owner": "owner", - "ownerType": "organization", - "title": "Board" - } - ] - }, - "6b03ace1146a": { - "name": "githubProjectError", - "ordinal": 25, - "value": "" - }, - "7d488eda1d1c": { - "name": "githubProjectViews", - "ordinal": 15, - "value": [ - { - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - ] - }, - "842c950ee7cc": { - "name": "githubProjectLoading", - "ordinal": 16, - "value": false - }, - "8a0577280bad": { - "name": "showGitHubProjectPicker", - "ordinal": 23, - "value": false - }, - "97bc7dc12b92": { - "name": "githubProjectLoading", - "ordinal": 32, - "value": false - }, - "9f9a21ac7b9e": { - "name": "github.project.listViews#2", - "ordinal": 27, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.listViews\",\"params\":{\"owner\":\"owner\",\"host\":\"github.com\",\"ownerType\":\"organization\",\"projectNumber\":3}}" - }, - "a5a3530ec11c": { - "name": "githubProjectPartialFailures", - "ordinal": 2, - "value": [] - }, - "ab1b10183665": { - "name": "githubProjectLoading", - "ordinal": 24, - "value": true - }, - "ae89e058b351": { - "name": "github.project.listViews#2", - "ordinal": 26, - "args": [ - { - "name": "method", - "value": "github.project.listViews" - }, - { - "name": "params", - "value": { - "host": "github.com", - "owner": "owner", - "ownerType": "organization", - "projectNumber": 3 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "ok": true, - "views": [ - { - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - ] - } - } - } - }, - "b42c8edc0d53": { - "name": "github.project.listAccessible#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.listAccessible\",\"params\":{\"host\":\"github.com\"}}" - }, - "be0da5b53ffb": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - ] - }, - "be93253869e6": { - "name": "github.project.resolveRef#1", - "ordinal": 21, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.resolveRef\",\"params\":{\"input\":\"https://github.com/orgs/owner/projects/3\",\"host\":\"github.com\"}}" - }, - "c5c018cf9a70": { - "name": "githubProjectTable", - "ordinal": 13, - "value": { - "fields": [], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [], - "selectedView": { - "filter": "is:open", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "d254913957c1": { - "name": "github.project.listViews#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.project.listViews" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "owner": "owner", - "ownerType": "organization", - "projectNumber": 3 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "ok": true, - "views": [ - { - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - ] - } - } - } - }, - "dc8dd7739c49": { - "name": "githubProjectPasteInput", - "ordinal": 22, - "value": "" - }, - "dfe16215433b": { - "name": "github.project.listAccessible#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.project.listAccessible" - }, - { - "name": "params", - "value": { - "host": "github.com" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true, - "partialFailures": [], - "projects": [ - { - "host": "github.com", - "number": 3, - "owner": "owner", - "ownerType": "organization", - "title": "Board" - } - ] - } - } - } - }, - "e87bea4bcd3c": { - "name": "githubProjectSearch", - "ordinal": 30, - "value": "" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f6003aed2098": { - "name": "github.project.resolveRef#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "github.project.resolveRef" - }, - { - "name": "params", - "value": { - "host": "github.com", - "input": "https://github.com/orgs/owner/projects/3" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "host": "github.com", - "number": 3, - "ok": true, - "owner": "owner", - "ownerType": "organization", - "title": "Board", - "viewNumber": 1 - } - } - } - }, - "ff43b5ec92a9": { - "error": "", - "loading": false, - "pasteError": "", - "projects": [ - { - "host": "github.com", - "number": 3, - "owner": "owner", - "ownerType": "organization", - "title": "Board" - } - ], - "table": { - "$rpc": "null" - }, - "views": [] - } - }, - "recording": { - "scenario": "tk-project-board-load", - "checkpoints": [ - { - "id": "projects-settled", - "observation": { - "sender": ["dfe16215433b"], - "payloads": ["b42c8edc0d53"], - "settlements": { - "mount": "eb79a9b3682a", - "projects-0": "eb79a9b3682a" - }, - "state": "ff43b5ec92a9", - "effects": ["2085118de92f", "a5a3530ec11c", "685bc2bda05d", "170fad8cb36b"] - } - }, - { - "id": "views-settled", - "observation": { - "sender": ["dfe16215433b", "d254913957c1"], - "payloads": ["b42c8edc0d53", "15cb97c93333"], - "settlements": { - "mount": "eb79a9b3682a", - "projects-0": "eb79a9b3682a", - "views-1": "be0da5b53ffb" - }, - "state": "ff43b5ec92a9", - "effects": ["2085118de92f", "a5a3530ec11c", "685bc2bda05d", "170fad8cb36b"] - } - }, - { - "id": "table-settled", - "observation": { - "sender": ["dfe16215433b", "d254913957c1", "0f1aa264f581"], - "payloads": ["b42c8edc0d53", "15cb97c93333", "4809ea7ad5b0"], - "settlements": { - "mount": "eb79a9b3682a", - "projects-0": "eb79a9b3682a", - "views-1": "be0da5b53ffb", - "table-2": "eb79a9b3682a" - }, - "state": "2ab1b35ff194", - "effects": [ - "2085118de92f", - "a5a3530ec11c", - "685bc2bda05d", - "170fad8cb36b", - "2f290fa2acf5", - "060dcedb3fdb", - "c5c018cf9a70", - "3a8617cc8fd8", - "7d488eda1d1c", - "842c950ee7cc" - ] - } - }, - { - "id": "paste-settled", - "observation": { - "sender": [ - "dfe16215433b", - "d254913957c1", - "0f1aa264f581", - "f6003aed2098", - "ae89e058b351" - ], - "payloads": [ - "b42c8edc0d53", - "15cb97c93333", - "4809ea7ad5b0", - "be93253869e6", - "9f9a21ac7b9e" - ], - "settlements": { - "mount": "eb79a9b3682a", - "projects-0": "eb79a9b3682a", - "views-1": "be0da5b53ffb", - "table-2": "eb79a9b3682a", - "paste-3": "eb79a9b3682a" - }, - "state": "376c9e8bd72a", - "effects": [ - "2085118de92f", - "a5a3530ec11c", - "685bc2bda05d", - "170fad8cb36b", - "2f290fa2acf5", - "060dcedb3fdb", - "c5c018cf9a70", - "3a8617cc8fd8", - "7d488eda1d1c", - "842c950ee7cc", - "3985399034a2", - "26921f3a7c09", - "1b3350f71e56", - "dc8dd7739c49", - "8a0577280bad", - "ab1b10183665", - "6b03ace1146a", - "4c9b1e4ad1f5", - "0af48d475813", - "e87bea4bcd3c", - "0056704adc0b", - "97bc7dc12b92", - "3493818a7239" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-repo-slugs.json b/mobile/rpc-foundation/goldens/tk-project-repo-slugs.json deleted file mode 100644 index f43e31c9757..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-repo-slugs.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-repo-slugs", - "family": "tasks.project-repo-slugs", - "namedDeltas": [], - "values": { - "3df58008cdfa": { - "name": "githubRepoSlugCache", - "ordinal": 3, - "value": { - "repo-1": { - "path": "/repo", - "repository": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - } - } - } - }, - "49d6f5f60c9c": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "60d253ed9645": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - } - } - } - }, - "bdec8bbb3c04": { - "cache": { - "repo-1": { - "path": "/repo", - "repository": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "tk-project-repo-slugs", - "checkpoints": [ - { - "id": "mounted", - "observation": { - "sender": ["60d253ed9645"], - "payloads": ["49d6f5f60c9c"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "bdec8bbb3c04", - "effects": ["3df58008cdfa"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-row-comments-issue.json b/mobile/rpc-foundation/goldens/tk-project-row-comments-issue.json deleted file mode 100644 index 72963ec0353..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-row-comments-issue.json +++ /dev/null @@ -1,678 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-row-comments-issue", - "family": "tasks.project-row-comments-issue", - "namedDeltas": [], - "values": { - "1bf0937a02b9": { - "name": "projectMutating", - "ordinal": 20, - "value": false - }, - "21dd73202dc8": { - "name": "projectEditingCommentDraft", - "ordinal": 19, - "value": "" - }, - "3d64c0aecd5d": { - "name": "projectRowDetail", - "ordinal": 17, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "an edited comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a project comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 906 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - } - }, - "47fae979383a": { - "name": "github.project.updateIssueBySlug#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "github.project.updateIssueBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "number": 1, - "owner": "owner", - "repo": "repo", - "updates": { - "title": "Renamed" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "503675a0f449": { - "name": "projectRowItem", - "ordinal": 4, - "value": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "5198e17de9b3": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a project comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 906 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - }, - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "527330ed2103": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "an edited comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a project comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 906 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - }, - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "5c30b4794b57": { - "name": "projectRowDetailError", - "ordinal": 14, - "value": "" - }, - "5d32aa29303c": { - "name": "projectMutating", - "ordinal": 1, - "value": true - }, - "62af4d257032": { - "name": "github.project.updateIssueBySlug#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateIssueBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"number\":1,\"updates\":{\"title\":\"Renamed\"}}}" - }, - "72332e237f1f": { - "name": "projectMutating", - "ordinal": 6, - "value": false - }, - "777239b1f74f": { - "name": "github.project.addIssueCommentBySlug#1", - "ordinal": 8, - "args": [ - { - "name": "method", - "value": "github.project.addIssueCommentBySlug" - }, - { - "name": "params", - "value": { - "body": "a project comment", - "host": "github.enterprise.test", - "number": 1, - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a project comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 906 - }, - "ok": true - } - } - } - }, - "8633b6c5dd75": { - "name": "github.project.updateIssueCommentBySlug#1", - "ordinal": 16, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateIssueCommentBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"commentId\":501,\"body\":\"an edited comment\"}}" - }, - "9188c83ef653": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - }, - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "a7a04016f46a": { - "name": "projectRowDetail", - "ordinal": 11, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a project comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 906 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - } - }, - "a8ff11b6adce": { - "name": "projectMutating", - "ordinal": 13, - "value": true - }, - "b2d2c9f55277": { - "name": "githubProjectTable", - "ordinal": 5, - "value": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "name": "Status", - "options": [] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "ce1f6d47985f": { - "name": "projectMutating", - "ordinal": 12, - "value": false - }, - "e52eb58ab49e": { - "name": "projectCommentDraft", - "ordinal": 10, - "value": "" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f39ed9ab521e": { - "name": "projectMutating", - "ordinal": 7, - "value": true - }, - "f3c022b108d0": { - "name": "github.project.updateIssueCommentBySlug#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.project.updateIssueCommentBySlug" - }, - { - "name": "params", - "value": { - "body": "an edited comment", - "commentId": 501, - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "fc8440fdfe7f": { - "name": "projectEditingCommentId", - "ordinal": 18, - "value": { - "$rpc": "null" - } - }, - "ffd6af1b42e1": { - "name": "github.project.addIssueCommentBySlug#1", - "ordinal": 9, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.addIssueCommentBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"number\":1,\"body\":\"a project comment\"}}" - } - }, - "recording": { - "scenario": "tk-project-row-comments-issue", - "checkpoints": [ - { - "id": "update-item-settled", - "observation": { - "sender": ["47fae979383a"], - "payloads": ["62af4d257032"], - "settlements": { - "mount": "eb79a9b3682a", - "update-item-0": "eb79a9b3682a" - }, - "state": "9188c83ef653", - "effects": ["5d32aa29303c", "503675a0f449", "b2d2c9f55277", "72332e237f1f"] - } - }, - { - "id": "add-comment-settled", - "observation": { - "sender": ["47fae979383a", "777239b1f74f"], - "payloads": ["62af4d257032", "ffd6af1b42e1"], - "settlements": { - "mount": "eb79a9b3682a", - "update-item-0": "eb79a9b3682a", - "add-comment-1": "eb79a9b3682a" - }, - "state": "5198e17de9b3", - "effects": [ - "5d32aa29303c", - "503675a0f449", - "b2d2c9f55277", - "72332e237f1f", - "f39ed9ab521e", - "e52eb58ab49e", - "a7a04016f46a", - "ce1f6d47985f" - ] - } - }, - { - "id": "update-comment-settled", - "observation": { - "sender": ["47fae979383a", "777239b1f74f", "f3c022b108d0"], - "payloads": ["62af4d257032", "ffd6af1b42e1", "8633b6c5dd75"], - "settlements": { - "mount": "eb79a9b3682a", - "update-item-0": "eb79a9b3682a", - "add-comment-1": "eb79a9b3682a", - "update-comment-2": "eb79a9b3682a" - }, - "state": "527330ed2103", - "effects": [ - "5d32aa29303c", - "503675a0f449", - "b2d2c9f55277", - "72332e237f1f", - "f39ed9ab521e", - "e52eb58ab49e", - "a7a04016f46a", - "ce1f6d47985f", - "a8ff11b6adce", - "5c30b4794b57", - "3d64c0aecd5d", - "fc8440fdfe7f", - "21dd73202dc8", - "1bf0937a02b9" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-row-comments-pr.json b/mobile/rpc-foundation/goldens/tk-project-row-comments-pr.json deleted file mode 100644 index bf8fd791c85..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-row-comments-pr.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-row-comments-pr", - "family": "tasks.project-row-comments-pr", - "namedDeltas": [], - "values": { - "25607177ea9a": { - "name": "github.project.updatePullRequestBySlug#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updatePullRequestBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"number\":2,\"updates\":{\"title\":\"Renamed\"}}}" - }, - "2d1e8ede1fcf": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - }, - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - }, - "5d32aa29303c": { - "name": "projectMutating", - "ordinal": 1, - "value": true - }, - "72332e237f1f": { - "name": "projectMutating", - "ordinal": 6, - "value": false - }, - "9332b39405f1": { - "name": "projectRowItem", - "ordinal": 4, - "value": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - }, - "aa2ef79d4298": { - "name": "githubProjectTable", - "ordinal": 5, - "value": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "name": "Status", - "options": [] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "title": "Renamed", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "acc111809814": { - "name": "github.project.updatePullRequestBySlug#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "github.project.updatePullRequestBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "number": 2, - "owner": "owner", - "repo": "repo", - "updates": { - "title": "Renamed" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "tk-project-row-comments-pr", - "checkpoints": [ - { - "id": "update-item-settled", - "observation": { - "sender": ["acc111809814"], - "payloads": ["25607177ea9a"], - "settlements": { - "mount": "eb79a9b3682a", - "update-item-0": "eb79a9b3682a" - }, - "state": "2d1e8ede1fcf", - "effects": ["5d32aa29303c", "9332b39405f1", "aa2ef79d4298", "72332e237f1f"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-row-fields.json b/mobile/rpc-foundation/goldens/tk-project-row-fields.json deleted file mode 100644 index 7c0833d6161..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-row-fields.json +++ /dev/null @@ -1,817 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-row-fields", - "family": "tasks.project-row-fields", - "namedDeltas": [], - "values": { - "093815ac28fb": { - "name": "github.project.clearItemField#1", - "ordinal": 9, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.clearItemField\",\"params\":{\"projectId\":\"project-1\",\"host\":\"github.enterprise.test\",\"itemId\":\"item-1\",\"fieldId\":\"field-1\"}}" - }, - "40dc9d5e44c9": { - "name": "projectRowItem", - "ordinal": 10, - "value": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "4123bc693ce4": { - "name": "projectMutating", - "ordinal": 14, - "value": true - }, - "424e9a1ae7ed": { - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": { - "field-1": { - "color": "YELLOW", - "fieldId": "field-1", - "kind": "single-select", - "name": "In progress", - "optionId": "option-1" - } - }, - "id": "item-1", - "itemType": "ISSUE" - }, - "table": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "kind": "single-select", - "name": "Status", - "options": [ - { - "color": "YELLOW", - "id": "option-1", - "name": "In progress" - } - ] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": { - "field-1": { - "color": "YELLOW", - "fieldId": "field-1", - "kind": "single-select", - "name": "In progress", - "optionId": "option-1" - } - }, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "491a53ca1f35": { - "name": "github.project.updateIssueTypeBySlug#1", - "ordinal": 16, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateIssueTypeBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"number\":1,\"issueTypeId\":\"type-1\"}}" - }, - "5d32aa29303c": { - "name": "projectMutating", - "ordinal": 1, - "value": true - }, - "6623e063706c": { - "name": "github.project.clearItemField#1", - "ordinal": 8, - "args": [ - { - "name": "method", - "value": "github.project.clearItemField" - }, - { - "name": "params", - "value": { - "fieldId": "field-1", - "host": "github.enterprise.test", - "itemId": "item-1", - "projectId": "project-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "68296a29ee63": { - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - "table": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "kind": "single-select", - "name": "Status", - "options": [ - { - "color": "YELLOW", - "id": "option-1", - "name": "In progress" - } - ] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "72332e237f1f": { - "name": "projectMutating", - "ordinal": 6, - "value": false - }, - "73039dc59899": { - "name": "github.project.updateItemField#1", - "ordinal": 2, - "args": [ - { - "name": "method", - "value": "github.project.updateItemField" - }, - { - "name": "params", - "value": { - "fieldId": "field-1", - "host": "github.enterprise.test", - "itemId": "item-1", - "projectId": "project-1", - "value": { - "kind": "single-select", - "optionId": "option-1" - } - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "7440f0f1bab9": { - "name": "projectMutating", - "ordinal": 19, - "value": false - }, - "a1dab467956d": { - "name": "githubProjectTable", - "ordinal": 11, - "value": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "kind": "single-select", - "name": "Status", - "options": [ - { - "color": "YELLOW", - "id": "option-1", - "name": "In progress" - } - ] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "b849b5f1de35": { - "name": "github.project.updateItemField#1", - "ordinal": 3, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateItemField\",\"params\":{\"projectId\":\"project-1\",\"host\":\"github.enterprise.test\",\"itemId\":\"item-1\",\"fieldId\":\"field-1\",\"value\":{\"kind\":\"single-select\",\"optionId\":\"option-1\"}}}" - }, - "c0f6974a198e": { - "name": "githubProjectTable", - "ordinal": 18, - "value": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "kind": "single-select", - "name": "Status", - "options": [ - { - "color": "YELLOW", - "id": "option-1", - "name": "In progress" - } - ] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "color": "RED", - "description": { - "$rpc": "null" - }, - "id": "type-1", - "name": "Bug" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "d0617c2f5659": { - "name": "projectRowItem", - "ordinal": 4, - "value": { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": { - "field-1": { - "color": "YELLOW", - "fieldId": "field-1", - "kind": "single-select", - "name": "In progress", - "optionId": "option-1" - } - }, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "de29905548eb": { - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "issueType": { - "color": "RED", - "description": { - "$rpc": "null" - }, - "id": "type-1", - "name": "Bug" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - "table": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "kind": "single-select", - "name": "Status", - "options": [ - { - "color": "YELLOW", - "id": "option-1", - "name": "In progress" - } - ] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "color": "RED", - "description": { - "$rpc": "null" - }, - "id": "type-1", - "name": "Bug" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "e09e2ac8124b": { - "name": "projectFieldDrafts", - "ordinal": 12, - "value": { - "field-1": "" - } - }, - "e3180bc6526a": { - "name": "projectMutating", - "ordinal": 13, - "value": false - }, - "e6e6a29e5419": { - "name": "github.project.updateIssueTypeBySlug#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.project.updateIssueTypeBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "issueTypeId": "type-1", - "number": 1, - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "e969afb182da": { - "name": "githubProjectTable", - "ordinal": 5, - "value": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "kind": "single-select", - "name": "Status", - "options": [ - { - "color": "YELLOW", - "id": "option-1", - "name": "In progress" - } - ] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": { - "field-1": { - "color": "YELLOW", - "fieldId": "field-1", - "kind": "single-select", - "name": "In progress", - "optionId": "option-1" - } - }, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ef5a2c4ee0b4": { - "name": "projectRowItem", - "ordinal": 17, - "value": { - "content": { - "assignees": [], - "issueType": { - "color": "RED", - "description": { - "$rpc": "null" - }, - "id": "type-1", - "name": "Bug" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "url": "https://github.com/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - } - }, - "f39ed9ab521e": { - "name": "projectMutating", - "ordinal": 7, - "value": true - } - }, - "recording": { - "scenario": "tk-project-row-fields", - "checkpoints": [ - { - "id": "set-field-settled", - "observation": { - "sender": ["73039dc59899"], - "payloads": ["b849b5f1de35"], - "settlements": { - "mount": "eb79a9b3682a", - "set-field-0": "eb79a9b3682a" - }, - "state": "424e9a1ae7ed", - "effects": ["5d32aa29303c", "d0617c2f5659", "e969afb182da", "72332e237f1f"] - } - }, - { - "id": "clear-field-settled", - "observation": { - "sender": ["73039dc59899", "6623e063706c"], - "payloads": ["b849b5f1de35", "093815ac28fb"], - "settlements": { - "mount": "eb79a9b3682a", - "set-field-0": "eb79a9b3682a", - "clear-field-1": "eb79a9b3682a" - }, - "state": "68296a29ee63", - "effects": [ - "5d32aa29303c", - "d0617c2f5659", - "e969afb182da", - "72332e237f1f", - "f39ed9ab521e", - "40dc9d5e44c9", - "a1dab467956d", - "e09e2ac8124b", - "e3180bc6526a" - ] - } - }, - { - "id": "issue-type-settled", - "observation": { - "sender": ["73039dc59899", "6623e063706c", "e6e6a29e5419"], - "payloads": ["b849b5f1de35", "093815ac28fb", "491a53ca1f35"], - "settlements": { - "mount": "eb79a9b3682a", - "set-field-0": "eb79a9b3682a", - "clear-field-1": "eb79a9b3682a", - "issue-type-2": "eb79a9b3682a" - }, - "state": "de29905548eb", - "effects": [ - "5d32aa29303c", - "d0617c2f5659", - "e969afb182da", - "72332e237f1f", - "f39ed9ab521e", - "40dc9d5e44c9", - "a1dab467956d", - "e09e2ac8124b", - "e3180bc6526a", - "4123bc693ce4", - "ef5a2c4ee0b4", - "c0f6974a198e", - "7440f0f1bab9" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-row-files-merge.json b/mobile/rpc-foundation/goldens/tk-project-row-files-merge.json deleted file mode 100644 index a4736f00996..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-row-files-merge.json +++ /dev/null @@ -1,895 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-row-files-merge", - "family": "tasks.project-row-files-merge", - "namedDeltas": [], - "values": { - "033080c46df7": { - "contents": { - "src/index.ts": { - "modified": "b", - "modifiedIsBinary": false, - "original": "a", - "originalIsBinary": false - } - }, - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "body": "Project pull request body", - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "OPEN", - "title": "Project pull request", - "url": "https://github.enterprise.test/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - }, - "1bef2a9b13a1": { - "contents": { - "src/index.ts": { - "modified": "b", - "modifiedIsBinary": false, - "original": "a", - "originalIsBinary": false - } - }, - "error": "", - "mutating": false, - "row": { - "content": { - "assignees": [], - "body": "Project pull request body", - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "MERGED", - "title": "Project pull request", - "url": "https://github.enterprise.test/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - }, - "2141fc3d6fbb": { - "name": "error", - "ordinal": 37, - "value": "" - }, - "39ae33a4e8d3": { - "name": "github.updatePRState#1", - "ordinal": 40, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.updatePRState\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"updates\":{\"state\":\"closed\"}}}" - }, - "3e0c86d3ff78": { - "name": "prFileLoadingPath", - "ordinal": 15, - "value": { - "$rpc": "null" - } - }, - "3f9768efc421": { - "name": "githubProjectTable", - "ordinal": 28, - "value": { - "fields": [ - { - "dataType": "SINGLE_SELECT", - "id": "field-1", - "name": "Status", - "options": [] - } - ], - "project": { - "id": "project-1", - "number": 3, - "title": "Board" - }, - "rows": [ - { - "content": { - "assignees": [], - "body": "Project issue body", - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 1, - "repository": "owner/repo", - "state": "OPEN", - "title": "Project issue", - "url": "https://github.enterprise.test/owner/repo/issues/1" - }, - "fieldValuesByFieldId": {}, - "id": "item-1", - "itemType": "ISSUE" - }, - { - "content": { - "assignees": [], - "body": "Project pull request body", - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "MERGED", - "title": "Project pull request", - "url": "https://github.enterprise.test/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - ], - "selectedView": { - "filter": "", - "id": "view-1", - "layout": "TABLE_LAYOUT", - "name": "Table", - "number": 1 - } - } - }, - "42be1ca2bc40": { - "name": "mutatingStatus", - "ordinal": 4, - "value": false - }, - "44c2e6541ebd": { - "name": "projectRowDetailError", - "ordinal": 9, - "value": "" - }, - "4fe8ef09de5f": { - "name": "projectRowDetail", - "ordinal": 20, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a review comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "line": 12, - "path": "src/index.ts" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - } - }, - "60e8d2f72874": { - "name": "mutatingStatus", - "ordinal": 39, - "value": true - }, - "658dac7df662": { - "name": "expandedPrFilePath", - "ordinal": 3, - "value": { - "$rpc": "null" - } - }, - "662cbccd78cb": { - "name": "prFileLoadingPath", - "ordinal": 7, - "value": { - "$rpc": "null" - } - }, - "77324937aa89": { - "name": "github.updateIssue#1", - "ordinal": 35, - "json": "{\"expectedRuntimeSource\":{\"sourceId\":\"recorded\",\"runtimeId\":\"recorded\"},\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.updateIssue\",\"params\":{\"repo\":\"id:repo-1\",\"number\":9,\"updates\":{\"state\":\"closed\"},\"ownerRepo\":{\"host\":\"github.com\",\"owner\":\"owner\",\"repo\":\"repo\"}}}" - }, - "7d33c355aeac": { - "name": "prFileContents", - "ordinal": 14, - "value": { - "src/index.ts": { - "modified": "b", - "modifiedIsBinary": false, - "original": "a", - "originalIsBinary": false - } - } - }, - "8862f0950552": { - "name": "error", - "ordinal": 30, - "value": "" - }, - "8989e41d1c1e": { - "name": "github.mergePR#1", - "ordinal": 25, - "args": [ - { - "name": "method", - "value": "github.mergePR" - }, - { - "name": "params", - "value": { - "method": "squash", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 60000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "899dc22eb082": { - "name": "github.addPRReviewComment#1", - "ordinal": 19, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.addPRReviewComment\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"commitId\":\"head-sha\",\"path\":\"src/index.ts\",\"line\":12,\"body\":\"a review comment\"}}" - }, - "8bb07f5e4ddb": { - "name": "projectMutating", - "ordinal": 16, - "value": true - }, - "8d4edaf085d8": { - "name": "mutatingStatus", - "ordinal": 41, - "value": false - }, - "8d7ac6f2573d": { - "name": "github.prFileContents#1", - "ordinal": 10, - "args": [ - { - "name": "method", - "value": "github.prFileContents" - }, - { - "name": "params", - "value": { - "baseSha": "base-sha", - "headSha": "head-sha", - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "status": "modified" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "modified": "b", - "modifiedIsBinary": false, - "original": "a", - "originalIsBinary": false - } - } - } - }, - "942210205c5d": { - "name": "prFileCommentDrafts", - "ordinal": 22, - "value": {} - }, - "9f963399c2ce": { - "name": "mutatingStatus", - "ordinal": 36, - "value": false - }, - "a6f1fd854afa": { - "name": "prFileContents", - "ordinal": 6, - "value": {} - }, - "a7480d9dd9a2": { - "name": "github.updatePRState#1", - "ordinal": 38, - "args": [ - { - "name": "method", - "value": "github.updatePRState" - }, - { - "name": "params", - "value": { - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "updates": { - "state": "closed" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "aba945c58a7f": { - "name": "projectMutating", - "ordinal": 21, - "value": false - }, - "ad362e2aebe2": { - "name": "status.get#1", - "ordinal": 31, - "args": [ - { - "name": "method", - "value": "status.get" - }, - { - "name": "params", - "value": { - "$rpc": "undefined" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "capabilities": ["github.exact-work-item-target.v1"], - "hostDescriptor": { - "installationId": "recorded" - }, - "runtimeId": "recorded" - } - } - } - }, - "b3ac1e3114bf": { - "name": "projectRowDetailError", - "ordinal": 24, - "value": "" - }, - "b3ff73919780": { - "name": "status.get#1", - "ordinal": 33, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "bff535848bcf": { - "name": "projectRowDetailError", - "ordinal": 17, - "value": "" - }, - "c0f0a440afe3": { - "name": "mutatingStatus", - "ordinal": 32, - "value": true - }, - "c2ebef7f076f": { - "name": "projectMutating", - "ordinal": 29, - "value": false - }, - "c3341bcbbaa3": { - "name": "projectRowItem", - "ordinal": 27, - "value": { - "content": { - "assignees": [], - "body": "Project pull request body", - "issueType": { - "$rpc": "null" - }, - "labels": [], - "number": 2, - "repository": "owner/repo", - "state": "MERGED", - "title": "Project pull request", - "url": "https://github.enterprise.test/owner/repo/pull/2" - }, - "fieldValuesByFieldId": {}, - "id": "item-2", - "itemType": "PULL_REQUEST" - } - }, - "c6b185002fec": { - "name": "github.prFileContents#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.prFileContents\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"path\":\"src/index.ts\",\"status\":\"modified\",\"headSha\":\"head-sha\",\"baseSha\":\"base-sha\"}}" - }, - "c858cb8b4846": { - "name": "prFileCommentDrafts", - "ordinal": 5, - "value": {} - }, - "ca024c503a01": { - "name": "github.updateIssue#1", - "ordinal": 34, - "args": [ - { - "name": "method", - "value": "github.updateIssue" - }, - { - "name": "params", - "value": { - "number": 9, - "ownerRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "updates": { - "state": "closed" - } - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "envelope": { - "expectedRuntimeSource": { - "runtimeId": "recorded", - "sourceId": "recorded" - } - }, - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "cc2ece9478f0": { - "name": "actionItem", - "ordinal": 1, - "value": { - "$rpc": "null" - } - }, - "d4a23b3fe28b": { - "name": "prFileCommentDrafts", - "ordinal": 8, - "value": { - "src/index.ts:12": "a review comment" - } - }, - "dda49aeb3971": { - "name": "projectMutating", - "ordinal": 23, - "value": true - }, - "e3de0d18d0dc": { - "name": "github.addPRReviewComment#1", - "ordinal": 18, - "args": [ - { - "name": "method", - "value": "github.addPRReviewComment" - }, - { - "name": "params", - "value": { - "body": "a review comment", - "commitId": "head-sha", - "line": 12, - "path": "src/index.ts", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a review comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 901, - "line": 12, - "path": "src/index.ts" - }, - "ok": true - } - } - } - }, - "e85ac5bc1e52": { - "name": "prFileLoadingPath", - "ordinal": 12, - "value": "src/index.ts" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "f5c29abaf308": { - "name": "github.mergePR#1", - "ordinal": 26, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.mergePR\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"method\":\"squash\"}}" - }, - "fa860899f47a": { - "name": "expandedPrFilePath", - "ordinal": 11, - "value": "src/index.ts" - } - }, - "recording": { - "scenario": "tk-project-row-files-merge", - "checkpoints": [ - { - "id": "expand-settled", - "observation": { - "sender": ["8d7ac6f2573d"], - "payloads": ["c6b185002fec"], - "settlements": { - "mount": "eb79a9b3682a", - "expand-0": "eb79a9b3682a" - }, - "state": "033080c46df7", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "658dac7df662", - "42be1ca2bc40", - "c858cb8b4846", - "a6f1fd854afa", - "662cbccd78cb", - "d4a23b3fe28b", - "44c2e6541ebd", - "fa860899f47a", - "e85ac5bc1e52", - "7d33c355aeac", - "3e0c86d3ff78" - ] - } - }, - { - "id": "file-comment-settled", - "observation": { - "sender": ["8d7ac6f2573d", "e3de0d18d0dc"], - "payloads": ["c6b185002fec", "899dc22eb082"], - "settlements": { - "mount": "eb79a9b3682a", - "expand-0": "eb79a9b3682a", - "file-comment-1": "eb79a9b3682a" - }, - "state": "033080c46df7", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "658dac7df662", - "42be1ca2bc40", - "c858cb8b4846", - "a6f1fd854afa", - "662cbccd78cb", - "d4a23b3fe28b", - "44c2e6541ebd", - "fa860899f47a", - "e85ac5bc1e52", - "7d33c355aeac", - "3e0c86d3ff78", - "8bb07f5e4ddb", - "bff535848bcf", - "4fe8ef09de5f", - "aba945c58a7f", - "942210205c5d" - ] - } - }, - { - "id": "merge-settled", - "observation": { - "sender": ["8d7ac6f2573d", "e3de0d18d0dc", "8989e41d1c1e"], - "payloads": ["c6b185002fec", "899dc22eb082", "f5c29abaf308"], - "settlements": { - "mount": "eb79a9b3682a", - "expand-0": "eb79a9b3682a", - "file-comment-1": "eb79a9b3682a", - "merge-2": "eb79a9b3682a" - }, - "state": "1bef2a9b13a1", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "658dac7df662", - "42be1ca2bc40", - "c858cb8b4846", - "a6f1fd854afa", - "662cbccd78cb", - "d4a23b3fe28b", - "44c2e6541ebd", - "fa860899f47a", - "e85ac5bc1e52", - "7d33c355aeac", - "3e0c86d3ff78", - "8bb07f5e4ddb", - "bff535848bcf", - "4fe8ef09de5f", - "aba945c58a7f", - "942210205c5d", - "dda49aeb3971", - "b3ac1e3114bf", - "c3341bcbbaa3", - "3f9768efc421", - "c2ebef7f076f" - ] - } - }, - { - "id": "issue-state-settled", - "observation": { - "sender": [ - "8d7ac6f2573d", - "e3de0d18d0dc", - "8989e41d1c1e", - "ad362e2aebe2", - "ca024c503a01" - ], - "payloads": [ - "c6b185002fec", - "899dc22eb082", - "f5c29abaf308", - "b3ff73919780", - "77324937aa89" - ], - "settlements": { - "mount": "eb79a9b3682a", - "expand-0": "eb79a9b3682a", - "file-comment-1": "eb79a9b3682a", - "merge-2": "eb79a9b3682a", - "issue-state-3": "eb79a9b3682a" - }, - "state": "1bef2a9b13a1", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "658dac7df662", - "42be1ca2bc40", - "c858cb8b4846", - "a6f1fd854afa", - "662cbccd78cb", - "d4a23b3fe28b", - "44c2e6541ebd", - "fa860899f47a", - "e85ac5bc1e52", - "7d33c355aeac", - "3e0c86d3ff78", - "8bb07f5e4ddb", - "bff535848bcf", - "4fe8ef09de5f", - "aba945c58a7f", - "942210205c5d", - "dda49aeb3971", - "b3ac1e3114bf", - "c3341bcbbaa3", - "3f9768efc421", - "c2ebef7f076f", - "8862f0950552", - "c0f0a440afe3", - "9f963399c2ce" - ] - } - }, - { - "id": "pr-state-settled", - "observation": { - "sender": [ - "8d7ac6f2573d", - "e3de0d18d0dc", - "8989e41d1c1e", - "ad362e2aebe2", - "ca024c503a01", - "a7480d9dd9a2" - ], - "payloads": [ - "c6b185002fec", - "899dc22eb082", - "f5c29abaf308", - "b3ff73919780", - "77324937aa89", - "39ae33a4e8d3" - ], - "settlements": { - "mount": "eb79a9b3682a", - "expand-0": "eb79a9b3682a", - "file-comment-1": "eb79a9b3682a", - "merge-2": "eb79a9b3682a", - "issue-state-3": "eb79a9b3682a", - "pr-state-4": "eb79a9b3682a" - }, - "state": "1bef2a9b13a1", - "effects": [ - "cc2ece9478f0", - "eda130337c99", - "658dac7df662", - "42be1ca2bc40", - "c858cb8b4846", - "a6f1fd854afa", - "662cbccd78cb", - "d4a23b3fe28b", - "44c2e6541ebd", - "fa860899f47a", - "e85ac5bc1e52", - "7d33c355aeac", - "3e0c86d3ff78", - "8bb07f5e4ddb", - "bff535848bcf", - "4fe8ef09de5f", - "aba945c58a7f", - "942210205c5d", - "dda49aeb3971", - "b3ac1e3114bf", - "c3341bcbbaa3", - "3f9768efc421", - "c2ebef7f076f", - "8862f0950552", - "c0f0a440afe3", - "9f963399c2ce", - "2141fc3d6fbb", - "60e8d2f72874", - "8d4edaf085d8" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-row-metadata-load.json b/mobile/rpc-foundation/goldens/tk-project-row-metadata-load.json deleted file mode 100644 index 45516d05450..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-row-metadata-load.json +++ /dev/null @@ -1,289 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-row-metadata-load", - "family": "tasks.project-row-metadata-load", - "namedDeltas": [], - "values": { - "21ea4fab050f": { - "name": "projectAssignableUsers", - "ordinal": 18, - "value": [ - { - "login": "octocat", - "name": "Octo" - } - ] - }, - "24d2fb22914c": { - "name": "github.project.listAssignableUsersBySlug#1", - "ordinal": 8, - "args": [ - { - "name": "method", - "value": "github.project.listAssignableUsersBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo", - "seedLogins": ["octocat"] - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "ok": true, - "users": [ - { - "login": "octocat", - "name": "Octo" - } - ] - } - } - } - }, - "25899527b47b": { - "name": "projectAssignableUsersLoading", - "ordinal": 19, - "value": false - }, - "2ff3fe127fb9": { - "name": "projectAssignableUsers", - "ordinal": 5, - "value": [] - }, - "3902ea43121b": { - "name": "projectAssignableUsersLoading", - "ordinal": 7, - "value": true - }, - "4171776f506e": { - "name": "github.project.listLabelsBySlug#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "github.project.listLabelsBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "labels": ["bug"], - "ok": true - } - } - } - }, - "4b33e1366553": { - "name": "projectIssueTypesLoading", - "ordinal": 21, - "value": false - }, - "55fc5237a996": { - "name": "github.project.listIssueTypesBySlug#1", - "ordinal": 15, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.listIssueTypesBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"}}" - }, - "5dd15ec04d86": { - "name": "projectAvailableLabels", - "ordinal": 1, - "value": [] - }, - "61e9a9d3f2b6": { - "name": "projectAvailableLabels", - "ordinal": 16, - "value": ["bug"] - }, - "6d2454f3b7b9": { - "name": "projectLabelsLoading", - "ordinal": 3, - "value": true - }, - "9912fbdd457c": { - "name": "projectIssueTypesLoading", - "ordinal": 11, - "value": true - }, - "9f8ede7fd42e": { - "name": "github.project.listIssueTypesBySlug#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "github.project.listIssueTypesBySlug" - }, - { - "name": "params", - "value": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true, - "types": [ - { - "id": "type-1", - "name": "Bug" - } - ] - } - } - } - }, - "bee3fb4d48da": { - "name": "projectIssueTypes", - "ordinal": 9, - "value": [] - }, - "cfcd8b229efe": { - "name": "github.project.listLabelsBySlug#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.listLabelsBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"}}" - }, - "d36a9b596499": { - "name": "projectLabelsError", - "ordinal": 2, - "value": "" - }, - "d5d91d8a5bac": { - "labels": ["bug"], - "labelsError": "", - "types": [ - { - "id": "type-1", - "name": "Bug" - } - ], - "typesError": "", - "users": [ - { - "login": "octocat", - "name": "Octo" - } - ], - "usersError": "" - }, - "e004f7afb559": { - "name": "projectLabelsLoading", - "ordinal": 17, - "value": false - }, - "e8838734c6bb": { - "name": "github.project.listAssignableUsersBySlug#1", - "ordinal": 14, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.listAssignableUsersBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"seedLogins\":[\"octocat\"]}}" - }, - "e918604a4f49": { - "name": "projectIssueTypesError", - "ordinal": 10, - "value": "" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f3677b2e5ed9": { - "name": "projectIssueTypes", - "ordinal": 20, - "value": [ - { - "id": "type-1", - "name": "Bug" - } - ] - }, - "f3849a7f0dff": { - "name": "projectAssignableUsersError", - "ordinal": 6, - "value": "" - } - }, - "recording": { - "scenario": "tk-project-row-metadata-load", - "checkpoints": [ - { - "id": "mounted", - "observation": { - "sender": ["4171776f506e", "24d2fb22914c", "9f8ede7fd42e"], - "payloads": ["cfcd8b229efe", "e8838734c6bb", "55fc5237a996"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "d5d91d8a5bac", - "effects": [ - "5dd15ec04d86", - "d36a9b596499", - "6d2454f3b7b9", - "2ff3fe127fb9", - "f3849a7f0dff", - "3902ea43121b", - "bee3fb4d48da", - "e918604a4f49", - "9912fbdd457c", - "61e9a9d3f2b6", - "e004f7afb559", - "21ea4fab050f", - "25899527b47b", - "f3677b2e5ed9", - "4b33e1366553" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-row-review-checks.json b/mobile/rpc-foundation/goldens/tk-project-row-review-checks.json deleted file mode 100644 index c964d1bdaf2..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-row-review-checks.json +++ /dev/null @@ -1,843 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-row-review-checks", - "family": "tasks.project-row-review-checks", - "namedDeltas": [], - "values": { - "0af1de3f1c7b": { - "name": "github.setPRFileViewed#1", - "ordinal": 23, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.setPRFileViewed\",\"params\":{\"repo\":\"id:repo-1\",\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"pullRequestId\":\"PR_kwDO\",\"path\":\"src/index.ts\",\"viewed\":true}}" - }, - "146b5bb967d4": { - "name": "projectRowDetail", - "ordinal": 5, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ] - } - }, - "16338db99b3b": { - "name": "github.rerunPRChecks#1", - "ordinal": 17, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.rerunPRChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"headSha\":\"head-sha\",\"failedOnly\":true}}" - }, - "19346a719903": { - "name": "projectRowDetailError", - "ordinal": 2, - "value": "" - }, - "22ffca652b36": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ] - }, - "draft": "", - "error": "", - "mutating": false, - "refreshSeq": 0 - }, - "29943274d7ef": { - "name": "github.prChecks#1", - "ordinal": 11, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"headSha\":\"head-sha\",\"noCache\":true}}" - }, - "2b956bbf980c": { - "name": "projectRowDetailRefreshSeq", - "ordinal": 18, - "value": 1 - }, - "2cd85ef93c74": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ] - }, - "draft": "", - "error": "", - "mutating": false, - "refreshSeq": 0 - }, - "3a4324d7f4c0": { - "name": "github.requestPRReviewers#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.requestPRReviewers" - }, - { - "name": "params", - "value": { - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "reviewers": ["octocat"] - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "4123bc693ce4": { - "name": "projectMutating", - "ordinal": 14, - "value": true - }, - "44c2e6541ebd": { - "name": "projectRowDetailError", - "ordinal": 9, - "value": "" - }, - "4ad8bb2f6308": { - "name": "projectReviewersDraft", - "ordinal": 6, - "value": "" - }, - "5cdba004ba6c": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "VIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ] - }, - "draft": "", - "error": "", - "mutating": false, - "refreshSeq": 1 - }, - "5d32aa29303c": { - "name": "projectMutating", - "ordinal": 1, - "value": true - }, - "62edc52051d6": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ] - }, - "draft": "", - "error": "", - "mutating": false, - "refreshSeq": 1 - }, - "7440f0f1bab9": { - "name": "projectMutating", - "ordinal": 19, - "value": false - }, - "7ff05eadbd07": { - "name": "github.requestPRReviewers#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"reviewers\":[\"octocat\"]}}" - }, - "83680a8503ad": { - "name": "github.rerunPRChecks#1", - "ordinal": 16, - "args": [ - { - "name": "method", - "value": "github.rerunPRChecks" - }, - { - "name": "params", - "value": { - "failedOnly": true, - "headSha": "head-sha", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 60000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "8edd2cc5d098": { - "name": "github.setPRFileViewed#1", - "ordinal": 22, - "args": [ - { - "name": "method", - "value": "github.setPRFileViewed" - }, - { - "name": "params", - "value": { - "path": "src/index.ts", - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "pullRequestId": "PR_kwDO", - "repo": "id:repo-1", - "viewed": true - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": true - } - } - }, - "a089b6b569cc": { - "name": "projectRowDetail", - "ordinal": 24, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "VIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ] - } - }, - "a1762a31897f": { - "name": "github.prChecks#1", - "ordinal": 10, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ] - } - } - }, - "a735fd6aee5f": { - "name": "projectMutating", - "ordinal": 7, - "value": false - }, - "b0f2d0edec6a": { - "name": "projectMutating", - "ordinal": 8, - "value": true - }, - "d09c526ea284": { - "name": "projectRowDetailError", - "ordinal": 15, - "value": "" - }, - "e3180bc6526a": { - "name": "projectMutating", - "ordinal": 13, - "value": false - }, - "eb2a575f353a": { - "name": "projectRowDetail", - "ordinal": 12, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ] - } - }, - "eb4a625e2236": { - "name": "projectMutating", - "ordinal": 25, - "value": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ecb02d3e0977": { - "name": "projectMutating", - "ordinal": 20, - "value": true - }, - "fb41e38e331b": { - "name": "projectRowDetailError", - "ordinal": 21, - "value": "" - } - }, - "recording": { - "scenario": "tk-project-row-review-checks", - "checkpoints": [ - { - "id": "reviewers-settled", - "observation": { - "sender": ["3a4324d7f4c0"], - "payloads": ["7ff05eadbd07"], - "settlements": { - "mount": "eb79a9b3682a", - "reviewers-0": "eb79a9b3682a" - }, - "state": "2cd85ef93c74", - "effects": [ - "5d32aa29303c", - "19346a719903", - "146b5bb967d4", - "4ad8bb2f6308", - "a735fd6aee5f" - ] - } - }, - { - "id": "checks-settled", - "observation": { - "sender": ["3a4324d7f4c0", "a1762a31897f"], - "payloads": ["7ff05eadbd07", "29943274d7ef"], - "settlements": { - "mount": "eb79a9b3682a", - "reviewers-0": "eb79a9b3682a", - "checks-1": "eb79a9b3682a" - }, - "state": "22ffca652b36", - "effects": [ - "5d32aa29303c", - "19346a719903", - "146b5bb967d4", - "4ad8bb2f6308", - "a735fd6aee5f", - "b0f2d0edec6a", - "44c2e6541ebd", - "eb2a575f353a", - "e3180bc6526a" - ] - } - }, - { - "id": "rerun-settled", - "observation": { - "sender": ["3a4324d7f4c0", "a1762a31897f", "83680a8503ad"], - "payloads": ["7ff05eadbd07", "29943274d7ef", "16338db99b3b"], - "settlements": { - "mount": "eb79a9b3682a", - "reviewers-0": "eb79a9b3682a", - "checks-1": "eb79a9b3682a", - "rerun-2": "eb79a9b3682a" - }, - "state": "62edc52051d6", - "effects": [ - "5d32aa29303c", - "19346a719903", - "146b5bb967d4", - "4ad8bb2f6308", - "a735fd6aee5f", - "b0f2d0edec6a", - "44c2e6541ebd", - "eb2a575f353a", - "e3180bc6526a", - "4123bc693ce4", - "d09c526ea284", - "2b956bbf980c", - "7440f0f1bab9" - ] - } - }, - { - "id": "viewed-settled", - "observation": { - "sender": ["3a4324d7f4c0", "a1762a31897f", "83680a8503ad", "8edd2cc5d098"], - "payloads": ["7ff05eadbd07", "29943274d7ef", "16338db99b3b", "0af1de3f1c7b"], - "settlements": { - "mount": "eb79a9b3682a", - "reviewers-0": "eb79a9b3682a", - "checks-1": "eb79a9b3682a", - "rerun-2": "eb79a9b3682a", - "viewed-3": "eb79a9b3682a" - }, - "state": "5cdba004ba6c", - "effects": [ - "5d32aa29303c", - "19346a719903", - "146b5bb967d4", - "4ad8bb2f6308", - "a735fd6aee5f", - "b0f2d0edec6a", - "44c2e6541ebd", - "eb2a575f353a", - "e3180bc6526a", - "4123bc693ce4", - "d09c526ea284", - "2b956bbf980c", - "7440f0f1bab9", - "ecb02d3e0977", - "fb41e38e331b", - "a089b6b569cc", - "eb4a625e2236" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-project-row-threads.json b/mobile/rpc-foundation/goldens/tk-project-row-threads.json deleted file mode 100644 index f2fc0c1bc96..00000000000 --- a/mobile/rpc-foundation/goldens/tk-project-row-threads.json +++ /dev/null @@ -1,712 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.project-row-threads", - "family": "tasks.project-row-threads", - "namedDeltas": [], - "values": { - "09c572b1820f": { - "name": "github.addPRReviewCommentReply#1", - "ordinal": 16, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.addPRReviewCommentReply\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"commentId\":501,\"body\":\"a reply\",\"threadId\":\"thread-1\",\"path\":\"src/index.ts\",\"line\":12}}" - }, - "19346a719903": { - "name": "projectRowDetailError", - "ordinal": 2, - "value": "" - }, - "1eb94321f034": { - "name": "github.resolveReviewThread#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.resolveReviewThread" - }, - { - "name": "params", - "value": { - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "resolve": true, - "threadId": "thread-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": true - } - } - }, - "403b13184ce0": { - "name": "itemReplyDrafts", - "ordinal": 17, - "value": { - "comment-2": "a reply" - } - }, - "510db4658728": { - "name": "projectRowDetailError", - "ordinal": 8, - "value": "" - }, - "5ba91867e6b3": { - "name": "projectRowDetail", - "ordinal": 11, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - } - }, - "5c30b4794b57": { - "name": "projectRowDetailError", - "ordinal": 14, - "value": "" - }, - "5d32aa29303c": { - "name": "projectMutating", - "ordinal": 1, - "value": true - }, - "647143f4a02b": { - "name": "github.project.deleteIssueCommentBySlug#1", - "ordinal": 4, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.deleteIssueCommentBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"commentId\":501}}" - }, - "72332e237f1f": { - "name": "projectMutating", - "ordinal": 6, - "value": false - }, - "7440f0f1bab9": { - "name": "projectMutating", - "ordinal": 19, - "value": false - }, - "7f87c5800a4e": { - "name": "projectRowDetail", - "ordinal": 18, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - } - }, - "86f1d86b2ef1": { - "name": "github.addPRReviewCommentReply#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.addPRReviewCommentReply" - }, - { - "name": "params", - "value": { - "body": "a reply", - "commentId": 501, - "line": 12, - "path": "src/index.ts", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "threadId": "thread-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - "ok": true - } - } - } - }, - "874009380ba6": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - }, - "error": "", - "mutating": false - }, - "8baca63d6578": { - "name": "github.resolveReviewThread#1", - "ordinal": 10, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.resolveReviewThread\",\"params\":{\"repo\":\"id:repo-1\",\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"threadId\":\"thread-1\",\"resolve\":true}}" - }, - "99542210ddd6": { - "name": "projectRowDetail", - "ordinal": 5, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - } - }, - "a8ff11b6adce": { - "name": "projectMutating", - "ordinal": 13, - "value": true - }, - "abdc42e00721": { - "name": "projectMutating", - "ordinal": 26, - "value": false - }, - "b145ac6005a6": { - "name": "itemReplyDrafts", - "ordinal": 24, - "value": {} - }, - "b6b9452c2348": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - }, - "error": "", - "mutating": false - }, - "bb6b127da045": { - "name": "github.project.deleteIssueCommentBySlug#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.project.deleteIssueCommentBySlug" - }, - { - "name": "params", - "value": { - "commentId": 501, - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "c1bd400fb401": { - "name": "projectRowDetail", - "ordinal": 25, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - } - }, - "c2f0cb5f4fe2": { - "name": "github.addIssueComment#1", - "ordinal": 22, - "args": [ - { - "name": "method", - "value": "github.addIssueComment" - }, - { - "name": "params", - "value": { - "body": "@octocat a reply", - "number": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "comment": { - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 902 - }, - "ok": true - } - } - } - }, - "cca2fbdc89cd": { - "name": "github.addIssueComment#1", - "ordinal": 23, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.addIssueComment\",\"params\":{\"repo\":\"id:repo-1\",\"number\":2,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\"},\"body\":\"@octocat a reply\",\"type\":\"pr\"}}" - }, - "ce1f6d47985f": { - "name": "projectMutating", - "ordinal": 12, - "value": false - }, - "e76d5520ec18": { - "detail": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [], - "comments": [ - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - }, - { - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 903, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [] - }, - "error": "", - "mutating": false - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ecb02d3e0977": { - "name": "projectMutating", - "ordinal": 20, - "value": true - }, - "f39ed9ab521e": { - "name": "projectMutating", - "ordinal": 7, - "value": true - }, - "fb41e38e331b": { - "name": "projectRowDetailError", - "ordinal": 21, - "value": "" - } - }, - "recording": { - "scenario": "tk-project-row-threads", - "checkpoints": [ - { - "id": "delete-comment-settled", - "observation": { - "sender": ["bb6b127da045"], - "payloads": ["647143f4a02b"], - "settlements": { - "mount": "eb79a9b3682a", - "delete-comment-0": "eb79a9b3682a" - }, - "state": "b6b9452c2348", - "effects": ["5d32aa29303c", "19346a719903", "99542210ddd6", "72332e237f1f"] - } - }, - { - "id": "thread-settled", - "observation": { - "sender": ["bb6b127da045", "1eb94321f034"], - "payloads": ["647143f4a02b", "8baca63d6578"], - "settlements": { - "mount": "eb79a9b3682a", - "delete-comment-0": "eb79a9b3682a", - "thread-1": "eb79a9b3682a" - }, - "state": "b6b9452c2348", - "effects": [ - "5d32aa29303c", - "19346a719903", - "99542210ddd6", - "72332e237f1f", - "f39ed9ab521e", - "510db4658728", - "5ba91867e6b3", - "ce1f6d47985f" - ] - } - }, - { - "id": "review-reply-settled", - "observation": { - "sender": ["bb6b127da045", "1eb94321f034", "86f1d86b2ef1"], - "payloads": ["647143f4a02b", "8baca63d6578", "09c572b1820f"], - "settlements": { - "mount": "eb79a9b3682a", - "delete-comment-0": "eb79a9b3682a", - "thread-1": "eb79a9b3682a", - "review-reply-2": "eb79a9b3682a" - }, - "state": "e76d5520ec18", - "effects": [ - "5d32aa29303c", - "19346a719903", - "99542210ddd6", - "72332e237f1f", - "f39ed9ab521e", - "510db4658728", - "5ba91867e6b3", - "ce1f6d47985f", - "a8ff11b6adce", - "5c30b4794b57", - "403b13184ce0", - "7f87c5800a4e", - "7440f0f1bab9" - ] - } - }, - { - "id": "issue-reply-settled", - "observation": { - "sender": ["bb6b127da045", "1eb94321f034", "86f1d86b2ef1", "c2f0cb5f4fe2"], - "payloads": ["647143f4a02b", "8baca63d6578", "09c572b1820f", "cca2fbdc89cd"], - "settlements": { - "mount": "eb79a9b3682a", - "delete-comment-0": "eb79a9b3682a", - "thread-1": "eb79a9b3682a", - "review-reply-2": "eb79a9b3682a", - "issue-reply-3": "eb79a9b3682a" - }, - "state": "874009380ba6", - "effects": [ - "5d32aa29303c", - "19346a719903", - "99542210ddd6", - "72332e237f1f", - "f39ed9ab521e", - "510db4658728", - "5ba91867e6b3", - "ce1f6d47985f", - "a8ff11b6adce", - "5c30b4794b57", - "403b13184ce0", - "7f87c5800a4e", - "7440f0f1bab9", - "ecb02d3e0977", - "fb41e38e331b", - "b145ac6005a6", - "c1bd400fb401", - "abdc42e00721" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tk-provider-load.json b/mobile/rpc-foundation/goldens/tk-provider-load.json deleted file mode 100644 index 968191a3149..00000000000 --- a/mobile/rpc-foundation/goldens/tk-provider-load.json +++ /dev/null @@ -1,444 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.provider-load", - "family": "tasks.provider-load", - "namedDeltas": [], - "values": { - "084da53ea1e3": { - "name": "linear.status#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}" - }, - "0d5034d2e543": { - "name": "linearTeams", - "ordinal": 8, - "value": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - }, - "3eec4c7c7f4f": { - "name": "github.listWorkItems#1", - "ordinal": 12, - "args": [ - { - "name": "method", - "value": "github.listWorkItems" - }, - { - "name": "params", - "value": { - "limit": 36, - "page": 1, - "query": "is:issue bug", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "items": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:9", - "labels": [], - "number": 9, - "state": "open", - "title": "An issue", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "sources": { - "issues": "upstream" - } - } - } - } - }, - "470893ebd4a7": { - "name": "linearWorkspaces", - "ordinal": 4, - "value": [ - { - "id": "linear-workspace", - "name": "Workspace" - } - ] - }, - "5e1882223b41": { - "name": "linear.listTeams#1", - "ordinal": 7, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listTeams\",\"params\":{\"workspaceId\":\"linear-workspace\"}}" - }, - "5efa1426d38f": { - "name": "selectedLinearWorkspaceId", - "ordinal": 5, - "value": "linear-workspace" - }, - "67b5ebc67646": { - "connected": true, - "selectedTeams": ["team-1"], - "teams": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ], - "workspaceId": "linear-workspace", - "workspaces": [ - { - "id": "linear-workspace", - "name": "Workspace" - } - ] - }, - "823a0f3cec86": { - "name": "github.listWorkItems#1", - "ordinal": 13, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"is:issue bug\",\"page\":1}}" - }, - "9050cedbf1cf": { - "name": "github.countWorkItems#1", - "ordinal": 15, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.countWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"is:issue bug\"}}" - }, - "91220356fb85": { - "name": "selectedLinearTeamIds", - "ordinal": 9, - "value": ["team-1"] - }, - "93695401e4f8": { - "name": "linear.listTeams#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "linear.listTeams" - }, - { - "name": "params", - "value": { - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - } - } - }, - "a3b6191b3861": { - "name": "settings.update#1", - "ordinal": 11, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.update\",\"params\":{\"defaultLinearTeamSelection\":[\"team-1\"]}}" - }, - "adcbf91f89c3": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": 1 - }, - "b972a52a94fe": { - "name": "linear.status#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "linear.status" - }, - { - "name": "params", - "value": { - "$rpc": "absent" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "connected": true, - "selectedWorkspaceId": "linear-workspace", - "workspaces": [ - { - "id": "linear-workspace", - "name": "Workspace" - } - ] - } - } - } - }, - "bd4e7772cf07": { - "name": "settings.update#1", - "ordinal": 10, - "args": [ - { - "name": "method", - "value": "settings.update" - }, - { - "name": "params", - "value": { - "defaultLinearTeamSelection": ["team-1"] - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "ok": true - } - } - } - }, - "d0a974f0c6a1": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "errorTypes": [], - "failedCount": 0, - "items": [ - { - "key": "github:repo-1:issue:9", - "provider": "github", - "source": { - "author": { - "$rpc": "null" - }, - "id": "issue:9", - "labels": [], - "number": 9, - "repoId": "repo-1", - "repoName": "Repo", - "state": "open", - "title": "An issue", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "status": "Open", - "subtitle": "Repo #9", - "title": "An issue", - "updatedAt": "2020-01-01T00:00:00.000Z" - } - ], - "sourceErrors": [], - "sourceFallbacks": [], - "sourcesByRepoId": { - "repo-1": { - "issues": "upstream" - } - } - } - }, - "de7bfe07e04b": { - "name": "github.countWorkItems#1", - "ordinal": 14, - "args": [ - { - "name": "method", - "value": "github.countWorkItems" - }, - { - "name": "params", - "value": { - "query": "is:issue bug", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": 4 - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f57b6504f168": { - "name": "linearConnected", - "ordinal": 3, - "value": true - } - }, - "recording": { - "scenario": "tk-provider-load", - "checkpoints": [ - { - "id": "linear-context-settled", - "observation": { - "sender": ["b972a52a94fe", "93695401e4f8"], - "payloads": ["084da53ea1e3", "5e1882223b41"], - "settlements": { - "mount": "eb79a9b3682a", - "linear-context-0": "eb79a9b3682a" - }, - "state": "67b5ebc67646", - "effects": [ - "f57b6504f168", - "470893ebd4a7", - "5efa1426d38f", - "0d5034d2e543", - "91220356fb85" - ] - } - }, - { - "id": "persist-teams-settled", - "observation": { - "sender": ["b972a52a94fe", "93695401e4f8", "bd4e7772cf07"], - "payloads": ["084da53ea1e3", "5e1882223b41", "a3b6191b3861"], - "settlements": { - "mount": "eb79a9b3682a", - "linear-context-0": "eb79a9b3682a", - "persist-teams-1": "eb79a9b3682a" - }, - "state": "67b5ebc67646", - "effects": [ - "f57b6504f168", - "470893ebd4a7", - "5efa1426d38f", - "0d5034d2e543", - "91220356fb85" - ] - } - }, - { - "id": "github-page-settled", - "observation": { - "sender": ["b972a52a94fe", "93695401e4f8", "bd4e7772cf07", "3eec4c7c7f4f"], - "payloads": ["084da53ea1e3", "5e1882223b41", "a3b6191b3861", "823a0f3cec86"], - "settlements": { - "mount": "eb79a9b3682a", - "linear-context-0": "eb79a9b3682a", - "persist-teams-1": "eb79a9b3682a", - "github-page-2": "d0a974f0c6a1" - }, - "state": "67b5ebc67646", - "effects": [ - "f57b6504f168", - "470893ebd4a7", - "5efa1426d38f", - "0d5034d2e543", - "91220356fb85" - ] - } - }, - { - "id": "github-count-settled", - "observation": { - "sender": [ - "b972a52a94fe", - "93695401e4f8", - "bd4e7772cf07", - "3eec4c7c7f4f", - "de7bfe07e04b" - ], - "payloads": [ - "084da53ea1e3", - "5e1882223b41", - "a3b6191b3861", - "823a0f3cec86", - "9050cedbf1cf" - ], - "settlements": { - "mount": "eb79a9b3682a", - "linear-context-0": "eb79a9b3682a", - "persist-teams-1": "eb79a9b3682a", - "github-page-2": "d0a974f0c6a1", - "github-count-3": "adcbf91f89c3" - }, - "state": "67b5ebc67646", - "effects": [ - "f57b6504f168", - "470893ebd4a7", - "5efa1426d38f", - "0d5034d2e543", - "91220356fb85" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json deleted file mode 100644 index fc98869224c..00000000000 --- a/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json +++ /dev/null @@ -1,466 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.paste-lookup", - "family": "tasks.paste-lookup", - "namedDeltas": [], - "values": { - "088b54714e03": { - "by-number": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "cache": [] - }, - "0e9d6525a582": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "displayName": "Repo", - "id": "repo-1", - "slug": { - "$rpc": "null" - } - } - }, - "1ffa5b08cd27": { - "by-number": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "by-slug": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "cache": [], - "gitlab-path": { - "author": { - "$rpc": "null" - }, - "id": "issue:7", - "labels": [], - "number": 7, - "repoId": "repo-1", - "state": "opened", - "title": "seven", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - }, - "2689e3903f7b": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "author": { - "$rpc": "null" - }, - "id": "issue:7", - "labels": [], - "number": 7, - "repoId": "repo-1", - "state": "opened", - "title": "seven", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - }, - "467d1db5ad39": { - "name": "github.workItem#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItem\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12}}" - }, - "4a91480c91b6": { - "name": "github.workItemByOwnerRepo#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.workItemByOwnerRepo" - }, - { - "name": "params", - "value": { - "number": 12, - "owner": "owner", - "ownerRepo": "repo", - "repo": "id:repo-1", - "type": "issue" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - } - } - }, - "53a164add69c": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - }, - "64b4674b65a8": { - "name": "github.workItemByOwnerRepo#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemByOwnerRepo\",\"params\":{\"repo\":\"id:repo-1\",\"owner\":\"owner\",\"ownerRepo\":\"repo\",\"number\":12,\"type\":\"issue\"}}" - }, - "72a59aa8bee1": { - "name": "github.repoSlug#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "97bec1f98b89": { - "by-number": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "by-slug": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "cache": [ - [ - "repo-1", - { - "owner": "owner", - "repo": "repo" - } - ] - ], - "gitlab-path": { - "author": { - "$rpc": "null" - }, - "id": "issue:7", - "labels": [], - "number": 7, - "repoId": "repo-1", - "state": "opened", - "title": "seven", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "repo-slug": { - "displayName": "Repo", - "id": "repo-1", - "slug": { - "$rpc": "null" - } - } - }, - "c8c091106ead": { - "by-number": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "by-slug": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "repoId": "repo-1", - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - }, - "cache": [] - }, - "db48adb41100": { - "name": "github.repoSlug#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - } - }, - "f4d2080c6e99": { - "name": "gitlab.workItemByPath#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.workItemByPath\",\"params\":{\"repo\":\"id:repo-1\",\"host\":\"gitlab.com\",\"path\":\"group/project\",\"iid\":7,\"type\":\"issue\"}}" - }, - "f849aeca5336": { - "name": "gitlab.workItemByPath#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "gitlab.workItemByPath" - }, - { - "name": "params", - "value": { - "host": "gitlab.com", - "iid": 7, - "path": "group/project", - "repo": "id:repo-1", - "type": "issue" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "author": { - "$rpc": "null" - }, - "id": "issue:7", - "labels": [], - "number": 7, - "state": "opened", - "title": "seven", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - } - } - }, - "fa6ca8899e53": { - "name": "github.workItem#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.workItem" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "author": { - "$rpc": "null" - }, - "id": "issue:12", - "labels": [], - "number": 12, - "state": "open", - "title": "twelve", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - } - } - } - }, - "recording": { - "scenario": "tw-paste-lookup-resolved", - "checkpoints": [ - { - "id": "by-number", - "observation": { - "sender": ["fa6ca8899e53"], - "payloads": ["467d1db5ad39"], - "settlements": { - "by-number": "53a164add69c" - }, - "state": "088b54714e03", - "effects": [] - } - }, - { - "id": "by-slug", - "observation": { - "sender": ["fa6ca8899e53", "4a91480c91b6"], - "payloads": ["467d1db5ad39", "64b4674b65a8"], - "settlements": { - "by-number": "53a164add69c", - "by-slug": "53a164add69c" - }, - "state": "c8c091106ead", - "effects": [] - } - }, - { - "id": "gitlab-path", - "observation": { - "sender": ["fa6ca8899e53", "4a91480c91b6", "f849aeca5336"], - "payloads": ["467d1db5ad39", "64b4674b65a8", "f4d2080c6e99"], - "settlements": { - "by-number": "53a164add69c", - "by-slug": "53a164add69c", - "gitlab-path": "2689e3903f7b" - }, - "state": "1ffa5b08cd27", - "effects": [] - } - }, - { - "id": "repo-slug-matched", - "observation": { - "sender": ["fa6ca8899e53", "4a91480c91b6", "f849aeca5336", "db48adb41100"], - "payloads": ["467d1db5ad39", "64b4674b65a8", "f4d2080c6e99", "72a59aa8bee1"], - "settlements": { - "by-number": "53a164add69c", - "by-slug": "53a164add69c", - "gitlab-path": "2689e3903f7b", - "repo-slug": "0e9d6525a582" - }, - "state": "97bec1f98b89", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json deleted file mode 100644 index c139e38f777..00000000000 --- a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.paste-lookup", - "family": "tasks.paste-lookup", - "namedDeltas": [], - "values": { - "35f3e39a1c50": { - "cache": [ - [ - "repo-1", - { - "$rpc": "null" - } - ], - [ - "repo-2", - { - "$rpc": "null" - } - ] - ], - "repo-slug": { - "$rpc": "null" - } - }, - "49d6f5f60c9c": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "62def01d7611": { - "name": "github.repoSlug#2", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-2\"}}" - }, - "72fe3852457b": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "forbidden", - "message": "no access" - }, - "id": "frame-1", - "ok": false - } - } - }, - "8d505f40e367": { - "name": "github.repoSlug#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-2" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "$rpc": "null" - } - } - } - }, - "ee20a1dc39e7": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tw-paste-lookup-slug-refused", - "checkpoints": [ - { - "id": "refusal-is-per-repo", - "observation": { - "sender": ["72fe3852457b", "8d505f40e367"], - "payloads": ["49d6f5f60c9c", "62def01d7611"], - "settlements": { - "repo-slug": "ee20a1dc39e7" - }, - "state": "35f3e39a1c50", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json deleted file mode 100644 index fb6cef2cd6f..00000000000 --- a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.paste-lookup", - "family": "tasks.paste-lookup", - "namedDeltas": [], - "values": { - "176039835400": { - "cache": [ - [ - "repo-1", - { - "$rpc": "null" - } - ], - [ - "repo-2", - { - "$rpc": "null" - } - ] - ], - "repo-slug": { - "$rpc": "null" - }, - "repo-slug-again": { - "$rpc": "null" - } - }, - "35f3e39a1c50": { - "cache": [ - [ - "repo-1", - { - "$rpc": "null" - } - ], - [ - "repo-2", - { - "$rpc": "null" - } - ] - ], - "repo-slug": { - "$rpc": "null" - } - }, - "49d6f5f60c9c": { - "name": "github.repoSlug#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "5f7814cedf54": { - "name": "github.repoSlug#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.repoSlug" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-1", - "ok": false - } - } - }, - "ee20a1dc39e7": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tw-paste-lookup-slug-unsupported", - "checkpoints": [ - { - "id": "host-wide-probe-cached", - "observation": { - "sender": ["5f7814cedf54"], - "payloads": ["49d6f5f60c9c"], - "settlements": { - "repo-slug": "ee20a1dc39e7" - }, - "state": "35f3e39a1c50", - "effects": [] - } - }, - { - "id": "no-second-probe", - "observation": { - "sender": ["5f7814cedf54"], - "payloads": ["49d6f5f60c9c"], - "settlements": { - "repo-slug": "ee20a1dc39e7", - "repo-slug-again": "ee20a1dc39e7" - }, - "state": "176039835400", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json deleted file mode 100644 index b212f84739f..00000000000 --- a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.setup-hook-trust", - "family": "worktree.setup-hook-trust", - "namedDeltas": [], - "values": { - "227b8a130a49": { - "name": "ui.set#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ui.set\",\"params\":{\"trustedOrcaHooks\":{\"repo-1\":{\"setup\":{\"contentHash\":\"hash-1\",\"approvedAt\":1767225600000},\"all\":{\"approvedAt\":1767225600000}}}}}" - }, - "229c35d1a4ba": { - "trust": "unapproved" - }, - "f3b516f62081": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "", - "isRpcDeliveryUnknown": false - } - }, - "fed440092fe8": { - "name": "ui.set#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "ui.set" - }, - { - "name": "params", - "value": { - "trustedOrcaHooks": { - "repo-1": { - "all": { - "approvedAt": 1767225600000 - }, - "setup": { - "approvedAt": 1767225600000, - "contentHash": "hash-1" - } - } - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "forbidden", - "message": "" - }, - "id": "frame-1", - "ok": false - } - } - } - }, - "recording": { - "scenario": "tw-setup-hook-trust-always", - "checkpoints": [ - { - "id": "refused-empty-message", - "observation": { - "sender": ["fed440092fe8"], - "payloads": ["227b8a130a49"], - "settlements": { - "approve": "f3b516f62081" - }, - "state": "229c35d1a4ba", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json deleted file mode 100644 index 32c6c80eb2c..00000000000 --- a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.setup-hook-trust", - "family": "worktree.setup-hook-trust", - "namedDeltas": [], - "values": { - "86d0d8f71257": { - "name": "ui.set#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ui.set\",\"params\":{\"trustedOrcaHooks\":{\"repo-1\":{\"setup\":{\"contentHash\":\"hash-1\",\"approvedAt\":1767225600000}}}}}" - }, - "a406b068aeca": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "repo-1": { - "setup": { - "approvedAt": 1767225600000, - "contentHash": "hash-1" - } - } - } - }, - "b2aa9ff12623": { - "trust": { - "repo-1": { - "setup": { - "approvedAt": 1767225600000, - "contentHash": "hash-1" - } - } - } - }, - "e2089203d4dd": { - "name": "ui.set#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "ui.set" - }, - { - "name": "params", - "value": { - "trustedOrcaHooks": { - "repo-1": { - "setup": { - "approvedAt": 1767225600000, - "contentHash": "hash-1" - } - } - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "ok": true - } - } - } - } - }, - "recording": { - "scenario": "tw-setup-hook-trust-approved", - "checkpoints": [ - { - "id": "approved", - "observation": { - "sender": ["e2089203d4dd"], - "payloads": ["86d0d8f71257"], - "settlements": { - "approve": "a406b068aeca" - }, - "state": "b2aa9ff12623", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json b/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json deleted file mode 100644 index fb78d291682..00000000000 --- a/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json +++ /dev/null @@ -1,727 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.smart-source-search", - "family": "tasks.smart-source-search", - "namedDeltas": [], - "values": { - "005749a0bd75": { - "name": "github.listWorkItems#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "github.listWorkItems" - }, - { - "name": "params", - "value": { - "limit": 36, - "query": "bug", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "items": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:1", - "labels": [], - "number": 1, - "state": "open", - "title": "one", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ] - } - } - } - }, - "017731afa453": { - "name": "repo.searchRefs#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"bug\",\"limit\":20}}" - }, - "2868ae2bd70e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:2", - "labels": [], - "number": 2, - "repoId": "repo-1", - "state": "opened", - "title": "two", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ] - }, - "2d9caaaffaed": { - "name": "github.listWorkItems#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"bug\"}}" - }, - "40d2922bb77c": { - "name": "linear.searchIssues#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "linear.searchIssues" - }, - { - "name": "params", - "value": { - "limit": 50, - "query": "bug", - "workspaceId": "linear-workspace" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "items": [ - { - "id": "issue-1", - "identifier": "ENG-1", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A searched issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - } - } - } - }, - "4d156675db06": { - "branches": [ - { - "localBranchName": "main", - "refName": "main" - }, - { - "localBranchName": "release", - "refName": "release" - } - ], - "github": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:1", - "labels": [], - "number": 1, - "repoId": "repo-1", - "state": "open", - "title": "one", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "gitlab": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:2", - "labels": [], - "number": 2, - "repoId": "repo-1", - "state": "opened", - "title": "two", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "linear": [ - { - "id": "issue-3", - "identifier": "ENG-3", - "labels": [], - "priority": 2, - "state": { - "color": "#111", - "name": "In Progress", - "type": "started" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "An assigned issue", - "updatedAt": "2020-01-02T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - }, - "6a6dbfc00478": { - "github": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:1", - "labels": [], - "number": 1, - "repoId": "repo-1", - "state": "open", - "title": "one", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "gitlab": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:2", - "labels": [], - "number": 2, - "repoId": "repo-1", - "state": "opened", - "title": "two", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "linear": [ - { - "id": "issue-1", - "identifier": "ENG-1", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A searched issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - }, - "9c65a9888b9c": { - "branches": [ - { - "localBranchName": "main", - "refName": "main" - }, - { - "localBranchName": "release", - "refName": "release" - } - ], - "github": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:1", - "labels": [], - "number": 1, - "repoId": "repo-1", - "state": "open", - "title": "one", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "gitlab": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:2", - "labels": [], - "number": 2, - "repoId": "repo-1", - "state": "opened", - "title": "two", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "linear": [ - { - "id": "issue-1", - "identifier": "ENG-1", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A searched issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - }, - "9ca31589d6b9": { - "name": "gitlab.listWorkItems#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "gitlab.listWorkItems" - }, - { - "name": "params", - "value": { - "page": 1, - "perPage": 50, - "query": "bug", - "repo": "id:repo-1", - "state": "opened" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "error": { - "message": "missing", - "type": "not_found" - }, - "items": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:2", - "labels": [], - "number": 2, - "state": "opened", - "title": "two", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ] - } - } - } - }, - "9e3a28140ba7": { - "name": "gitlab.listWorkItems#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" - }, - "aa71e896eae4": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:1", - "labels": [], - "number": 1, - "repoId": "repo-1", - "state": "open", - "title": "one", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ] - }, - "b015aaf3a53a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "localBranchName": "main", - "refName": "main" - }, - { - "localBranchName": "release", - "refName": "release" - } - ] - }, - "b4056bfa00e3": { - "github": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:1", - "labels": [], - "number": 1, - "repoId": "repo-1", - "state": "open", - "title": "one", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ], - "gitlab": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:2", - "labels": [], - "number": 2, - "repoId": "repo-1", - "state": "opened", - "title": "two", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ] - }, - "bb2ecdf1f3da": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "id": "issue-3", - "identifier": "ENG-3", - "labels": [], - "priority": 2, - "state": { - "color": "#111", - "name": "In Progress", - "type": "started" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "An assigned issue", - "updatedAt": "2020-01-02T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - }, - "c6df6f81c539": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "id": "issue-1", - "identifier": "ENG-1", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "A searched issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - }, - "df9cac7fb20b": { - "name": "linear.searchIssues#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" - }, - "eae99168231b": { - "name": "repo.searchRefs#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "repo.searchRefs" - }, - { - "name": "params", - "value": { - "limit": 20, - "query": "bug", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "refs": ["main", "release"] - } - } - } - }, - "ef18db5bf24a": { - "name": "linear.listIssues#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" - }, - "f0fd94109299": { - "github": [ - { - "author": { - "$rpc": "null" - }, - "id": "issue:1", - "labels": [], - "number": 1, - "repoId": "repo-1", - "state": "open", - "title": "one", - "type": "issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "" - } - ] - }, - "f1d5de4d4483": { - "name": "linear.listIssues#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "linear.listIssues" - }, - { - "name": "params", - "value": { - "filter": "assigned", - "limit": 50, - "workspaceId": { - "$rpc": "undefined" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": [ - { - "id": "issue-3", - "identifier": "ENG-3", - "labels": [], - "priority": 2, - "state": { - "color": "#111", - "name": "In Progress", - "type": "started" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "An assigned issue", - "updatedAt": "2020-01-02T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - } - } - } - }, - "recording": { - "scenario": "tw-smart-search-all-providers", - "checkpoints": [ - { - "id": "github-items", - "observation": { - "sender": ["005749a0bd75"], - "payloads": ["2d9caaaffaed"], - "settlements": { - "github": "aa71e896eae4" - }, - "state": "f0fd94109299", - "effects": [] - } - }, - { - "id": "gitlab-items", - "observation": { - "sender": ["005749a0bd75", "9ca31589d6b9"], - "payloads": ["2d9caaaffaed", "9e3a28140ba7"], - "settlements": { - "github": "aa71e896eae4", - "gitlab": "2868ae2bd70e" - }, - "state": "b4056bfa00e3", - "effects": [] - } - }, - { - "id": "linear-search", - "observation": { - "sender": ["005749a0bd75", "9ca31589d6b9", "40d2922bb77c"], - "payloads": ["2d9caaaffaed", "9e3a28140ba7", "df9cac7fb20b"], - "settlements": { - "github": "aa71e896eae4", - "gitlab": "2868ae2bd70e", - "linear": "c6df6f81c539" - }, - "state": "6a6dbfc00478", - "effects": [] - } - }, - { - "id": "branch-refs", - "observation": { - "sender": ["005749a0bd75", "9ca31589d6b9", "40d2922bb77c", "eae99168231b"], - "payloads": ["2d9caaaffaed", "9e3a28140ba7", "df9cac7fb20b", "017731afa453"], - "settlements": { - "github": "aa71e896eae4", - "gitlab": "2868ae2bd70e", - "linear": "c6df6f81c539", - "branches": "b015aaf3a53a" - }, - "state": "9c65a9888b9c", - "effects": [] - } - }, - { - "id": "linear-assigned-listed", - "observation": { - "sender": [ - "005749a0bd75", - "9ca31589d6b9", - "40d2922bb77c", - "eae99168231b", - "f1d5de4d4483" - ], - "payloads": [ - "2d9caaaffaed", - "9e3a28140ba7", - "df9cac7fb20b", - "017731afa453", - "ef18db5bf24a" - ], - "settlements": { - "github": "aa71e896eae4", - "gitlab": "2868ae2bd70e", - "linear": "c6df6f81c539", - "branches": "b015aaf3a53a", - "linear-assigned": "bb2ecdf1f3da" - }, - "state": "4d156675db06", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json b/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json deleted file mode 100644 index 165d36f167f..00000000000 --- a/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.smart-source-search", - "family": "tasks.smart-source-search", - "namedDeltas": [], - "values": { - "2978f9aceb1e": { - "name": "repo.searchRefs#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "repo.searchRefs" - }, - { - "name": "params", - "value": { - "limit": 20, - "query": "main", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "refDetails": [ - { - "localBranchName": "main", - "refName": "origin/main" - } - ] - } - } - } - }, - "44136fa355b3": {}, - "51e012c25ebf": { - "branches": [ - { - "localBranchName": "main", - "refName": "origin/main" - } - ] - }, - "791f6fc629fc": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "localBranchName": "main", - "refName": "origin/main" - } - ] - }, - "ab2b1da8d0e9": { - "name": "repo.searchRefs#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"main\",\"limit\":20}}" - }, - "bf7ab976b200": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "rate limited", - "isRpcDeliveryUnknown": false - } - }, - "cc32ff7ae122": { - "name": "gitlab.listWorkItems#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" - }, - "f87417f689e2": { - "name": "gitlab.listWorkItems#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "gitlab.listWorkItems" - }, - { - "name": "params", - "value": { - "page": 1, - "perPage": 50, - "query": "bug", - "repo": "id:repo-1", - "state": "opened" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "error": { - "message": "rate limited", - "type": "quota" - }, - "items": [] - } - } - } - } - }, - "recording": { - "scenario": "tw-smart-search-gitlab-provider-error", - "checkpoints": [ - { - "id": "in-band-provider-error", - "observation": { - "sender": ["f87417f689e2"], - "payloads": ["cc32ff7ae122"], - "settlements": { - "gitlab": "bf7ab976b200" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "branch-ref-details", - "observation": { - "sender": ["f87417f689e2", "2978f9aceb1e"], - "payloads": ["cc32ff7ae122", "ab2b1da8d0e9"], - "settlements": { - "gitlab": "bf7ab976b200", - "branches": "791f6fc629fc" - }, - "state": "51e012c25ebf", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json b/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json deleted file mode 100644 index 0e827d36891..00000000000 --- a/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.smart-source-search", - "family": "tasks.smart-source-search", - "namedDeltas": [], - "values": { - "15d6e85f9f78": { - "name": "linear.listIssues#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "linear.listIssues" - }, - { - "name": "params", - "value": { - "filter": "assigned", - "limit": 50, - "workspaceId": { - "$rpc": "undefined" - } - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": [ - { - "id": "issue-2", - "identifier": "ENG-2", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "An assigned issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - } - } - }, - "5ada0ba09955": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": [ - { - "id": "issue-2", - "identifier": "ENG-2", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "An assigned issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - }, - "68e656392151": { - "linear": [ - { - "id": "issue-2", - "identifier": "ENG-2", - "labels": [], - "priority": 0, - "state": { - "color": "#000", - "name": "Todo", - "type": "unstarted" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "title": "An assigned issue", - "updatedAt": "2020-01-01T00:00:00.000Z", - "url": "", - "workspaceId": "linear-workspace" - } - ] - }, - "b272a4494870": { - "name": "linear.listIssues#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" - } - }, - "recording": { - "scenario": "tw-smart-search-linear-listed", - "checkpoints": [ - { - "id": "linear-assigned", - "observation": { - "sender": ["15d6e85f9f78"], - "payloads": ["b272a4494870"], - "settlements": { - "linear": "5ada0ba09955" - }, - "state": "68e656392151", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json b/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json deleted file mode 100644 index b72186c22d7..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-source", - "family": "tasks.workspace-source", - "namedDeltas": [], - "values": { - "02e24a49522e": { - "name": "repo.sparsePresets#1", - "ordinal": 8, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.sparsePresets\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "22b30d5c0550": { - "name": "workspaceSparsePresetId", - "ordinal": 11, - "value": { - "$rpc": "null" - } - }, - "4efabea114c4": { - "name": "workspaceSparsePresetsError", - "ordinal": 3, - "value": "" - }, - "62bc28c39ffc": { - "branchError": "", - "branches": [], - "presets": [], - "presetsError": "", - "presetsLoaded": false - }, - "666bd27e7019": { - "name": "workspaceSparsePresetsLoaded", - "ordinal": 2, - "value": false - }, - "802594b0307e": { - "name": "workspaceBaseBranchLoading", - "ordinal": 6, - "value": false - }, - "8aa6d1392eee": { - "name": "workspaceSparsePresetsLoading", - "ordinal": 13, - "value": false - }, - "985b44577ba8": { - "name": "workspaceSparsePresets", - "ordinal": 9, - "value": [] - }, - "a4ad08dfe36b": { - "name": "repo.sparsePresets#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "repo.sparsePresets" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "forbidden", - "message": "" - }, - "id": "frame-1", - "ok": false - } - } - }, - "b2d70a96a17a": { - "name": "workspaceBaseBranchResults", - "ordinal": 5, - "value": [] - }, - "bb6152049822": { - "name": "workspaceSparsePresetsError", - "ordinal": 12, - "value": "" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f7ab22c990a5": { - "name": "workspaceBaseBranchError", - "ordinal": 7, - "value": "" - }, - "faf6e6083f43": { - "name": "workspaceSparsePresetsLoading", - "ordinal": 1, - "value": true - }, - "fe3395a9e94f": { - "name": "workspaceSparsePresetsLoaded", - "ordinal": 10, - "value": false - } - }, - "recording": { - "scenario": "tw-workspace-source-presets-refused", - "checkpoints": [ - { - "id": "presets-refused-empty-message", - "observation": { - "sender": ["a4ad08dfe36b"], - "payloads": ["02e24a49522e"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "62bc28c39ffc", - "effects": [ - "faf6e6083f43", - "666bd27e7019", - "4efabea114c4", - "b2d70a96a17a", - "802594b0307e", - "f7ab22c990a5", - "985b44577ba8", - "fe3395a9e94f", - "22b30d5c0550", - "bb6152049822", - "8aa6d1392eee" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json b/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json deleted file mode 100644 index 760d6e2fdd4..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-source", - "family": "tasks.workspace-source", - "namedDeltas": [], - "values": { - "02e24a49522e": { - "name": "repo.sparsePresets#1", - "ordinal": 8, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.sparsePresets\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "215f6b1d86cd": { - "name": "workspaceBaseBranchLoading", - "ordinal": 13, - "value": true - }, - "2198c28257cb": { - "name": "repo.searchRefs#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "repo.searchRefs" - }, - { - "name": "params", - "value": { - "limit": 20, - "query": "main", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "refs": ["main"] - } - } - } - }, - "22b30d5c0550": { - "name": "workspaceSparsePresetId", - "ordinal": 11, - "value": { - "$rpc": "null" - } - }, - "329626b87ebb": { - "name": "workspaceBaseBranchLoading", - "ordinal": 18, - "value": false - }, - "395b11d2530a": { - "name": "workspaceSparsePresetsLoading", - "ordinal": 12, - "value": false - }, - "4efabea114c4": { - "name": "workspaceSparsePresetsError", - "ordinal": 3, - "value": "" - }, - "57f06e6e349e": { - "branchError": "", - "branches": [], - "presets": [ - { - "directories": ["docs"], - "id": "p1", - "name": "docs" - } - ], - "presetsError": "", - "presetsLoaded": true - }, - "653409308f6c": { - "name": "workspaceSparsePresetsLoaded", - "ordinal": 10, - "value": true - }, - "666bd27e7019": { - "name": "workspaceSparsePresetsLoaded", - "ordinal": 2, - "value": false - }, - "802594b0307e": { - "name": "workspaceBaseBranchLoading", - "ordinal": 6, - "value": false - }, - "826410120272": { - "name": "workspaceSparsePresets", - "ordinal": 9, - "value": [ - { - "directories": ["docs"], - "id": "p1", - "name": "docs" - } - ] - }, - "94be039bc034": { - "name": "repo.searchRefs#1", - "ordinal": 16, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"main\",\"limit\":20}}" - }, - "a135d4b358aa": { - "name": "workspaceBaseBranchResults", - "ordinal": 17, - "value": [ - { - "localBranchName": "main", - "refName": "main" - } - ] - }, - "b2d70a96a17a": { - "name": "workspaceBaseBranchResults", - "ordinal": 5, - "value": [] - }, - "b78bcf7ca596": { - "branchError": "", - "branches": [ - { - "localBranchName": "main", - "refName": "main" - } - ], - "presets": [ - { - "directories": ["docs"], - "id": "p1", - "name": "docs" - } - ], - "presetsError": "", - "presetsLoaded": true - }, - "b7cb2292ffa2": { - "name": "repo.sparsePresets#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "repo.sparsePresets" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "presets": [ - { - "directories": ["docs"], - "id": "p1", - "name": "docs" - } - ] - } - } - } - }, - "d8718329d555": { - "name": "workspaceBaseBranchError", - "ordinal": 14, - "value": "" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "f7ab22c990a5": { - "name": "workspaceBaseBranchError", - "ordinal": 7, - "value": "" - }, - "faf6e6083f43": { - "name": "workspaceSparsePresetsLoading", - "ordinal": 1, - "value": true - } - }, - "recording": { - "scenario": "tw-workspace-source-presets", - "checkpoints": [ - { - "id": "presets-loaded", - "observation": { - "sender": ["b7cb2292ffa2"], - "payloads": ["02e24a49522e"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "57f06e6e349e", - "effects": [ - "faf6e6083f43", - "666bd27e7019", - "4efabea114c4", - "b2d70a96a17a", - "802594b0307e", - "f7ab22c990a5", - "826410120272", - "653409308f6c", - "22b30d5c0550", - "395b11d2530a" - ] - } - }, - { - "id": "branches-loaded", - "observation": { - "sender": ["b7cb2292ffa2", "2198c28257cb"], - "payloads": ["02e24a49522e", "94be039bc034"], - "settlements": { - "mount": "eb79a9b3682a", - "branch-query": "eb79a9b3682a" - }, - "state": "b78bcf7ca596", - "effects": [ - "faf6e6083f43", - "666bd27e7019", - "4efabea114c4", - "b2d70a96a17a", - "802594b0307e", - "f7ab22c990a5", - "826410120272", - "653409308f6c", - "22b30d5c0550", - "395b11d2530a", - "215f6b1d86cd", - "d8718329d555", - "a135d4b358aa", - "329626b87ebb" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json b/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json deleted file mode 100644 index 6a3ce4642a2..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-sparse", - "family": "tasks.workspace-sparse", - "namedDeltas": [], - "values": { - "02daf4600c50": { - "name": "repo.saveSparsePreset#1", - "ordinal": 7, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.saveSparsePreset\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"docs\",\"directories\":[\"docs\"]}}" - }, - "0df082978757": { - "name": "workspaceSparsePresetsError", - "ordinal": 8, - "value": "Failed to save sparse preset." - }, - "137e0fd71a21": { - "name": "repo.saveSparsePreset#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "repo.saveSparsePreset" - }, - { - "name": "params", - "value": { - "directories": ["docs"], - "name": "docs", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": {} - } - } - }, - "193c0bc3cf2a": { - "presets": [], - "presetsError": "Failed to save sparse preset.", - "saving": false, - "ssh": { - "error": "", - "reconnectAttempt": 0, - "status": "error", - "targetId": "ssh-1" - } - }, - "37c5cc533ab4": { - "name": "workspaceSparseSaving", - "ordinal": 9, - "value": false - }, - "4e16f40bd113": { - "name": "ssh.getState#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "ssh.getState" - }, - { - "name": "params", - "value": { - "targetId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "forbidden", - "message": "" - }, - "id": "frame-1", - "ok": false - } - } - }, - "973f31a4e64b": { - "name": "workspaceSparsePresetsError", - "ordinal": 5, - "value": "" - }, - "a11809a84754": { - "name": "ssh.getState#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" - }, - "a71abdbfefa8": { - "name": "workspaceSshState", - "ordinal": 3, - "value": { - "error": "", - "reconnectAttempt": 0, - "status": "error", - "targetId": "ssh-1" - } - }, - "ea6e5bf810d9": { - "name": "workspaceSparseSaving", - "ordinal": 4, - "value": true - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "tw-workspace-sparse-missing-preset", - "checkpoints": [ - { - "id": "saved-without-preset", - "observation": { - "sender": ["4e16f40bd113", "137e0fd71a21"], - "payloads": ["a11809a84754", "02daf4600c50"], - "settlements": { - "mount": "eb79a9b3682a", - "save": "eb79a9b3682a" - }, - "state": "193c0bc3cf2a", - "effects": [ - "a71abdbfefa8", - "ea6e5bf810d9", - "973f31a4e64b", - "0df082978757", - "37c5cc533ab4" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json b/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json deleted file mode 100644 index 6a2548ac2df..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-sparse", - "family": "tasks.workspace-sparse", - "namedDeltas": [], - "values": { - "02daf4600c50": { - "name": "repo.saveSparsePreset#1", - "ordinal": 7, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.saveSparsePreset\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"docs\",\"directories\":[\"docs\"]}}" - }, - "1bc7cf6bcbaf": { - "name": "workspaceSparsePresets", - "ordinal": 8, - "value": [ - { - "directories": ["docs"], - "id": "p1", - "name": "docs" - } - ] - }, - "3f5e10171cd3": { - "name": "workspaceSparsePresetId", - "ordinal": 10, - "value": "p1" - }, - "404305aa2e3a": { - "presets": [ - { - "directories": ["docs"], - "id": "p1", - "name": "docs" - } - ], - "presetsError": "", - "saving": false, - "ssh": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - }, - "4b7e30ea1543": { - "name": "repo.saveSparsePreset#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "repo.saveSparsePreset" - }, - { - "name": "params", - "value": { - "directories": ["docs"], - "name": "docs", - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "preset": { - "directories": ["docs"], - "id": "p1", - "name": "docs" - } - } - } - } - }, - "973f31a4e64b": { - "name": "workspaceSparsePresetsError", - "ordinal": 5, - "value": "" - }, - "a11809a84754": { - "name": "ssh.getState#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" - }, - "b53739a58194": { - "name": "ssh.getState#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "ssh.getState" - }, - { - "name": "params", - "value": { - "targetId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "state": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - } - } - } - }, - "c1ae182c7519": { - "name": "workspaceSparseSaving", - "ordinal": 12, - "value": false - }, - "c88e803973a6": { - "name": "workspaceSparsePresetsLoaded", - "ordinal": 9, - "value": true - }, - "de95b19c6158": { - "name": "workspaceSshState", - "ordinal": 3, - "value": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - }, - "ea6e5bf810d9": { - "name": "workspaceSparseSaving", - "ordinal": 4, - "value": true - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ee3a941d5e9c": { - "presets": [], - "presetsError": "", - "saving": false, - "ssh": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - }, - "f54b3364071f": { - "name": "workspaceSparseDraft", - "ordinal": 11, - "value": { - "$rpc": "null" - } - } - }, - "recording": { - "scenario": "tw-workspace-sparse-saved", - "checkpoints": [ - { - "id": "ssh-state-read", - "observation": { - "sender": ["b53739a58194"], - "payloads": ["a11809a84754"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "ee3a941d5e9c", - "effects": ["de95b19c6158"] - } - }, - { - "id": "preset-saved", - "observation": { - "sender": ["b53739a58194", "4b7e30ea1543"], - "payloads": ["a11809a84754", "02daf4600c50"], - "settlements": { - "mount": "eb79a9b3682a", - "save": "eb79a9b3682a" - }, - "state": "404305aa2e3a", - "effects": [ - "de95b19c6158", - "ea6e5bf810d9", - "973f31a4e64b", - "1bc7cf6bcbaf", - "c88e803973a6", - "3f5e10171cd3", - "f54b3364071f", - "c1ae182c7519" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json deleted file mode 100644 index 51a217e723f..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-ssh", - "family": "tasks.workspace-ssh", - "namedDeltas": [], - "values": { - "11405363c62d": { - "name": "workspaceAgent", - "ordinal": 1, - "value": "claude" - }, - "263b165043b0": { - "name": "workspaceSshState", - "ordinal": 11, - "value": { - "error": "", - "reconnectAttempt": 0, - "status": "error", - "targetId": "ssh-1" - } - }, - "2d313c57ddf7": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "decision": "skip", - "kind": "decision", - "setupTrust": { - "$rpc": "undefined" - } - } - }, - "38ce16e16515": { - "name": "ssh.connect#1", - "ordinal": 10, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.connect\",\"params\":{\"targetId\":\"ssh-1\"}}" - }, - "55904d40a00f": { - "agent": "claude", - "connecting": false, - "detected": [], - "setup": { - "decision": "skip", - "kind": "decision", - "setupTrust": { - "$rpc": "undefined" - } - }, - "ssh": { - "error": "", - "reconnectAttempt": 0, - "status": "error", - "targetId": "ssh-1" - } - }, - "5d9791d21090": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connection lost", - "isRpcDeliveryUnknown": true - } - } - }, - "630e2f27face": { - "name": "workspaceDetectedAgentIds", - "ordinal": 6, - "value": [] - }, - "84149cfb1467": { - "name": "workspaceSshState", - "ordinal": 8, - "value": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connecting", - "targetId": "ssh-1" - } - }, - "8509334ad6ae": { - "agent": "claude", - "connecting": false, - "detected": [], - "setup": "unresolved", - "ssh": { - "error": "", - "reconnectAttempt": 0, - "status": "error", - "targetId": "ssh-1" - } - }, - "9637248df9cb": { - "name": "workspaceDetectedAgentIds", - "ordinal": 3, - "value": { - "$rpc": "null" - } - }, - "a9ec92743b9e": { - "name": "workspaceAgentOverridden", - "ordinal": 2, - "value": false - }, - "aeb25e836f49": { - "name": "ssh.connect#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "ssh.connect" - }, - { - "name": "params", - "value": { - "targetId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 120000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "ssh_failed", - "message": "" - }, - "id": "frame-2", - "ok": false - } - } - }, - "bf0c0c00caf9": { - "name": "repo.hooks#1", - "ordinal": 14, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "d68ba9a6772a": { - "name": "workspaceSshConnecting", - "ordinal": 7, - "value": true - }, - "d760f20b60ad": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" - }, - "e44d3b580ab0": { - "name": "workspaceSshConnecting", - "ordinal": 12, - "value": false - }, - "e588920b23e8": { - "name": "repo.hooks#1", - "ordinal": 13, - "args": [ - { - "name": "method", - "value": "repo.hooks" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "hooks": { - "scripts": { - "setup": "pnpm i" - } - }, - "setupRunPolicy": "never" - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "tw-workspace-ssh-connect-refused", - "checkpoints": [ - { - "id": "connect-refused-empty-message", - "observation": { - "sender": ["5d9791d21090", "aeb25e836f49"], - "payloads": ["d760f20b60ad", "38ce16e16515"], - "settlements": { - "mount": "eb79a9b3682a", - "connect": "eb79a9b3682a" - }, - "state": "8509334ad6ae", - "effects": [ - "11405363c62d", - "a9ec92743b9e", - "9637248df9cb", - "630e2f27face", - "d68ba9a6772a", - "84149cfb1467", - "263b165043b0", - "e44d3b580ab0" - ] - } - }, - { - "id": "setup-skipped", - "observation": { - "sender": ["5d9791d21090", "aeb25e836f49", "e588920b23e8"], - "payloads": ["d760f20b60ad", "38ce16e16515", "bf0c0c00caf9"], - "settlements": { - "mount": "eb79a9b3682a", - "connect": "eb79a9b3682a", - "setup": "2d313c57ddf7" - }, - "state": "55904d40a00f", - "effects": [ - "11405363c62d", - "a9ec92743b9e", - "9637248df9cb", - "630e2f27face", - "d68ba9a6772a", - "84149cfb1467", - "263b165043b0", - "e44d3b580ab0" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json deleted file mode 100644 index 8adacf14c7c..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-ssh", - "family": "tasks.workspace-ssh", - "namedDeltas": [], - "values": { - "0ba2cee4b538": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "command": "pnpm install", - "kind": "prompt", - "setupTrust": { - "contentHash": "hash-1", - "scriptContent": "pnpm install" - }, - "source": "repo" - } - }, - "11405363c62d": { - "name": "workspaceAgent", - "ordinal": 1, - "value": "claude" - }, - "13e6d0c47ca4": { - "name": "workspaceDetectedAgentIds", - "ordinal": 6, - "value": ["codex"] - }, - "18e6a3ac6471": { - "agent": "claude", - "connecting": false, - "detected": ["codex"], - "setup": "unresolved", - "ssh": { - "$rpc": "null" - } - }, - "2bdbcded5f9b": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": ["codex"] - } - } - }, - "38ce16e16515": { - "name": "ssh.connect#1", - "ordinal": 10, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.connect\",\"params\":{\"targetId\":\"ssh-1\"}}" - }, - "43ead075ce12": { - "agent": "claude", - "connecting": false, - "detected": ["codex"], - "setup": { - "command": "pnpm install", - "kind": "prompt", - "setupTrust": { - "contentHash": "hash-1", - "scriptContent": "pnpm install" - }, - "source": "repo" - }, - "ssh": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - }, - "80ffce5fa2b3": { - "name": "workspaceSshState", - "ordinal": 11, - "value": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - }, - "84149cfb1467": { - "name": "workspaceSshState", - "ordinal": 8, - "value": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connecting", - "targetId": "ssh-1" - } - }, - "9637248df9cb": { - "name": "workspaceDetectedAgentIds", - "ordinal": 3, - "value": { - "$rpc": "null" - } - }, - "a1f755a38636": { - "agent": "claude", - "connecting": false, - "detected": ["codex"], - "setup": "unresolved", - "ssh": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - }, - "a9ec92743b9e": { - "name": "workspaceAgentOverridden", - "ordinal": 2, - "value": false - }, - "bf0c0c00caf9": { - "name": "repo.hooks#1", - "ordinal": 14, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "d68ba9a6772a": { - "name": "workspaceSshConnecting", - "ordinal": 7, - "value": true - }, - "d760f20b60ad": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" - }, - "e44d3b580ab0": { - "name": "workspaceSshConnecting", - "ordinal": 12, - "value": false - }, - "e65f26fdbe1a": { - "name": "repo.hooks#1", - "ordinal": 13, - "args": [ - { - "name": "method", - "value": "repo.hooks" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "hooks": { - "scripts": { - "setup": " pnpm install " - } - }, - "setupRunPolicy": "ask", - "setupTrust": { - "contentHash": "hash-1", - "scriptContent": "pnpm install" - }, - "source": "repo" - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "edf7372929cd": { - "name": "ssh.connect#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "ssh.connect" - }, - { - "name": "params", - "value": { - "targetId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 120000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "state": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "connected", - "targetId": "ssh-1" - } - } - } - } - } - }, - "recording": { - "scenario": "tw-workspace-ssh-connected", - "checkpoints": [ - { - "id": "agents-detected", - "observation": { - "sender": ["2bdbcded5f9b"], - "payloads": ["d760f20b60ad"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "18e6a3ac6471", - "effects": ["11405363c62d", "a9ec92743b9e", "9637248df9cb", "13e6d0c47ca4"] - } - }, - { - "id": "connected", - "observation": { - "sender": ["2bdbcded5f9b", "edf7372929cd"], - "payloads": ["d760f20b60ad", "38ce16e16515"], - "settlements": { - "mount": "eb79a9b3682a", - "connect": "eb79a9b3682a" - }, - "state": "a1f755a38636", - "effects": [ - "11405363c62d", - "a9ec92743b9e", - "9637248df9cb", - "13e6d0c47ca4", - "d68ba9a6772a", - "84149cfb1467", - "80ffce5fa2b3", - "e44d3b580ab0" - ] - } - }, - { - "id": "setup-prompted", - "observation": { - "sender": ["2bdbcded5f9b", "edf7372929cd", "e65f26fdbe1a"], - "payloads": ["d760f20b60ad", "38ce16e16515", "bf0c0c00caf9"], - "settlements": { - "mount": "eb79a9b3682a", - "connect": "eb79a9b3682a", - "setup": "0ba2cee4b538" - }, - "state": "43ead075ce12", - "effects": [ - "11405363c62d", - "a9ec92743b9e", - "9637248df9cb", - "13e6d0c47ca4", - "d68ba9a6772a", - "84149cfb1467", - "80ffce5fa2b3", - "e44d3b580ab0" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json deleted file mode 100644 index aac4dd49c3c..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-ssh-local", - "family": "tasks.workspace-ssh-local", - "namedDeltas": [], - "values": { - "057cfe2200b5": { - "name": "preflight.detectAgents#1", - "ordinal": 5, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\",\"params\":{\"repoId\":\"repo-1\"}}" - }, - "11405363c62d": { - "name": "workspaceAgent", - "ordinal": 1, - "value": "claude" - }, - "7400f4eebe66": { - "agent": "claude", - "connecting": false, - "detected": ["codex", "claude"], - "setup": "unresolved", - "ssh": { - "$rpc": "null" - } - }, - "9637248df9cb": { - "name": "workspaceDetectedAgentIds", - "ordinal": 3, - "value": { - "$rpc": "null" - } - }, - "a9ec92743b9e": { - "name": "workspaceAgentOverridden", - "ordinal": 2, - "value": false - }, - "d68cba3b57e1": { - "name": "workspaceDetectedAgentIds", - "ordinal": 6, - "value": ["codex", "claude"] - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "ebcf6c6d8d86": { - "name": "preflight.detectAgents#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "preflight.detectAgents" - }, - { - "name": "params", - "value": { - "repoId": "repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": ["codex", "claude"] - } - } - } - }, - "recording": { - "scenario": "tw-workspace-ssh-local-agents", - "checkpoints": [ - { - "id": "local-agents-detected", - "observation": { - "sender": ["ebcf6c6d8d86"], - "payloads": ["057cfe2200b5"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "7400f4eebe66", - "effects": ["11405363c62d", "a9ec92743b9e", "9637248df9cb", "d68cba3b57e1"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json deleted file mode 100644 index 0c68932630e..00000000000 --- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "tasks.workspace-ssh", - "family": "tasks.workspace-ssh", - "namedDeltas": [], - "values": { - "0f1cf505ed63": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "Connect Repo before creating a workspace.", - "isRpcDeliveryUnknown": false - } - }, - "11405363c62d": { - "name": "workspaceAgent", - "ordinal": 1, - "value": "claude" - }, - "15c8b71a45de": { - "name": "ssh.getState#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "ssh.getState" - }, - { - "name": "params", - "value": { - "targetId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "state": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "disconnected", - "targetId": "ssh-1" - } - } - } - } - }, - "1712c415bebf": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "decision": "inherit", - "kind": "decision" - } - }, - "2b24e6370376": { - "name": "workspaceSshState", - "ordinal": 9, - "value": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "disconnected", - "targetId": "ssh-1" - } - }, - "630e2f27face": { - "name": "workspaceDetectedAgentIds", - "ordinal": 6, - "value": [] - }, - "891e3f4b7bc9": { - "name": "ssh.getState#1", - "ordinal": 8, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" - }, - "904676884ccd": { - "name": "repo.hooks#1", - "ordinal": 10, - "args": [ - { - "name": "method", - "value": "repo.hooks" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "hooks": { - "scripts": {} - } - } - } - } - }, - "9637248df9cb": { - "name": "workspaceDetectedAgentIds", - "ordinal": 3, - "value": { - "$rpc": "null" - } - }, - "9a9cd2877569": { - "agent": "claude", - "connecting": false, - "detected": [], - "setup": { - "decision": "inherit", - "kind": "decision" - }, - "ssh": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "disconnected", - "targetId": "ssh-1" - } - }, - "9cc26a1c5918": { - "name": "repo.hooks#1", - "ordinal": 11, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "a9ec92743b9e": { - "name": "workspaceAgentOverridden", - "ordinal": 2, - "value": false - }, - "bdabc93667d6": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 4, - "args": [ - { - "name": "method", - "value": "preflight.detectRemoteAgents" - }, - { - "name": "params", - "value": { - "connectionId": "ssh-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "forbidden", - "message": "no access" - }, - "id": "frame-1", - "ok": false - } - } - }, - "d3698fc526a8": { - "agent": "claude", - "connecting": false, - "detected": [], - "setup": "unresolved", - "ssh": { - "error": { - "$rpc": "null" - }, - "reconnectAttempt": 0, - "status": "disconnected", - "targetId": "ssh-1" - } - }, - "d760f20b60ad": { - "name": "preflight.detectRemoteAgents#1", - "ordinal": 5, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "tw-workspace-ssh-not-ready", - "checkpoints": [ - { - "id": "ensure-rejected", - "observation": { - "sender": ["bdabc93667d6", "15c8b71a45de"], - "payloads": ["d760f20b60ad", "891e3f4b7bc9"], - "settlements": { - "mount": "eb79a9b3682a", - "ensure": "0f1cf505ed63" - }, - "state": "d3698fc526a8", - "effects": [ - "11405363c62d", - "a9ec92743b9e", - "9637248df9cb", - "630e2f27face", - "2b24e6370376" - ] - } - }, - { - "id": "no-setup-script", - "observation": { - "sender": ["bdabc93667d6", "15c8b71a45de", "904676884ccd"], - "payloads": ["d760f20b60ad", "891e3f4b7bc9", "9cc26a1c5918"], - "settlements": { - "mount": "eb79a9b3682a", - "ensure": "0f1cf505ed63", - "setup": "1712c415bebf" - }, - "state": "9a9cd2877569", - "effects": [ - "11405363c62d", - "a9ec92743b9e", - "9637248df9cb", - "630e2f27face", - "2b24e6370376" - ] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot-unreadable.json b/mobile/rpc-foundation/goldens/worktree-catalog-snapshot-unreadable.json deleted file mode 100644 index f3fa98ebc4c..00000000000 --- a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot-unreadable.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "worktree.catalog-snapshot", - "family": "worktree.catalog-snapshot", - "namedDeltas": [], - "values": { - "253b98015b8d": { - "admitted": "unadmitted", - "fetched": "unfetched" - }, - "34fb08d01b03": { - "name": "worktree.ps#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.ps" - }, - { - "name": "params", - "value": { - "acceptRowDelta": true, - "afterSnapshotId": { - "$rpc": "null" - }, - "limit": 10000 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "7fb1c6f9f3ae": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "RpcIncompatibleReplyError", - "message": "The host sent a reply this app could not read (worktree.ps)", - "isRpcDeliveryUnknown": false, - "code": "incompatible_reply" - } - }, - "817623c64ce1": { - "name": "worktree.ps#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.ps" - }, - { - "name": "params", - "value": { - "acceptRowDelta": true, - "afterSnapshotId": { - "$rpc": "null" - }, - "limit": 10000 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true - } - } - }, - "922cb68379ac": { - "name": "worktree.ps#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.ps\",\"params\":{\"limit\":10000,\"afterSnapshotId\":null,\"acceptRowDelta\":true,\"supportsWorktreeVisibilitySourceDefaults\":true}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - } - }, - "recording": { - "scenario": "worktree-catalog-snapshot-unreadable", - "checkpoints": [ - { - "id": "catalog-pending", - "observation": { - "sender": ["34fb08d01b03"], - "payloads": ["922cb68379ac"], - "settlements": { - "fetch": "9270aeb7d9c6" - }, - "state": "253b98015b8d", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["817623c64ce1"], - "payloads": ["922cb68379ac"], - "settlements": { - "fetch": "7fb1c6f9f3ae" - }, - "state": "253b98015b8d", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot.json b/mobile/rpc-foundation/goldens/worktree-catalog-snapshot.json deleted file mode 100644 index 57a3e0f2b19..00000000000 --- a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "worktree.catalog-snapshot", - "family": "worktree.catalog-snapshot", - "namedDeltas": [], - "values": { - "253b98015b8d": { - "admitted": "unadmitted", - "fetched": "unfetched" - }, - "34fb08d01b03": { - "name": "worktree.ps#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.ps" - }, - { - "name": "params", - "value": { - "acceptRowDelta": true, - "afterSnapshotId": { - "$rpc": "null" - }, - "limit": 10000 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "922cb68379ac": { - "name": "worktree.ps#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.ps\",\"params\":{\"limit\":10000,\"afterSnapshotId\":null,\"acceptRowDelta\":true,\"supportsWorktreeVisibilitySourceDefaults\":true}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "976f56339476": { - "name": "worktree.ps#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.ps" - }, - { - "name": "params", - "value": { - "acceptRowDelta": true, - "afterSnapshotId": { - "$rpc": "null" - }, - "limit": 10000 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "snapshotId": "snapshot-1", - "worktrees": [ - { - "displayName": "One", - "repo": "Repo", - "worktreeId": "w-1" - } - ] - } - } - } - }, - "b0a047ec8551": { - "admitted": [ - { - "displayName": "One", - "repo": "Repo", - "worktreeId": "w-1" - } - ], - "fetched": { - "kind": "response", - "pending": { - "admission": { - "kind": "full", - "snapshotId": "snapshot-1", - "worktrees": [ - { - "displayName": "One", - "repo": "Repo", - "worktreeId": "w-1" - } - ] - }, - "client": "logical-client", - "hostId": "host-1", - "requestedSnapshotId": { - "$rpc": "null" - } - } - } - }, - "e160b2089696": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "kind": "response", - "pending": { - "admission": { - "kind": "full", - "snapshotId": "snapshot-1", - "worktrees": [ - { - "displayName": "One", - "repo": "Repo", - "worktreeId": "w-1" - } - ] - }, - "client": "logical-client", - "hostId": "host-1", - "requestedSnapshotId": { - "$rpc": "null" - } - } - } - } - }, - "recording": { - "scenario": "worktree-catalog-snapshot", - "checkpoints": [ - { - "id": "catalog-pending", - "observation": { - "sender": ["34fb08d01b03"], - "payloads": ["922cb68379ac"], - "settlements": { - "fetch": "9270aeb7d9c6" - }, - "state": "253b98015b8d", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["976f56339476"], - "payloads": ["922cb68379ac"], - "settlements": { - "fetch": "e160b2089696" - }, - "state": "b0a047ec8551", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/worktree-home-catalog.json b/mobile/rpc-foundation/goldens/worktree-home-catalog.json deleted file mode 100644 index 13a7dde432f..00000000000 --- a/mobile/rpc-foundation/goldens/worktree-home-catalog.json +++ /dev/null @@ -1,158 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "worktree.home-catalog", - "family": "worktree.home-catalog", - "namedDeltas": [], - "values": { - "34fb08d01b03": { - "name": "worktree.ps#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.ps" - }, - { - "name": "params", - "value": { - "acceptRowDelta": true, - "afterSnapshotId": { - "$rpc": "null" - }, - "limit": 10000 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "44136fa355b3": {}, - "800962c868e7": { - "host-1": { - "activeCount": 2, - "agents": [], - "countsProvenAt": 1767225600000, - "hostId": "host-1", - "totalWorktrees": 2 - } - }, - "89066e878348": { - "name": "info", - "ordinal": 3, - "value": { - "host-1": { - "activeCount": 2, - "agents": [], - "countsProvenAt": 1767225600000, - "hostId": "host-1", - "totalWorktrees": 2 - } - } - }, - "922cb68379ac": { - "name": "worktree.ps#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.ps\",\"params\":{\"limit\":10000,\"afterSnapshotId\":null,\"acceptRowDelta\":true,\"supportsWorktreeVisibilitySourceDefaults\":true}}" - }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "e36f43e93321": { - "name": "worktree.ps#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.ps" - }, - { - "name": "params", - "value": { - "acceptRowDelta": true, - "afterSnapshotId": { - "$rpc": "null" - }, - "limit": 10000 - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "worktrees": [ - { - "displayName": "One", - "repo": "Repo", - "status": "working", - "worktreeId": "w-1" - }, - { - "displayName": "Two", - "repo": "Repo", - "status": "idle", - "worktreeId": "w-2" - } - ] - } - } - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "worktree-home-catalog", - "checkpoints": [ - { - "id": "catalog-pending", - "observation": { - "sender": ["34fb08d01b03"], - "payloads": ["922cb68379ac"], - "settlements": { - "load": "9270aeb7d9c6" - }, - "state": "44136fa355b3", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["e36f43e93321"], - "payloads": ["922cb68379ac"], - "settlements": { - "load": "eb79a9b3682a" - }, - "state": "800962c868e7", - "effects": ["89066e878348"] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/goldens/worktree-retired-names.json b/mobile/rpc-foundation/goldens/worktree-retired-names.json deleted file mode 100644 index 98d6e137968..00000000000 --- a/mobile/rpc-foundation/goldens/worktree-retired-names.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "goldenFormatVersion": 6, - "operation": "worktree.retired-names", - "family": "worktree.retired-names", - "namedDeltas": [], - "values": { - "3a6762b141aa": { - "name": "worktree.listRetiredNames#1", - "ordinal": 2, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.listRetiredNames\",\"params\":{\"repo\":\"id:repo-1\"}}" - }, - "840eaac5b440": { - "name": "worktree.listRetiredNames#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.listRetiredNames" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, - "85d826c606ff": { - "registry": { - "exhaustedTiers": 2, - "names": ["marlin", "orca"] - } - }, - "97b3650e7890": { - "name": "worktree.listRetiredNames#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "worktree.listRetiredNames" - }, - { - "name": "params", - "value": { - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-1", - "ok": true, - "result": { - "retiredNameTiersByRepo": { - "repo-1": 2 - }, - "retiredNamesByRepo": { - "repo-1": ["marlin", "orca"] - } - } - } - } - }, - "cb76d0017b96": { - "registry": { - "exhaustedTiers": 0, - "names": [] - } - }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - } - }, - "recording": { - "scenario": "worktree-retired-names", - "checkpoints": [ - { - "id": "names-pending", - "observation": { - "sender": ["840eaac5b440"], - "payloads": ["3a6762b141aa"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "cb76d0017b96", - "effects": [] - } - }, - { - "id": "settled", - "observation": { - "sender": ["97b3650e7890"], - "payloads": ["3a6762b141aa"], - "settlements": { - "mount": "eb79a9b3682a" - }, - "state": "85d826c606ff", - "effects": [] - } - } - ] - } -} diff --git a/mobile/rpc-foundation/pilot-scenarios.json b/mobile/rpc-foundation/pilot-scenarios.json index 1f18b79c407..964a487a746 100644 --- a/mobile/rpc-foundation/pilot-scenarios.json +++ b/mobile/rpc-foundation/pilot-scenarios.json @@ -149,45 +149,6 @@ } ] }, - { - "id": "b2", - "operation": "project.update-metadata", - "family": "project-explicit-false", - "sites": ["mobile/src/tasks/project-board/use-mobile-tasks-project-metadata-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "submit", - "id": "submit" - }, - { - "checkpoint": "pending" - }, - { - "complete": "github.project.updateIssueBySlug#1", - "params": { - "owner": "owner", - "repo": "repo", - "host": "github.enterprise.test", - "number": 1, - "updates": { - "addLabels": ["recorded"] - } - }, - "reply": { - "ok": true, - "result": null - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "b3", "operation": "linear.issue-detail", @@ -296,42 +257,6 @@ } ] }, - { - "id": "settings-task-write", - "operation": "settings.task-preferences", - "family": "settings-best-effort", - "sites": ["mobile/src/tasks/screen-state/use-mobile-tasks-client-settings-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "write", - "id": "write", - "args": { - "preset": "my-issues" - } - }, - { - "checkpoint": "optimistic" - }, - { - "complete": "settings.update#1", - "params": { - "defaultTaskViewPreset": "my-issues" - }, - "reject": { - "message": "write disconnected", - "deliveryUnknown": true - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "settings-bot-overrides-fulfilled", "operation": "settings.bot-overrides", @@ -878,290 +803,6 @@ } ] }, - { - "id": "settings-repo-metadata-icons", - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "sites": ["mobile/src/host-screen/catalog/use-host-repo-metadata.ts"], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "load", - "id": "load" - }, - { - "complete": "repo.list#1", - "params": { - "afterSnapshotId": null - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-1", - "displayName": "Lucide", - "badgeColor": "#123456", - "repoIcon": { - "type": "lucide", - "name": "Rocket" - }, - "connectionId": null - }, - { - "id": "repo-2", - "displayName": "Emoji", - "repoIcon": { - "type": "emoji", - "emoji": "🐳" - }, - "connectionId": "ssh-1" - }, - { - "id": "repo-3", - "displayName": "Avatar", - "repoIcon": { - "type": "image", - "src": "https://github.com/acme.png?size=64", - "source": "github", - "label": "acme/orca" - }, - "executionHostId": "ssh:ssh-1" - } - ] - } - } - }, - { - "complete": "ssh.listTargetSummaries#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [], - "hostSettingOverrides": {} - } - } - } - }, - { - "complete": "host.platform#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "platform": "darwin" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "settings-repo-metadata-refused", - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "sites": ["mobile/src/host-screen/catalog/use-host-repo-metadata.ts"], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "load", - "id": "load" - }, - { - "complete": "repo.list#1", - "params": { - "afterSnapshotId": null - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-1", - "displayName": "Local", - "connectionId": null - }, - { - "id": "repo-2", - "displayName": "Remote", - "connectionId": "ssh-1" - } - ] - } - } - }, - { - "complete": "ssh.listTargetSummaries#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": false, - "error": { - "code": "refused", - "message": "settings refused" - } - } - }, - { - "complete": "host.platform#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "platform": "linux" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "settings-repo-metadata-transport-error", - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "sites": ["mobile/src/host-screen/catalog/use-host-repo-metadata.ts"], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "load", - "id": "load" - }, - { - "complete": "repo.list#1", - "params": { - "afterSnapshotId": null - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-1", - "displayName": "Local", - "connectionId": null - }, - { - "id": "repo-2", - "displayName": "Remote", - "connectionId": "ssh-1" - } - ] - } - } - }, - { - "complete": "ssh.listTargetSummaries#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reject": { - "message": "settings disconnected", - "deliveryUnknown": true - } - }, - { - "complete": "host.platform#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "platform": "linux" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "settings-task-hydration-fulfilled", "operation": "settings.task-hydration", @@ -1261,100 +902,6 @@ } ] }, - { - "id": "settings-task-hydration-refused", - "operation": "settings.task-hydration", - "family": "settings.task-hydration", - "sites": ["mobile/src/tasks/screen-state/use-mobile-tasks-runtime-hydration.tsx"], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "capabilities": ["mobile.tasks.v1"] - } - } - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": false, - "error": { - "code": "refused", - "message": "settings refused" - } - } - }, - { - "complete": "ui.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "ui": {} - } - } - }, - { - "complete": "preflight.check#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "glab": { - "installed": false - } - } - } - }, - { - "complete": "linear.status#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "connected": false - } - } - }, - { - "complete": "jira.status#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "connected": false - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "settings-task-hydration-transport-error", "operation": "settings.task-hydration", @@ -1487,75 +1034,6 @@ } ] }, - { - "id": "settings-workspace-submit-refused", - "operation": "settings.workspace-submit", - "family": "settings.workspace-submit", - "sites": ["mobile/src/components/use-new-workspace-create-submit.ts"], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "submit", - "id": "submit" - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": false, - "error": { - "code": "refused", - "message": "settings refused" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "settings-workspace-submit-transport-error", - "operation": "settings.workspace-submit", - "family": "settings.workspace-submit", - "sites": ["mobile/src/components/use-new-workspace-create-submit.ts"], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "submit", - "id": "submit" - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reject": { - "message": "settings disconnected", - "deliveryUnknown": true - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "settings-task-workspace-fulfilled", "operation": "settings.task-workspace", @@ -1599,154 +1077,6 @@ } ] }, - { - "id": "settings-task-workspace-refused", - "operation": "settings.task-workspace", - "family": "settings.task-workspace", - "sites": [ - "mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-create-actions.tsx" - ], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "submit", - "id": "submit" - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": false, - "error": { - "code": "refused", - "message": "settings refused" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "settings-task-workspace-transport-error", - "operation": "settings.task-workspace", - "family": "settings.task-workspace", - "sites": [ - "mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-create-actions.tsx" - ], - "schedules": ["settings-first"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "submit", - "id": "submit" - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reject": { - "message": "settings disconnected", - "deliveryUnknown": true - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "settings-task-workspace-create-linear", - "operation": "settings.task-workspace-create", - "family": "settings.task-workspace-create", - "sites": [ - "mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-create-actions.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "submit", - "id": "submit", - "args": { - "item": { - "key": "linear:1", - "provider": "linear", - "title": "Recorded issue", - "source": { - "identifier": "ORC-1", - "title": "Recorded issue", - "url": "https://linear.app/orca/issue/ORC-1" - } - } - } - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "disabledTuiAgents": [], - "defaultTuiAgent": "codex" - } - } - } - }, - { - "complete": "worktree.create#1", - "params": { - "repo": "id:repo-1", - "name": "orc-1", - "displayName": "ORC-1 Recorded issue", - "displayNameKind": "generated", - "linkedLinearIssue": "ORC-1", - "setupDecision": "inherit", - "activate": true, - "startupDraft": "https://linear.app/orca/issue/ORC-1", - "createdWithAgent": "claude" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "id": "wt-1", - "displayName": "ORC-1 Recorded issue" - } - } - } - }, - { - "checkpoint": "created" - } - ] - }, { "id": "settings-task-workspace-create-pr-start-point", "operation": "settings.task-workspace-create", @@ -2434,177 +1764,6 @@ } ] }, - { - "id": "settings-repo-metadata-refuse-after-data", - "operation": "settings.repo-metadata", - "family": "settings.repo-metadata", - "sites": ["mobile/src/host-screen/catalog/use-host-repo-metadata.ts"], - "schedules": ["success-then-refused"], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "load", - "id": "load" - }, - { - "complete": "repo.list#1", - "params": { - "afterSnapshotId": null - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-1", - "displayName": "Local", - "connectionId": null - }, - { - "id": "repo-2", - "displayName": "Remote", - "connectionId": "ssh-1" - } - ] - } - } - }, - { - "complete": "ssh.listTargetSummaries#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - }, - { - "checkpoint": "settings-pending" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "disabledTuiAgents": ["claude"], - "defaultTuiAgent": "codex", - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"], - "hostSettingOverrides": {} - } - } - } - }, - { - "complete": "host.platform#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "platform": "linux" - } - } - }, - { - "checkpoint": "settled" - }, - { - "checkpoint": "data-present" - }, - { - "action": "load", - "id": "reload" - }, - { - "checkpoint": "refresh-pending" - }, - { - "complete": "repo.list#2", - "params": { - "afterSnapshotId": null - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-1", - "displayName": "Local", - "connectionId": null - }, - { - "id": "repo-2", - "displayName": "Remote", - "connectionId": "ssh-1" - } - ] - } - } - }, - { - "complete": "ssh.listTargetSummaries#2", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "targets": [ - { - "id": "ssh-1", - "label": "SSH" - } - ] - } - } - }, - { - "complete": "settings.get#2", - "params": { - "$undefined": true - }, - "reply": { - "ok": false, - "error": { - "code": "refused", - "message": "settings refused" - } - } - }, - { - "complete": "host.platform#2", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "platform": "linux" - } - } - }, - { - "checkpoint": "refused-after-data" - } - ] - }, { "id": "settings-task-hydration-refuse-after-data", "operation": "settings.task-hydration", @@ -3375,57 +2534,6 @@ } ] }, - { - "id": "sc-review-status-normalized", - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-git-preparation.ts" - ], - "schedules": [], - "steps": [ - { - "action": "status", - "id": "status" - }, - { - "checkpoint": "pending" - }, - { - "complete": "git.status#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "abc1234", - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "area": "staged" - }, - { - "path": "src/new.ts", - "status": "untracked", - "area": "untracked" - } - ], - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "sc-review-status-entries-not-array", "operation": "source-control.review-git-preparation", @@ -3457,38 +2565,6 @@ } ] }, - { - "id": "sc-review-commit", - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-git-preparation.ts" - ], - "schedules": [], - "steps": [ - { - "action": "commit", - "id": "commit" - }, - { - "complete": "git.commit#1", - "params": { - "worktree": "id:repo42::/p", - "message": "recorded message" - }, - "reply": { - "ok": true, - "result": { - "success": true, - "commit": "abc1234" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "sc-review-commit-inner-failure", "operation": "source-control.review-git-preparation", @@ -3521,108 +2597,6 @@ } ] }, - { - "id": "sc-review-commit-refused-empty-message", - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-git-preparation.ts" - ], - "schedules": [], - "steps": [ - { - "action": "commit", - "id": "commit" - }, - { - "complete": "git.commit#1", - "params": { - "worktree": "id:repo42::/p", - "message": "recorded message" - }, - "reply": { - "ok": false, - "error": { - "code": "internal", - "message": "" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "sc-review-commit-rejected", - "operation": "source-control.review-git-preparation", - "family": "git.review-preparation", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-git-preparation.ts" - ], - "schedules": [], - "steps": [ - { - "action": "commit", - "id": "commit" - }, - { - "complete": "git.commit#1", - "params": { - "worktree": "id:repo42::/p", - "message": "recorded message" - }, - "reject": { - "message": "connection lost", - "deliveryUnknown": true - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "sc-prerequisite-push", - "operation": "source-control.remote-prerequisite", - "family": "git.remote-prerequisite", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-remote-prerequisite.ts" - ], - "schedules": [], - "steps": [ - { - "action": "apply", - "id": "apply", - "args": { - "blockedReason": "needs_push", - "upstreamStatus": { - "hasUpstream": true, - "ahead": 1, - "behind": 0 - } - } - }, - { - "checkpoint": "pending" - }, - { - "complete": "git.push#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "sc-prerequisite-publish", "operation": "source-control.remote-prerequisite", @@ -3768,49 +2742,6 @@ } ] }, - { - "id": "sc-eligibility-fetched", - "operation": "source-control.hosted-review-eligibility", - "family": "hostedReview.eligibility", - "sites": ["mobile/src/source-control/review/creation/mobile-hosted-review-service.ts"], - "schedules": [], - "steps": [ - { - "action": "fetch", - "id": "fetch" - }, - { - "checkpoint": "pending" - }, - { - "complete": "hostedReview.getCreationEligibility#1", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "branch": "feature", - "base": null, - "linkedGitHubPR": null, - "linkedGitLabMR": null - }, - "reply": { - "ok": true, - "result": { - "provider": "gitlab", - "defaultBaseRef": "main", - "title": "Host title", - "body": "Host body", - "canCreate": true, - "blockedReason": null, - "nextAction": null, - "reviewLookupOutcome": "none" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "sc-prefill-unavailable-on-refusal", "operation": "source-control.hosted-review-eligibility", @@ -3845,115 +2776,6 @@ } ] }, - { - "id": "sc-prefill-unavailable-on-rejection", - "operation": "source-control.hosted-review-eligibility", - "family": "hostedReview.eligibility", - "sites": ["mobile/src/source-control/review/creation/mobile-hosted-review-service.ts"], - "schedules": [], - "steps": [ - { - "action": "prefill", - "id": "prefill" - }, - { - "complete": "hostedReview.getCreationEligibility#1", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "branch": "feature", - "base": null, - "linkedGitHubPR": null, - "linkedGitLabMR": null - }, - "reject": { - "message": "transport failure", - "deliveryUnknown": true - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "sc-create-pushes-then-creates", - "operation": "source-control.hosted-review-create", - "family": "hostedReview.create-chain", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-service.ts", - "mobile/src/source-control/review/mobile-pr-link.ts" - ], - "schedules": [], - "steps": [ - { - "action": "create", - "id": "create", - "args": { - "pushBeforeCreate": true - } - }, - { - "checkpoint": "push-pending" - }, - { - "complete": "git.push#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "create-pending" - }, - { - "complete": "hostedReview.create#1", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "provider": "github", - "base": "main", - "head": "feature", - "title": "Recorded title", - "body": "Recorded body", - "draft": false - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "number": 5, - "url": "https://review.test/5" - } - } - }, - { - "checkpoint": "link-pending" - }, - { - "complete": "worktree.set#1", - "params": { - "worktree": "id:repo42::/p", - "baseRef": "main", - "linkedPR": 5 - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "sc-create-link-failure-is-non-fatal", "operation": "source-control.hosted-review-create", @@ -4068,359 +2890,6 @@ } ] }, - { - "id": "sc-create-refused-empty-message", - "operation": "source-control.hosted-review-create", - "family": "hostedReview.create-chain", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-service.ts", - "mobile/src/source-control/review/mobile-pr-link.ts" - ], - "schedules": [], - "steps": [ - { - "action": "create", - "id": "create", - "args": {} - }, - { - "complete": "hostedReview.create#1", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "provider": "github", - "base": "main", - "head": "feature", - "title": "Recorded title", - "body": "Recorded body", - "draft": false - }, - "reply": { - "ok": false, - "error": { - "code": "internal", - "message": "" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "sc-create-rejected-empty-message", - "operation": "source-control.hosted-review-create", - "family": "hostedReview.create-chain", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-service.ts", - "mobile/src/source-control/review/mobile-pr-link.ts" - ], - "schedules": [], - "steps": [ - { - "action": "create", - "id": "create", - "args": {} - }, - { - "complete": "hostedReview.create#1", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "provider": "github", - "base": "main", - "head": "feature", - "title": "Recorded title", - "body": "Recorded body", - "draft": false - }, - "reject": { - "message": "", - "deliveryUnknown": true - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "sc-create-intent-stage-commit-push-create", - "operation": "source-control.create-intent", - "family": "hostedReview.create-intent", - "sites": [ - "mobile/src/source-control/review/creation/mobile-hosted-review-create-intent-runner.ts", - "mobile/src/source-control/review/creation/mobile-hosted-review-create-intent.ts" - ], - "schedules": [], - "steps": [ - { - "action": "run", - "id": "run", - "args": {} - }, - { - "checkpoint": "initial-status-pending" - }, - { - "complete": "git.status#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "abc1234", - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "area": "staged" - }, - { - "path": "src/new.ts", - "status": "untracked", - "area": "untracked" - } - ], - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - }, - { - "checkpoint": "stage-pending" - }, - { - "complete": "git.bulkStage#1", - "params": { - "worktree": "id:repo42::/p", - "filePaths": ["src/new.ts"] - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "complete": "git.status#2", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "abc1234", - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "area": "staged" - } - ], - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - }, - { - "checkpoint": "generate-message-pending" - }, - { - "complete": "git.generateCommitMessage#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "success": true, - "message": "feat: recorded" - } - } - }, - { - "checkpoint": "commit-pending" - }, - { - "complete": "git.commit#1", - "params": { - "worktree": "id:repo42::/p", - "message": "feat: recorded" - }, - "reply": { - "ok": true, - "result": { - "success": true - } - } - }, - { - "complete": "git.status#3", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "def5678", - "entries": [], - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "hasUpstream": true - } - } - } - }, - { - "checkpoint": "prefill-pending" - }, - { - "complete": "hostedReview.getCreationEligibility#1", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "branch": "feature", - "base": null, - "hasUncommittedChanges": false, - "hasUpstream": true, - "ahead": 1, - "behind": 0, - "linkedGitHubPR": null, - "linkedGitLabMR": null - }, - "reply": { - "ok": true, - "result": { - "provider": "github", - "defaultBaseRef": "main", - "title": "Host title", - "body": "Host body", - "canCreate": false, - "blockedReason": "needs_push", - "nextAction": null, - "reviewLookupOutcome": "not_found" - } - } - }, - { - "checkpoint": "push-pending" - }, - { - "complete": "git.push#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "complete": "git.status#4", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "def5678", - "entries": [], - "upstreamStatus": { - "ahead": 0, - "behind": 0, - "hasUpstream": true - } - } - } - }, - { - "complete": "hostedReview.getCreationEligibility#2", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "branch": "feature", - "base": null, - "hasUncommittedChanges": false, - "hasUpstream": true, - "ahead": 0, - "behind": 0, - "linkedGitHubPR": null, - "linkedGitLabMR": null - }, - "reply": { - "ok": true, - "result": { - "provider": "github", - "defaultBaseRef": "main", - "title": "Host title", - "body": "Host body", - "canCreate": true, - "blockedReason": null, - "nextAction": null, - "reviewLookupOutcome": "not_found" - } - } - }, - { - "checkpoint": "create-pending" - }, - { - "complete": "hostedReview.create#1", - "params": { - "repo": "id:repo42", - "worktree": "id:repo42::/p", - "provider": "github", - "base": "main", - "head": "feature", - "title": "Host title", - "body": "Host body", - "draft": false - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "number": 5, - "url": "https://review.test/5" - } - } - }, - { - "complete": "worktree.set#1", - "params": { - "worktree": "id:repo42::/p", - "baseRef": "main", - "linkedPR": 5 - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "sc-create-intent-unlisted-provider", "operation": "source-control.create-intent", @@ -4894,1025 +3363,6 @@ } ] }, - { - "id": "tw-setup-hook-trust-approved", - "operation": "tasks.setup-hook-trust", - "family": "worktree.setup-hook-trust", - "sites": ["mobile/src/new-workspace/creation/setup-hook-trust.ts"], - "schedules": [], - "steps": [ - { - "action": "approve", - "id": "approve" - }, - { - "complete": "ui.set#1", - "params": { - "trustedOrcaHooks": { - "repo-1": { - "setup": { - "contentHash": "hash-1", - "approvedAt": 1767225600000 - } - } - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "approved" - } - ] - }, - { - "id": "tw-setup-hook-trust-always", - "operation": "tasks.setup-hook-trust", - "family": "worktree.setup-hook-trust", - "sites": ["mobile/src/new-workspace/creation/setup-hook-trust.ts"], - "schedules": [], - "steps": [ - { - "action": "approve", - "id": "approve", - "args": { - "always": true - } - }, - { - "complete": "ui.set#1", - "params": { - "trustedOrcaHooks": { - "repo-1": { - "setup": { - "contentHash": "hash-1", - "approvedAt": 1767225600000 - }, - "all": { - "approvedAt": 1767225600000 - } - } - } - }, - "reply": { - "ok": false, - "error": { - "code": "forbidden", - "message": "" - } - } - }, - { - "checkpoint": "refused-empty-message" - } - ] - }, - { - "id": "tw-smart-search-all-providers", - "operation": "tasks.smart-source-search", - "family": "tasks.smart-source-search", - "sites": ["mobile/src/new-workspace/source-selection/smart-source-search-requests.ts"], - "schedules": [], - "steps": [ - { - "action": "github", - "id": "github" - }, - { - "complete": "github.listWorkItems#1", - "params": { - "repo": "id:repo-1", - "limit": 36, - "query": "bug" - }, - "reply": { - "ok": true, - "result": { - "items": [ - { - "id": "issue:1", - "type": "issue", - "number": 1, - "title": "one", - "state": "open", - "url": "", - "labels": [], - "updatedAt": "2020-01-01T00:00:00.000Z", - "author": null - } - ] - } - } - }, - { - "checkpoint": "github-items" - }, - { - "action": "gitlab", - "id": "gitlab" - }, - { - "complete": "gitlab.listWorkItems#1", - "params": { - "repo": "id:repo-1", - "state": "opened", - "page": 1, - "perPage": 50, - "query": "bug" - }, - "reply": { - "ok": true, - "result": { - "items": [ - { - "id": "issue:2", - "type": "issue", - "number": 2, - "title": "two", - "state": "opened", - "url": "", - "labels": [], - "updatedAt": "2020-01-01T00:00:00.000Z", - "author": null - } - ], - "error": { - "type": "not_found", - "message": "missing" - } - } - } - }, - { - "checkpoint": "gitlab-items" - }, - { - "action": "linear", - "id": "linear" - }, - { - "complete": "linear.searchIssues#1", - "params": { - "query": "bug", - "limit": 50, - "workspaceId": "linear-workspace" - }, - "reply": { - "ok": true, - "result": { - "items": [ - { - "id": "issue-1", - "identifier": "ENG-1", - "title": "A searched issue", - "url": "", - "state": { - "name": "Todo", - "type": "unstarted", - "color": "#000" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "labels": [], - "priority": 0, - "updatedAt": "2020-01-01T00:00:00.000Z", - "workspaceId": "linear-workspace" - } - ] - } - } - }, - { - "checkpoint": "linear-search" - }, - { - "action": "branches", - "id": "branches" - }, - { - "complete": "repo.searchRefs#1", - "params": { - "repo": "id:repo-1", - "query": "bug", - "limit": 20 - }, - "reply": { - "ok": true, - "result": { - "refs": ["main", "release"] - } - } - }, - { - "checkpoint": "branch-refs" - }, - { - "action": "linear", - "id": "linear-assigned", - "args": { - "query": " ", - "workspace": null - } - }, - { - "complete": "linear.listIssues#1", - "params": { - "filter": "assigned", - "limit": 50, - "workspaceId": { - "$undefined": true - } - }, - "reply": { - "ok": true, - "result": [ - { - "id": "issue-3", - "identifier": "ENG-3", - "title": "An assigned issue", - "url": "", - "state": { - "name": "In Progress", - "type": "started", - "color": "#111" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "labels": [], - "priority": 2, - "updatedAt": "2020-01-02T00:00:00.000Z", - "workspaceId": "linear-workspace" - } - ] - } - }, - { - "checkpoint": "linear-assigned-listed" - } - ] - }, - { - "id": "tw-smart-search-linear-listed", - "operation": "tasks.smart-source-search", - "family": "tasks.smart-source-search", - "sites": ["mobile/src/new-workspace/source-selection/smart-source-search-requests.ts"], - "schedules": [], - "steps": [ - { - "action": "linear", - "id": "linear", - "args": { - "query": " ", - "workspace": null - } - }, - { - "complete": "linear.listIssues#1", - "params": { - "filter": "assigned", - "limit": 50, - "workspaceId": { - "$undefined": true - } - }, - "reply": { - "ok": true, - "result": [ - { - "id": "issue-2", - "identifier": "ENG-2", - "title": "An assigned issue", - "url": "", - "state": { - "name": "Todo", - "type": "unstarted", - "color": "#000" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "labels": [], - "priority": 0, - "updatedAt": "2020-01-01T00:00:00.000Z", - "workspaceId": "linear-workspace" - } - ] - } - }, - { - "checkpoint": "linear-assigned" - } - ] - }, - { - "id": "tw-smart-search-gitlab-provider-error", - "operation": "tasks.smart-source-search", - "family": "tasks.smart-source-search", - "sites": ["mobile/src/new-workspace/source-selection/smart-source-search-requests.ts"], - "schedules": [], - "steps": [ - { - "action": "gitlab", - "id": "gitlab" - }, - { - "complete": "gitlab.listWorkItems#1", - "params": { - "repo": "id:repo-1", - "state": "opened", - "page": 1, - "perPage": 50, - "query": "bug" - }, - "reply": { - "ok": true, - "result": { - "items": [], - "error": { - "type": "quota", - "message": "rate limited" - } - } - } - }, - { - "checkpoint": "in-band-provider-error" - }, - { - "action": "branches", - "id": "branches", - "args": { - "query": " main " - } - }, - { - "complete": "repo.searchRefs#1", - "params": { - "repo": "id:repo-1", - "query": "main", - "limit": 20 - }, - "reply": { - "ok": true, - "result": { - "refDetails": [ - { - "refName": "origin/main", - "localBranchName": "main" - } - ] - } - } - }, - { - "checkpoint": "branch-ref-details" - } - ] - }, - { - "id": "tw-paste-lookup-resolved", - "operation": "tasks.paste-lookup", - "family": "tasks.paste-lookup", - "sites": ["mobile/src/new-workspace/source-selection/smart-source-paste-intent.ts"], - "schedules": [], - "steps": [ - { - "action": "by-number", - "id": "by-number" - }, - { - "complete": "github.workItem#1", - "params": { - "repo": "id:repo-1", - "number": 12 - }, - "reply": { - "ok": true, - "result": { - "id": "issue:12", - "type": "issue", - "number": 12, - "title": "twelve", - "state": "open", - "url": "", - "labels": [], - "updatedAt": "2020-01-01T00:00:00.000Z", - "author": null - } - } - }, - { - "checkpoint": "by-number" - }, - { - "action": "by-slug", - "id": "by-slug" - }, - { - "complete": "github.workItemByOwnerRepo#1", - "params": { - "repo": "id:repo-1", - "owner": "owner", - "ownerRepo": "repo", - "number": 12, - "type": "issue" - }, - "reply": { - "ok": true, - "result": { - "id": "issue:12", - "type": "issue", - "number": 12, - "title": "twelve", - "state": "open", - "url": "", - "labels": [], - "updatedAt": "2020-01-01T00:00:00.000Z", - "author": null - } - } - }, - { - "checkpoint": "by-slug" - }, - { - "action": "gitlab-path", - "id": "gitlab-path" - }, - { - "complete": "gitlab.workItemByPath#1", - "params": { - "repo": "id:repo-1", - "host": "gitlab.com", - "path": "group/project", - "iid": 7, - "type": "issue" - }, - "reply": { - "ok": true, - "result": { - "id": "issue:7", - "type": "issue", - "number": 7, - "title": "seven", - "state": "opened", - "url": "", - "labels": [], - "updatedAt": "2020-01-01T00:00:00.000Z", - "author": null - } - } - }, - { - "checkpoint": "gitlab-path" - }, - { - "action": "repo-slug", - "id": "repo-slug" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - }, - { - "checkpoint": "repo-slug-matched" - } - ] - }, - { - "id": "tw-paste-lookup-slug-unsupported", - "operation": "tasks.paste-lookup", - "family": "tasks.paste-lookup", - "sites": ["mobile/src/new-workspace/source-selection/smart-source-paste-intent.ts"], - "schedules": [], - "steps": [ - { - "action": "repo-slug", - "id": "repo-slug" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": false, - "error": { - "code": "method_not_found", - "message": "Unknown method" - } - } - }, - { - "checkpoint": "host-wide-probe-cached" - }, - { - "action": "repo-slug-again", - "id": "repo-slug-again" - }, - { - "checkpoint": "no-second-probe" - } - ] - }, - { - "id": "tw-paste-lookup-slug-refused", - "operation": "tasks.paste-lookup", - "family": "tasks.paste-lookup", - "sites": ["mobile/src/new-workspace/source-selection/smart-source-paste-intent.ts"], - "schedules": [], - "steps": [ - { - "action": "repo-slug", - "id": "repo-slug" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": false, - "error": { - "code": "forbidden", - "message": "no access" - } - } - }, - { - "complete": "github.repoSlug#2", - "params": { - "repo": "id:repo-2" - }, - "reply": { - "ok": true, - "result": null - } - }, - { - "checkpoint": "refusal-is-per-repo" - } - ] - }, - { - "id": "tw-workspace-source-presets", - "operation": "tasks.workspace-source", - "family": "tasks.workspace-source", - "sites": [ - "mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-source-effects.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "repo.sparsePresets#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "presets": [ - { - "id": "p1", - "name": "docs", - "directories": ["docs"] - } - ] - } - } - }, - { - "checkpoint": "presets-loaded" - }, - { - "action": "branch-query", - "id": "branch-query" - }, - { - "complete": "repo.searchRefs#1", - "params": { - "repo": "id:repo-1", - "query": "main", - "limit": 20 - }, - "reply": { - "ok": true, - "result": { - "refs": ["main"] - } - } - }, - { - "checkpoint": "branches-loaded" - } - ] - }, - { - "id": "tw-workspace-source-presets-refused", - "operation": "tasks.workspace-source", - "family": "tasks.workspace-source", - "sites": [ - "mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-source-effects.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "repo.sparsePresets#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": false, - "error": { - "code": "forbidden", - "message": "" - } - } - }, - { - "checkpoint": "presets-refused-empty-message" - } - ] - }, - { - "id": "tw-workspace-sparse-saved", - "operation": "tasks.workspace-sparse", - "family": "tasks.workspace-sparse", - "sites": [ - "mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-sparse-actions.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "ssh.getState#1", - "params": { - "targetId": "ssh-1" - }, - "reply": { - "ok": true, - "result": { - "state": { - "targetId": "ssh-1", - "status": "connected", - "error": null, - "reconnectAttempt": 0 - } - } - } - }, - { - "checkpoint": "ssh-state-read" - }, - { - "action": "save-preset", - "id": "save" - }, - { - "complete": "repo.saveSparsePreset#1", - "params": { - "repo": "id:repo-1", - "name": "docs", - "directories": ["docs"] - }, - "reply": { - "ok": true, - "result": { - "preset": { - "id": "p1", - "name": "docs", - "directories": ["docs"] - } - } - } - }, - { - "checkpoint": "preset-saved" - } - ] - }, - { - "id": "tw-workspace-sparse-missing-preset", - "operation": "tasks.workspace-sparse", - "family": "tasks.workspace-sparse", - "sites": [ - "mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-sparse-actions.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "ssh.getState#1", - "params": { - "targetId": "ssh-1" - }, - "reply": { - "ok": false, - "error": { - "code": "forbidden", - "message": "" - } - } - }, - { - "action": "save-preset", - "id": "save" - }, - { - "complete": "repo.saveSparsePreset#1", - "params": { - "repo": "id:repo-1", - "name": "docs", - "directories": ["docs"] - }, - "reply": { - "ok": true, - "result": {} - } - }, - { - "checkpoint": "saved-without-preset" - } - ] - }, - { - "id": "tw-workspace-ssh-connected", - "operation": "tasks.workspace-ssh", - "family": "tasks.workspace-ssh", - "sites": ["mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-ssh-state.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "preflight.detectRemoteAgents#1", - "params": { - "connectionId": "ssh-1" - }, - "reply": { - "ok": true, - "result": ["codex"] - } - }, - { - "checkpoint": "agents-detected" - }, - { - "action": "connect", - "id": "connect" - }, - { - "complete": "ssh.connect#1", - "params": { - "targetId": "ssh-1" - }, - "reply": { - "ok": true, - "result": { - "state": { - "targetId": "ssh-1", - "status": "connected", - "error": null, - "reconnectAttempt": 0 - } - } - } - }, - { - "checkpoint": "connected" - }, - { - "action": "resolve-setup", - "id": "setup" - }, - { - "complete": "repo.hooks#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "hooks": { - "scripts": { - "setup": " pnpm install " - } - }, - "setupRunPolicy": "ask", - "source": "repo", - "setupTrust": { - "contentHash": "hash-1", - "scriptContent": "pnpm install" - } - } - } - }, - { - "checkpoint": "setup-prompted" - } - ] - }, - { - "id": "tw-workspace-ssh-not-ready", - "operation": "tasks.workspace-ssh", - "family": "tasks.workspace-ssh", - "sites": ["mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-ssh-state.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "preflight.detectRemoteAgents#1", - "params": { - "connectionId": "ssh-1" - }, - "reply": { - "ok": false, - "error": { - "code": "forbidden", - "message": "no access" - } - } - }, - { - "action": "ensure-ready", - "id": "ensure" - }, - { - "complete": "ssh.getState#1", - "params": { - "targetId": "ssh-1" - }, - "reply": { - "ok": true, - "result": { - "state": { - "targetId": "ssh-1", - "status": "disconnected", - "error": null, - "reconnectAttempt": 0 - } - } - } - }, - { - "checkpoint": "ensure-rejected" - }, - { - "action": "resolve-setup", - "id": "setup" - }, - { - "complete": "repo.hooks#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "hooks": { - "scripts": {} - } - } - } - }, - { - "checkpoint": "no-setup-script" - } - ] - }, - { - "id": "tw-workspace-ssh-connect-refused", - "operation": "tasks.workspace-ssh", - "family": "tasks.workspace-ssh", - "sites": ["mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-ssh-state.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "preflight.detectRemoteAgents#1", - "params": { - "connectionId": "ssh-1" - }, - "reject": { - "message": "Connection lost", - "deliveryUnknown": true - } - }, - { - "action": "connect", - "id": "connect" - }, - { - "complete": "ssh.connect#1", - "params": { - "targetId": "ssh-1" - }, - "reply": { - "ok": false, - "error": { - "code": "ssh_failed", - "message": "" - } - } - }, - { - "checkpoint": "connect-refused-empty-message" - }, - { - "action": "resolve-setup", - "id": "setup" - }, - { - "complete": "repo.hooks#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "hooks": { - "scripts": { - "setup": "pnpm i" - } - }, - "setupRunPolicy": "never" - } - } - }, - { - "checkpoint": "setup-skipped" - } - ] - }, - { - "id": "tw-workspace-ssh-local-agents", - "operation": "tasks.workspace-ssh-local", - "family": "tasks.workspace-ssh-local", - "sites": ["mobile/src/tasks/workspace-creation/use-mobile-tasks-workspace-ssh-state.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "preflight.detectAgents#1", - "params": { - "repoId": "repo-1" - }, - "reply": { - "ok": true, - "result": ["codex", "claude"] - } - }, - { - "checkpoint": "local-agents-detected" - } - ] - }, { "id": "tw-task-preferences-resume-write", "operation": "settings.task-preferences", @@ -6049,161 +3499,6 @@ } ] }, - { - "id": "worktree-home-catalog", - "operation": "worktree.home-catalog", - "family": "worktree.home-catalog", - "sites": ["mobile/src/worktree/home-host-worktree-fetch.ts"], - "schedules": [], - "steps": [ - { - "action": "load", - "id": "load" - }, - { - "checkpoint": "catalog-pending" - }, - { - "complete": "worktree.ps#1", - "params": { - "limit": 10000, - "supportsWorktreeVisibilitySourceDefaults": true, - "afterSnapshotId": null, - "acceptRowDelta": true - }, - "reply": { - "ok": true, - "result": { - "worktrees": [ - { - "worktreeId": "w-1", - "displayName": "One", - "repo": "Repo", - "status": "working" - }, - { - "worktreeId": "w-2", - "displayName": "Two", - "repo": "Repo", - "status": "idle" - } - ] - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "worktree-catalog-snapshot", - "operation": "worktree.catalog-snapshot", - "family": "worktree.catalog-snapshot", - "sites": ["mobile/src/worktree/worktree-catalog-snapshot-client.ts"], - "schedules": [], - "steps": [ - { - "action": "fetch", - "id": "fetch" - }, - { - "checkpoint": "catalog-pending" - }, - { - "complete": "worktree.ps#1", - "params": { - "limit": 10000, - "supportsWorktreeVisibilitySourceDefaults": true, - "afterSnapshotId": null, - "acceptRowDelta": true - }, - "reply": { - "ok": true, - "result": { - "snapshotId": "snapshot-1", - "worktrees": [ - { - "worktreeId": "w-1", - "displayName": "One", - "repo": "Repo" - } - ] - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "worktree-catalog-snapshot-unreadable", - "operation": "worktree.catalog-snapshot", - "family": "worktree.catalog-snapshot", - "sites": ["mobile/src/worktree/worktree-catalog-snapshot-client.ts"], - "schedules": [], - "steps": [ - { - "action": "fetch", - "id": "fetch" - }, - { - "checkpoint": "catalog-pending" - }, - { - "complete": "worktree.ps#1", - "params": { - "limit": 10000, - "supportsWorktreeVisibilitySourceDefaults": true, - "afterSnapshotId": null, - "acceptRowDelta": true - }, - "reply": { - "ok": true - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "worktree-retired-names", - "operation": "worktree.retired-names", - "family": "worktree.retired-names", - "sites": ["mobile/src/worktree/use-retired-worktree-names.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "checkpoint": "names-pending" - }, - { - "complete": "worktree.listRetiredNames#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "retiredNamesByRepo": { - "repo-1": ["marlin", "orca"] - }, - "retiredNameTiersByRepo": { - "repo-1": 2 - } - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "host-worktree-delete-archive-hook-failed", "operation": "host.worktree-actions", @@ -6379,640 +3674,6 @@ } ] }, - { - "id": "pr-read-surface", - "operation": "session.pr-reads", - "family": "github.pr-read", - "sites": ["mobile/src/source-control/review/github-pr-rpc.ts"], - "schedules": [], - "steps": [ - { - "checkpoint": "pending" - }, - { - "action": "repo-slug", - "id": "repo-slug" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-9" - }, - "reply": { - "ok": true, - "result": { - "owner": "orca", - "repo": "orca", - "host": "github.com" - } - } - }, - { - "checkpoint": "repo-slug" - }, - { - "action": "hosted-review", - "id": "hosted-review" - }, - { - "complete": "hostedReview.forBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedGitHubPR": 12, - "active": true - }, - "reply": { - "ok": true, - "result": { - "provider": "github", - "number": 12, - "title": "Recorded", - "state": "open", - "url": "https://x/12", - "updatedAt": "2026-01-01", - "mergeable": "MERGEABLE" - } - } - }, - { - "checkpoint": "hosted-review" - }, - { - "action": "pr-for-branch", - "id": "pr-for-branch" - }, - { - "complete": "github.prForBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedPRNumber": null, - "fallbackPRNumber": null, - "currentHeadOid": null - }, - "reply": { - "ok": true, - "result": { - "kind": "found", - "pr": { - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12", - "headSha": "head-sha-1", - "mergeable": "MERGEABLE" - }, - "fetchedAt": 0 - } - } - }, - { - "checkpoint": "pr-for-branch" - }, - { - "action": "work-item", - "id": "work-item" - }, - { - "complete": "github.workItemDetails#1", - "params": { - "repo": "id:repo-9", - "number": 12, - "type": "pr" - }, - "reply": { - "ok": true, - "result": { - "item": { - "id": "PR_1", - "number": 12, - "type": "pr", - "state": "open", - "title": "Recorded", - "labels": [], - "assignees": [] - }, - "body": "body", - "headSha": "head-sha-1" - } - } - }, - { - "checkpoint": "work-item" - }, - { - "action": "checks", - "id": "checks" - }, - { - "complete": "github.prChecks#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "headSha": "head-sha-1" - }, - "reply": { - "ok": true, - "result": [ - { - "name": "build", - "status": "completed", - "conclusion": "success", - "checkRunId": 7 - } - ] - } - }, - { - "checkpoint": "checks" - }, - { - "action": "check-details", - "id": "check-details" - }, - { - "complete": "github.prCheckDetails#1", - "params": { - "repo": "id:repo-9", - "checkRunId": 7, - "checkName": "build", - "url": null - }, - "reply": { - "ok": true, - "result": { - "name": "build", - "status": "completed", - "conclusion": "success", - "annotations": [], - "jobs": [] - } - } - }, - { - "checkpoint": "check-details" - }, - { - "action": "assignable", - "id": "assignable", - "args": { - "fork": true - } - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "recorded", - "hostDescriptor": { - "installationId": "recorded" - }, - "capabilities": ["github.exact-work-item-target.v1"] - } - } - }, - { - "complete": "github.listAssignableUsers#1", - "params": { - "repo": "id:repo-9", - "ownerRepo": { - "owner": "fork-owner", - "repo": "fork-repo", - "host": "github.enterprise.test" - } - }, - "reply": { - "ok": true, - "result": [ - { - "login": "octocat", - "name": "Octo Cat", - "avatarUrl": null - } - ] - }, - "transport": "native", - "site": "github.listAssignableUsers#1" - }, - { - "transport": "bridge", - "complete": "github.listAssignableUsers#1.native-1", - "site": "github.listAssignableUsers#1.native-1", - "bridgeSite": true, - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "shell-runtime", - "hostDescriptor": { - "installationId": "shell-desktop" - }, - "capabilities": ["github.exact-work-item-target.v1"] - } - } - }, - { - "complete": "github.listAssignableUsers#1.native-2", - "params": { - "repo": "id:repo-9", - "ownerRepo": { - "owner": "fork-owner", - "repo": "fork-repo", - "host": "github.enterprise.test" - } - }, - "reply": { - "ok": true, - "result": [ - { - "login": "octocat", - "name": "Octo Cat", - "avatarUrl": null - } - ] - }, - "transport": "bridge", - "site": "github.listAssignableUsers#1" - }, - { - "checkpoint": "assignable" - } - ], - "bridgeOperations": [ - { - "request": "github.listAssignableUsers#1", - "probeSite": "github.listAssignableUsers#1.native-1", - "methods": ["status.get", "github.listAssignableUsers"] - } - ] - }, - { - "id": "pr-read-fork-routing", - "operation": "session.pr-reads", - "family": "github.pr-read", - "sites": ["mobile/src/source-control/review/github-pr-rpc.ts"], - "schedules": [], - "steps": [ - { - "action": "checks", - "id": "fork-checks", - "args": { - "fork": true - } - }, - { - "complete": "github.prChecks#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "headSha": "head-sha-1", - "prRepo": { - "owner": "fork-owner", - "repo": "fork-repo", - "host": "github.enterprise.test" - } - }, - "reply": { - "ok": true, - "result": [ - { - "name": "build", - "status": "completed", - "conclusion": "success", - "checkRunId": 7 - } - ] - } - }, - { - "checkpoint": "fork-checks" - }, - { - "action": "check-details", - "id": "fork-check-details", - "args": { - "fork": true - } - }, - { - "complete": "github.prCheckDetails#1", - "params": { - "repo": "id:repo-9", - "checkRunId": 7, - "checkName": "build", - "url": null, - "prRepo": { - "owner": "fork-owner", - "repo": "fork-repo", - "host": "github.enterprise.test" - } - }, - "reply": { - "ok": true, - "result": { - "name": "build", - "status": "completed", - "conclusion": "success", - "annotations": [], - "jobs": [] - } - } - }, - { - "checkpoint": "fork-check-details" - }, - { - "action": "checks", - "id": "no-head-sha", - "args": { - "headSha": null - } - }, - { - "complete": "github.prChecks#2", - "params": { - "repo": "id:repo-9", - "prNumber": 12 - }, - "reply": { - "ok": true, - "result": [ - { - "name": "build", - "status": "completed", - "conclusion": "success", - "checkRunId": 7 - } - ] - } - }, - { - "checkpoint": "no-head-sha" - } - ] - }, - { - "id": "pr-read-upstream-error", - "operation": "session.pr-reads", - "family": "github.pr-read", - "sites": ["mobile/src/source-control/review/github-pr-rpc.ts"], - "schedules": [], - "steps": [ - { - "action": "pr-for-branch", - "id": "upstream" - }, - { - "complete": "github.prForBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedPRNumber": null, - "fallbackPRNumber": null, - "currentHeadOid": null - }, - "reply": { - "ok": true, - "result": { - "kind": "upstream-error", - "message": "GitHub API rate limit exceeded", - "fetchedAt": 0 - } - } - }, - { - "checkpoint": "upstream" - }, - { - "action": "pr-for-branch", - "id": "malformed" - }, - { - "complete": "github.prForBranch#2", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedPRNumber": null, - "fallbackPRNumber": null, - "currentHeadOid": null - }, - "reply": { - "ok": true, - "result": { - "kind": "found", - "pr": { - "state": "open" - }, - "fetchedAt": 0 - } - } - }, - { - "checkpoint": "malformed" - }, - { - "action": "pr-for-branch", - "id": "no-pr" - }, - { - "complete": "github.prForBranch#3", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedPRNumber": null, - "fallbackPRNumber": null, - "currentHeadOid": null - }, - "reply": { - "ok": true, - "result": null - } - }, - { - "checkpoint": "no-pr" - } - ] - }, - { - "id": "pr-sidebar-load", - "operation": "session.pr-sidebar", - "family": "session.pr-sidebar", - "sites": [ - "mobile/src/source-control/review/use-mobile-pr-sidebar-controller.ts", - "mobile/src/source-control/review/mobile-pr-queries.ts", - "mobile/src/source-control/review/mobile-pr-sidebar-state.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-9" - }, - "reply": { - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - }, - { - "complete": "hostedReview.forBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedGitHubPR": null, - "active": true - }, - "reply": { - "ok": true, - "result": { - "provider": "github", - "number": 12, - "title": "Recorded", - "state": "open", - "url": "https://github.com/owner/repo/pull/12", - "updatedAt": "2026-01-01T00:00:00Z", - "mergeable": "MERGEABLE" - } - } - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "linkedPR": null - } - } - } - }, - { - "checkpoint": "branch-hint" - }, - { - "complete": "github.prForBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedPRNumber": null, - "fallbackPRNumber": 12, - "acceptMergedFallbackPR": true, - "currentHeadOid": null - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": { - "kind": "found", - "pr": { - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://github.com/owner/repo/pull/12", - "headSha": "head-sha-1", - "updatedAt": "2026-01-01T00:00:00Z", - "mergeable": "MERGEABLE" - }, - "fetchedAt": 0 - } - } - }, - { - "checkpoint": "pr" - }, - { - "complete": "github.prChecks#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "headSha": "head-sha-1" - }, - "reply": { - "ok": true, - "result": [ - { - "name": "build", - "status": "completed", - "conclusion": "success", - "checkRunId": 7 - } - ] - } - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "recorded" - } - } - }, - { - "complete": "github.workItemDetails#1", - "params": { - "repo": "id:repo-9", - "number": 12, - "type": "pr" - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": { - "item": { - "id": "PR_1", - "number": 12, - "type": "pr", - "state": "open", - "title": "Recorded", - "url": "https://github.com/owner/repo/pull/12", - "updatedAt": "2026-01-01T00:00:00Z", - "labels": [], - "assignees": [] - }, - "body": "body", - "headSha": "head-sha-1", - "comments": [ - { - "id": 55, - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12#discussion_r55", - "threadId": "thread-1", - "path": "src/app.ts", - "line": 3, - "isResolved": false - } - ] - } - } - }, - { - "checkpoint": "loaded" - } - ] - }, { "id": "pr-sidebar-revisit-and-refresh", "operation": "session.pr-sidebar", @@ -7405,174 +4066,6 @@ } ] }, - { - "id": "pr-sidebar-checks-refused", - "operation": "session.pr-sidebar", - "family": "session.pr-sidebar", - "sites": [ - "mobile/src/source-control/review/use-mobile-pr-sidebar-controller.ts", - "mobile/src/source-control/review/mobile-pr-queries.ts", - "mobile/src/source-control/review/mobile-pr-sidebar-state.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-9" - }, - "reply": { - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - }, - { - "complete": "hostedReview.forBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedGitHubPR": null, - "active": true - }, - "reply": { - "ok": true, - "result": { - "provider": "github", - "number": 12, - "title": "Recorded", - "state": "open", - "url": "https://github.com/owner/repo/pull/12", - "updatedAt": "2026-01-01T00:00:00Z", - "mergeable": "MERGEABLE" - } - } - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "linkedPR": null - } - } - } - }, - { - "checkpoint": "branch-hint" - }, - { - "complete": "github.prForBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedPRNumber": null, - "fallbackPRNumber": 12, - "acceptMergedFallbackPR": true, - "currentHeadOid": null - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": { - "kind": "found", - "pr": { - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://github.com/owner/repo/pull/12", - "headSha": "head-sha-1", - "updatedAt": "2026-01-01T00:00:00Z", - "mergeable": "MERGEABLE" - }, - "fetchedAt": 0 - } - } - }, - { - "checkpoint": "pr" - }, - { - "complete": "github.prChecks#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "headSha": "head-sha-1" - }, - "reply": { - "ok": true, - "result": { - "checks": [] - } - } - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "recorded" - } - } - }, - { - "complete": "github.workItemDetails#1", - "params": { - "repo": "id:repo-9", - "number": 12, - "type": "pr" - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": { - "item": { - "id": "PR_1", - "number": 12, - "type": "pr", - "state": "open", - "title": "Recorded", - "url": "https://github.com/owner/repo/pull/12", - "updatedAt": "2026-01-01T00:00:00Z", - "labels": [], - "assignees": [] - }, - "body": "body", - "headSha": "head-sha-1", - "comments": [ - { - "id": 55, - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12#discussion_r55", - "threadId": "thread-1", - "path": "src/app.ts", - "line": 3, - "isResolved": false - } - ] - } - } - }, - { - "checkpoint": "checks-refused" - } - ] - }, { "id": "pr-resolve-refused-rolls-back", "operation": "session.pr-sidebar", @@ -7773,912 +4266,6 @@ } ] }, - { - "id": "pr-comment-posted-in-place", - "operation": "session.pr-sidebar", - "family": "session.pr-sidebar", - "sites": [ - "mobile/src/source-control/review/use-mobile-pr-sidebar-controller.ts", - "mobile/src/source-control/review/mobile-pr-queries.ts", - "mobile/src/source-control/review/mobile-pr-sidebar-state.ts", - "mobile/src/source-control/review/pr-comment-writes.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-9" - }, - "reply": { - "ok": true, - "result": { - "owner": "owner", - "repo": "repo" - } - } - }, - { - "complete": "hostedReview.forBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedGitHubPR": null, - "active": true - }, - "reply": { - "ok": true, - "result": { - "provider": "github", - "number": 12, - "title": "Recorded", - "state": "open", - "url": "https://github.com/owner/repo/pull/12", - "updatedAt": "2026-01-01T00:00:00Z", - "mergeable": "MERGEABLE" - } - } - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "linkedPR": null - } - } - } - }, - { - "checkpoint": "branch-hint" - }, - { - "complete": "github.prForBranch#1", - "params": { - "repo": "id:repo-9", - "branch": "feature", - "linkedPRNumber": null, - "fallbackPRNumber": 12, - "acceptMergedFallbackPR": true, - "currentHeadOid": null - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": { - "kind": "found", - "pr": { - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://github.com/owner/repo/pull/12", - "headSha": "head-sha-1", - "updatedAt": "2026-01-01T00:00:00Z", - "mergeable": "MERGEABLE" - }, - "fetchedAt": 0 - } - } - }, - { - "checkpoint": "pr" - }, - { - "complete": "github.prChecks#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "headSha": "head-sha-1" - }, - "reply": { - "ok": true, - "result": [ - { - "name": "build", - "status": "completed", - "conclusion": "success", - "checkRunId": 7 - } - ] - } - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "recorded" - } - } - }, - { - "complete": "github.workItemDetails#1", - "params": { - "repo": "id:repo-9", - "number": 12, - "type": "pr" - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": { - "item": { - "id": "PR_1", - "number": 12, - "type": "pr", - "state": "open", - "title": "Recorded", - "url": "https://github.com/owner/repo/pull/12", - "updatedAt": "2026-01-01T00:00:00Z", - "labels": [], - "assignees": [] - }, - "body": "body", - "headSha": "head-sha-1", - "comments": [ - { - "id": 55, - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12#discussion_r55", - "threadId": "thread-1", - "path": "src/app.ts", - "line": 3, - "isResolved": false - } - ] - } - } - }, - { - "checkpoint": "loaded" - }, - { - "action": "post-comment", - "id": "post-comment" - }, - { - "complete": "github.addIssueComment#1", - "params": { - "repo": "id:repo-9", - "number": 12, - "body": "recorded comment", - "type": "pr" - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 57 - } - } - } - }, - { - "checkpoint": "comment-sent" - }, - { - "complete": "github.prComments#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "noCache": true, - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "paramsFollowDivergence": true, - "reply": { - "ok": true, - "result": [ - { - "id": 55, - "author": "rev", - "body": "please fix", - "createdAt": "2026-01-01T00:00:00Z", - "url": "https://github.com/owner/repo/pull/12#discussion_r55", - "threadId": "thread-1", - "path": "src/app.ts", - "line": 3, - "isResolved": false - }, - { - "id": 57, - "author": "me", - "body": "recorded comment", - "createdAt": "2026-01-01T00:01:00Z", - "url": "https://github.com/owner/repo/pull/12#issuecomment-57" - } - ] - } - }, - { - "checkpoint": "comment-shown" - } - ] - }, - { - "id": "pr-mutation-status", - "operation": "session.pr-mutations", - "family": "github.pr-mutation", - "sites": ["mobile/src/source-control/review/github-pr-mutations.ts"], - "schedules": [], - "steps": [ - { - "checkpoint": "pending" - }, - { - "action": "merge", - "id": "merge" - }, - { - "complete": "github.mergePR#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "method": "squash" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "merge" - }, - { - "action": "auto-merge", - "id": "auto-merge" - }, - { - "complete": "github.setPRAutoMerge#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "enabled": true - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "auto-merge" - }, - { - "action": "close", - "id": "close" - }, - { - "complete": "github.updatePRState#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "updates": { - "state": "closed" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "close" - }, - { - "action": "request-reviewers", - "id": "request-reviewers" - }, - { - "complete": "github.requestPRReviewers#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "reviewers": ["octocat"] - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "request-reviewers" - }, - { - "action": "remove-reviewers", - "id": "remove-reviewers" - }, - { - "complete": "github.removePRReviewers#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "reviewers": ["octocat"] - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "remove-reviewers" - }, - { - "action": "rerun-checks", - "id": "rerun-checks" - }, - { - "complete": "github.rerunPRChecks#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "failedOnly": true, - "headSha": "head-sha-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "rerun-checks" - } - ] - }, - { - "id": "pr-mutation-in-band-failure", - "operation": "session.pr-mutations", - "family": "github.pr-mutation", - "sites": ["mobile/src/source-control/review/github-pr-mutations.ts"], - "schedules": [], - "steps": [ - { - "action": "merge", - "id": "string-error" - }, - { - "complete": "github.mergePR#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "method": "squash" - }, - "reply": { - "ok": true, - "result": { - "ok": false, - "error": "Pull request is not mergeable" - } - } - }, - { - "checkpoint": "string-error" - }, - { - "action": "close", - "id": "object-error" - }, - { - "complete": "github.updatePRState#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "updates": { - "state": "closed" - } - }, - "reply": { - "ok": true, - "result": { - "ok": false, - "error": { - "message": "Branch is protected" - } - } - } - }, - { - "checkpoint": "object-error" - }, - { - "action": "auto-merge", - "id": "unstructured" - }, - { - "complete": "github.setPRAutoMerge#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "enabled": true - }, - "reply": { - "ok": true, - "result": true - } - }, - { - "checkpoint": "unstructured" - }, - { - "action": "rerun-checks", - "id": "empty-object-error" - }, - { - "complete": "github.rerunPRChecks#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "failedOnly": true, - "headSha": "head-sha-1" - }, - "reply": { - "ok": true, - "result": { - "ok": false, - "error": { - "message": "" - } - } - } - }, - { - "checkpoint": "empty-object-error" - } - ] - }, - { - "id": "pr-comment-mutation", - "operation": "session.pr-mutations", - "family": "github.pr-comment-mutation", - "sites": ["mobile/src/source-control/review/github-pr-mutations.ts"], - "schedules": [], - "steps": [ - { - "checkpoint": "pending" - }, - { - "action": "reply", - "id": "reply" - }, - { - "complete": "github.addPRReviewCommentReply#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "commentId": 55, - "body": "recorded reply", - "threadId": "thread-1", - "path": "src/app.ts", - "line": 3 - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 56 - } - } - } - }, - { - "checkpoint": "reply" - }, - { - "action": "root-comment", - "id": "root-comment" - }, - { - "complete": "github.addIssueComment#1", - "params": { - "repo": "id:repo-9", - "number": 12, - "body": "recorded comment", - "type": "pr" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 57 - } - } - } - }, - { - "checkpoint": "root-comment" - }, - { - "action": "resolve-thread", - "id": "resolve-thread" - }, - { - "complete": "github.resolveReviewThread#1", - "params": { - "repo": "id:repo-9", - "threadId": "thread-1", - "resolve": true - }, - "reply": { - "ok": true, - "result": true - } - }, - { - "checkpoint": "resolve-thread" - }, - { - "action": "edit-comment", - "id": "edit-comment" - }, - { - "complete": "github.project.updateIssueCommentBySlug#1", - "params": { - "owner": "owner", - "repo": "repo", - "commentId": 55, - "body": "edited" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "edit-comment" - }, - { - "action": "delete-comment", - "id": "delete-comment" - }, - { - "complete": "github.project.deleteIssueCommentBySlug#1", - "params": { - "owner": "owner", - "repo": "repo", - "commentId": 55 - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "delete-comment" - } - ] - }, - { - "id": "pr-line-comment-and-file-viewed", - "operation": "session.pr-mutations", - "family": "github.pr-comment-mutation", - "sites": ["mobile/src/source-control/review/github-pr-review-line-mutations.ts"], - "schedules": [], - "steps": [ - { - "action": "line-comment", - "id": "line-comment" - }, - { - "complete": "github.addPRReviewComment#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "commitId": "head-sha-1", - "path": "src/app.ts", - "line": 5, - "body": "recorded line comment", - "startLine": 3 - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 57 - } - } - } - }, - { - "checkpoint": "line-comment" - }, - { - "action": "file-viewed", - "id": "viewed" - }, - { - "complete": "github.setPRFileViewed#1", - "params": { - "repo": "id:repo-9", - "pullRequestId": "PR_kwDO", - "path": "src/app.ts", - "viewed": true - }, - "reply": { - "ok": true, - "result": true - } - }, - { - "checkpoint": "viewed" - }, - { - "action": "file-viewed", - "id": "refused" - }, - { - "complete": "github.setPRFileViewed#2", - "params": { - "repo": "id:repo-9", - "pullRequestId": "PR_kwDO", - "path": "src/app.ts", - "viewed": true - }, - "reply": { - "ok": true, - "result": false - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "pr-comment-resolve-unconfirmed", - "operation": "session.pr-mutations", - "family": "github.pr-comment-mutation", - "sites": ["mobile/src/source-control/review/github-pr-mutations.ts"], - "schedules": [], - "steps": [ - { - "action": "resolve-thread", - "id": "explicit-false" - }, - { - "complete": "github.resolveReviewThread#1", - "params": { - "repo": "id:repo-9", - "threadId": "thread-1", - "resolve": true - }, - "reply": { - "ok": true, - "result": false - } - }, - { - "checkpoint": "explicit-false" - }, - { - "action": "resolve-thread", - "id": "absent-result" - }, - { - "complete": "github.resolveReviewThread#2", - "params": { - "repo": "id:repo-9", - "threadId": "thread-1", - "resolve": true - }, - "reply": { - "ok": true - } - }, - { - "checkpoint": "absent-result" - } - ] - }, - { - "id": "pr-title-mutation", - "operation": "session.pr-mutations", - "family": "github.pr-title-mutation", - "sites": ["mobile/src/source-control/review/github-pr-mutations.ts"], - "schedules": [], - "steps": [ - { - "action": "title", - "id": "title" - }, - { - "complete": "github.updatePRTitle#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "title": "Recorded title" - }, - "reply": { - "ok": true, - "result": true - } - }, - { - "checkpoint": "title" - } - ] - }, - { - "id": "pr-title-unconfirmed", - "operation": "session.pr-mutations", - "family": "github.pr-title-mutation", - "sites": ["mobile/src/source-control/review/github-pr-mutations.ts"], - "schedules": [], - "steps": [ - { - "action": "title", - "id": "explicit-false" - }, - { - "complete": "github.updatePRTitle#1", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "title": "Recorded title" - }, - "reply": { - "ok": true, - "result": false - } - }, - { - "checkpoint": "explicit-false" - }, - { - "action": "title", - "id": "refused" - }, - { - "complete": "github.updatePRTitle#2", - "params": { - "repo": "id:repo-9", - "prNumber": 12, - "title": "Recorded title" - }, - "reply": { - "ok": false, - "error": { - "code": "refused", - "message": "" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "pr-triage-launch", - "operation": "session.pr-triage-launch", - "family": "session.pr-triage", - "sites": ["mobile/src/source-control/review/pr-ai-triage-launch.ts"], - "schedules": [], - "steps": [ - { - "action": "launch", - "id": "launch" - }, - { - "checkpoint": "pending" - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9" - } - ] - } - } - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": [] - } - } - } - }, - { - "complete": "preflight.detectAgents#1", - "params": { - "worktreeId": "repo-9::/w" - }, - "reply": { - "ok": true, - "result": ["codex"] - } - }, - { - "complete": "agent.launchReplay#1", - "params": { - "agent": "codex", - "operationId": "1767225600000-00000000000040008000000000000001", - "target": { - "kind": "existing", - "worktree": "id:repo-9::/w" - }, - "prompt": { - "text": "Fix the failing checks", - "delivery": "submit" - }, - "launchSource": "task_page" - }, - "reply": { - "ok": true, - "result": { - "outcome": { - "kind": "terminal", - "handle": "term-1" - }, - "worktreeId": "repo-9::/w", - "receipt": { - "mode": "terminal", - "preferred": "terminal", - "reason": "user_default", - "detail": "Started a terminal agent, the default for new agent tabs in your settings." - }, - "prompt": { - "delivery": "submit", - "outcome": "handed-to-terminal" - } - } - } - }, - { - "checkpoint": "launched" - } - ] - }, { "id": "pr-triage-prompt-not-delivered", "operation": "session.pr-triage-launch", @@ -8871,696 +4458,6 @@ } ] }, - { - "id": "pr-branch-identity", - "operation": "session.pr-branch-context", - "family": "session.pr-branch-context", - "sites": ["mobile/src/source-control/review/use-mobile-pr-branch-context.ts"], - "schedules": [], - "steps": [ - { - "action": "identity", - "id": "identity" - }, - { - "checkpoint": "pending" - }, - { - "complete": "git.status#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "head-sha-1", - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "area": "unstaged", - "added": 3, - "removed": 1 - } - ], - "upstreamStatus": { - "hasUpstream": true, - "ahead": 1, - "behind": 0 - } - } - } - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "linkedPR": 12 - } - } - } - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - }, - { - "complete": "git.branchCompare#1", - "params": { - "worktree": "id:repo-9::/w", - "baseRef": "origin/main" - }, - "reply": { - "ok": true, - "result": { - "summary": { - "baseRef": "origin/main", - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "compareRef": "feature", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "changedFiles": 1, - "status": "ready" - }, - "entries": [ - { - "path": "src/old.ts", - "status": "modified", - "added": 1, - "removed": 0 - } - ] - } - } - }, - { - "checkpoint": "identity" - } - ] - }, - { - "id": "pr-branch-repo-context", - "operation": "session.pr-branch-context", - "family": "session.pr-branch-context", - "sites": ["mobile/src/source-control/review/use-mobile-pr-branch-context.ts"], - "schedules": [], - "steps": [ - { - "action": "repo-context", - "id": "repo-context" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-9" - }, - "reply": { - "ok": true, - "result": { - "owner": "orca", - "repo": "orca", - "host": "github.com" - } - } - }, - { - "checkpoint": "repo-context" - } - ] - }, - { - "id": "diff-review-snapshot", - "operation": "session.diff-review-load", - "family": "session.diff-review", - "sites": [ - "mobile/src/source-control/review/mobile-diff-review-loaders.ts", - "mobile/src/source-control/review/mobile-diff-review-snapshot-loader.ts" - ], - "schedules": [], - "steps": [ - { - "action": "snapshot", - "id": "snapshot" - }, - { - "checkpoint": "pending" - }, - { - "complete": "git.status#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "head-sha-1", - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "area": "unstaged", - "added": 3, - "removed": 1 - } - ], - "upstreamStatus": { - "hasUpstream": true, - "ahead": 1, - "behind": 0 - } - } - } - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "linkedPR": 12, - "diffComments": [], - "mobileDiffReview": { - "files": [] - } - } - } - } - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - }, - { - "complete": "git.branchCompare#1", - "params": { - "worktree": "id:repo-9::/w", - "baseRef": "origin/main" - }, - "reply": { - "ok": true, - "result": { - "summary": { - "baseRef": "origin/main", - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "compareRef": "feature", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "changedFiles": 1, - "status": "ready" - }, - "entries": [ - { - "path": "src/old.ts", - "status": "modified", - "added": 1, - "removed": 0 - } - ] - } - } - }, - { - "checkpoint": "snapshot" - } - ] - }, - { - "id": "diff-review-status-unavailable", - "operation": "session.diff-review-load", - "family": "session.diff-review", - "sites": [ - "mobile/src/source-control/review/mobile-diff-review-loaders.ts", - "mobile/src/source-control/review/mobile-diff-review-snapshot-loader.ts" - ], - "schedules": [], - "steps": [ - { - "action": "snapshot", - "id": "unavailable" - }, - { - "complete": "git.status#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": false, - "error": { - "code": "method_not_found", - "message": "Unknown method" - } - } - }, - { - "checkpoint": "unavailable" - } - ] - }, - { - "id": "diff-review-worktree-file-diff", - "operation": "session.diff-review-load", - "family": "session.diff-review", - "sites": ["mobile/src/source-control/review/mobile-diff-review-loaders.ts"], - "schedules": [], - "steps": [ - { - "action": "diff", - "id": "binary", - "args": { - "scope": "unstaged" - } - }, - { - "complete": "git.diff#1", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": false - }, - "reply": { - "ok": true, - "result": { - "kind": "binary" - } - } - }, - { - "checkpoint": "binary" - }, - { - "action": "diff", - "id": "too-large", - "args": { - "scope": "staged" - } - }, - { - "complete": "git.diff#2", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": true - }, - "reply": { - "ok": true, - "result": { - "kind": "too-large", - "byteLength": 2048 - } - } - }, - { - "checkpoint": "too-large" - }, - { - "action": "diff", - "id": "invalid", - "args": { - "scope": "unstaged" - } - }, - { - "complete": "git.diff#3", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": false - }, - "reply": { - "ok": true, - "result": { - "kind": "unknown" - } - } - }, - { - "checkpoint": "invalid" - } - ] - }, - { - "id": "diff-review-refused-file-diff", - "operation": "session.diff-review-load", - "family": "session.diff-review", - "sites": ["mobile/src/source-control/review/mobile-diff-review-loaders.ts"], - "schedules": [], - "steps": [ - { - "action": "diff", - "id": "diff-too-large", - "args": { - "scope": "unstaged" - } - }, - { - "complete": "git.diff#1", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": false - }, - "reply": { - "ok": false, - "error": { - "code": "diff_too_large", - "message": "Diff exceeds the limit" - } - } - }, - { - "checkpoint": "diff-too-large" - }, - { - "action": "diff", - "id": "deleted", - "args": { - "scope": "unstaged", - "status": "deleted" - } - }, - { - "complete": "git.diff#2", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": false - }, - "reply": { - "ok": false, - "error": { - "code": "internal", - "message": "boom" - } - } - }, - { - "checkpoint": "deleted" - }, - { - "action": "diff", - "id": "refused", - "args": { - "scope": "unstaged" - } - }, - { - "complete": "git.diff#3", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": false - }, - "reply": { - "ok": false, - "error": { - "code": "internal", - "message": "" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "diff-review-branch-file-diff", - "operation": "session.diff-review-load", - "family": "session.diff-review", - "sites": ["mobile/src/source-control/review/mobile-diff-review-loaders.ts"], - "schedules": [], - "steps": [ - { - "action": "diff", - "id": "branch", - "args": { - "scope": "branch" - } - }, - { - "complete": "git.branchDiff#1", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "compare": { - "baseRef": "origin/main", - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567" - } - }, - "reply": { - "ok": true, - "result": { - "kind": "binary" - } - } - }, - { - "checkpoint": "branch" - }, - { - "action": "diff", - "id": "no-compare", - "args": { - "scope": "branch", - "compare": false - } - }, - { - "checkpoint": "no-compare" - } - ] - }, - { - "id": "diff-review-commit-file-diff", - "operation": "session.diff-review-load", - "family": "session.diff-review", - "sites": [ - "mobile/src/source-control/review/mobile-diff-review-loaders.ts", - "mobile/src/source-control/review/mobile-diff-review-commit-loader.ts" - ], - "schedules": [], - "steps": [ - { - "action": "commit-snapshot", - "id": "commit" - }, - { - "complete": "git.commitCompare#1", - "params": { - "worktree": "id:repo-9::/w", - "commitId": "c0ffee0123456789abcdef0123456789abcdef01" - }, - "reply": { - "ok": true, - "result": { - "summary": { - "commitOid": "c0ffee0123456789abcdef0123456789abcdef01", - "parentOid": "beef0123456789abcdef0123456789abcdef0123", - "compareRef": "c0ffee0", - "baseRef": "beef012", - "changedFiles": 1, - "status": "ready" - }, - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "added": 2, - "removed": 1 - } - ] - } - } - }, - { - "checkpoint": "commit" - }, - { - "action": "diff", - "id": "commit-file", - "args": { - "scope": "commit" - } - }, - { - "complete": "git.commitDiff#1", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "commitOid": "c0ffee0123456789abcdef0123456789abcdef01", - "parentOid": "beef0123456789abcdef0123456789abcdef0123" - }, - "reply": { - "ok": true, - "result": { - "kind": "text", - "originalContent": "a\n", - "modifiedContent": "a\nb\n", - "originalIsBinary": false, - "modifiedIsBinary": false - } - } - }, - { - "checkpoint": "commit-file" - } - ] - }, - { - "id": "diff-review-branch-compare", - "operation": "session.diff-review-load", - "family": "session.diff-review", - "sites": ["mobile/src/source-control/review/mobile-diff-review-loaders.ts"], - "schedules": [], - "steps": [ - { - "action": "branch-compare", - "id": "unavailable" - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "linkedPR": 12 - } - } - } - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - }, - { - "complete": "git.branchCompare#1", - "params": { - "worktree": "id:repo-9::/w", - "baseRef": "origin/main" - }, - "reply": { - "ok": false, - "error": { - "code": "forbidden", - "message": "git is not available" - } - } - }, - { - "checkpoint": "unavailable" - }, - { - "action": "branch-compare", - "id": "invalid" - }, - { - "complete": "worktree.show#2", - "params": { - "worktree": "id:repo-9::/w" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main", - "linkedPR": 12 - } - } - } - }, - { - "complete": "repo.list#2", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-9", - "worktreeBaseRef": "origin/main" - } - ] - } - } - }, - { - "complete": "git.branchCompare#2", - "params": { - "worktree": "id:repo-9::/w", - "baseRef": "origin/main" - }, - "reply": { - "ok": true, - "result": { - "summary": {}, - "entries": [] - } - } - }, - { - "checkpoint": "invalid" - } - ] - }, { "id": "diff-review-notes-refused-before-compare", "operation": "session.diff-review-load", @@ -9881,97 +4778,6 @@ } ] }, - { - "id": "relay-rotation-installs-and-commits", - "operation": "relay.credential-rotation", - "family": "relay.credential-rotation", - "sites": ["mobile/src/transport/relay/mobile-relay-credential-rotation.ts"], - "schedules": [], - "steps": [ - { - "action": "rotate", - "id": "rotate" - }, - { - "complete": "pairing.getEndpoints#1", - "params": { - "installReqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "relay": { - "v": 1, - "directorUrl": "https://director.example", - "cellUrl": "https://cell.example", - "assignmentEpoch": 1, - "relayHostId": "relay-host-0001x", - "e2eeFraming": 2 - }, - "installStatus": { - "v": 1, - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "state": "not-found" - } - } - } - }, - { - "complete": "pairing.provisionRelay#1", - "params": { - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "newResumeTokenHash": "yrnYzw4B0YZ_R6Tcm4arO3oysaG7lsPjvyp4uWmdBtU", - "expectedCurrentHash": "r_9byaBlTZTXS3aLLlWTKwss-nmx4vGRrjKskxWyP30" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "resumeExpiresAt": 1767830400000 - } - } - }, - { - "complete": "pairing.getEndpoints#2", - "params": { - "installReqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "relay": { - "v": 1, - "directorUrl": "https://director.example", - "cellUrl": "https://cell.example", - "assignmentEpoch": 1, - "relayHostId": "relay-host-0001x", - "e2eeFraming": 2 - }, - "installStatus": { - "v": 1, - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "state": "committed", - "result": { - "v": 1, - "reqId": "rotate-VftjjHf-4Lb1-Sdfryl-LA", - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "resumeExpiresAt": 1767830400000 - } - } - } - } - }, - { - "checkpoint": "credential-rotated" - } - ] - }, { "id": "relay-rotation-resumes-committed-pending", "operation": "relay.credential-rotation", @@ -10024,180 +4830,6 @@ } ] }, - { - "id": "relay-direct-upgrade-commits", - "operation": "relay.direct-upgrade", - "family": "relay.direct-upgrade", - "sites": ["mobile/src/transport/relay/mobile-relay-direct-upgrade.ts"], - "schedules": [], - "steps": [ - { - "action": "upgrade", - "id": "upgrade", - "args": { - "journal": true - } - }, - { - "complete": "pairing.getEndpoints#1", - "params": { - "installReqId": "install-fixture-1" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "relay": { - "v": 1, - "directorUrl": "https://director.example", - "cellUrl": "https://cell.example", - "assignmentEpoch": 1, - "relayHostId": "relay-host-0001x", - "e2eeFraming": 2 - }, - "installStatus": { - "v": 1, - "reqId": "install-fixture-1", - "state": "not-found" - } - } - } - }, - { - "complete": "pairing.provisionRelay#1", - "params": { - "reqId": "install-fixture-1", - "newResumeTokenHash": "7ehR_WuQWkxwOFJdkHfI5jEg4DeVYWImtDuip60LHK4" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "reqId": "install-fixture-1", - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "resumeExpiresAt": 1767830400000 - } - } - }, - { - "complete": "pairing.getEndpoints#2", - "params": { - "installReqId": "install-fixture-1" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "relay": { - "v": 1, - "directorUrl": "https://director.example", - "cellUrl": "https://cell.example", - "assignmentEpoch": 1, - "relayHostId": "relay-host-0001x", - "e2eeFraming": 2 - }, - "installStatus": { - "v": 1, - "reqId": "install-fixture-1", - "state": "committed", - "result": { - "v": 1, - "reqId": "install-fixture-1", - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "resumeExpiresAt": 1767830400000 - } - } - } - } - }, - { - "checkpoint": "direct-upgrade-committed" - } - ] - }, - { - "id": "relay-direct-upgrade-unsupported-host-declines", - "operation": "relay.direct-upgrade", - "family": "relay.direct-upgrade", - "sites": ["mobile/src/transport/relay/mobile-relay-direct-upgrade.ts"], - "schedules": [], - "steps": [ - { - "action": "upgrade", - "id": "upgrade", - "args": { - "journal": true - } - }, - { - "complete": "pairing.getEndpoints#1", - "params": { - "installReqId": "install-fixture-1" - }, - "reply": { - "ok": false, - "error": { - "code": "method_not_found", - "message": "Unknown method" - } - } - }, - { - "checkpoint": "upgrade-declined" - } - ] - }, - { - "id": "relay-pairing-recovery-resume-committed", - "operation": "relay.pairing-recovery", - "family": "relay.pairing-recovery", - "sites": ["mobile/src/pairing/mobile-relay-pairing-recovery.ts"], - "schedules": [], - "steps": [ - { - "action": "recover", - "id": "recover" - }, - { - "complete": "pairing.getEndpoints#1", - "params": { - "installReqId": "install-fixture-1", - "resumeConfirmReqId": "confirm-fixture-1" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "relay": { - "v": 1, - "directorUrl": "https://director.example", - "cellUrl": "https://cell.example", - "assignmentEpoch": 1, - "relayHostId": "relay-host-0001x", - "e2eeFraming": 2 - }, - "installStatus": { - "v": 1, - "reqId": "install-fixture-1", - "state": "committed", - "result": { - "v": 1, - "reqId": "install-fixture-1", - "authorizationMode": "relay-basis", - "currentVersion": 4, - "resumeExpiresAt": 1767830400000 - } - } - } - } - }, - { - "checkpoint": "recovered-on-resume" - } - ] - }, { "id": "relay-pairing-recovery-invite-authorizes", "operation": "relay.pairing-recovery", @@ -10314,112 +4946,6 @@ } ] }, - { - "id": "pairing-pre-profile-direct-wins-and-provisions", - "operation": "pairing.pre-profile", - "family": "pairing.pre-profile", - "sites": [ - "mobile/src/pairing/pre-profile-pairing-coordinator.ts", - "mobile/src/pairing/pairing-candidate-race.ts" - ], - "schedules": [], - "steps": [ - { - "action": "pair", - "id": "pair" - }, - { - "bind": "direct-status", - "request": "status.get#1", - "params": { - "$undefined": true - } - }, - { - "bind": "relay-status", - "request": "status.get#2", - "params": { - "$undefined": true - } - }, - { - "complete": "direct-status", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "capabilities": [] - } - } - }, - { - "complete": "relay-status", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "capabilities": [] - } - } - }, - { - "complete": "pairing.provisionRelay#1", - "params": { - "reqId": "install-l99UBPM71AZiC1ghz2glnA", - "newResumeTokenHash": "yrnYzw4B0YZ_R6Tcm4arO3oysaG7lsPjvyp4uWmdBtU" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "reqId": "install-l99UBPM71AZiC1ghz2glnA", - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "resumeExpiresAt": 1767830400000 - } - } - }, - { - "complete": "pairing.getEndpoints#1", - "params": { - "installReqId": "install-l99UBPM71AZiC1ghz2glnA" - }, - "reply": { - "ok": true, - "result": { - "v": 1, - "relay": { - "v": 1, - "directorUrl": "https://director.example", - "cellUrl": "https://cell.example", - "assignmentEpoch": 1, - "relayHostId": "relay-host-0001x", - "e2eeFraming": 2 - }, - "installStatus": { - "v": 1, - "reqId": "install-l99UBPM71AZiC1ghz2glnA", - "state": "committed", - "result": { - "v": 1, - "reqId": "install-l99UBPM71AZiC1ghz2glnA", - "authorizationMode": "authenticated-direct", - "currentVersion": 4, - "resumeExpiresAt": 1767830400000 - } - } - } - } - }, - { - "checkpoint": "paired-over-direct" - } - ] - }, { "id": "pairing-pre-profile-provision-unsupported-saves-direct-host", "operation": "pairing.pre-profile", @@ -10491,34 +5017,6 @@ } ] }, - { - "id": "pairing-pre-profile-times-out", - "operation": "pairing.pre-profile", - "family": "pairing.pre-profile", - "sites": [ - "mobile/src/pairing/pre-profile-pairing-coordinator.ts", - "mobile/src/pairing/pairing-candidate-race.ts" - ], - "schedules": [], - "steps": [ - { - "action": "pair", - "id": "pair", - "args": { - "timeoutMs": 5000 - } - }, - { - "checkpoint": "racing" - }, - { - "advance": 5000 - }, - { - "checkpoint": "timed-out" - } - ] - }, { "id": "transport-capability-probe-cutover-reasks-fast", "operation": "transport.capability-probe", @@ -10732,96 +5230,6 @@ } ] }, - { - "id": "tk-item-detail-github-reactions", - "operation": "tasks.item-detail-github", - "family": "tasks.item-detail-github", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-item-detail-loading.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "detail-runtime", - "hostDescriptor": { - "installationId": "detail-host" - } - } - } - }, - { - "complete": "github.workItemDetails#1", - "params": { - "number": 12, - "repo": "id:repo-1", - "type": "pr" - }, - "reply": { - "ok": true, - "result": { - "body": "body", - "comments": [ - { - "id": 901, - "author": "octocat", - "authorAvatarUrl": "", - "body": "a review comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "url": "https://github.com/owner/repo/pull/12#issuecomment-901", - "reactions": [ - { - "content": "+1", - "count": 3 - }, - { - "content": "heart", - "count": 1 - } - ] - } - ], - "item": { - "id": "pr:12", - "type": "pr", - "number": 12, - "title": "A pull request", - "url": "https://github.com/owner/repo/pull/12", - "state": "open", - "updatedAt": "2026-10-30T00:00:00Z", - "author": null, - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - }, - "labels": ["bug"], - "reviewDecision": "APPROVED", - "reviewRequests": [], - "latestReviews": [] - }, - "assignees": ["octocat"], - "headSha": "head-sha", - "baseSha": "base-sha", - "pullRequestId": "PR_kwDO", - "checks": [], - "files": [] - } - } - }, - { - "checkpoint": "mounted" - } - ] - }, { "id": "tk-item-detail-gitlab", "operation": "tasks.item-detail-gitlab", @@ -10869,68 +5277,6 @@ } ] }, - { - "id": "tk-item-detail-gitlab-reactions", - "operation": "tasks.item-detail-gitlab", - "family": "tasks.item-detail-gitlab", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-item-detail-loading.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "gitlab.workItemDetails#1", - "params": { - "iid": 4, - "markViewerComments": true, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "type": "issue" - }, - "reply": { - "ok": true, - "result": { - "body": "body", - "comments": [ - { - "id": 901, - "author": "octocat", - "authorAvatarUrl": "", - "body": "a discussion note", - "createdAt": "2020-01-01T00:00:00.000Z", - "url": "https://gitlab.example.com/group/project/-/issues/4#note_901", - "reactions": [ - { - "name": "thumbsup", - "count": 2 - } - ] - } - ], - "item": { - "labels": ["bug"], - "mergeable": "MERGEABLE" - }, - "assignees": [], - "pipelineJobs": [], - "reviewers": [], - "approvalState": { - "approvalsRequired": 1, - "approvalsLeft": 0 - } - } - } - }, - { - "checkpoint": "mounted" - } - ] - }, { "id": "tk-item-detail-linear", "operation": "tasks.item-detail-linear", @@ -10999,415 +5345,6 @@ } ] }, - { - "id": "tk-item-detail-metadata", - "operation": "tasks.item-detail-metadata", - "family": "tasks.item-detail-metadata", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-item-detail-metadata-effects.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "checkpoint": "mounted" - } - ] - }, - { - "id": "tk-linear-team-context", - "operation": "tasks.linear-team-context", - "family": "tasks.linear-team-context", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-list-and-detail-effects.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "open-composer", - "id": "open-composer-0" - }, - { - "complete": "linear.listTeams#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - } - }, - { - "checkpoint": "open-composer-settled" - }, - { - "action": "select-metadata-item", - "id": "select-metadata-item-1" - }, - { - "complete": "linear.teamStates#1", - "params": { - "teamId": "team-1", - "workspaceId": "linear-workspace" - }, - "reply": { - "ok": true, - "result": [ - { - "id": "state-1", - "name": "Todo", - "type": "unstarted", - "color": "#000000" - } - ] - } - }, - { - "checkpoint": "select-metadata-item-settled" - } - ] - }, - { - "id": "tk-provider-load", - "operation": "tasks.provider-load", - "family": "tasks.provider-load", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-provider-load-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "linear-context", - "id": "linear-context-0" - }, - { - "complete": "linear.status#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "connected": true, - "workspaces": [ - { - "id": "linear-workspace", - "name": "Workspace" - } - ], - "selectedWorkspaceId": "linear-workspace" - } - } - }, - { - "complete": "linear.listTeams#1", - "params": { - "workspaceId": "linear-workspace" - }, - "reply": { - "ok": true, - "result": [ - { - "id": "team-1", - "key": "ENG", - "name": "Engineering", - "workspaceId": "linear-workspace" - } - ] - } - }, - { - "checkpoint": "linear-context-settled" - }, - { - "action": "persist-teams", - "id": "persist-teams-1" - }, - { - "complete": "settings.update#1", - "params": { - "defaultLinearTeamSelection": ["team-1"] - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "persist-teams-settled" - }, - { - "action": "github-page", - "id": "github-page-2" - }, - { - "complete": "github.listWorkItems#1", - "params": { - "limit": 36, - "page": 1, - "query": "is:issue bug", - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "items": [ - { - "id": "issue:9", - "type": "issue", - "number": 9, - "title": "An issue", - "state": "open", - "url": "", - "labels": [], - "updatedAt": "2020-01-01T00:00:00.000Z", - "author": null - } - ], - "sources": { - "issues": "upstream" - } - } - } - }, - { - "checkpoint": "github-page-settled" - }, - { - "action": "github-count", - "id": "github-count-3" - }, - { - "complete": "github.countWorkItems#1", - "params": { - "query": "is:issue bug", - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": 4 - } - }, - { - "checkpoint": "github-count-settled" - } - ] - }, - { - "id": "tk-list-gitlab-todos", - "operation": "tasks.task-list-gitlab-todos", - "family": "tasks.task-list-gitlab-todos", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-task-list-loading.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "load", - "id": "load-0" - }, - { - "complete": "gitlab.todos#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": [ - { - "id": 1, - "actionName": "review_requested", - "targetType": "Issue", - "targetIid": 4, - "targetTitle": "A GitLab todo", - "targetUrl": "https://gitlab.example.com/group/project/-/issues/4", - "projectPath": "group/project", - "authorUsername": "octocat", - "authorAvatarUrl": "", - "updatedAt": "2020-01-01T00:00:00.000Z", - "state": "pending" - } - ] - } - }, - { - "checkpoint": "load-settled" - } - ] - }, - { - "id": "tk-list-gitlab-items", - "operation": "tasks.task-list-gitlab-items", - "family": "tasks.task-list-gitlab-items", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-task-list-loading.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "load", - "id": "load-0" - }, - { - "complete": "gitlab.listWorkItems#1", - "params": { - "page": 1, - "perPage": 50, - "query": { - "$undefined": true - }, - "repo": "id:repo-1", - "state": "opened" - }, - "reply": { - "ok": true, - "result": { - "items": [ - { - "id": "issue:4", - "type": "issue", - "number": 4, - "title": "A GitLab issue", - "state": "opened", - "url": "", - "labels": [], - "updatedAt": "2020-01-01T00:00:00.000Z", - "author": null - } - ] - } - } - }, - { - "checkpoint": "load-settled" - } - ] - }, - { - "id": "tk-list-linear", - "operation": "tasks.task-list-linear", - "family": "tasks.task-list-linear", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-task-list-loading.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "load", - "id": "load-0" - }, - { - "complete": "linear.listIssues#1", - "params": { - "filter": "all", - "limit": 50, - "workspaceId": "linear-workspace" - }, - "reply": { - "ok": true, - "result": { - "items": [ - { - "id": "issue-1", - "identifier": "ENG-1", - "title": "A Linear issue", - "url": "", - "description": "", - "state": { - "name": "Todo", - "type": "unstarted", - "color": "#000" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "labels": [], - "priority": 0, - "updatedAt": "2020-01-01T00:00:00.000Z", - "workspaceId": "linear-workspace" - } - ] - } - } - }, - { - "checkpoint": "load-settled" - }, - { - "action": "set-query", - "id": "set-query-1", - "args": { - "query": "bug" - } - }, - { - "checkpoint": "set-query-done" - }, - { - "action": "load", - "id": "load-2" - }, - { - "complete": "linear.searchIssues#1", - "params": { - "limit": 50, - "query": "bug", - "workspaceId": "linear-workspace" - }, - "reply": { - "ok": true, - "result": [ - { - "id": "issue-2", - "identifier": "ENG-2", - "title": "A found issue", - "url": "", - "description": "", - "state": { - "name": "Todo", - "type": "unstarted", - "color": "#000" - }, - "team": { - "id": "team-1", - "key": "ENG", - "name": "Engineering" - }, - "labels": [], - "priority": 0, - "updatedAt": "2020-01-01T00:00:00.000Z", - "workspaceId": "linear-workspace" - } - ] - } - }, - { - "checkpoint": "load-settled" - } - ] - }, { "id": "tk-list-linear-switch-back", "operation": "tasks.task-list-linear", @@ -11568,393 +5505,6 @@ } ] }, - { - "id": "tk-linear-connect", - "operation": "tasks.linear-connect", - "family": "tasks.linear-connect", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-task-pagination-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "connect", - "id": "connect-0" - }, - { - "complete": "linear.connect#1", - "params": { - "apiKey": "lin_api_key" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "connect-settled" - } - ] - }, - { - "id": "tk-create-github", - "operation": "tasks.task-create-github", - "family": "tasks.task-create-github", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-task-create-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "create", - "id": "create-0" - }, - { - "complete": "github.createIssue#1", - "params": { - "body": "a body", - "repo": "id:repo-1", - "title": "A new task" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "number": 11, - "url": "https://github.com/owner/repo/issues/11" - } - } - }, - { - "checkpoint": "create-settled" - }, - { - "action": "issue-source", - "id": "issue-source-1" - }, - { - "complete": "repo.update#1", - "params": { - "repo": "id:repo-1", - "updates": { - "issueSourcePreference": "upstream" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "issue-source-settled" - } - ] - }, - { - "id": "tk-create-gitlab", - "operation": "tasks.task-create-gitlab", - "family": "tasks.task-create-gitlab", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-task-create-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "create", - "id": "create-0" - }, - { - "complete": "gitlab.createIssue#1", - "params": { - "body": "a body", - "repo": "id:repo-1", - "title": "A new task" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "number": 6, - "url": "https://gitlab.com/group/project/-/issues/6" - } - } - }, - { - "checkpoint": "create-settled" - } - ] - }, - { - "id": "tk-create-linear", - "operation": "tasks.task-create-linear", - "family": "tasks.task-create-linear", - "sites": ["mobile/src/tasks/task-list/use-mobile-tasks-task-create-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "create", - "id": "create-0" - }, - { - "complete": "linear.createIssue#1", - "params": { - "description": "a body", - "teamId": "team-1", - "title": "A new task", - "workspaceId": "linear-workspace" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "id": "issue-3", - "identifier": "ENG-3", - "title": "A sub-issue", - "url": "" - } - } - }, - { - "checkpoint": "create-settled" - } - ] - }, - { - "id": "tk-item-comment-github", - "operation": "tasks.item-comment-github", - "family": "tasks.item-comment-github", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-hosted-comment-review-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "comment", - "id": "comment-0" - }, - { - "complete": "github.addIssueComment#1", - "params": { - "body": "a comment", - "number": 9, - "repo": "id:repo-1", - "type": "issue", - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 902, - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z" - } - } - } - }, - { - "checkpoint": "comment-settled" - } - ] - }, - { - "id": "tk-item-review-github", - "operation": "tasks.item-review-github", - "family": "tasks.item-review-github", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-hosted-comment-review-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "reviewers", - "id": "reviewers-0" - }, - { - "complete": "github.requestPRReviewers#1", - "params": { - "prNumber": 12, - "repo": "id:repo-1", - "reviewers": ["octocat"], - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "reviewers-settled" - }, - { - "action": "checks", - "id": "checks-1" - }, - { - "complete": "github.prChecks#1", - "params": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "repo": "id:repo-1", - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": [ - { - "name": "build", - "status": "COMPLETED", - "conclusion": "SUCCESS", - "url": "" - } - ] - } - }, - { - "complete": "status.get#1", - "site": "pr-check-discovery", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "recorded", - "hostDescriptor": { - "installationId": "recorded" - }, - "capabilities": ["github.exact-work-item-target.v1"] - } - } - }, - { - "checkpoint": "checks-settled" - } - ] - }, - { - "id": "tk-item-comment-gitlab", - "operation": "tasks.item-comment-gitlab", - "family": "tasks.item-comment-gitlab", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-hosted-comment-review-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "comment", - "id": "comment-0" - }, - { - "complete": "gitlab.addIssueComment#1", - "params": { - "body": "a comment", - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 904, - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z" - } - } - } - }, - { - "checkpoint": "comment-settled" - } - ] - }, - { - "id": "tk-item-comment-gitlab-mr", - "operation": "tasks.item-comment-gitlab-mr", - "family": "tasks.item-comment-gitlab-mr", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-hosted-comment-review-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "comment", - "id": "comment-0" - }, - { - "complete": "gitlab.addMRComment#1", - "params": { - "body": "a comment", - "iid": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 905, - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z" - } - } - } - }, - { - "checkpoint": "comment-settled" - } - ] - }, { "id": "tk-item-checks-files", "operation": "tasks.item-checks-files-github", @@ -12144,397 +5694,6 @@ } ] }, - { - "id": "tk-item-reply-merge", - "operation": "tasks.item-reply-merge-github", - "family": "tasks.item-reply-merge", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-github-reply-merge-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "review-reply", - "id": "review-reply-0" - }, - { - "complete": "github.addPRReviewCommentReply#1", - "params": { - "body": "a reply", - "commentId": 501, - "line": 12, - "path": "src/index.ts", - "prNumber": 12, - "repo": "id:repo-1", - "threadId": "thread-1", - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 903, - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "path": "src/index.ts", - "line": 12, - "threadId": "thread-1" - } - } - } - }, - { - "checkpoint": "review-reply-settled" - }, - { - "action": "issue-reply", - "id": "issue-reply-1" - }, - { - "complete": "github.addIssueComment#1", - "params": { - "body": "@octocat a reply", - "number": 12, - "repo": "id:repo-1", - "type": "pr", - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 902, - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z" - } - } - } - }, - { - "checkpoint": "issue-reply-settled" - }, - { - "action": "merge", - "id": "merge-2" - }, - { - "complete": "github.mergePR#1", - "params": { - "method": "squash", - "prNumber": 12, - "repo": "id:repo-1", - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "merge-settled" - }, - { - "action": "linear-status", - "id": "linear-status-3" - }, - { - "complete": "linear.updateIssue#1", - "params": { - "id": "issue-1", - "updates": { - "stateId": "state-2" - }, - "workspaceId": "linear-workspace" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "linear-status-settled" - } - ] - }, - { - "id": "tk-item-merge-gitlab", - "operation": "tasks.item-merge-gitlab", - "family": "tasks.item-merge-gitlab", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-github-reply-merge-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "merge", - "id": "merge-0" - }, - { - "complete": "gitlab.mergeMR#1", - "params": { - "iid": 7, - "method": "squash", - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "merge-settled" - } - ] - }, - { - "id": "tk-item-status-gitlab", - "operation": "tasks.item-status-gitlab", - "family": "tasks.item-status-gitlab", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-gitlab-github-status-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "gitlab-status", - "id": "gitlab-status-0" - }, - { - "complete": "gitlab.updateIssue#1", - "params": { - "number": 4, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "updates": { - "state": "closed" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "gitlab-status-settled" - }, - { - "action": "github-metadata", - "id": "github-metadata-1" - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "recorded", - "hostDescriptor": { - "installationId": "recorded" - }, - "capabilities": ["github.exact-work-item-target.v1"] - } - } - }, - { - "complete": "github.updateIssue#1", - "params": { - "repo": "id:repo-1", - "number": 9, - "updates": { - "title": "Renamed", - "addLabels": ["triage"], - "removeLabels": ["bug"] - }, - "ownerRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - }, - "transport": "native", - "site": "github.updateIssue#1" - }, - { - "transport": "bridge", - "complete": "github.updateIssue#1.native-1", - "site": "github.updateIssue#1.native-1", - "bridgeSite": true, - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "shell-runtime", - "hostDescriptor": { - "installationId": "shell-desktop" - }, - "capabilities": ["github.exact-work-item-target.v1"] - } - } - }, - { - "complete": "github.updateIssue#1.native-2", - "params": { - "repo": "id:repo-1", - "number": 9, - "updates": { - "title": "Renamed", - "addLabels": ["triage"], - "removeLabels": ["bug"] - }, - "ownerRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - }, - "transport": "bridge", - "site": "github.updateIssue#1" - }, - { - "checkpoint": "github-metadata-settled" - } - ], - "bridgeOperations": [ - { - "request": "github.updateIssue#1", - "probeSite": "github.updateIssue#1.native-1", - "methods": ["status.get", "github.updateIssue"] - } - ] - }, - { - "id": "tk-item-status-gitlab-mr", - "operation": "tasks.item-status-gitlab-mr", - "family": "tasks.item-status-gitlab-mr", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-gitlab-github-status-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "gitlab-status", - "id": "gitlab-status-0" - }, - { - "complete": "gitlab.updateMRState#1", - "params": { - "iid": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "state": "closed" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "gitlab-status-settled" - } - ] - }, - { - "id": "tk-item-metadata-github", - "operation": "tasks.item-metadata-github", - "family": "tasks.item-metadata-github", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-hosted-metadata-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "update-pr", - "id": "update-pr-0" - }, - { - "complete": "github.updatePR#1", - "params": { - "prNumber": 12, - "repo": "id:repo-1", - "updates": { - "body": "new body", - "title": "Renamed" - }, - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "update-pr-settled" - } - ] - }, { "id": "tk-item-metadata-gitlab", "operation": "tasks.item-metadata-gitlab", @@ -12576,77 +5735,6 @@ } ] }, - { - "id": "tk-item-metadata-gitlab-mr", - "operation": "tasks.item-metadata-gitlab-mr", - "family": "tasks.item-metadata-gitlab-mr", - "sites": ["mobile/src/tasks/item-detail/use-mobile-tasks-hosted-metadata-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "update-gitlab", - "id": "update-gitlab-0" - }, - { - "complete": "gitlab.updateMR#1", - "params": { - "iid": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "updates": { - "addLabels": ["triage"], - "body": { - "$undefined": true - }, - "removeLabels": { - "$undefined": true - }, - "title": "Renamed" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - }, - "transport": "native" - }, - { - "complete": "gitlab.updateMR#1.native-1", - "params": { - "iid": 7, - "projectRef": { - "host": "gitlab.com", - "path": "group/project" - }, - "repo": "id:repo-1", - "updates": { - "addLabels": ["triage"], - "title": "Renamed" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - }, - "site": "gitlab.updateMR#1", - "transport": "bridge" - }, - { - "checkpoint": "update-gitlab-settled" - } - ] - }, { "id": "tk-linear-item", "operation": "tasks.linear-item-actions", @@ -12748,198 +5836,6 @@ } ] }, - { - "id": "tk-project-repo-slugs", - "operation": "tasks.project-repo-slugs", - "family": "tasks.project-repo-slugs", - "sites": [ - "mobile/src/tasks/project-board/use-mobile-tasks-project-repository-resolution.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "github.repoSlug#1", - "params": { - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - } - }, - { - "checkpoint": "mounted" - } - ] - }, - { - "id": "tk-project-board-load", - "operation": "tasks.project-board-load", - "family": "tasks.project-board-load", - "sites": ["mobile/src/tasks/project-board/use-mobile-tasks-project-loading-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "projects", - "id": "projects-0" - }, - { - "complete": "github.project.listAccessible#1", - "params": { - "host": "github.com" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "projects": [ - { - "owner": "owner", - "ownerType": "organization", - "number": 3, - "title": "Board", - "host": "github.com" - } - ], - "partialFailures": [] - } - } - }, - { - "checkpoint": "projects-settled" - }, - { - "action": "views", - "id": "views-1" - }, - { - "complete": "github.project.listViews#1", - "params": { - "host": "github.enterprise.test", - "owner": "owner", - "ownerType": "organization", - "projectNumber": 3 - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "views": [ - { - "id": "view-1", - "number": 1, - "name": "Table", - "layout": "TABLE_LAYOUT" - } - ] - } - } - }, - { - "checkpoint": "views-settled" - }, - { - "action": "table", - "id": "table-2" - }, - { - "complete": "github.project.viewTable#1", - "params": { - "host": "github.enterprise.test", - "owner": "owner", - "ownerType": "organization", - "projectNumber": 3, - "viewId": "view-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "data": { - "project": { - "id": "project-1", - "title": "Board", - "number": 3 - }, - "selectedView": { - "id": "view-1", - "number": 1, - "name": "Table", - "filter": "is:open", - "layout": "TABLE_LAYOUT" - }, - "fields": [], - "rows": [] - } - } - } - }, - { - "checkpoint": "table-settled" - }, - { - "action": "paste", - "id": "paste-3" - }, - { - "complete": "github.project.resolveRef#1", - "params": { - "host": "github.com", - "input": "https://github.com/orgs/owner/projects/3" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "owner": "owner", - "ownerType": "organization", - "number": 3, - "title": "Board", - "host": "github.com", - "viewNumber": 1 - } - } - }, - { - "complete": "github.project.listViews#2", - "params": { - "host": "github.com", - "owner": "owner", - "ownerType": "organization", - "projectNumber": 3 - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "views": [ - { - "id": "view-1", - "number": 1, - "name": "Table", - "layout": "TABLE_LAYOUT" - } - ] - } - } - }, - { - "checkpoint": "paste-settled" - } - ] - }, { "id": "tk-project-row-detail", "operation": "tasks.project-row-detail", @@ -12993,1176 +5889,6 @@ } ] }, - { - "id": "tk-project-row-metadata-load", - "operation": "tasks.project-row-metadata-load", - "family": "tasks.project-row-metadata-load", - "sites": ["mobile/src/tasks/project-board/use-mobile-tasks-project-metadata-loading.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "github.project.listLabelsBySlug#1", - "params": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "labels": ["bug"] - } - } - }, - { - "complete": "github.project.listAssignableUsersBySlug#1", - "params": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo", - "seedLogins": ["octocat"] - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "users": [ - { - "login": "octocat", - "name": "Octo" - } - ] - } - } - }, - { - "complete": "github.project.listIssueTypesBySlug#1", - "params": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "types": [ - { - "id": "type-1", - "name": "Bug" - } - ] - } - } - }, - { - "checkpoint": "mounted" - } - ] - }, - { - "id": "tk-project-row-fields", - "operation": "tasks.project-row-fields", - "family": "tasks.project-row-fields", - "sites": ["mobile/src/tasks/project-board/use-mobile-tasks-project-metadata-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "set-field", - "id": "set-field-0" - }, - { - "complete": "github.project.updateItemField#1", - "params": { - "fieldId": "field-1", - "host": "github.enterprise.test", - "itemId": "item-1", - "projectId": "project-1", - "value": { - "kind": "single-select", - "optionId": "option-1" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "set-field-settled" - }, - { - "action": "clear-field", - "id": "clear-field-1" - }, - { - "complete": "github.project.clearItemField#1", - "params": { - "fieldId": "field-1", - "host": "github.enterprise.test", - "itemId": "item-1", - "projectId": "project-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "clear-field-settled" - }, - { - "action": "issue-type", - "id": "issue-type-2" - }, - { - "complete": "github.project.updateIssueTypeBySlug#1", - "params": { - "host": "github.enterprise.test", - "issueTypeId": "type-1", - "number": 1, - "owner": "owner", - "repo": "repo" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "issue-type-settled" - } - ] - }, - { - "id": "tk-project-row-review-checks", - "operation": "tasks.project-row-review-checks", - "family": "tasks.project-row-review-checks", - "sites": ["mobile/src/tasks/project-board/use-mobile-tasks-project-review-check-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "reviewers", - "id": "reviewers-0" - }, - { - "complete": "github.requestPRReviewers#1", - "params": { - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "reviewers": ["octocat"] - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "reviewers-settled" - }, - { - "action": "checks", - "id": "checks-1" - }, - { - "complete": "github.prChecks#1", - "params": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": [ - { - "name": "build", - "status": "COMPLETED", - "conclusion": "SUCCESS", - "url": "" - } - ] - } - }, - { - "checkpoint": "checks-settled" - }, - { - "action": "rerun", - "id": "rerun-2" - }, - { - "complete": "github.rerunPRChecks#1", - "params": { - "failedOnly": true, - "headSha": "head-sha", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "rerun-settled" - }, - { - "action": "viewed", - "id": "viewed-3" - }, - { - "complete": "github.setPRFileViewed#1", - "params": { - "path": "src/index.ts", - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "pullRequestId": "PR_kwDO", - "repo": "id:repo-1", - "viewed": true - }, - "reply": { - "ok": true, - "result": true - } - }, - { - "checkpoint": "viewed-settled" - } - ] - }, - { - "id": "tk-project-row-threads", - "operation": "tasks.project-row-threads", - "family": "tasks.project-row-threads", - "sites": ["mobile/src/tasks/project-board/use-mobile-tasks-project-thread-reply-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "delete-comment", - "id": "delete-comment-0" - }, - { - "complete": "github.project.deleteIssueCommentBySlug#1", - "params": { - "commentId": 501, - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "delete-comment-settled" - }, - { - "action": "thread", - "id": "thread-1" - }, - { - "complete": "github.resolveReviewThread#1", - "params": { - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "resolve": true, - "threadId": "thread-1" - }, - "reply": { - "ok": true, - "result": true - } - }, - { - "checkpoint": "thread-settled" - }, - { - "action": "review-reply", - "id": "review-reply-2" - }, - { - "complete": "github.addPRReviewCommentReply#1", - "params": { - "body": "a reply", - "commentId": 501, - "line": 12, - "path": "src/index.ts", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "threadId": "thread-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 903, - "author": "You", - "body": "a reply", - "createdAt": "2020-01-01T00:00:00.000Z", - "path": "src/index.ts", - "line": 12, - "threadId": "thread-1" - } - } - } - }, - { - "checkpoint": "review-reply-settled" - }, - { - "action": "issue-reply", - "id": "issue-reply-3" - }, - { - "complete": "github.addIssueComment#1", - "params": { - "body": "@octocat a reply", - "number": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "type": "pr" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 902, - "author": "You", - "body": "a comment", - "createdAt": "2020-01-01T00:00:00.000Z" - } - } - } - }, - { - "checkpoint": "issue-reply-settled" - } - ] - }, - { - "id": "tk-project-row-comments-issue", - "operation": "tasks.project-row-comments-issue", - "family": "tasks.project-row-comments-issue", - "sites": [ - "mobile/src/tasks/project-board/use-mobile-tasks-project-workspace-comment-actions.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "update-item", - "id": "update-item-0" - }, - { - "complete": "github.project.updateIssueBySlug#1", - "params": { - "host": "github.enterprise.test", - "number": 1, - "owner": "owner", - "repo": "repo", - "updates": { - "title": "Renamed" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "update-item-settled" - }, - { - "action": "add-comment", - "id": "add-comment-1" - }, - { - "complete": "github.project.addIssueCommentBySlug#1", - "params": { - "body": "a project comment", - "host": "github.enterprise.test", - "number": 1, - "owner": "owner", - "repo": "repo" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 906, - "author": "You", - "body": "a project comment", - "createdAt": "2020-01-01T00:00:00.000Z" - } - } - } - }, - { - "checkpoint": "add-comment-settled" - }, - { - "action": "update-comment", - "id": "update-comment-2" - }, - { - "complete": "github.project.updateIssueCommentBySlug#1", - "params": { - "body": "an edited comment", - "commentId": 501, - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "update-comment-settled" - } - ] - }, - { - "id": "tk-project-row-comments-pr", - "operation": "tasks.project-row-comments-pr", - "family": "tasks.project-row-comments-pr", - "sites": [ - "mobile/src/tasks/project-board/use-mobile-tasks-project-workspace-comment-actions.tsx" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "update-item", - "id": "update-item-0" - }, - { - "complete": "github.project.updatePullRequestBySlug#1", - "params": { - "host": "github.enterprise.test", - "number": 2, - "owner": "owner", - "repo": "repo", - "updates": { - "title": "Renamed" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "update-item-settled" - } - ] - }, - { - "id": "tk-project-row-files-merge", - "operation": "tasks.project-row-files-merge", - "family": "tasks.project-row-files-merge", - "sites": ["mobile/src/tasks/project-board/use-mobile-tasks-project-file-merge-actions.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "expand", - "id": "expand-0" - }, - { - "complete": "github.prFileContents#1", - "params": { - "baseSha": "base-sha", - "headSha": "head-sha", - "oldPath": { - "$undefined": true - }, - "path": "src/index.ts", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "status": "modified" - }, - "reply": { - "ok": true, - "result": { - "original": "a", - "modified": "b", - "originalIsBinary": false, - "modifiedIsBinary": false - } - }, - "transport": "native" - }, - { - "complete": "github.prFileContents#1.native-1", - "params": { - "baseSha": "base-sha", - "headSha": "head-sha", - "path": "src/index.ts", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1", - "status": "modified" - }, - "reply": { - "ok": true, - "result": { - "original": "a", - "modified": "b", - "originalIsBinary": false, - "modifiedIsBinary": false - } - }, - "site": "github.prFileContents#1", - "transport": "bridge" - }, - { - "checkpoint": "expand-settled" - }, - { - "action": "file-comment", - "id": "file-comment-1" - }, - { - "complete": "github.addPRReviewComment#1", - "params": { - "body": "a review comment", - "commitId": "head-sha", - "line": 12, - "path": "src/index.ts", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true, - "comment": { - "id": 901, - "author": "You", - "body": "a review comment", - "createdAt": "2020-01-01T00:00:00.000Z", - "path": "src/index.ts", - "line": 12 - } - } - } - }, - { - "checkpoint": "file-comment-settled" - }, - { - "action": "merge", - "id": "merge-2" - }, - { - "complete": "github.mergePR#1", - "params": { - "method": "squash", - "prNumber": 2, - "prRepo": { - "host": "github.enterprise.test", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "merge-settled" - }, - { - "action": "issue-state", - "id": "issue-state-3" - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "recorded", - "hostDescriptor": { - "installationId": "recorded" - }, - "capabilities": ["github.exact-work-item-target.v1"] - } - } - }, - { - "complete": "github.updateIssue#1", - "params": { - "repo": "id:repo-1", - "number": 9, - "updates": { - "state": "closed" - }, - "ownerRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - }, - "transport": "native", - "site": "github.updateIssue#1" - }, - { - "transport": "bridge", - "complete": "github.updateIssue#1.native-1", - "site": "github.updateIssue#1.native-1", - "bridgeSite": true, - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "runtimeId": "shell-runtime", - "hostDescriptor": { - "installationId": "shell-desktop" - }, - "capabilities": ["github.exact-work-item-target.v1"] - } - } - }, - { - "complete": "github.updateIssue#1.native-2", - "params": { - "repo": "id:repo-1", - "number": 9, - "updates": { - "state": "closed" - }, - "ownerRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - }, - "transport": "bridge", - "site": "github.updateIssue#1" - }, - { - "checkpoint": "issue-state-settled" - }, - { - "action": "pr-state", - "id": "pr-state-4" - }, - { - "complete": "github.updatePRState#1", - "params": { - "prNumber": 12, - "repo": "id:repo-1", - "updates": { - "state": "closed" - }, - "prRepo": { - "owner": "owner", - "repo": "repo", - "host": "github.com" - } - }, - "reply": { - "ok": true, - "result": { - "ok": true - } - } - }, - { - "checkpoint": "pr-state-settled" - } - ], - "bridgeOperations": [ - { - "request": "github.updateIssue#1", - "probeSite": "github.updateIssue#1.native-1", - "methods": ["status.get", "github.updateIssue"] - } - ] - }, - { - "id": "speech-setup-sheet-fulfilled", - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "sites": ["mobile/src/dictation/mobile-dictation-setup.ts"], - "schedules": [], - "steps": [ - { - "action": "list", - "id": "list" - }, - { - "complete": "speech.models.list#1", - "params": null, - "reply": { - "ok": true, - "result": { - "enabled": true, - "selectedModelId": "whisper-small", - "models": [ - { - "id": "whisper-small", - "name": "Small", - "status": "ready" - } - ] - } - } - }, - { - "action": "download", - "id": "download" - }, - { - "complete": "speech.models.download#1", - "params": { - "modelId": "whisper-small" - }, - "reply": { - "ok": true, - "result": { - "started": true - } - } - }, - { - "action": "delete", - "id": "delete" - }, - { - "complete": "speech.models.delete#1", - "params": { - "modelId": "whisper-small" - }, - "reply": { - "ok": true, - "result": { - "enabled": true, - "selectedModelId": "whisper-small", - "models": [] - } - } - }, - { - "action": "configure", - "id": "configure" - }, - { - "complete": "speech.dictation.setup#1", - "params": { - "enabled": true, - "modelId": "whisper-small" - }, - "reply": { - "ok": true, - "result": { - "enabled": true, - "selectedModelId": "whisper-small", - "models": [ - { - "id": "whisper-small", - "name": "Small", - "status": "ready" - } - ] - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "speech-setup-sheet-model-vocabulary", - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "sites": ["mobile/src/dictation/mobile-dictation-setup.ts"], - "schedules": [], - "steps": [ - { - "action": "list", - "id": "list" - }, - { - "complete": "speech.models.list#1", - "params": null, - "reply": { - "ok": true, - "result": { - "enabled": true, - "selectedModelId": "gpt-4o-transcribe", - "dictationMode": "hold", - "models": [ - { - "id": "whisper-small", - "label": "Small", - "provider": "local", - "status": "downloading", - "sizeBytes": 466862080, - "progress": 0.42, - "recommended": true - }, - { - "id": "gpt-4o-transcribe", - "label": "OpenAI", - "provider": "openai", - "status": "ready", - "sizeBytes": null, - "progress": null, - "recommended": false - } - ] - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "speech-setup-sheet-legacy-desktop", - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "sites": ["mobile/src/dictation/mobile-dictation-setup.ts"], - "schedules": [], - "steps": [ - { - "action": "list", - "id": "list" - }, - { - "complete": "speech.models.list#1", - "params": null, - "reply": { - "ok": false, - "error": { - "code": "method_not_found", - "message": "Unknown method: speech.models.list" - } - } - }, - { - "checkpoint": "legacy-desktop" - } - ] - }, - { - "id": "speech-setup-sheet-denied-to-mobile", - "operation": "speech.setup-sheet", - "family": "speech.setup-sheet", - "sites": ["mobile/src/dictation/mobile-dictation-setup.ts"], - "schedules": [], - "steps": [ - { - "action": "list", - "id": "list" - }, - { - "complete": "speech.models.list#1", - "params": null, - "reply": { - "ok": false, - "error": { - "code": "forbidden", - "message": "speech.models.list is not available to mobile clients" - } - } - }, - { - "checkpoint": "denied" - } - ] - }, - { - "id": "speech-desktop-start-superseded", - "operation": "speech.desktop-start", - "family": "speech.dictation-start", - "sites": ["mobile/src/hooks/mobile-dictation-desktop-start.ts"], - "schedules": [], - "steps": [ - { - "action": "supersede", - "id": "supersede" - }, - { - "action": "start", - "id": "start" - }, - { - "complete": "speech.dictation.start#1", - "params": { - "dictationId": "dictation-1" - }, - "reply": { - "ok": true, - "result": { - "started": true - } - } - }, - { - "complete": "speech.dictation.cancel#1", - "params": { - "dictationId": "dictation-1" - }, - "reply": { - "ok": true, - "result": { - "cancelled": true - } - } - }, - { - "checkpoint": "stale-start-cancelled" - } - ] - }, - { - "id": "speech-audio-chunk-acknowledged", - "operation": "speech.audio-chunk", - "family": "speech.dictation-chunk", - "sites": ["mobile/src/hooks/mobile-dictation-audio-chunk.ts"], - "schedules": [], - "steps": [ - { - "action": "chunk", - "id": "chunk" - }, - { - "complete": "speech.dictation.chunk#1", - "params": { - "audioBase64": "ACVKb5S53gM=", - "dictationId": "dictation-1", - "sampleRate": 16000, - "seq": 0 - }, - "reply": { - "ok": true, - "result": { - "received": true - } - } - }, - { - "checkpoint": "acknowledged" - } - ] - }, - { - "id": "speech-dictation-session-transcript", - "operation": "speech.dictation-session", - "family": "speech.dictation-session", - "sites": ["mobile/src/hooks/use-mobile-dictation.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "start", - "id": "start" - }, - { - "complete": "speech.dictation.start#1", - "params": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - }, - "reply": { - "ok": true, - "result": { - "started": true - } - } - }, - { - "action": "stop", - "id": "stop" - }, - { - "complete": "speech.dictation.finish#1", - "params": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - }, - "reply": { - "ok": true, - "result": { - "text": " hello world " - } - } - }, - { - "checkpoint": "transcribed" - } - ] - }, - { - "id": "speech-dictation-session-cancelled", - "operation": "speech.dictation-session", - "family": "speech.dictation-session", - "sites": ["mobile/src/hooks/use-mobile-dictation.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "start", - "id": "start" - }, - { - "complete": "speech.dictation.start#1", - "params": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - }, - "reply": { - "ok": true, - "result": { - "started": true - } - } - }, - { - "action": "cancel", - "id": "cancel" - }, - { - "complete": "speech.dictation.cancel#1", - "params": { - "dictationId": "mobile-dictation-1767225600000-8ig2henseon" - }, - "reply": { - "ok": true, - "result": { - "cancelled": true - } - } - }, - { - "checkpoint": "cancelled" - } - ] - }, { "id": "aivault-history-scan-worktrees-late", "operation": "aiVault.history-scan", @@ -14978,76 +6704,6 @@ } ] }, - { - "id": "native-chat-image-paste-single", - "operation": "nativeChat.image-paste", - "family": "nativeChat.image-paste", - "sites": ["mobile/src/session/native-chat/composer/mobile-native-chat-image-send.ts"], - "schedules": [], - "steps": [ - { - "action": "one", - "id": "one" - }, - { - "complete": "terminal.read#1", - "params": { - "terminal": "terminal-1", - "screen": true, - "limit": 1 - }, - "reply": { - "ok": true, - "result": { - "terminal": {} - } - } - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "complete": "terminal.send#2", - "params": { - "terminal": "terminal-1", - "text": "\u001b[200~@/tmp/a.png\u001b[201~ ", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "pasted" - } - ] - }, { "id": "native-chat-image-paste-two-images", "operation": "nativeChat.image-paste", @@ -15208,78 +6864,6 @@ } ] }, - { - "id": "native-chat-write-accepted", - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "sites": ["mobile/src/session/native-chat/composer/mobile-native-chat-send.ts"], - "schedules": [], - "steps": [ - { - "action": "body", - "id": "body" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "hello", - "enter": true, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "accepted" - } - ] - }, - { - "id": "native-chat-write-rejected", - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "sites": ["mobile/src/session/native-chat/composer/mobile-native-chat-send.ts"], - "schedules": [], - "steps": [ - { - "action": "body", - "id": "body" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "hello", - "enter": true, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - }, - { - "checkpoint": "rejected" - } - ] - }, { "id": "native-chat-write-delivery-unknown", "operation": "nativeChat.terminal-write", @@ -15312,419 +6896,6 @@ } ] }, - { - "id": "native-chat-write-clear-line", - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "sites": ["mobile/src/session/native-chat/composer/mobile-native-chat-send.ts"], - "schedules": [], - "steps": [ - { - "action": "clear", - "id": "clear" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "\u0015", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "cleared" - } - ] - }, - { - "id": "native-chat-write-typed-command", - "operation": "nativeChat.terminal-write", - "family": "nativeChat.terminal-write", - "sites": ["mobile/src/session/native-chat/composer/mobile-native-chat-send.ts"], - "schedules": [], - "steps": [ - { - "action": "command", - "id": "command" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "\u0015", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "advance": 16 - }, - { - "complete": "terminal.send#2", - "params": { - "terminal": "terminal-1", - "text": "o", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "advance": 16 - }, - { - "complete": "terminal.send#3", - "params": { - "terminal": "terminal-1", - "text": "k", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "advance": 16 - }, - { - "complete": "terminal.send#4", - "params": { - "terminal": "terminal-1", - "text": "\r", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "typed" - } - ] - }, - { - "id": "native-chat-session-option-pick-written", - "operation": "nativeChat.session-option-pick", - "family": "nativeChat.session-option-pick", - "sites": [ - "mobile/src/session/native-chat/input/mobile-native-chat-session-option-persistence.ts" - ], - "schedules": [], - "steps": [ - { - "action": "pick", - "id": "pick" - }, - { - "complete": "settings.mutateNativeChatSessionOptions#1", - "params": { - "type": "apply-picks", - "agent": "claude", - "picks": [ - { - "modelId": "opus", - "optionId": "model", - "value": "opus" - } - ] - }, - "reply": { - "ok": true, - "result": { - "applied": true - } - } - }, - { - "checkpoint": "written" - } - ] - }, - { - "id": "native-chat-session-option-pick-refused", - "operation": "nativeChat.session-option-pick", - "family": "nativeChat.session-option-pick", - "sites": [ - "mobile/src/session/native-chat/input/mobile-native-chat-session-option-persistence.ts" - ], - "schedules": [], - "steps": [ - { - "action": "pick", - "id": "pick" - }, - { - "complete": "settings.mutateNativeChatSessionOptions#1", - "params": { - "type": "apply-picks", - "agent": "claude", - "picks": [ - { - "modelId": "opus", - "optionId": "model", - "value": "opus" - } - ] - }, - "reply": { - "ok": false, - "error": { - "code": "method_not_found", - "message": "Unknown method" - } - } - }, - { - "checkpoint": "refusal-swallowed" - } - ] - }, - { - "id": "native-chat-session-option-pick-empty", - "operation": "nativeChat.session-option-pick", - "family": "nativeChat.session-option-pick", - "sites": [ - "mobile/src/session/native-chat/input/mobile-native-chat-session-option-persistence.ts" - ], - "schedules": [], - "steps": [ - { - "action": "empty", - "id": "empty" - }, - { - "checkpoint": "no-wire" - } - ] - }, - { - "id": "session-tab-activation-focus-and-activate", - "operation": "session.tab-activation", - "family": "session.tab-activation", - "sites": ["mobile/src/session/tabs/mobile-session-tab-activation.ts"], - "schedules": [], - "steps": [ - { - "action": "focus", - "id": "focus" - }, - { - "complete": "terminal.focus#1", - "params": { - "navigation": "host", - "terminal": "terminal-1" - }, - "reply": { - "ok": true, - "result": { - "focused": true - } - } - }, - { - "action": "activate", - "id": "activate" - }, - { - "complete": "session.tabs.activate#1", - "params": { - "intent": "user", - "navigation": "caller", - "notifyClients": false, - "tabId": "tab-1", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "activated": true - } - } - }, - { - "checkpoint": "activated" - } - ] - }, - { - "id": "session-tab-activation-refused", - "operation": "session.tab-activation", - "family": "session.tab-activation", - "sites": ["mobile/src/session/tabs/mobile-session-tab-activation.ts"], - "schedules": [], - "steps": [ - { - "action": "activate", - "id": "activate" - }, - { - "complete": "session.tabs.activate#1", - "params": { - "intent": "user", - "navigation": "caller", - "notifyClients": false, - "tabId": "tab-1", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "tab_not_found", - "message": "No such tab" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "session-tab-activation-transport-error", - "operation": "session.tab-activation", - "family": "session.tab-activation", - "sites": ["mobile/src/session/tabs/mobile-session-tab-activation.ts"], - "schedules": [], - "steps": [ - { - "action": "focus", - "id": "focus" - }, - { - "complete": "terminal.focus#1", - "params": { - "navigation": "host", - "terminal": "terminal-1" - }, - "reject": { - "message": "Request timed out" - } - }, - { - "checkpoint": "errored" - } - ] - }, - { - "id": "session-tabs-health-reconciled", - "operation": "session.tabs-stream-health", - "family": "session.tabs-stream-health", - "sites": ["mobile/src/session/tabs/mobile-session-tabs-stream-health.ts"], - "schedules": [], - "steps": [ - { - "action": "activate", - "id": "activate" - }, - { - "action": "reconcile", - "id": "reconcile" - }, - { - "complete": "session.tabs.list#1", - "params": { - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "tabs": [ - { - "id": "tab-1" - } - ] - } - } - }, - { - "checkpoint": "reconciled" - } - ] - }, - { - "id": "session-tabs-health-refused", - "operation": "session.tabs-stream-health", - "family": "session.tabs-stream-health", - "sites": ["mobile/src/session/tabs/mobile-session-tabs-stream-health.ts"], - "schedules": [], - "steps": [ - { - "action": "activate", - "id": "activate" - }, - { - "action": "reconcile", - "id": "reconcile" - }, - { - "complete": "session.tabs.list#1", - "params": { - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "worktree_not_found", - "message": "No such workspace" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, { "id": "session-tabs-health-stale-application-revision", "operation": "session.tabs-stream-health", @@ -15765,36 +6936,6 @@ } ] }, - { - "id": "session-tabs-health-errored", - "operation": "session.tabs-stream-health", - "family": "session.tabs-stream-health", - "sites": ["mobile/src/session/tabs/mobile-session-tabs-stream-health.ts"], - "schedules": [], - "steps": [ - { - "action": "activate", - "id": "activate" - }, - { - "action": "reconcile", - "id": "reconcile" - }, - { - "complete": "session.tabs.list#1", - "params": { - "worktree": "id:workspace-1" - }, - "reject": { - "message": "Connection lost", - "deliveryUnknown": true - } - }, - { - "checkpoint": "errored" - } - ] - }, { "id": "file-tap-opens-worktree-file", "operation": "files.terminal-path-tap", @@ -15931,309 +7072,6 @@ } ] }, - { - "id": "session-markdown-tab-disk-fallback", - "operation": "session.tab-documents", - "family": "session.tab-documents", - "sites": ["mobile/src/files/session-documents/use-mobile-session-document-readers.ts"], - "schedules": [], - "steps": [ - { - "action": "markdown", - "id": "markdown" - }, - { - "complete": "markdown.readTab#1", - "params": { - "tabId": "tab-md", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "renderer_unavailable", - "message": "Renderer unavailable" - } - } - }, - { - "complete": "files.read#1", - "params": { - "relativePath": "docs/readme.md", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "content": "# disk", - "truncated": false, - "byteLength": 6 - } - } - }, - { - "checkpoint": "fell-back" - } - ] - }, - { - "id": "session-terminal-list-merged", - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "sites": ["mobile/src/terminal/session/inventory/use-mobile-session-terminal-list.ts"], - "schedules": [], - "steps": [ - { - "action": "fetch", - "id": "fetch" - }, - { - "complete": "terminal.list#1", - "params": { - "includeVisualLayouts": false, - "includePreview": false, - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "terminals": [ - { - "handle": "terminal-1", - "title": "one" - }, - { - "handle": "terminal-2", - "title": "two" - } - ] - } - } - }, - { - "checkpoint": "listed" - } - ] - }, - { - "id": "session-terminal-list-dedupes-handles", - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "sites": ["mobile/src/terminal/session/inventory/use-mobile-session-terminal-list.ts"], - "schedules": [], - "steps": [ - { - "action": "fetch", - "id": "fetch" - }, - { - "complete": "terminal.list#1", - "params": { - "includeVisualLayouts": false, - "includePreview": false, - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "terminals": [ - { - "handle": "terminal-1", - "title": "one" - }, - { - "handle": "terminal-1", - "title": "renamed" - } - ] - } - } - }, - { - "checkpoint": "deduped" - } - ] - }, - { - "id": "session-terminal-list-refused", - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "sites": ["mobile/src/terminal/session/inventory/use-mobile-session-terminal-list.ts"], - "schedules": [], - "steps": [ - { - "action": "fetch", - "id": "fetch" - }, - { - "complete": "terminal.list#1", - "params": { - "includeVisualLayouts": false, - "includePreview": false, - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "worktree_not_found", - "message": "No such workspace" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "session-terminal-list-empty-guarded", - "operation": "session.terminal-inventory", - "family": "session.terminal-inventory", - "sites": ["mobile/src/terminal/session/inventory/use-mobile-session-terminal-list.ts"], - "schedules": [], - "steps": [ - { - "action": "no-empty", - "id": "no-empty" - }, - { - "complete": "terminal.list#1", - "params": { - "includeVisualLayouts": false, - "includePreview": false, - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "terminals": [] - } - } - }, - { - "checkpoint": "kept" - } - ] - }, - { - "id": "native-chat-stop-accepted", - "operation": "session.native-chat-stop", - "family": "session.native-chat-stop", - "sites": ["mobile/src/session/native-chat/composer/use-mobile-native-chat-stop.ts"], - "schedules": [], - "steps": [ - { - "action": "stop", - "id": "stop" - }, - { - "complete": "terminal.send#1", - "params": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "first-accepted" - }, - { - "advance": 1000 - }, - { - "complete": "terminal.send#2", - "params": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - }, - "optional": true, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "native-chat-stop-both-rejected", - "operation": "session.native-chat-stop", - "family": "session.native-chat-stop", - "sites": ["mobile/src/session/native-chat/composer/use-mobile-native-chat-stop.ts"], - "schedules": [], - "steps": [ - { - "action": "stop", - "id": "stop" - }, - { - "complete": "terminal.send#1", - "params": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - }, - { - "advance": 1000 - }, - { - "complete": "terminal.send#2", - "params": { - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "terminal": "terminal-1", - "text": "\u001b" - }, - "optional": true, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - }, - { - "checkpoint": "reported" - } - ] - }, { "id": "native-chat-stop-delivery-unknown", "operation": "session.native-chat-stop", @@ -16284,78 +7122,6 @@ } ] }, - { - "id": "session-create-markdown-note", - "operation": "session.content-create", - "family": "session.content-create", - "sites": ["mobile/src/session/use-mobile-session-content-create-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "markdown", - "id": "markdown" - }, - { - "complete": "status.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "capabilities": ["files.mutation-ownership.v1"] - } - } - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "hostId": "local" - } - } - } - }, - { - "complete": "files.createFile#1", - "params": { - "expectedExecutionHostId": "local", - "relativePath": "untitled.md", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "created": true - } - } - }, - { - "complete": "files.open#1", - "params": { - "relativePath": "untitled.md", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "opened": true - } - } - }, - { - "advance": 300 - }, - { - "checkpoint": "created" - } - ] - }, { "id": "session-create-markdown-name-collision", "operation": "session.content-create", @@ -16443,265 +7209,6 @@ } ] }, - { - "id": "session-create-browser-tab", - "operation": "session.content-create", - "family": "session.content-create", - "sites": ["mobile/src/session/use-mobile-session-content-create-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "browser", - "id": "browser" - }, - { - "complete": "browser.tabCreate#1", - "params": { - "activate": true, - "url": "https://example.com/", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "browserPageId": "page-1" - } - } - }, - { - "advance": 1200 - }, - { - "checkpoint": "created" - } - ] - }, - { - "id": "session-create-browser-refused", - "operation": "session.content-create", - "family": "session.content-create", - "sites": ["mobile/src/session/use-mobile-session-content-create-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "browser", - "id": "browser" - }, - { - "complete": "browser.tabCreate#1", - "params": { - "activate": true, - "url": "https://example.com/", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "browser_unavailable", - "message": "Browser unavailable" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "session-tab-close-terminal", - "operation": "session.tab-close", - "family": "session.tab-close", - "sites": ["mobile/src/session/tabs/use-mobile-session-close-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "close-terminal", - "id": "close-terminal" - }, - { - "complete": "terminal.close#1", - "params": { - "terminal": "terminal-1" - }, - "reply": { - "ok": true, - "result": { - "closed": true - } - } - }, - { - "checkpoint": "closed" - } - ] - }, - { - "id": "session-tab-close-refused-keeps-tab", - "operation": "session.tab-close", - "family": "session.tab-close", - "sites": ["mobile/src/session/tabs/use-mobile-session-close-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "close-terminal", - "id": "close-terminal" - }, - { - "complete": "terminal.close#1", - "params": { - "terminal": "terminal-1" - }, - "reply": { - "ok": false, - "error": { - "code": "terminal_not_found", - "message": "No such terminal" - } - } - }, - { - "checkpoint": "kept" - } - ] - }, - { - "id": "session-tab-close-session-tab", - "operation": "session.tab-close", - "family": "session.tab-close", - "sites": ["mobile/src/session/tabs/use-mobile-session-close-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "close-tab", - "id": "close-tab" - }, - { - "complete": "session.tabs.close#1", - "params": { - "reason": "user", - "tabId": "tab-1", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "closed": true - } - } - }, - { - "checkpoint": "closed" - } - ] - }, - { - "id": "session-tab-close-host-unavailable-tells-user", - "operation": "session.tab-close", - "family": "session.tab-close", - "sites": ["mobile/src/session/tabs/use-mobile-session-close-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "close-tab", - "id": "close-tab" - }, - { - "complete": "session.tabs.close#1", - "params": { - "reason": "user", - "tabId": "tab-1", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "runtime_unavailable", - "message": "runtime_unavailable" - } - } - }, - { - "checkpoint": "kept" - } - ] - }, - { - "id": "review-mark-reviewed-persists", - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mark-reviewed", - "id": "mark-reviewed" - }, - { - "complete": "worktree.set#1", - "params": { - "diffComments": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "worktreeId": "workspace-1", - "side": "modified" - } - ], - "diffCommentsBase": [ - { - "body": "needs a test", - "createdAt": 0, - "filePath": "src/app.ts", - "id": "note-1", - "lineNumber": 4, - "worktreeId": "workspace-1", - "side": "modified" - } - ], - "mobileDiffReview": { - "completedAt": 1767225600000, - "files": { - "unstaged:src/app.ts": { - "filePath": "src/app.ts", - "key": "unstaged:src/app.ts", - "lastOpenedAt": { - "$undefined": true - }, - "lastSeenDiffIdentity": "identity-1", - "oldPath": { - "$undefined": true - }, - "reviewDiffIdentity": "identity-1", - "reviewedAt": 1767225600000, - "scope": "unstaged" - } - }, - "updatedAt": 1767225600000, - "version": 1 - }, - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "updated": true - } - } - }, - { - "checkpoint": "persisted" - } - ] - }, { "id": "review-mark-reviewed-rolls-back", "operation": "session.diff-review-actions", @@ -16780,320 +7287,6 @@ } ] }, - { - "id": "review-stage-file", - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "stage", - "id": "stage" - }, - { - "complete": "git.stage#1", - "params": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "staged": true - } - } - }, - { - "checkpoint": "staged" - } - ] - }, - { - "id": "review-stage-refused", - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "discard", - "id": "discard" - }, - { - "complete": "git.discard#1", - "params": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "git_conflict", - "message": "Cannot discard during a merge" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "review-open-in-session", - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "open-in-session", - "id": "open-in-session" - }, - { - "complete": "files.openDiff#1", - "params": { - "relativePath": "src/app.ts", - "staged": false, - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "opened": true - } - } - }, - { - "checkpoint": "opened" - } - ] - }, - { - "id": "review-send-notes-heals-stale-input", - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mark-stale", - "id": "mark-stale" - }, - { - "action": "send-notes", - "id": "send-notes" - }, - { - "complete": "terminal.read#1", - "params": { - "terminal": "terminal-1", - "screen": true, - "limit": 1 - }, - "reply": { - "ok": true, - "result": { - "terminal": {} - } - } - }, - { - "complete": "terminal.send#1", - "params": { - "enter": false, - "terminal": "terminal-1", - "text": "\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u0015\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b" - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "healed" - } - ] - }, - { - "id": "review-create-agent-refused", - "operation": "session.diff-review-actions", - "family": "session.diff-review-actions", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "create-and-send", - "id": "create-and-send" - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "workspace-1" - } - ] - } - } - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "defaultTuiAgent": null, - "disabledTuiAgents": [] - } - } - } - }, - { - "complete": "preflight.detectAgents#1", - "params": { - "worktreeId": "workspace-1" - }, - "reply": { - "ok": true, - "result": ["claude"] - } - }, - { - "complete": "agent.launchReplay#1", - "params": { - "agent": "claude", - "operationId": "1767225600000-00000000000040008000000000000001", - "target": { - "kind": "existing", - "worktree": "id:workspace-1" - }, - "prompt": { - "delivery": "submit", - "text": "File: src/app.ts\nLine: 4\nUser comment: \"needs a test\"" - }, - "launchSource": "notes_send" - }, - "reply": { - "ok": false, - "error": { - "code": "selector_not_found", - "message": "Workspace not found" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "session-markdown-saved", - "operation": "session.markdown-save", - "family": "session.markdown-save", - "sites": ["mobile/src/files/session-documents/use-mobile-session-markdown-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "save", - "id": "save" - }, - { - "complete": "markdown.saveTab#1", - "params": { - "baseVersion": "v1", - "content": "# b", - "tabId": "tab-md", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "content": "# b", - "version": "v2", - "isDirty": false - } - } - }, - { - "checkpoint": "saved" - } - ] - }, - { - "id": "session-markdown-save-conflict", - "operation": "session.markdown-save", - "family": "session.markdown-save", - "sites": ["mobile/src/files/session-documents/use-mobile-session-markdown-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "save", - "id": "save" - }, - { - "complete": "markdown.saveTab#1", - "params": { - "baseVersion": "v1", - "content": "# b", - "tabId": "tab-md", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": false, - "error": { - "code": "version_conflict", - "message": "Document changed on disk" - } - } - }, - { - "checkpoint": "conflicted" - } - ] - }, { "id": "quick-commands-loaded-and-saved", "operation": "settings.quick-commands", @@ -17206,155 +7399,6 @@ } ] }, - { - "id": "quick-commands-load-refused", - "operation": "settings.quick-commands", - "family": "settings.quick-commands", - "sites": ["mobile/src/terminal/quick-commands/use-quick-commands.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "settings.getTerminalQuickCommands#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": false, - "error": { - "code": "method_not_found", - "message": "Unknown method" - } - } - }, - { - "checkpoint": "errored" - } - ] - }, - { - "id": "native-chat-image-upload-start-refused", - "operation": "nativeChat.image-upload", - "family": "nativeChat.image-upload", - "sites": ["mobile/src/session/native-chat/composer/mobile-native-chat-image-attachment.ts"], - "schedules": [], - "steps": [ - { - "action": "normal", - "id": "normal" - }, - { - "complete": "clipboard.startImageUpload#1", - "params": { - "connectionId": "connection-1", - "expectedBase64Length": 32 - }, - "reply": { - "ok": false, - "error": { - "code": "too_large", - "message": "Image is too large" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, - { - "id": "native-chat-image-upload-two", - "operation": "nativeChat.image-upload", - "family": "nativeChat.image-upload", - "sites": ["mobile/src/session/native-chat/composer/mobile-native-chat-image-attachment.ts"], - "schedules": [], - "steps": [ - { - "action": "two", - "id": "two" - }, - { - "complete": "clipboard.startImageUpload#1", - "params": { - "connectionId": "connection-1", - "expectedBase64Length": 32 - }, - "reply": { - "ok": true, - "result": { - "uploadId": "upload-1" - } - } - }, - { - "complete": "clipboard.appendImageUploadChunk#1", - "params": { - "uploadId": "upload-1", - "offset": 0, - "contentBase64": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "reply": { - "ok": true, - "result": { - "received": 32 - } - } - }, - { - "complete": "clipboard.commitImageUpload#1", - "params": { - "uploadId": "upload-1" - }, - "reply": { - "ok": true, - "result": "/tmp/img-1.png" - } - }, - { - "complete": "clipboard.startImageUpload#2", - "params": { - "connectionId": "connection-1", - "expectedBase64Length": 32 - }, - "reply": { - "ok": true, - "result": { - "uploadId": "upload-2" - } - } - }, - { - "complete": "clipboard.appendImageUploadChunk#2", - "params": { - "uploadId": "upload-2", - "offset": 0, - "contentBase64": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "reply": { - "ok": true, - "result": { - "received": 32 - } - } - }, - { - "complete": "clipboard.commitImageUpload#2", - "params": { - "uploadId": "upload-2" - }, - "reply": { - "ok": true, - "result": "/tmp/img-2.png" - } - }, - { - "checkpoint": "uploaded-both" - } - ] - }, { "id": "native-chat-image-upload-second-fails", "operation": "nativeChat.image-upload", @@ -17481,333 +7525,6 @@ } ] }, - { - "id": "new-workspace-repositories-fulfilled", - "operation": "workspace.repositories", - "family": "components.new-workspace-repositories", - "sites": ["mobile/src/components/use-new-workspace-repositories.ts"], - "schedules": [], - "deviceStore": { - "orca:last-visited-worktree": "{\"hostId\":\"host-1\",\"worktreeId\":\"repo-b::/tmp/repo-b\"}" - }, - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "checkpoint": "loading" - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-a", - "displayName": "alpha", - "path": "/tmp/repo-a" - }, - { - "id": "repo-b", - "displayName": "beta", - "path": "/tmp/repo-b" - } - ] - } - } - }, - { - "checkpoint": "selected" - } - ] - }, - { - "id": "terminal-paste-accepted", - "operation": "session.terminal-clipboard", - "family": "session.terminal-paste", - "sites": [ - "mobile/src/terminal/session/input-controls/use-mobile-terminal-paste.ts", - "mobile/src/terminal/session/accessory-keys/use-mobile-session-accessory-selection.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "terminalCopyTrimsGutter": true - } - } - } - }, - { - "action": "copy", - "id": "copy", - "args": { - "text": "echo hi" - } - }, - { - "checkpoint": "copied" - }, - { - "action": "paste", - "id": "paste" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "\u001b[200~echo hi\u001b[201~", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "pasted" - } - ] - }, - { - "id": "terminal-paste-refused", - "operation": "session.terminal-clipboard", - "family": "session.terminal-paste", - "sites": ["mobile/src/terminal/session/input-controls/use-mobile-terminal-paste.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "terminalCopyTrimsGutter": true - } - } - } - }, - { - "action": "copy", - "id": "copy", - "args": { - "text": "echo hi" - } - }, - { - "action": "paste", - "id": "paste" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "\u001b[200~echo hi\u001b[201~", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": false - } - } - } - }, - { - "checkpoint": "not-reported" - } - ] - }, - { - "id": "terminal-worktree-connection-resolved", - "operation": "session.terminal-clipboard", - "family": "session.worktree-connection", - "sites": [ - "mobile/src/terminal/session/accessory-keys/use-mobile-session-accessory-selection.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "complete": "settings.get#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "settings": { - "terminalCopyTrimsGutter": true - } - } - } - }, - { - "action": "connection", - "id": "connection" - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-z", - "displayName": "zeta", - "connectionId": "ssh-zeta" - }, - { - "id": "repo-a", - "displayName": "alpha", - "connectionId": "ssh-alpha" - } - ] - } - } - }, - { - "checkpoint": "resolved" - } - ] - }, - { - "id": "terminal-live-input-accepted", - "operation": "session.terminal-input-send", - "family": "session.terminal-input-send", - "sites": [ - "mobile/src/terminal/session/input-controls/use-mobile-session-terminal-send-actions.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "live", - "id": "live", - "args": { - "bytes": "ls" - } - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "ls", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "live-sent" - } - ] - }, - { - "id": "notifications-display-test-accepted", - "operation": "notifications.display-test-screen", - "family": "notifications.display-test-screen", - "sites": ["mobile/src/settings/notification-display-test.tsx"], - "schedules": [], - "deviceStore": { - "orca:pushServiceNotificationsEnabled": "true", - "orca:hosts": "[{\"id\":\"host-1\",\"name\":\"Desk\",\"endpoint\":\"ws://desk.local:7777\",\"publicKeyB64\":\"AAAA\",\"lastConnected\":1700000000000}]" - }, - "deviceState": { - "notificationPermissions": { - "status": "granted", - "canAskAgain": true - }, - "pushToken": { - "type": "ios", - "data": "fixture-apns-token" - } - }, - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "checkpoint": "mounted" - }, - { - "action": "send-test", - "id": "press" - }, - { - "checkpoint": "sending" - }, - { - "complete": "notifications.testPush#1", - "params": null, - "reply": { - "ok": true, - "result": { - "accepted": true - } - } - }, - { - "checkpoint": "accepted" - } - ] - }, { "id": "notifications-display-test-not-registered", "operation": "notifications.display-test-screen", @@ -17859,53 +7576,6 @@ } ] }, - { - "id": "tasks-route-repo-list", - "operation": "tasks.route-repo-list", - "family": "tasks.route-repo-list", - "sites": ["mobile/src/tasks/screen-state/use-mobile-tasks-route-and-item-state.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "checkpoint": "idle" - }, - { - "action": "ensure-repos", - "id": "ensure" - }, - { - "checkpoint": "repos-pending" - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo-1", - "name": "orca" - }, - { - "id": "repo-2", - "name": "relay" - } - ] - } - } - }, - { - "checkpoint": "repos-loaded" - } - ] - }, { "id": "live-worktree-name-stream", "operation": "session.live-worktree-name", @@ -18029,101 +7699,6 @@ } ] }, - { - "id": "host-worktree-refresh-stream", - "operation": "worktree.host-refresh", - "family": "host-worktree-refresh", - "sites": ["mobile/src/worktree/host-worktree-refresh.ts"], - "schedules": [], - "steps": [ - { - "action": "start", - "id": "start" - }, - { - "checkpoint": "started" - }, - { - "frame": "runtime.clientEvents.subscribe#1", - "params": null, - "reply": { - "ok": true, - "streaming": true, - "result": { - "type": "ready", - "subscriptionId": "sub-1" - } - } - }, - { - "checkpoint": "ready" - }, - { - "frame": "runtime.clientEvents.subscribe#1", - "params": null, - "reply": { - "ok": true, - "streaming": true, - "result": { - "type": "worktreesChanged", - "repoId": "repo-1" - } - } - }, - { - "checkpoint": "worktrees-changed" - }, - { - "advance": 3000 - }, - { - "checkpoint": "polled" - }, - { - "frame": "runtime.clientEvents.subscribe#1", - "params": null, - "reply": { - "ok": true, - "streaming": true, - "result": { - "type": "reposChanged" - } - } - }, - { - "checkpoint": "repos-changed" - }, - { - "action": "cutover", - "id": "cutover" - }, - { - "checkpoint": "re-subscribed" - }, - { - "frame": "runtime.clientEvents.subscribe#2", - "params": null, - "reply": { - "ok": true, - "streaming": true, - "result": { - "type": "ready", - "subscriptionId": "sub-2" - } - } - }, - { - "checkpoint": "replayed" - }, - { - "action": "stop", - "id": "stop" - }, - { - "checkpoint": "stopped" - } - ] - }, { "id": "event-router-failed-read-floor", "operation": "query.event-router-catalog", @@ -18262,117 +7837,6 @@ } ] }, - { - "id": "sc-changes-loaded", - "operation": "source-control.changes-load", - "family": "git.changes-load", - "sites": ["mobile/src/source-control/changes/use-mobile-source-control-loaders.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "checkpoint": "status-pending" - }, - { - "complete": "git.status#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "branch": "feature", - "head": "head-oid", - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "area": "unstaged", - "added": 4, - "removed": 1 - }, - { - "path": "src/old.ts", - "oldPath": "src/older.ts", - "status": "renamed", - "area": "staged" - } - ], - "upstreamStatus": { - "hasUpstream": true, - "ahead": 1, - "behind": 0, - "upstreamName": "origin/feature" - } - } - } - }, - { - "checkpoint": "compare-pending" - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/dev" - } - } - } - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [] - } - } - }, - { - "complete": "git.branchCompare#1", - "params": { - "worktree": "id:repo42::/p", - "baseRef": "origin/dev" - }, - "reply": { - "ok": true, - "result": { - "summary": { - "baseRef": "origin/dev", - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "compareRef": "feature", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567", - "changedFiles": 1, - "status": "ready" - }, - "entries": [ - { - "path": "src/app.ts", - "status": "modified", - "added": 2, - "removed": 1 - } - ] - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "sc-changes-return-from-memory", "operation": "source-control.changes-load", @@ -18685,236 +8149,6 @@ } ] }, - { - "id": "sc-history-branch-commits", - "operation": "source-control.history-branch-commits", - "family": "git.history-branch-commits", - "sites": ["mobile/src/source-control/history/MobileGitHistoryList.tsx"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "checkpoint": "base-pending" - }, - { - "complete": "worktree.show#1", - "params": { - "worktree": "id:repo42::/p" - }, - "reply": { - "ok": true, - "result": { - "worktree": { - "baseRef": "origin/main" - } - } - } - }, - { - "complete": "repo.list#1", - "params": { - "$undefined": true - }, - "reply": { - "ok": true, - "result": { - "repos": [ - { - "id": "repo42", - "worktreeBaseRef": null - } - ] - } - } - }, - { - "checkpoint": "history-pending" - }, - { - "complete": "git.history#1", - "params": { - "worktree": "id:repo42::/p", - "limit": 50, - "skip": 0, - "baseRef": "origin/main", - "branchOnly": true - }, - "reply": { - "ok": true, - "result": { - "items": [ - { - "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", - "displayId": "aaaaaaa", - "subject": "first", - "author": "dev", - "parentIds": ["bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"], - "timestamp": 1767222000000, - "pushed": false, - "statistics": { - "files": 2, - "insertions": 13, - "deletions": 1 - }, - "message": "first\n\nExplains the change.\n\nCo-authored-by: Pair " - } - ], - "hasMore": false, - "skip": 0, - "branch": { - "baseRef": { - "id": "refs/remotes/origin/main", - "name": "origin/main" - }, - "ahead": 1, - "behind": 2, - "unpushed": 1 - } - } - } - }, - { - "action": "open", - "id": "open" - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "notifications-desktop-stream", - "operation": "notifications.desktop-stream", - "family": "notifications.desktop-stream", - "sites": ["mobile/src/notifications/mobile-notifications.ts"], - "schedules": [], - "deviceStore": { - "orca:hosts": "[{\"id\":\"host-1\",\"name\":\"Desk\",\"endpoint\":\"wss://desk.test\",\"publicKeyB64\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=\",\"lastConnected\":1700000000000}]" - }, - "deviceState": { - "notificationTray": [ - { - "request": { - "identifier": "tray-1", - "content": { - "data": { - "hostFingerprint": "Yw3NKWbEM2aRElRI", - "kind": "alert", - "notificationId": "note-1", - "notificationEpoch": "epoch-1", - "notificationSeq": 7 - } - } - } - }, - { - "request": { - "identifier": "tray-2", - "content": { - "data": { - "hostFingerprint": "Yw3NKWbEM2aRElRI", - "kind": "alert", - "notificationId": "note-2", - "notificationEpoch": "epoch-1", - "notificationSeq": 8 - } - } - } - } - ] - }, - "steps": [ - { - "action": "start", - "id": "start" - }, - { - "checkpoint": "subscribed" - }, - { - "frame": "notifications.subscribe#1", - "params": { - "includeDesktopSuppressed": true - }, - "reply": { - "ok": true, - "streaming": true, - "result": { - "type": "ready", - "subscriptionId": "sub-1" - } - } - }, - { - "checkpoint": "ready" - }, - { - "complete": "notifications.getMissedSince#1", - "params": { - "lastSeenSeq": 9007199254740991, - "deliveredPushes": [ - { - "notificationId": "note-1", - "notificationEpoch": "epoch-1", - "notificationSeq": 7 - }, - { - "notificationId": "note-2", - "notificationEpoch": "epoch-1", - "notificationSeq": 8 - } - ] - }, - "reply": { - "ok": true, - "result": { - "dismissedPushes": [ - { - "notificationId": "note-1", - "notificationEpoch": "epoch-1", - "notificationSeq": 7 - } - ] - } - } - }, - { - "checkpoint": "caught-up" - }, - { - "frame": "notifications.subscribe#1", - "params": { - "includeDesktopSuppressed": true - }, - "reply": { - "ok": true, - "streaming": true, - "result": { - "type": "dismiss", - "notificationId": "note-2", - "notificationEpoch": "epoch-1", - "notificationSeq": 8 - } - } - }, - { - "checkpoint": "dismissed" - }, - { - "action": "stop", - "id": "stop" - }, - { - "checkpoint": "unsubscribing" - }, - { - "checkpoint": "stopped" - } - ] - }, { "id": "notifications-desktop-stream-replayed", "operation": "notifications.desktop-stream", @@ -19267,187 +8501,6 @@ } ] }, - { - "id": "terminal-gesture-flush-and-clear", - "operation": "session.terminal-gesture-input", - "family": "session.terminal-gesture-input", - "sites": ["mobile/src/terminal/session/input-controls/use-mobile-session-terminal-input.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount" - }, - { - "action": "gesture", - "id": "gesture" - }, - { - "checkpoint": "queued" - }, - { - "advance": 16 - }, - { - "checkpoint": "flushing" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "\u001b[<64;10;5M", - "enter": false, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "sent" - }, - { - "checkpoint": "reported" - }, - { - "action": "clear", - "id": "clear" - }, - { - "checkpoint": "clearing" - }, - { - "complete": "terminal.clearBuffer#1", - "params": { - "terminal": "terminal-1" - }, - "reply": { - "ok": true, - "result": { - "clear": { - "handle": "terminal-1", - "cleared": true - } - } - } - }, - { - "checkpoint": "cleared" - } - ] - }, - { - "id": "session-startup-both-activation-sites", - "operation": "session.startup", - "family": "session.startup", - "sites": ["mobile/src/session/use-mobile-session-startup.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "created": "1" - } - }, - { - "checkpoint": "loading" - }, - { - "advance": 1800 - }, - { - "checkpoint": "reactivating" - }, - { - "complete": "worktree.activate#1", - "params": { - "worktree": "id:wt-1", - "notifyClients": false, - "navigation": "caller" - }, - "reply": { - "ok": true, - "result": { - "sleepingAgentWake": "unsupported-headless" - } - } - }, - { - "checkpoint": "reactivated" - }, - { - "advance": 750 - }, - { - "checkpoint": "refreshed" - }, - { - "action": "consume-created-route", - "id": "consume-route" - }, - { - "checkpoint": "activating" - }, - { - "complete": "worktree.activate#2", - "params": { - "worktree": "id:wt-1", - "notifyClients": false, - "navigation": "caller" - }, - "reply": { - "ok": true, - "result": { - "sleepingAgentWake": "unsupported-headless" - } - } - }, - { - "checkpoint": "activated" - }, - { - "advance": 1500 - }, - { - "checkpoint": "reloaded" - } - ] - }, - { - "id": "session-startup-floating-route-skips-activation", - "operation": "session.startup", - "family": "session.startup", - "sites": ["mobile/src/session/use-mobile-session-startup.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "created": "1", - "floating": true - } - }, - { - "checkpoint": "loading" - }, - { - "advance": 2600 - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "session-startup-reopens-with-last-strip", "operation": "session.startup", @@ -19540,224 +8593,6 @@ } ] }, - { - "id": "session-startup-keeps-terminals-visible-on-reconnect", - "operation": "session.startup", - "family": "session.startup", - "sites": ["mobile/src/session/use-mobile-session-startup.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "initialized": ["terminal-0"] - } - }, - { - "checkpoint": "loading" - }, - { - "complete": "worktree.activate#1", - "params": { - "worktree": "id:wt-1", - "notifyClients": false, - "navigation": "caller" - }, - "reply": { - "ok": true, - "result": {} - } - }, - { - "advance": 1500 - }, - { - "checkpoint": "refreshed" - }, - { - "action": "unmount", - "id": "unmount" - }, - { - "checkpoint": "unmounted" - } - ] - }, - { - "id": "session-startup-refused-tab-load-still-loads-terminals", - "operation": "session.startup", - "family": "session.startup", - "sites": ["mobile/src/session/use-mobile-session-startup.ts"], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "tabLoadRejects": true - } - }, - { - "checkpoint": "tab-load-refused" - }, - { - "complete": "worktree.activate#1", - "params": { - "worktree": "id:wt-1", - "notifyClients": false, - "navigation": "caller" - }, - "reply": { - "ok": true, - "result": {} - } - }, - { - "advance": 1500 - }, - { - "checkpoint": "refreshed" - } - ] - }, - { - "id": "session-create-terminal-with-prompt", - "operation": "session.create-terminal", - "family": "session.create-terminal", - "sites": [ - "mobile/src/terminal/session/creation/use-mobile-session-terminal-create-actions.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "worktreeId": "wt-1", - "activeSessionTabId": "tab-0", - "deviceToken": "device-token-1" - } - }, - { - "action": "create", - "id": "create", - "args": { - "initialPrompt": "review these notes", - "successToast": "Notes sent", - "errorToast": "Couldn't run Notes" - } - }, - { - "checkpoint": "creating" - }, - { - "complete": "session.tabs.createTerminal#1", - "params": { - "worktree": "id:wt-1", - "afterTabId": "tab-0", - "clientMutationId": "mobile-create:mjuohs00-8ig2hens", - "activate": false, - "select": true, - "navigation": "caller" - }, - "reply": { - "ok": true, - "result": { - "tab": { - "type": "terminal", - "id": "tab-1", - "title": "zsh", - "terminal": "terminal-1", - "isActive": true - } - } - } - }, - { - "checkpoint": "created" - }, - { - "complete": "terminal.send#1", - "params": { - "terminal": "terminal-1", - "text": "review these notes", - "enter": true, - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "send": { - "accepted": true - } - } - } - }, - { - "checkpoint": "prompt-sent" - }, - { - "advance": 500 - }, - { - "checkpoint": "tabs-refreshed" - } - ] - }, - { - "id": "session-create-terminal-refused", - "operation": "session.create-terminal", - "family": "session.create-terminal", - "sites": [ - "mobile/src/terminal/session/creation/use-mobile-session-terminal-create-actions.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "worktreeId": "wt-1", - "activeSessionTabId": "tab-0" - } - }, - { - "action": "create", - "id": "create", - "args": { - "errorToast": "Couldn't run Notes" - } - }, - { - "checkpoint": "creating" - }, - { - "complete": "session.tabs.createTerminal#1", - "params": { - "worktree": "id:wt-1", - "afterTabId": "tab-0", - "clientMutationId": "mobile-create:mjuohs00-8ig2hens", - "activate": false, - "select": true, - "navigation": "caller" - }, - "reply": { - "ok": false, - "error": { - "code": "pty_exhausted", - "message": "No pty slots left on the host" - } - } - }, - { - "checkpoint": "refused" - } - ] - }, { "id": "session-create-terminal-without-handle", "operation": "session.create-terminal", @@ -19890,117 +8725,6 @@ } ] }, - { - "id": "session-terminal-display-mode-auto-take-floor", - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "sites": [ - "mobile/src/terminal/session/streaming/use-mobile-session-terminal-stream-display.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "deviceToken": "device-token-1", - "viewport": { - "cols": 100, - "rows": 30 - }, - "modes": { - "terminal-1": "desktop" - } - } - }, - { - "action": "toggle", - "id": "toggle", - "args": { - "handle": "terminal-1" - } - }, - { - "checkpoint": "in-flight" - }, - { - "complete": "terminal.setDisplayMode#1", - "params": { - "terminal": "terminal-1", - "mode": "auto", - "client": { - "id": "device-token-1", - "type": "mobile" - }, - "viewport": { - "cols": 100, - "rows": 30 - } - }, - "reply": { - "ok": true, - "result": { - "mode": "auto" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "session-terminal-display-mode-to-desktop", - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "sites": [ - "mobile/src/terminal/session/streaming/use-mobile-session-terminal-stream-display.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "deviceToken": "device-token-1", - "viewport": { - "cols": 100, - "rows": 30 - } - } - }, - { - "action": "toggle", - "id": "toggle", - "args": { - "handle": "terminal-1" - } - }, - { - "checkpoint": "in-flight" - }, - { - "complete": "terminal.setDisplayMode#1", - "params": { - "terminal": "terminal-1", - "mode": "desktop", - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "mode": "desktop" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "session-terminal-display-mode-drops-second-toggle", "operation": "session.terminal-display-mode", @@ -20073,111 +8797,6 @@ } ] }, - { - "id": "session-terminal-display-mode-auto-without-viewport", - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "sites": [ - "mobile/src/terminal/session/streaming/use-mobile-session-terminal-stream-display.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "deviceToken": "device-token-1", - "modes": { - "terminal-1": "desktop" - } - } - }, - { - "action": "toggle", - "id": "toggle", - "args": { - "handle": "terminal-1" - } - }, - { - "checkpoint": "in-flight" - }, - { - "complete": "terminal.setDisplayMode#1", - "params": { - "terminal": "terminal-1", - "mode": "auto", - "client": { - "id": "device-token-1", - "type": "mobile" - } - }, - "reply": { - "ok": true, - "result": { - "mode": "auto" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, - { - "id": "session-terminal-display-mode-auto-without-device-token", - "operation": "session.terminal-display-mode", - "family": "session.terminal-display-mode", - "sites": [ - "mobile/src/terminal/session/streaming/use-mobile-session-terminal-stream-display.ts" - ], - "schedules": [], - "steps": [ - { - "action": "mount", - "id": "mount", - "args": { - "viewport": { - "cols": 100, - "rows": 30 - }, - "modes": { - "terminal-1": "desktop" - } - } - }, - { - "action": "toggle", - "id": "toggle", - "args": { - "handle": "terminal-1" - } - }, - { - "checkpoint": "in-flight" - }, - { - "complete": "terminal.setDisplayMode#1", - "params": { - "terminal": "terminal-1", - "mode": "auto", - "viewport": { - "cols": 100, - "rows": 30 - } - }, - "reply": { - "ok": true, - "result": { - "mode": "auto" - } - } - }, - { - "checkpoint": "settled" - } - ] - }, { "id": "notifications-desktop-stream-closed", "operation": "notifications.desktop-stream", @@ -20281,271 +8900,6 @@ } ] }, - { - "id": "review-file-diff-shapes", - "operation": "session.diff-review-load", - "family": "session.review-file-diff", - "sites": ["mobile/src/source-control/review/mobile-diff-review-loaders.ts"], - "schedules": [], - "steps": [ - { - "action": "diff", - "id": "binary", - "args": { - "scope": "unstaged" - } - }, - { - "complete": "git.diff#1", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": false - }, - "reply": { - "ok": true, - "result": { - "kind": "binary" - } - } - }, - { - "checkpoint": "binary" - }, - { - "action": "diff", - "id": "too-large", - "args": { - "scope": "staged" - } - }, - { - "complete": "git.diff#2", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": true - }, - "reply": { - "ok": true, - "result": { - "kind": "too-large", - "byteLength": 2048 - } - } - }, - { - "checkpoint": "too-large" - }, - { - "action": "diff", - "id": "invalid", - "args": { - "scope": "unstaged" - } - }, - { - "complete": "git.diff#3", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "staged": false - }, - "reply": { - "ok": true, - "result": { - "kind": "unknown" - } - } - }, - { - "checkpoint": "invalid" - } - ] - }, - { - "id": "review-branch-diff-shapes", - "operation": "session.diff-review-load", - "family": "session.review-branch-diff", - "sites": ["mobile/src/source-control/review/mobile-diff-review-loaders.ts"], - "schedules": [], - "steps": [ - { - "action": "diff", - "id": "branch", - "args": { - "scope": "branch" - } - }, - { - "complete": "git.branchDiff#1", - "params": { - "worktree": "id:repo-9::/w", - "filePath": "src/app.ts", - "compare": { - "baseRef": "origin/main", - "baseOid": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678", - "headOid": "f0e1d2c3b4a5968778695a4b3c2d1e0f98765432", - "mergeBase": "0123456789abcdef0123456789abcdef01234567" - } - }, - "reply": { - "ok": true, - "result": { - "kind": "binary" - } - } - }, - { - "checkpoint": "branch" - }, - { - "action": "diff", - "id": "no-compare", - "args": { - "scope": "branch", - "compare": false - } - }, - { - "checkpoint": "no-compare" - } - ] - }, - { - "id": "review-git-mutations-run", - "operation": "session.diff-review-actions", - "family": "session.review-git-mutations", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "stage", - "id": "stage" - }, - { - "complete": "git.stage#1", - "params": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "staged": true - } - } - }, - { - "checkpoint": "staged" - }, - { - "action": "discard", - "id": "discard" - }, - { - "complete": "git.discard#1", - "params": { - "filePath": "src/app.ts", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "discarded": true - } - } - }, - { - "checkpoint": "discarded" - } - ] - }, - { - "id": "review-send-sheet-lists-terminals", - "operation": "session.diff-review-actions", - "family": "session.review-send-sheet", - "sites": [ - "mobile/src/source-control/review/use-mobile-diff-review-interactions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-comment-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-git-actions.ts", - "mobile/src/source-control/review/use-mobile-diff-review-send-actions.ts", - "mobile/src/session/native-chat/composer/mobile-native-chat-stale-input.ts" - ], - "schedules": [], - "steps": [ - { - "action": "open-send-sheet", - "id": "open" - }, - { - "complete": "session.tabs.list#1", - "params": { - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "tabs": [ - { - "id": "tab-1", - "type": "terminal", - "title": "codex", - "terminal": "terminal-1" - }, - { - "id": "tab-2", - "type": "markdown", - "title": "notes.md" - } - ] - } - } - }, - { - "checkpoint": "listed" - } - ] - }, - { - "id": "session-browser-tab-created", - "operation": "session.content-create", - "family": "session.browser-tab-create", - "sites": ["mobile/src/session/use-mobile-session-content-create-actions.ts"], - "schedules": [], - "steps": [ - { - "action": "browser", - "id": "browser" - }, - { - "complete": "browser.tabCreate#1", - "params": { - "activate": true, - "url": "https://example.com/", - "worktree": "id:workspace-1" - }, - "reply": { - "ok": true, - "result": { - "browserPageId": "page-1" - } - } - }, - { - "advance": 1200 - }, - { - "checkpoint": "created" - } - ] - }, { "id": "new-tab-local-agents", "operation": "settings.new-tab-agents", diff --git a/mobile/src/test-support/bridged-parity/divergence-classes.ts b/mobile/src/test-support/bridged-parity/divergence-classes.ts index 7ea05389dba..e3b7ef6ef82 100644 --- a/mobile/src/test-support/bridged-parity/divergence-classes.ts +++ b/mobile/src/test-support/bridged-parity/divergence-classes.ts @@ -113,102 +113,3 @@ export const BRIDGED_PARITY_EXCLUSIONS: Readonly> = { - identical: 385, - 'reply-meta-required': 0, - 'result-absent-settlement': 328, - 'result-absent-observation': 6, - 'result-absent-stream-release': 1, - 'params-undefined': 27, - 'write-ordinal': 30, - unclassified: 0 -} - -export type BridgedParityTally = { - identical: number - counts: Readonly> -} - -// Check both directions and identical too; broad unclassified/exclusion gates cannot detect every class trade. -export function bridgedParityTallyDrift(tally: BridgedParityTally): readonly string[] { - const ran: Readonly> = { ...tally.counts, identical: tally.identical } - const drift: string[] = [] - for (const [name, pinned] of Object.entries(BRIDGED_PARITY_BASELINE)) { - const count = ran[name] ?? 0 - if (count !== pinned) { - drift.push(`${name}: pinned ${pinned}, ran ${count}`) - } - } - return drift -} - -export const BRIDGED_PARITY_NAMEABLE = 8 - -// Pin small classes by membership because unchanged counts can hide one real failure replacing an excluded artifact. -export const BRIDGED_PARITY_MEMBERS: Readonly< - Partial> -> = { - 'result-absent-observation': [ - 'matrix-live-worktree-name-runtime.clientevents.subscribe-1-2', - 'matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-2', - 'matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-3', - 'matrix-notifications.desktop-stream-notifications.subscribe-1-1', - 'matrix-notifications.desktop-stream-notifications.subscribe-1-2', - 'matrix-session.native-chat-page-nativechat.subscribe-2-1' - ], - 'result-absent-stream-release': ['matrix-session.native-chat-page-nativechat.subscribe-1-1'], - 'write-ordinal': [ - 'diff-review-notes-refused-before-compare', - 'diff-review-snapshot', - 'diff-review-status-unavailable', - 'matrix-session.diff-review-git.branchcompare-1', - 'matrix-session.diff-review-git.status-1', - 'matrix-session.diff-review-repo.list-1', - 'matrix-session.diff-review-worktree.show-1', - 'sc-changes-loaded', - 'sc-changes-return-from-memory', - 'sc-changes-write-reads-live', - 'matrix-git.changes-load-git.branchcompare-1', - 'matrix-git.changes-load-git.status-1', - 'matrix-git.changes-load-repo.list-1', - 'matrix-git.changes-load-worktree.show-1', - 'aivault-history-scan-association', - 'aivault-history-scan-fulfilled', - 'aivault-history-scan-refresh', - 'aivault-history-scan-revisit', - 'aivault-history-scan-unsupported', - 'aivault-history-screen-listed', - 'aivault-history-screen-worktrees', - 'host-worktree-refresh-stream', - 'live-worktree-name-stream', - 'matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-1', - 'matrix-live-worktree-name-runtime.clientevents.subscribe-1-1', - 'matrix-host-worktree-refresh-runtime.clientevents.subscribe-2-1', - 'matrix-live-worktree-name-runtime.clientevents.subscribe-2-1', - 'matrix-live-worktree-name-worktree.show-1', - 'matrix-live-worktree-name-worktree.show-2', - 'matrix-live-worktree-name-worktree.show-3' - ] -} - -export function bridgedParityMembershipDrift( - observed: ReadonlyMap -): readonly string[] { - const drift: string[] = [] - for (const [name, pinned] of Object.entries(BRIDGED_PARITY_MEMBERS)) { - if (pinned === undefined) { - continue - } - const seen = observed.get(name) ?? [] - const arrived = seen.filter((id) => !pinned.includes(id)) - const left = pinned.filter((id) => !seen.includes(id)) - if (arrived.length > 0 || left.length > 0) { - drift.push( - `${name}: arrived ${arrived.join(', ') || '(none)'}; left ${left.join(', ') || '(none)'}` - ) - } - } - return drift -} diff --git a/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts b/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts index 9a33b840911..1467f936b77 100644 --- a/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts +++ b/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts @@ -1,177 +1,6 @@ -import type { BridgedParityClass } from '../bridged-parity/divergence-classes' import { isKeyedObject } from '../bridged-parity/divergence-evidence' import type { RecordedValue } from './recording-values' -// Producers whose input or recorded product contract this PR changed (the re-recorded set). Each earns its own -// direct page outcomes; none is judged by a legacy label or counted in the unchanged tally. -export const CHANGED_PRODUCERS: readonly string[] = [ - 'matrix-tasks.item-review-github-pr-check-discovery', - 'matrix-github.pr-read-github.listassignableusers-1', - 'matrix-github.pr-read-github.prcheckdetails-1', - 'matrix-github.pr-read-github.prchecks-1', - 'matrix-github.pr-read-github.prforbranch-1', - 'matrix-github.pr-read-github.reposlug-1', - 'matrix-github.pr-read-github.workitemdetails-1', - 'matrix-github.pr-read-hostedreview.forbranch-1', - 'matrix-tasks.item-checks-files-github.addprreviewcomment-1', - 'matrix-tasks.item-checks-files-github.prfilecontents-1', - 'matrix-tasks.item-checks-files-github.rerunprchecks-1', - 'matrix-tasks.item-checks-files-github.resolvereviewthread-1', - 'matrix-tasks.item-checks-files-github.setprfileviewed-1', - 'matrix-tasks.item-comment-github-github.addissuecomment-1', - 'matrix-tasks.item-comment-gitlab-gitlab.addissuecomment-1', - 'matrix-tasks.item-comment-gitlab-mr-gitlab.addmrcomment-1', - 'matrix-tasks.item-detail-github-github.workitemdetails-1', - 'matrix-tasks.item-detail-gitlab-gitlab.workitemdetails-1', - 'matrix-tasks.item-detail-linear-linear.getissue-1', - 'matrix-tasks.item-detail-linear-linear.issuecomments-1', - 'matrix-tasks.item-merge-gitlab-gitlab.mergemr-1', - 'matrix-tasks.item-metadata-github-github.updatepr-1', - 'matrix-tasks.item-metadata-gitlab-gitlab.updateissue-1', - 'matrix-tasks.item-metadata-gitlab-mr-gitlab.updatemr-1', - 'matrix-tasks.item-reply-merge-github.addissuecomment-1', - 'matrix-tasks.item-reply-merge-github.addprreviewcommentreply-1', - 'matrix-tasks.item-reply-merge-github.mergepr-1', - 'matrix-tasks.item-reply-merge-linear.updateissue-1', - 'matrix-tasks.item-review-github-github.prchecks-1', - 'matrix-tasks.item-review-github-github.requestprreviewers-1', - 'matrix-tasks.item-status-gitlab-github.updateissue-1', - 'matrix-tasks.item-status-gitlab-gitlab.updateissue-1', - 'matrix-tasks.item-status-gitlab-mr-gitlab.updatemrstate-1', - 'matrix-tasks.linear-item-linear.addissuecomment-1', - 'matrix-tasks.linear-item-linear.createissue-1', - 'matrix-tasks.linear-item-linear.getissue-1', - 'matrix-tasks.linear-team-context-linear.listteams-1', - 'matrix-tasks.linear-team-context-linear.teamstates-1', - 'matrix-tasks.project-row-detail-github.project.workitemdetailsbyslug-1', - 'matrix-tasks.project-row-files-merge-github.addprreviewcomment-1', - 'matrix-tasks.project-row-files-merge-github.mergepr-1', - 'matrix-tasks.project-row-files-merge-github.prfilecontents-1', - 'matrix-tasks.project-row-files-merge-github.updateissue-1', - 'matrix-tasks.project-row-files-merge-github.updateprstate-1', - 'pr-read-surface', - 'tk-item-checks-files', - 'tk-item-comment-github', - 'tk-item-comment-gitlab', - 'tk-item-comment-gitlab-mr', - 'tk-item-detail-github', - 'tk-item-detail-github-reactions', - 'tk-item-detail-gitlab', - 'tk-item-detail-gitlab-reactions', - 'tk-item-detail-linear', - 'tk-item-detail-metadata', - 'tk-item-merge-gitlab', - 'tk-item-metadata-github', - 'tk-item-metadata-gitlab', - 'tk-item-metadata-gitlab-mr', - 'tk-item-reply-merge', - 'tk-item-review-github', - 'tk-item-status-gitlab', - 'tk-item-status-gitlab-mr', - 'tk-linear-item', - 'tk-linear-team-context', - 'tk-project-row-detail', - 'tk-project-row-files-merge', - 'matrix-github.pr-read-status.get-1', - 'matrix-tasks.item-detail-github-status.get-1', - 'matrix-tasks.item-status-gitlab-status.get-1', - 'matrix-tasks.project-row-files-merge-status.get-1' -] - -type BaselineClass = BridgedParityClass | 'identical' - -// Branch-base classes (f2bee638f25) of members moved to direct judging: closure pins, or the admitted baseline -// replay for the eight without one. -export const MOVED_FROM_BASELINE: Readonly> = { - 'matrix-github.pr-read-github.listassignableusers-1': 'result-absent-settlement', - 'matrix-github.pr-read-github.prcheckdetails-1': 'result-absent-settlement', - 'matrix-github.pr-read-github.prchecks-1': 'result-absent-settlement', - 'matrix-github.pr-read-github.prforbranch-1': 'result-absent-settlement', - 'matrix-github.pr-read-github.reposlug-1': 'result-absent-settlement', - 'matrix-github.pr-read-github.workitemdetails-1': 'result-absent-settlement', - 'matrix-github.pr-read-hostedreview.forbranch-1': 'result-absent-settlement', - 'matrix-tasks.item-checks-files-github.addprreviewcomment-1': 'params-undefined', - 'matrix-tasks.item-checks-files-github.prfilecontents-1': 'params-undefined', - 'matrix-tasks.item-checks-files-github.rerunprchecks-1': 'params-undefined', - 'matrix-tasks.item-checks-files-github.resolvereviewthread-1': 'params-undefined', - 'matrix-tasks.item-checks-files-github.setprfileviewed-1': 'params-undefined', - 'matrix-tasks.item-comment-github-github.addissuecomment-1': 'result-absent-settlement', - 'matrix-tasks.item-comment-gitlab-gitlab.addissuecomment-1': 'result-absent-settlement', - 'matrix-tasks.item-comment-gitlab-mr-gitlab.addmrcomment-1': 'result-absent-settlement', - 'matrix-tasks.item-detail-github-github.workitemdetails-1': 'result-absent-settlement', - 'matrix-tasks.item-detail-gitlab-gitlab.workitemdetails-1': 'result-absent-settlement', - 'matrix-tasks.item-detail-linear-linear.getissue-1': 'result-absent-settlement', - 'matrix-tasks.item-detail-linear-linear.issuecomments-1': 'result-absent-settlement', - 'matrix-tasks.item-merge-gitlab-gitlab.mergemr-1': 'result-absent-settlement', - 'matrix-tasks.item-metadata-github-github.updatepr-1': 'result-absent-settlement', - 'matrix-tasks.item-metadata-gitlab-gitlab.updateissue-1': 'result-absent-settlement', - 'matrix-tasks.item-metadata-gitlab-mr-gitlab.updatemr-1': 'params-undefined', - 'matrix-tasks.item-reply-merge-github.addissuecomment-1': 'result-absent-settlement', - 'matrix-tasks.item-reply-merge-github.addprreviewcommentreply-1': 'result-absent-settlement', - 'matrix-tasks.item-reply-merge-github.mergepr-1': 'result-absent-settlement', - 'matrix-tasks.item-reply-merge-linear.updateissue-1': 'result-absent-settlement', - 'matrix-tasks.item-review-github-github.prchecks-1': 'result-absent-settlement', - 'matrix-tasks.item-review-github-github.requestprreviewers-1': 'result-absent-settlement', - 'matrix-tasks.item-status-gitlab-github.updateissue-1': 'result-absent-settlement', - 'matrix-tasks.item-status-gitlab-gitlab.updateissue-1': 'result-absent-settlement', - 'matrix-tasks.item-status-gitlab-mr-gitlab.updatemrstate-1': 'result-absent-settlement', - 'matrix-tasks.linear-item-linear.addissuecomment-1': 'result-absent-settlement', - 'matrix-tasks.linear-item-linear.createissue-1': 'result-absent-settlement', - 'matrix-tasks.linear-item-linear.getissue-1': 'result-absent-settlement', - 'matrix-tasks.linear-team-context-linear.listteams-1': 'result-absent-settlement', - 'matrix-tasks.linear-team-context-linear.teamstates-1': 'result-absent-settlement', - 'matrix-tasks.project-row-detail-github.project.workitemdetailsbyslug-1': - 'result-absent-settlement', - 'matrix-tasks.project-row-files-merge-github.addprreviewcomment-1': 'params-undefined', - 'matrix-tasks.project-row-files-merge-github.mergepr-1': 'params-undefined', - 'matrix-tasks.project-row-files-merge-github.prfilecontents-1': 'params-undefined', - 'matrix-tasks.project-row-files-merge-github.updateissue-1': 'params-undefined', - 'matrix-tasks.project-row-files-merge-github.updateprstate-1': 'params-undefined', - 'pr-read-surface': 'identical', - 'tk-item-checks-files': 'params-undefined', - 'tk-item-comment-github': 'identical', - 'tk-item-comment-gitlab': 'identical', - 'tk-item-comment-gitlab-mr': 'identical', - 'tk-item-detail-github': 'identical', - 'tk-item-detail-github-reactions': 'identical', - 'tk-item-detail-gitlab': 'identical', - 'tk-item-detail-gitlab-reactions': 'identical', - 'tk-item-detail-linear': 'identical', - 'tk-item-detail-metadata': 'identical', - 'tk-item-merge-gitlab': 'identical', - 'tk-item-metadata-github': 'identical', - 'tk-item-metadata-gitlab': 'identical', - 'tk-item-metadata-gitlab-mr': 'params-undefined', - 'tk-item-reply-merge': 'identical', - 'tk-item-review-github': 'identical', - 'tk-item-status-gitlab': 'identical', - 'tk-item-status-gitlab-mr': 'identical', - 'tk-linear-item': 'identical', - 'tk-linear-team-context': 'identical', - 'tk-project-row-detail': 'identical', - 'tk-project-row-files-merge': 'params-undefined' -} - -// Producers the PR removed from the corpus, with their branch-base class. -export const REMOVED_FROM_BASELINE: Readonly> = { - 'matrix-tasks.item-detail-metadata-github.listassignableusers-1': 'result-absent-settlement', - 'matrix-tasks.item-detail-metadata-github.listlabels-1': 'result-absent-settlement', - 'speech-desktop-start-recording-failed': 'identical' -} - -export function expectedUnchangedTally( - baseline: Readonly> -): Record { - const expected = { ...baseline } - for (const old of [ - ...Object.values(MOVED_FROM_BASELINE), - ...Object.values(REMOVED_FROM_BASELINE) - ]) { - expected[old] -= 1 - } - return expected -} - export function rows(value: RecordedValue): Record[] { if (!Array.isArray(value)) { throw new Error('Missing reviewed recorded rows') diff --git a/mobile/src/test-support/rpc-recording/changed-page-item-refusals.ts b/mobile/src/test-support/rpc-recording/changed-page-item-refusals.ts deleted file mode 100644 index 34e9a6f5c6a..00000000000 --- a/mobile/src/test-support/rpc-recording/changed-page-item-refusals.ts +++ /dev/null @@ -1,240 +0,0 @@ -import { BRIDGE_REPLY_REFUSED, Retained, type PageRefusal } from './changed-page-refusals' - -// The reviewed native detail the Linear screen loads when the absent comments read as none. -const LINEAR_DETAIL = { - assignee: { $rpc: 'undefined' }, - children: [], - comments: [], - description: 'a description', - labels: [], - project: { $rpc: 'undefined' }, - provider: 'linear' -} - -// The task item screens copy a failed action's error into `error` state and its error effect, which later -// checkpoints still record. -export const ITEM_REFUSALS: Readonly> = { - 'matrix-tasks.item-checks-files-github.addprreviewcomment-1': { - request: 'github.addPRReviewComment#1', - checkpoints: { - 'tk-item-checks-files.result-absent:file-comment-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.item-checks-files-github.prfilecontents-1': { - request: 'github.prFileContents#1', - checkpoints: { - 'tk-item-checks-files.result-absent:expand-settled': ['state.error', 'effects.error'], - 'tk-item-checks-files.result-absent:file-comment-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-checks-files-github.rerunprchecks-1': { - request: 'github.rerunPRChecks#1', - checkpoints: { - 'tk-item-checks-files.result-absent:rerun-settled': ['state.error', 'effects.error'], - 'tk-item-checks-files.result-absent:viewed-settled': ['effects.error'], - 'tk-item-checks-files.result-absent:thread-settled': ['effects.error'], - 'tk-item-checks-files.result-absent:expand-settled': ['effects.error'], - 'tk-item-checks-files.result-absent:file-comment-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-checks-files-github.resolvereviewthread-1': { - request: 'github.resolveReviewThread#1', - checkpoints: { - 'tk-item-checks-files.result-absent:thread-settled': ['state.error', 'effects.error'], - 'tk-item-checks-files.result-absent:expand-settled': ['effects.error'], - 'tk-item-checks-files.result-absent:file-comment-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-checks-files-github.setprfileviewed-1': { - request: 'github.setPRFileViewed#1', - checkpoints: { - 'tk-item-checks-files.result-absent:viewed-settled': ['state.error', 'effects.error'], - 'tk-item-checks-files.result-absent:thread-settled': ['effects.error'], - 'tk-item-checks-files.result-absent:expand-settled': ['effects.error'], - 'tk-item-checks-files.result-absent:file-comment-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-comment-github-github.addissuecomment-1': { - request: 'github.addIssueComment#1', - checkpoints: { - 'tk-item-comment-github.result-absent:comment-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.item-comment-gitlab-gitlab.addissuecomment-1': { - request: 'gitlab.addIssueComment#1', - checkpoints: { - 'tk-item-comment-gitlab.result-absent:comment-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.item-comment-gitlab-mr-gitlab.addmrcomment-1': { - request: 'gitlab.addMRComment#1', - checkpoints: { - 'tk-item-comment-gitlab-mr.result-absent:comment-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.item-detail-github-github.workitemdetails-1': { - request: 'github.workItemDetails#1', - checkpoints: { - 'tk-item-detail-github.result-absent:mounted': ['state.error', 'effects.detailError'] - } - }, - 'matrix-tasks.item-detail-gitlab-gitlab.workitemdetails-1': { - request: 'gitlab.workItemDetails#1', - checkpoints: { - 'tk-item-detail-gitlab.result-absent:mounted': ['state.error', 'effects.detailError'] - } - }, - 'matrix-tasks.item-detail-linear-linear.getissue-1': { - request: 'linear.getIssue#1', - checkpoints: { - 'tk-item-detail-linear.result-absent:mounted': ['state.error', 'effects.detailError'] - } - }, - // Natively the absent comments read as none and the detail loads; the page's refusal fails the load - // instead (the catch shows it, the finally still resets loading). - 'matrix-tasks.item-detail-linear-linear.issuecomments-1': { - request: 'linear.issueComments#1', - checkpoints: { - 'tk-item-detail-linear.result-absent:mounted': { - state: { error: ['', BRIDGE_REPLY_REFUSED], payload: [LINEAR_DETAIL, { $rpc: 'null' }] }, - effects: [ - [ - ['detailLoading', false], - ['detailPayload', LINEAR_DETAIL] - ], - [ - ['detailError', BRIDGE_REPLY_REFUSED], - ['detailLoading', false] - ] - ] - } - } - }, - 'matrix-tasks.item-merge-gitlab-gitlab.mergemr-1': { - request: 'gitlab.mergeMR#1', - checkpoints: { - 'tk-item-merge-gitlab.result-absent:merge-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.item-metadata-github-github.updatepr-1': { - request: 'github.updatePR#1', - checkpoints: { - 'tk-item-metadata-github.result-absent:update-pr-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.item-metadata-gitlab-gitlab.updateissue-1': { - request: 'gitlab.updateIssue#1', - checkpoints: { - 'tk-item-metadata-gitlab.result-absent:update-gitlab-settled': [ - 'state.error', - 'effects.error' - ] - } - }, - 'matrix-tasks.item-metadata-gitlab-mr-gitlab.updatemr-1': { - request: 'gitlab.updateMR#1', - checkpoints: { - 'tk-item-metadata-gitlab-mr.result-absent:update-gitlab-settled': [ - 'state.error', - 'effects.error' - ] - } - }, - 'matrix-tasks.item-reply-merge-github.addissuecomment-1': { - request: 'github.addIssueComment#1', - checkpoints: { - 'tk-item-reply-merge.result-absent:issue-reply-settled': ['state.error', 'effects.error'], - 'tk-item-reply-merge.result-absent:merge-settled': ['effects.error'], - 'tk-item-reply-merge.result-absent:linear-status-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-reply-merge-github.addprreviewcommentreply-1': { - request: 'github.addPRReviewCommentReply#1', - checkpoints: { - 'tk-item-reply-merge.result-absent:review-reply-settled': ['state.error', 'effects.error'], - 'tk-item-reply-merge.result-absent:issue-reply-settled': ['effects.error'], - 'tk-item-reply-merge.result-absent:merge-settled': ['effects.error'], - 'tk-item-reply-merge.result-absent:linear-status-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-reply-merge-github.mergepr-1': { - request: 'github.mergePR#1', - checkpoints: { - 'tk-item-reply-merge.result-absent:merge-settled': ['state.error', 'effects.error'], - 'tk-item-reply-merge.result-absent:linear-status-settled': ['effects.error'] - } - }, - // Natively the absent result reads as a successful status change; the page's refusal shows the error and - // leaves the shown items as they were. - 'matrix-tasks.item-reply-merge-linear.updateissue-1': { - request: 'linear.updateIssue#1', - checkpoints: { - 'tk-item-reply-merge.result-absent:linear-status-settled': { - state: { error: ['', BRIDGE_REPLY_REFUSED] }, - effects: [ - [ - ['items', new Retained('items')], - ['mutatingStatus', false] - ], - [ - ['error', BRIDGE_REPLY_REFUSED], - ['mutatingStatus', false] - ] - ] - } - } - }, - 'matrix-tasks.item-review-github-github.prchecks-1': { - request: 'github.prChecks#1', - checkpoints: { - 'tk-item-review-github.result-absent:checks-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.item-review-github-github.requestprreviewers-1': { - request: 'github.requestPRReviewers#1', - checkpoints: { - 'tk-item-review-github.result-absent:reviewers-settled': ['state.error', 'effects.error'], - 'tk-item-review-github.result-absent:checks-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-status-gitlab-github.updateissue-1': { - request: 'github.updateIssue#1', - checkpoints: { - 'tk-item-status-gitlab.result-absent:github-metadata-settled': [ - 'state.error', - 'effects.error' - ] - } - }, - 'matrix-tasks.item-status-gitlab-gitlab.updateissue-1': { - request: 'gitlab.updateIssue#1', - checkpoints: { - 'tk-item-status-gitlab.result-absent:gitlab-status-settled': ['state.error', 'effects.error'], - 'tk-item-status-gitlab.result-absent:github-metadata-settled': ['effects.error'] - } - }, - 'matrix-tasks.item-status-gitlab-mr-gitlab.updatemrstate-1': { - request: 'gitlab.updateMRState#1', - checkpoints: { - 'tk-item-status-gitlab-mr.result-absent:gitlab-status-settled': [ - 'state.error', - 'effects.error' - ] - } - }, - 'matrix-tasks.item-detail-github-status.get-1': { - request: 'status.get#1', - checkpoints: { - 'tk-item-detail-github.result-absent:mounted': ['state.error', 'effects.detailError'] - } - }, - 'matrix-tasks.item-status-gitlab-status.get-1': { - request: 'status.get#1', - checkpoints: { - 'tk-item-status-gitlab.result-absent:github-metadata-settled': [ - 'state.error', - 'effects.error' - ] - } - } -} diff --git a/mobile/src/test-support/rpc-recording/changed-page-outcomes.ts b/mobile/src/test-support/rpc-recording/changed-page-outcomes.ts deleted file mode 100644 index 64b085089e3..00000000000 --- a/mobile/src/test-support/rpc-recording/changed-page-outcomes.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { GITHUB_EXACT_OPERATION_UNSUPPORTED } from '../../../../src/shared/github/work-items/work-item-target' -import { GITHUB_CONNECTION_CHANGED } from '../../source-control/review/github-target-invocation' -import { isKeyedObject, scriptsAbsentResultReply } from '../bridged-parity/divergence-evidence' -import { rows } from './changed-bridge-outcomes' -import { ITEM_REFUSALS } from './changed-page-item-refusals' -import { - BRIDGE_REPLY_REFUSED, - READ_AND_PROJECT_REFUSALS, - Retained, - type PageEnding -} from './changed-page-refusals' -import type { Observation, Recording, RecordingScenario } from './recording-scenario' -import type { RecordedValue } from './recording-values' - -const PAGE_REFUSALS = { ...READ_AND_PROJECT_REFUSALS, ...ITEM_REFUSALS } -export const PAGE_REFUSAL_PRODUCERS = Object.keys(PAGE_REFUSALS) - -// The error each side shows for the refused request. The GitHub exact-target check maps its own failures: -// natively an unreadable answer says to update the server, while the page's refusal of that frame is a failed -// transport check, which says the connection changed. -function copies(request: string): readonly [native: string, page: string] { - const method = request.replace(/#.*$/, '') - return method === 'status.get' - ? [GITHUB_EXACT_OPERATION_UNSUPPORTED, GITHUB_CONNECTION_CHANGED] - : [`The host sent a reply this app could not read (${method})`, BRIDGE_REPLY_REFUSED] -} - -const same = (left: unknown, right: unknown) => JSON.stringify(left) === JSON.stringify(right) - -function acceptsAbsentResult(attempt: Record): boolean { - const settlement = attempt.settlement - return ( - isKeyedObject(settlement) && - settlement.status === 'fulfilled' && - isKeyedObject(settlement.value) && - settlement.value.ok === true && - !Object.hasOwn(settlement.value, 'result') - ) -} - -// Replace one named slot after checking it holds the reviewed native value, so a stale case fails. -function edit( - observation: Observation, - path: string, - native: RecordedValue, - page: RecordedValue -): void { - if (path.startsWith('effects.')) { - const name = path.slice('effects.'.length) - const matches = rows(observation.effects).filter( - (effect) => effect.name === name && same(effect.value, native) - ) - if (matches.length !== 1) { - throw new Error(`Expected one reviewed ${name} effect holding ${JSON.stringify(native)}`) - } - matches[0]!.value = page - return - } - const keys = path.replace(/\[(\d+)\]/g, '.$1').split('.') - const last = keys.pop()! - let container: unknown = observation - for (const key of keys) { - container = Array.isArray(container) - ? container[Number(key)] - : isKeyedObject(container) - ? container[key] - : undefined - } - const stale = () => - new Error(`Reviewed native slot ${path} no longer holds ${JSON.stringify(native)}`) - if (Array.isArray(container)) { - if (!same(container[Number(last)], native)) { - throw stale() - } - container[Number(last)] = page - } else if (isKeyedObject(container) && same(container[last], native)) { - container[last] = page - } else { - throw stale() - } -} - -function end(observation: Observation, ending: PageEnding): void { - for (const [key, [native, page]] of Object.entries(ending.state)) { - edit(observation, `state.${key}`, native, page) - } - const [native, page] = ending.effects - const effects = rows(observation.effects) - const tail = effects.slice(-native.length) - const shown = (value: RecordedValue | Retained) => - value instanceof Retained - ? isKeyedObject(observation.state) - ? observation.state[value.key] - : undefined - : value - if ( - tail.length !== native.length || - page.length > native.length || - native.some(([name, value], index) => { - const effect = tail[index]! - return effect.name !== name || !same(effect.value, shown(value)) - }) - ) { - throw new Error( - `Reviewed native golden no longer ends with ${native.map(([name]) => name).join(', ')}` - ) - } - observation.effects = [ - ...effects.slice(0, -native.length), - ...page.map(([name, value], index) => ({ name, ordinal: tail[index]!.ordinal, value })) - ] -} - -/** - * The expected page recording of a changed producer, built from its reviewed native golden and declared - * page refusals alone, before any page run is judged. Both page modes refuse the injected absent result - * alike (reply metadata adds no result), so one expectation serves each. Every other field stays native. - */ -export function pageExpectation( - id: string, - expected: Recording, - scenarios: readonly RecordingScenario[] -): Recording { - const refusal = PAGE_REFUSALS[id] - const declared = new Set(Object.keys(refusal?.checkpoints ?? {})) - const checkpoints = expected.checkpoints.map((checkpoint) => { - const absent = rows(checkpoint.observation.sender).filter(acceptsAbsentResult) - if (!absent.length && !declared.has(checkpoint.id)) { - return checkpoint - } - const slots = refusal?.checkpoints[checkpoint.id] - const source = - scenarios.length === 1 - ? scenarios[0] - : scenarios.find((scenario) => checkpoint.id.startsWith(`${scenario.id}:`)) - if ( - !refusal || - !slots || - !source || - !scriptsAbsentResultReply(source) || - absent.length !== 1 || - absent[0]!.name !== refusal.request - ) { - throw new Error(`Undeclared or stale page refusal: ${id} ${checkpoint.id}`) - } - declared.delete(checkpoint.id) - const observation: Observation = structuredClone(checkpoint.observation) - const attempt = rows(observation.sender).find((entry) => entry.name === refusal.request)! - const settlement = attempt.settlement - if (!isKeyedObject(settlement)) { - throw new Error(`Missing reviewed settlement: ${refusal.request}`) - } - const { value: _value, ...timing } = settlement - attempt.settlement = { - ...timing, - status: 'rejected', - error: { - category: 'BridgeReplyRefusedError', - message: BRIDGE_REPLY_REFUSED, - isRpcDeliveryUnknown: true - } - } - if ('effects' in slots) { - end(observation, slots) - } else { - const [native, page] = copies(refusal.request) - for (const slot of slots) { - edit(observation, slot, native, page) - } - } - return { ...checkpoint, observation } - }) - if (declared.size) { - throw new Error( - `Declared page refusal has no reviewed checkpoint: ${id} ${[...declared].join(', ')}` - ) - } - return { ...expected, checkpoints } -} diff --git a/mobile/src/test-support/rpc-recording/changed-page-refusals.ts b/mobile/src/test-support/rpc-recording/changed-page-refusals.ts deleted file mode 100644 index 61278a2d8ef..00000000000 --- a/mobile/src/test-support/rpc-recording/changed-page-refusals.ts +++ /dev/null @@ -1,197 +0,0 @@ -import type { RecordedValue } from './recording-values' - -// The finite page outcomes of the changed producers' injected absent results, by producer and checkpoint. - -export const BRIDGE_REPLY_REFUSED = 'the reply could not be read (unrecognised-message)' - -/** A native effect value that equals what native state still shows under this key. */ -export class Retained { - constructor(readonly key: string) {} -} - -/** Where the page run ends differently from native, each edit naming the native value it replaces. */ -export type PageEnding = { - readonly state: Readonly> - /** Native's last effects the page does not reach, then the page's own at the same ordinals. */ - readonly effects: readonly [ - native: readonly (readonly [name: string, value: RecordedValue | Retained])[], - page: readonly (readonly [name: string, value: RecordedValue])[] - ] -} - -/** - * The bound request whose injected absent result the page refuses, and each checkpoint that observes that - * refusal: the slots where the screen copies the request's error (none where it shows nothing), or the - * different ending the screen reaches instead. - */ -export type PageRefusal = { - readonly request: string - readonly checkpoints: Readonly> -} - -// The read surface copies each read's error into that read's own settlement and state. -function surfaceRead(request: string, key: string, checkpoints: readonly string[]): PageRefusal { - const slots = [`settlements.${key}.value.error`, `state.${key}.error`] - return { - request, - checkpoints: Object.fromEntries( - checkpoints.map((checkpoint) => [`pr-read-surface.result-absent:${checkpoint}`, slots]) - ) - } -} - -const AFTER_WORK_ITEM = ['work-item', 'checks', 'check-details', 'assignable'] -const AFTER_HOSTED_REVIEW = ['hosted-review', 'pr-for-branch', ...AFTER_WORK_ITEM] - -export const READ_AND_PROJECT_REFUSALS: Readonly> = { - 'matrix-tasks.item-review-github-pr-check-discovery': { - request: 'status.get#1', - checkpoints: { 'tk-item-review-github.result-absent:checks-settled': [] } - }, - 'matrix-github.pr-read-github.listassignableusers-1': surfaceRead( - 'github.listAssignableUsers#1', - 'assignable', - ['assignable'] - ), - 'matrix-github.pr-read-github.prcheckdetails-1': surfaceRead( - 'github.prCheckDetails#1', - 'check-details', - ['check-details', 'assignable'] - ), - 'matrix-github.pr-read-github.prchecks-1': surfaceRead('github.prChecks#1', 'checks', [ - 'checks', - 'check-details', - 'assignable' - ]), - 'matrix-github.pr-read-github.prforbranch-1': surfaceRead( - 'github.prForBranch#1', - 'pr-for-branch', - ['pr-for-branch', ...AFTER_WORK_ITEM] - ), - 'matrix-github.pr-read-github.reposlug-1': surfaceRead('github.repoSlug#1', 'repo-slug', [ - 'repo-slug', - ...AFTER_HOSTED_REVIEW - ]), - 'matrix-github.pr-read-github.workitemdetails-1': surfaceRead( - 'github.workItemDetails#1', - 'work-item', - AFTER_WORK_ITEM - ), - 'matrix-github.pr-read-hostedreview.forbranch-1': surfaceRead( - 'hostedReview.forBranch#1', - 'hosted-review', - AFTER_HOSTED_REVIEW - ), - 'matrix-github.pr-read-status.get-1': surfaceRead('status.get#1', 'assignable', ['assignable']), - 'matrix-tasks.linear-item-linear.addissuecomment-1': { - request: 'linear.addIssueComment#1', - checkpoints: { - 'tk-linear-item.result-absent:comment-settled': ['state.error', 'effects.error'], - 'tk-linear-item.result-absent:sub-issue-open-settled': ['effects.error'], - 'tk-linear-item.result-absent:sub-issue-create-settled': ['effects.error'] - } - }, - 'matrix-tasks.linear-item-linear.createissue-1': { - request: 'linear.createIssue#1', - checkpoints: { - 'tk-linear-item.result-absent:sub-issue-create-settled': ['state.error', 'effects.error'] - } - }, - 'matrix-tasks.linear-item-linear.getissue-1': { - request: 'linear.getIssue#1', - checkpoints: { - 'tk-linear-item.result-absent:sub-issue-open-settled': ['state.error', 'effects.error'], - 'tk-linear-item.result-absent:sub-issue-create-settled': ['effects.error'] - } - }, - 'matrix-tasks.linear-team-context-linear.listteams-1': { - request: 'linear.listTeams#1', - checkpoints: { - 'tk-linear-team-context.result-absent:open-composer-settled': [], - 'tk-linear-team-context.result-absent:select-metadata-item-settled': [] - } - }, - 'matrix-tasks.linear-team-context-linear.teamstates-1': { - request: 'linear.teamStates#1', - checkpoints: { - 'tk-linear-team-context.result-absent:select-metadata-item-settled': [] - } - }, - 'matrix-tasks.project-row-detail-github.project.workitemdetailsbyslug-1': { - request: 'github.project.workItemDetailsBySlug#1', - checkpoints: { - 'tk-project-row-detail.result-absent:mounted': [ - 'state.error', - 'effects.projectRowDetailError' - ] - } - }, - 'matrix-tasks.project-row-files-merge-github.addprreviewcomment-1': { - request: 'github.addPRReviewComment#1', - checkpoints: { - 'tk-project-row-files-merge.result-absent:file-comment-settled': [ - 'state.error', - 'effects.projectRowDetailError' - ], - 'tk-project-row-files-merge.result-absent:merge-settled': ['effects.projectRowDetailError'], - 'tk-project-row-files-merge.result-absent:issue-state-settled': [ - 'effects.projectRowDetailError' - ], - 'tk-project-row-files-merge.result-absent:pr-state-settled': ['effects.projectRowDetailError'] - } - }, - 'matrix-tasks.project-row-files-merge-github.mergepr-1': { - request: 'github.mergePR#1', - checkpoints: { - 'tk-project-row-files-merge.result-absent:merge-settled': [ - 'state.error', - 'effects.projectRowDetailError' - ], - 'tk-project-row-files-merge.result-absent:issue-state-settled': [ - 'state.error', - 'effects.projectRowDetailError' - ], - 'tk-project-row-files-merge.result-absent:pr-state-settled': [ - 'state.error', - 'effects.projectRowDetailError' - ] - } - }, - 'matrix-tasks.project-row-files-merge-github.prfilecontents-1': { - request: 'github.prFileContents#1', - checkpoints: { - 'tk-project-row-files-merge.result-absent:expand-settled': [ - 'state.error', - 'effects.projectRowDetailError' - ], - 'tk-project-row-files-merge.result-absent:file-comment-settled': [ - 'effects.projectRowDetailError' - ], - 'tk-project-row-files-merge.result-absent:merge-settled': ['effects.projectRowDetailError'], - 'tk-project-row-files-merge.result-absent:issue-state-settled': [ - 'effects.projectRowDetailError' - ], - 'tk-project-row-files-merge.result-absent:pr-state-settled': ['effects.projectRowDetailError'] - } - }, - 'matrix-tasks.project-row-files-merge-github.updateissue-1': { - request: 'github.updateIssue#1', - checkpoints: { - 'tk-project-row-files-merge.result-absent:issue-state-settled': [], - 'tk-project-row-files-merge.result-absent:pr-state-settled': [] - } - }, - 'matrix-tasks.project-row-files-merge-github.updateprstate-1': { - request: 'github.updatePRState#1', - checkpoints: { - 'tk-project-row-files-merge.result-absent:pr-state-settled': [] - } - }, - 'matrix-tasks.project-row-files-merge-status.get-1': { - request: 'status.get#1', - checkpoints: { - 'tk-project-row-files-merge.result-absent:issue-state-settled': [], - 'tk-project-row-files-merge.result-absent:pr-state-settled': [] - } - } -} diff --git a/mobile/src/test-support/rpc-recording/derived-goldens.ts b/mobile/src/test-support/rpc-recording/derived-goldens.ts index ca5748330c5..510baaf0816 100644 --- a/mobile/src/test-support/rpc-recording/derived-goldens.ts +++ b/mobile/src/test-support/rpc-recording/derived-goldens.ts @@ -1,11 +1,6 @@ import { materializeScenario } from './scenario-execution-mode' import { hoistPreludeCheckpoints } from './prelude-checkpoints' -import { - bindCompletions, - interruptionSchedules, - lifecycleSchedules, - siblingSchedules -} from './schedule-driver' +import { bindCompletions, lifecycleSchedules } from './schedule-driver' import type { RecordingScenario, ExecutionMode, ScenarioLineage } from './recording-scenario' // Share derivation with census/pruning so all consumers enumerate the recordings actually written. @@ -18,14 +13,6 @@ export type DerivedGolden = { scenarios: () => RecordingScenario[] } -const SIBLING_SCHEDULE_BASES = [ - 'b3', - 'settings-new-tab-ssh', - 'settings-workspace-context-fulfilled', - 'settings-task-hydration-fulfilled', - 'settings-repo-metadata-fulfilled' -] -const INTERRUPTION_BASES = ['inventory-lifecycle', 'settings-bot-overrides-fulfilled'] const LIFECYCLE_BASES = [ 'inventory-lifecycle', 'b3', @@ -87,38 +74,6 @@ export function familyGoldens( ): DerivedGolden[] { const manifest = input.map((scenario) => materializeScenario(scenario, mode)) const goldens: DerivedGolden[] = [] - for (const id of SIBLING_SCHEDULE_BASES) { - const base = baseScenario(manifest, id) - const replies = base.steps.flatMap((step) => ('complete' in step ? [step] : [])) - // Complete prerequisites before permuting the sibling barrier. - const first = replies.find((step) => - step.complete.startsWith(id === 'b3' ? 'linear.getIssue' : 'settings.get') - ) - if (!first) { - throw new Error(`No prerequisite completion to order siblings against: ${id}`) - } - const second = replies[replies.indexOf(first) + 1] - if (!second) { - continue - } - goldens.push({ - id: `schedules-${id}`, - title: `schedules-${id}: completion orders and correlated faults`, - family: base.family, - lineage: { ...base.lineage!, schedule: 'siblings' }, - scenarios: () => siblingSchedules(base, first, second) - }) - } - for (const id of INTERRUPTION_BASES) { - const base = baseScenario(manifest, id) - goldens.push({ - id: `interruptions-${id}`, - title: `interruptions-${id}: timeout, disconnect and stable-client cutover`, - family: base.family, - lineage: { ...base.lineage!, schedule: 'interruptions' }, - scenarios: () => interruptionSchedules(base) - }) - } for (const id of LIFECYCLE_BASES) { const base = baseScenario(manifest, id) const actions: readonly ('reset' | 'unmount' | 'blur')[] = id.includes('hydration') diff --git a/src/main/browser/agent-browser/observation/agent-browser-action-effects.test.ts b/src/main/browser/agent-browser/observation/agent-browser-action-effects.test.ts index 1d5a99ccfb8..fbd5799d9da 100644 --- a/src/main/browser/agent-browser/observation/agent-browser-action-effects.test.ts +++ b/src/main/browser/agent-browser/observation/agent-browser-action-effects.test.ts @@ -66,54 +66,10 @@ function fakeHost( }, admit: vi.fn() } - const emit = (event: BrowserPageEvent): void => pageEvents.forEach((listener) => listener(event)) - return { host, tabs, emit } + return { host } } describe('runWithActionEffects', () => { - it('waits for a navigation the action started and reports where it landed', async () => { - const guest = fakeGuest() - const appTree = '- heading "Welcome ada" [level=1, ref=e9]\n- button "Submit ticket" [ref=e10]' - const { host } = fakeHost(guest, [UNCHANGED, { snapshot: { kind: 'full', tree: appTree } }]) - - const result = await runWithActionEffects(host, async () => { - guest.emit('did-start-navigation', { isMainFrame: true, isSameDocument: false }) - // A redirecting submit replaces its first navigation, which then fails as ERR_ABORTED. - guest.emit('did-start-navigation', { isMainFrame: true, isSameDocument: false }) - guest.emit('did-fail-load', {}, -3, 'ERR_ABORTED', 'http://127.0.0.1/submit', true) - setTimeout(() => { - guest.url = 'http://127.0.0.1/app.html' - guest.title = 'App' - guest.emit('dom-ready') - }, 120) - return { clicked: '@e6' } - }) - - expect(readBrowserActionEffects(result)).toEqual({ - settled: true, - url: 'http://127.0.0.1/app.html', - title: 'App', - page: { lines: appTree.split('\n'), removedLines: 0, full: true, truncated: false } - }) - }) - - it('reports a new tab once it opens and a child window separately', async () => { - const guest = fakeGuest() - const { host, tabs, emit } = fakeHost(guest, [UNCHANGED, UNCHANGED]) - - const result = await runWithActionEffects(host, async () => { - emit({ kind: 'popup', action: 'window', origin: 'https://accounts.example' }) - emit({ kind: 'tab', url: 'http://127.0.0.1/basic2.html' }) - setTimeout(() => tabs.set('page-2', 'http://127.0.0.1/basic2.html'), 100) - return { clicked: '@e18' } - }) - - expect(readBrowserActionEffects(result)).toMatchObject({ - newTabs: [{ browserPageId: 'page-2', url: 'http://127.0.0.1/basic2.html' }], - popups: [{ action: 'window', origin: 'https://accounts.example' }] - }) - }) - it('does not read a replacement guest the caller was never admitted to', async () => { const guest = fakeGuest() const replacement = Object.assign(fakeGuest('http://127.0.0.1/app.html', 'App'), { id: 8 }) diff --git a/src/main/browser/cdp/commands/cdp-bridge-integration.test.ts b/src/main/browser/cdp/commands/cdp-bridge-integration.test.ts deleted file mode 100644 index a852f9d55dd..00000000000 --- a/src/main/browser/cdp/commands/cdp-bridge-integration.test.ts +++ /dev/null @@ -1,371 +0,0 @@ -import { guestNavigationMethods } from '../../guest-lifecycle/manager/browser-manager-test-harness' -import type * as WorktreeScanCacheModule from '../../../git/worktrees/catalog/worktree-scan-cache' -import type * as WorktreeListingModule from '../../../git/worktrees/catalog/worktree-listing' -import { mkdtempSync } from 'node:fs' -import { RuntimeBrowserCommands } from '../../../runtime/browser/commands/browser-commands' -import { setRuntimeBrowserCommandsFactory } from '../../../runtime/browser/installation/runtime-browser-commands-factory' -import { tmpdir } from 'node:os' -import { join } from 'node:path' -import { createConnection } from 'node:net' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { BrowserManager } from '../../guest-lifecycle/manager/browser-manager' -import { CdpBridge } from './cdp-bridge' -import { OrcaRuntimeService } from '../../../runtime/orca-runtime' -import { OrcaRuntimeRpcServer } from '../../../runtime/rpc/server/runtime-rpc' -import { readRuntimeMetadata } from '../../../runtime/rpc/server/runtime-metadata' - -const { webContentsFromIdMock } = vi.hoisted(() => ({ - webContentsFromIdMock: vi.fn() -})) - -vi.mock('../../../git/worktrees/catalog/worktree-scan-cache', async (importOriginal) => { - const facade = getWorktreeListingMocks() - return { - ...(await importOriginal()), - listWorktrees: facade.listWorktrees - } -}) - -vi.mock('../../../git/worktrees/catalog/worktree-listing', async (importOriginal) => { - const facade = getWorktreeListingMocks() - return { - ...(await importOriginal()), - listWorktreesStrict: facade.listWorktreesStrict - } -}) - -vi.mock('electron', () => ({ - webContents: { fromId: webContentsFromIdMock }, - shell: { openExternal: vi.fn() }, - ipcMain: { handle: vi.fn(), removeHandler: vi.fn(), on: vi.fn() }, - app: { getPath: vi.fn(() => '/tmp'), isPackaged: false } -})) - -const { getWorktreeListingMocks } = vi.hoisted(() => { - const createWorktreeListingMocks = () => ({ - listWorktrees: vi.fn().mockResolvedValue([]), - listWorktreesStrict: vi.fn().mockResolvedValue([]) - }) - let listings: ReturnType | undefined - return { getWorktreeListingMocks: () => (listings ??= createWorktreeListingMocks()) } -}) - -type AXNode = { - nodeId: string - backendDOMNodeId?: number - role?: { type: string; value: string } - name?: { type: string; value: string } - properties?: { name: string; value: { type: string; value: unknown } }[] - childIds?: string[] - ignored?: boolean -} - -function axNode( - id: string, - role: string, - name: string, - opts?: { childIds?: string[]; backendDOMNodeId?: number } -): AXNode { - return { - nodeId: id, - backendDOMNodeId: opts?.backendDOMNodeId ?? Number.parseInt(id, 10) * 100, - role: { type: 'role', value: role }, - name: { type: 'computedString', value: name }, - childIds: opts?.childIds - } -} - -const EXAMPLE_COM_TREE: AXNode[] = [ - axNode('1', 'WebArea', 'Example Domain', { childIds: ['2', '3', '4'] }), - axNode('2', 'heading', 'Example Domain'), - axNode('3', 'staticText', 'This domain is for use in illustrative examples.'), - axNode('4', 'link', 'More information...', { backendDOMNodeId: 400 }) -] - -const SEARCH_PAGE_TREE: AXNode[] = [ - axNode('1', 'WebArea', 'Search', { childIds: ['2', '3', '4', '5'] }), - axNode('2', 'navigation', 'Main Nav', { childIds: ['3'] }), - axNode('3', 'link', 'Home', { backendDOMNodeId: 300 }), - axNode('4', 'textbox', 'Search query', { backendDOMNodeId: 400 }), - axNode('5', 'button', 'Search', { backendDOMNodeId: 500 }) -] - -function createMockGuest( - id: number, - url: string, - title: string, - options?: { readyState?: string | (() => string) } -) { - let currentUrl = url - let currentTitle = title - let currentTree = EXAMPLE_COM_TREE - let navHistoryId = 1 - let debuggerAttached = false - - const sendCommandMock = vi.fn(async (method: string, params?: Record) => { - switch (method) { - case 'Page.enable': - case 'DOM.enable': - case 'Accessibility.enable': - return {} - case 'Accessibility.getFullAXTree': - return { nodes: currentTree } - case 'Page.getNavigationHistory': - return { - entries: [{ id: navHistoryId, url: currentUrl }], - currentIndex: 0 - } - case 'Page.navigate': { - const targetUrl = (params as { url: string }).url - if (targetUrl.includes('nonexistent.invalid')) { - return { errorText: 'net::ERR_NAME_NOT_RESOLVED' } - } - navHistoryId++ - currentUrl = targetUrl - if (targetUrl.includes('search.example.com')) { - currentTitle = 'Search' - currentTree = SEARCH_PAGE_TREE - } else { - currentTitle = 'Example Domain' - currentTree = EXAMPLE_COM_TREE - } - return {} - } - case 'Runtime.evaluate': { - const expr = (params as { expression: string }).expression - if (expr === 'document.readyState') { - return { - result: { - value: - typeof options?.readyState === 'function' - ? options.readyState() - : (options?.readyState ?? 'complete') - } - } - } - if (expr === 'location.origin') { - return { result: { value: new URL(currentUrl).origin } } - } - if (expr.includes('innerWidth')) { - return { result: { value: JSON.stringify({ w: 1280, h: 720 }) } } - } - if (expr.includes('scrollBy')) { - return { result: { value: undefined } } - } - if (expr.includes('dispatchEvent')) { - return { result: { value: undefined } } - } - // eslint-disable-next-line no-eval - return { result: { value: String(eval(expr)), type: 'string' } } - } - case 'DOM.scrollIntoViewIfNeeded': - return {} - case 'DOM.getBoxModel': - return { model: { content: [100, 200, 300, 200, 300, 250, 100, 250] } } - case 'Input.dispatchMouseEvent': - return {} - case 'Input.insertText': - return {} - case 'Input.dispatchKeyEvent': - return {} - case 'DOM.focus': - return {} - case 'DOM.describeNode': - return { node: { nodeId: 1 } } - case 'DOM.requestNode': - return { nodeId: 1 } - case 'DOM.resolveNode': - return { object: { objectId: 'obj-1' } } - case 'Runtime.callFunctionOn': - return { result: { value: undefined } } - case 'DOM.setFileInputFiles': - return {} - case 'Page.captureScreenshot': - return { - data: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==' - } - case 'Page.reload': - return {} - case 'Network.enable': - return {} - case 'Target.setAutoAttach': - return {} - case 'Page.addScriptToEvaluateOnNewDocument': - return { identifier: 'mock-script-id' } - case 'Runtime.enable': - return {} - default: - throw new Error(`Unexpected CDP method: ${method}`) - } - }) - - const debuggerListeners = new Map void)[]>() - - const guest = { - ...guestNavigationMethods(), - id, - isDestroyed: vi.fn(() => false), - isCurrentlyAudible: vi.fn(() => false), - setIgnoreMenuShortcuts: vi.fn(), - getType: vi.fn(() => 'webview'), - getURL: vi.fn(() => currentUrl), - getTitle: vi.fn(() => currentTitle), - setBackgroundThrottling: vi.fn(), - setWindowOpenHandler: vi.fn(), - on: vi.fn(), - off: vi.fn(), - debugger: { - isAttached: vi.fn(() => debuggerAttached), - attach: vi.fn(() => { - if (debuggerAttached) { - throw new Error('Another debugger is already attached') - } - debuggerAttached = true - }), - detach: vi.fn(), - sendCommand: sendCommandMock, - on: vi.fn((event: string, handler: (...args: unknown[]) => void) => { - const handlers = debuggerListeners.get(event) ?? [] - handlers.push(handler) - debuggerListeners.set(event, handlers) - }), - removeListener: vi.fn((event: string, handler: (...args: unknown[]) => void) => { - const handlers = debuggerListeners.get(event) ?? [] - const idx = handlers.indexOf(handler) - if (idx !== -1) { - handlers.splice(idx, 1) - } - }), - removeAllListeners: vi.fn((event: string) => { - debuggerListeners.set(event, []) - }), - off: vi.fn() - } - } - - return { - guest, - sendCommandMock, - setTree(tree: AXNode[]) { - currentTree = tree - }, - emitDebugger(event: string, ...args: unknown[]) { - for (const handler of debuggerListeners.get(event) ?? []) { - handler(...args) - } - }, - emitDebuggerMessage(method: string, params?: Record) { - for (const handler of debuggerListeners.get('message') ?? []) { - handler({}, method, params) - } - } - } -} - -async function sendRequest( - endpoint: string, - request: Record -): Promise> { - return await new Promise((resolve, reject) => { - const socket = createConnection(endpoint) - let buffer = '' - socket.setEncoding('utf8') - socket.once('error', reject) - socket.on('data', (chunk: string) => { - buffer += chunk - const newlineIndex = buffer.indexOf('\n') - if (newlineIndex === -1) { - return - } - const message = buffer.slice(0, newlineIndex) - socket.end() - resolve(JSON.parse(message) as Record) - }) - socket.on('connect', () => { - socket.write(`${JSON.stringify(request)}\n`) - }) - }) -} - -describe('Browser automation pipeline (integration)', () => { - let server: OrcaRuntimeRpcServer - let endpoint: string - let authToken: string - let activeGuestHarness: ReturnType - let cdpBridge: CdpBridge - - const GUEST_WC_ID = 5001 - const RENDERER_WC_ID = 1 - - beforeEach(async () => { - // The Electron entry installs this factory; Node hosts omit browser commands. - setRuntimeBrowserCommandsFactory((host) => new RuntimeBrowserCommands(host)) - activeGuestHarness = createMockGuest(GUEST_WC_ID, 'https://example.com', 'Example Domain') - const { guest } = activeGuestHarness - webContentsFromIdMock.mockImplementation((id: number) => { - if (id === GUEST_WC_ID) { - return guest - } - return null - }) - - const browserManager = new BrowserManager() - // Production applies these policies in will-attach-webview. - browserManager.attachGuestPolicies(guest as never) - browserManager.registerGuest({ - browserPageId: 'page-1', - webContentsId: GUEST_WC_ID, - rendererWebContentsId: RENDERER_WC_ID - }) - - cdpBridge = new CdpBridge(browserManager) - cdpBridge.setActiveTab(GUEST_WC_ID) - - const userDataPath = mkdtempSync(join(tmpdir(), 'browser-e2e-')) - const runtime = new OrcaRuntimeService() - // eslint-disable-next-line @typescript-eslint/no-explicit-any - runtime.setAgentBrowserBridge(cdpBridge as any) - - server = new OrcaRuntimeRpcServer({ runtime, userDataPath }) - await server.start() - - const metadata = readRuntimeMetadata(userDataPath)! - endpoint = metadata.transports[0]!.endpoint - authToken = metadata.authToken! - }) - - afterEach(async () => { - await server.stop() - }) - - async function rpc(method: string, params?: Record) { - const response = await sendRequest(endpoint, { - id: `req_${method}`, - authToken, - method, - ...(params ? { params } : {}) - }) - return response - } - - it('navigates to a URL and invalidates refs', async () => { - await rpc('browser.snapshot') - - const gotoRes = await rpc('browser.goto', { url: 'https://search.example.com' }) - expect(gotoRes.ok).toBe(true) - const gotoResult = gotoRes.result as { url: string; title: string } - expect(gotoResult.url).toBe('https://search.example.com') - expect(gotoResult.title).toBe('Search') - - const clickRes = await rpc('browser.click', { element: '@e1' }) - expect(clickRes.ok).toBe(false) - expect((clickRes.error as { code: string }).code).toBe('browser_stale_ref') - - const snapRes = await rpc('browser.snapshot') - expect(snapRes.ok).toBe(true) - const snapResult = snapRes.result as { snapshot: string; refs: { name: string }[] } - expect(snapResult.snapshot).toContain('Search') - expect(snapResult.refs.map((r) => r.name)).toContain('Search') - expect(snapResult.refs.map((r) => r.name)).toContain('Home') - }) -}) diff --git a/src/main/browser/cdp/commands/cdp-print-to-pdf.test.ts b/src/main/browser/cdp/commands/cdp-print-to-pdf.test.ts index 200a96efab9..6fc79fd5489 100644 --- a/src/main/browser/cdp/commands/cdp-print-to-pdf.test.ts +++ b/src/main/browser/cdp/commands/cdp-print-to-pdf.test.ts @@ -7,17 +7,6 @@ describe('CdpPdfStreamStore', () => { vi.useRealTimers() }) - it('claims only its own handles', () => { - const store = new CdpPdfStreamStore() - const handle = store.create(Buffer.from('pdf')) - - expect(store.ownsHandle({ handle })).toBe(true) - expect(handle).toMatch(/^orca-pdf-[\da-f-]{36}-\d+$/) - expect(store.ownsHandle({ handle: 'trace-stream' })).toBe(false) - expect(store.ownsHandle({ handle: 'orca-pdf-forged-1' })).toBe(false) - expect(store.ownsHandle({})).toBe(false) - }) - it('reads sequential chunks and reports eof', () => { const store = new CdpPdfStreamStore() const handle = store.create(Buffer.from('abcdef')) @@ -32,23 +21,6 @@ describe('CdpPdfStreamStore', () => { }) }) - it('honors an explicit read offset', () => { - const store = new CdpPdfStreamStore() - const handle = store.create(Buffer.from('abcdef')) - - expect(store.read({ handle, offset: 4 })).toEqual({ - data: Buffer.from('ef').toString('base64'), - eof: true - }) - }) - - it('returns an empty eof chunk when reading past the end', () => { - const store = new CdpPdfStreamStore() - const handle = store.create(Buffer.from('abc')) - - expect(store.read({ handle, offset: 99 })).toEqual({ data: '', eof: true }) - }) - it('evicts an abandoned stream after the TTL', () => { vi.useFakeTimers() const store = new CdpPdfStreamStore() diff --git a/src/main/browser/cdp/input/browser-text-insertion.test.ts b/src/main/browser/cdp/input/browser-text-insertion.test.ts deleted file mode 100644 index 4b86233a9ad..00000000000 --- a/src/main/browser/cdp/input/browser-text-insertion.test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { describe, expect, it } from 'vitest' -import { splitBrowserTextInsertionChunks } from '../../../../shared/browser-text-insertion-chunks' - -describe('browser text insertion chunking', () => { - it('keeps a single multibyte character intact when the byte cap is smaller', () => { - const chunks = splitBrowserTextInsertionChunks('😀a', 1) - - expect(chunks).toEqual(['😀', 'a']) - expect(chunks.join('')).toBe('😀a') - }) -}) diff --git a/src/main/browser/cdp/screencast/browser-screencast-first-frame-timeout.test.ts b/src/main/browser/cdp/screencast/browser-screencast-first-frame-timeout.test.ts deleted file mode 100644 index 304652dfaad..00000000000 --- a/src/main/browser/cdp/screencast/browser-screencast-first-frame-timeout.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Buffer } from 'node:buffer' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { startBrowserScreencast } from './browser-screencast-stream' -import type { BrowserScreencastOptions } from './browser-screencast-stream-types' -import { createMockScreencastWebContents } from './browser-screencast-web-contents-test-double' - -function start( - webContents: ReturnType, - options: BrowserScreencastOptions -) { - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the stream touches only the debugger, isDestroyed and capturePage the doubles provide. - return startBrowserScreencast(webContents as never, options) -} - -function startOptions(viewport: boolean) { - return { - format: 'jpeg' as const, - quality: 70, - maxWidth: 1440, - maxHeight: 1200, - everyNthFrame: 2, - minFrameIntervalMs: 0, - holdPaint: () => () => {}, - ...(viewport ? { viewportWidth: 390, viewportHeight: 844 } : {}), - onFrame: vi.fn(() => true), - onError: vi.fn() - } -} - -describe('browser screencast first-frame deadline', () => { - beforeEach(() => { - vi.useFakeTimers() - }) - afterEach(() => { - vi.useRealTimers() - }) - - it('drops a capture that settles after the limit', async () => { - let settleCapture!: (image: unknown) => void - const webContents = Object.assign(createMockScreencastWebContents(), { - capturePage: vi.fn( - () => - new Promise((resolve) => { - settleCapture = resolve - }) - ) - }) - const options = startOptions(true) - const session = await start(webContents, options) - await vi.advanceTimersByTimeAsync(10_000) - - settleCapture({ - getSize: () => ({ width: 390, height: 844 }), - toJPEG: () => Buffer.from('late'), - toPNG: () => Buffer.from('late') - }) - await vi.advanceTimersByTimeAsync(1_000) - - expect(options.onFrame).not.toHaveBeenCalled() - session.stop() - await session.done - }) -}) diff --git a/src/main/browser/cdp/screencast/browser-screencast-guest-view-limit.test.ts b/src/main/browser/cdp/screencast/browser-screencast-guest-view-limit.test.ts index a07487bfd5b..25748453ed5 100644 --- a/src/main/browser/cdp/screencast/browser-screencast-guest-view-limit.test.ts +++ b/src/main/browser/cdp/screencast/browser-screencast-guest-view-limit.test.ts @@ -1,8 +1,6 @@ import { Buffer } from 'node:buffer' import { describe, expect, it, vi } from 'vitest' -import { decodeBrowserScreencastFrame } from '../../../../shared/browser/screencast/browser-screencast-protocol' - import { startBrowserScreencast } from './browser-screencast-stream' import { createMockScreencastWebContents } from './browser-screencast-web-contents-test-double' @@ -76,55 +74,6 @@ async function startOversizedStream(guest: ReturnType, onFra } describe('screencast of a guest smaller than the requested viewport (#30341)', () => { - it('re-emulates at the size the guest can paint and labels frames with it', async () => { - const guest = createGuest('webview') - const onFrame = vi.fn() - const session = await startOversizedStream(guest, onFrame) - await vi.waitFor(() => - expect(guest.debugger.sendCommand).toHaveBeenCalledWith( - 'Page.captureScreenshot', - expect.anything() - ) - ) - expect(emulatedSizes(guest)).toEqual(['1833x1179']) - - emitGuestFrame(guest, 1, { width: 1463, height: 849 }) - await vi.waitFor(() => expect(emulatedSizes(guest)).toEqual(['1833x1179', '1463x849'])) - expect(guest.debugger.sendCommand).toHaveBeenCalledWith('Page.screencastFrameAck', { - sessionId: 1 - }) - expect(onFrame).not.toHaveBeenCalled() - - emitGuestFrame(guest, 2, { width: 1463, height: 849 }) - await vi.waitFor(() => expect(onFrame).toHaveBeenCalledTimes(1)) - expect(decodeBrowserScreencastFrame(onFrame.mock.calls[0][0])?.metadata).toMatchObject({ - deviceWidth: 1463, - deviceHeight: 849 - }) - - session.stop() - await session.done - }) - - it('gives the requested size back once the guest grows, and follows a new request', async () => { - const guest = createGuest('webview') - const session = await startOversizedStream(guest) - emitGuestFrame(guest, 1, { width: 1463, height: 849 }) - await vi.waitFor(() => expect(emulatedSizes(guest)).toHaveLength(2)) - - emitGuestFrame(guest, 2, { width: 2000, height: 1300 }) - await vi.waitFor(() => expect(emulatedSizes(guest).at(-1)).toBe('1833x1179')) - - await session.updateViewport({ viewportWidth: 1028, viewportHeight: 1179 }) - expect(emulatedSizes(guest).at(-1)).toBe('1028x1179') - - emitGuestFrame(guest, 3, { width: 1463, height: 849 }) - await vi.waitFor(() => expect(emulatedSizes(guest).at(-1)).toBe('1028x849')) - - session.stop() - await session.done - }) - it('keeps dropping guest frames until the fitted size is actually emulated', async () => { const guest = createGuest('webview') let releaseSnapshot!: () => void @@ -183,20 +132,4 @@ describe('screencast of a guest smaller than the requested viewport (#30341)', ( session.stop() }) - - it('keeps the full request for a window guest, which can grow to it', async () => { - const guest = createGuest('window') - const session = await startOversizedStream(guest) - - emitGuestFrame(guest, 1, { width: 1463, height: 849 }) - await vi.waitFor(() => - expect(guest.debugger.sendCommand).toHaveBeenCalledWith('Page.screencastFrameAck', { - sessionId: 1 - }) - ) - expect(emulatedSizes(guest)).toEqual(['1833x1179']) - - session.stop() - await session.done - }) }) diff --git a/src/main/browser/certificate-trust/browser-certificate-trust-controller.test.ts b/src/main/browser/certificate-trust/browser-certificate-trust-controller.test.ts index 9f4cb327c02..edf10dbb57c 100644 --- a/src/main/browser/certificate-trust/browser-certificate-trust-controller.test.ts +++ b/src/main/browser/certificate-trust/browser-certificate-trust-controller.test.ts @@ -142,15 +142,6 @@ describe('BrowserCertificateTrustController', () => { controller.installSessionRequestGuard(browserSession) }) - it('keeps challenge ownership and expiry when reading a specific guest', () => { - certificateEvent({ controller, guest }) - expect(controller.hasFailureForGuest(guest.id)).toBe(true) - expect(controller.hasFailureForGuest(otherGuest.id)).toBe(false) - now += 300_000 - expect(controller.hasFailureForGuest(guest.id)).toBe(false) - expect(controller.proceed('page-1', 'challenge-1')).toEqual({ ok: false, reason: 'missing' }) - }) - it('blocks a session-cached certificate for sibling requests until that guest approves it', () => { certificateEvent({ controller, guest }) expect(controller.proceed('page-1', 'challenge-1')).toEqual({ ok: true }) diff --git a/src/main/browser/guest-lifecycle/popups/browser-page-initiated-tab-budget.test.ts b/src/main/browser/guest-lifecycle/popups/browser-page-initiated-tab-budget.test.ts index 458a2129a98..12155ad5184 100644 --- a/src/main/browser/guest-lifecycle/popups/browser-page-initiated-tab-budget.test.ts +++ b/src/main/browser/guest-lifecycle/popups/browser-page-initiated-tab-budget.test.ts @@ -1,20 +1,7 @@ import { describe, expect, it } from 'vitest' -import { - createPageInitiatedTabBudget, - MAX_PAGE_INITIATED_TABS_PER_WINDOW, - PAGE_INITIATED_TAB_WINDOW_MS -} from './browser-page-initiated-tab-budget' +import { createPageInitiatedTabBudget } from './browser-page-initiated-tab-budget' describe('page-initiated tab budget', () => { - it('refills once the rolling window has passed, so real browsing is unaffected', () => { - const budget = createPageInitiatedTabBudget() - for (let i = 0; i < MAX_PAGE_INITIATED_TABS_PER_WINDOW; i++) { - expect(budget.tryConsume(1_000)).toBe(true) - } - expect(budget.tryConsume(1_000 + PAGE_INITIATED_TAB_WINDOW_MS - 1)).toBe(false) - expect(budget.tryConsume(1_000 + PAGE_INITIATED_TAB_WINDOW_MS)).toBe(true) - }) - it('slides rather than resetting, so a paced flood cannot outrun the cap', () => { const budget = createPageInitiatedTabBudget(2, 1_000) diff --git a/src/main/browser/guest-lifecycle/prompts/browser-http-auth-prompt.test.ts b/src/main/browser/guest-lifecycle/prompts/browser-http-auth-prompt.test.ts deleted file mode 100644 index 5f1f833ed51..00000000000 --- a/src/main/browser/guest-lifecycle/prompts/browser-http-auth-prompt.test.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { EventEmitter } from 'node:events' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -const mocks = vi.hoisted(() => ({ - resolvePagePromptTarget: vi.fn() -})) - -vi.mock('../manager/browser-manager', () => ({ - browserManager: { - resolvePagePromptTarget: mocks.resolvePagePromptTarget - } -})) - -import type { BrowserPagePromptRequest } from '../../../../shared/browser/prompts/browser-page-prompt' -import { handleBrowserGuestLogin } from './browser-http-auth-prompt' -import { BROWSER_PAGE_PROMPT_TIMEOUT_MS, respondToBrowserPagePrompt } from './browser-page-prompts' - -type MockGuest = Electron.WebContents & EventEmitter - -const guests: MockGuest[] = [] - -function mockGuest(pageUrl = 'https://staging.acme.com/'): MockGuest { - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the prompt only reads id, isDestroyed, getURL and the input, navigation and destroyed events. - const guest = new EventEmitter() as MockGuest - Object.assign(guest, { - id: 100 + guests.length, - isDestroyed: () => false, - getURL: () => pageUrl - }) - guests.push(guest) - return guest -} - -function mockRenderer(id: number): Electron.WebContents { - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: prompts only read id, isDestroyed, send and subscribe to the window's lifecycle events. - return { - id, - isDestroyed: () => false, - send: vi.fn(), - on: vi.fn(), - off: vi.fn() - } as unknown as Electron.WebContents -} - -function showTabIn(renderer: Electron.WebContents, browserPageId = 'page-1'): void { - mocks.resolvePagePromptTarget.mockReturnValue({ browserPageId, renderer }) -} - -function challenge( - guest: MockGuest, - { - url = 'https://staging.acme.com/', - isRequestForNavigation = true, - firstAuthAttempt = true, - isProxy = false, - realm = 'Staging' - } = {} -) { - const event = { preventDefault: vi.fn() } - const callback = vi.fn() - handleBrowserGuestLogin( - event, - guest, - { url, pid: 1, isRequestForNavigation, firstAuthAttempt }, - { isProxy, scheme: 'basic', host: new URL(url).hostname, port: 443, realm }, - callback - ) - return { asked: event.preventDefault.mock.calls.length > 0, callback } -} - -function sentRequests(renderer: Electron.WebContents): BrowserPagePromptRequest<'http-auth'>[] { - return vi - .mocked(renderer.send) - .mock.calls.filter(([channel]) => channel === 'browser:page-prompt-requested') - .map(([, request]) => request) -} - -const answer = (renderer: Electron.WebContents, requestId: string, value: unknown) => - respondToBrowserPagePrompt(renderer, { requestId, answer: value }) - -const CREDENTIALS = { username: 'qa', password: 'hunter2' } - -describe('browser HTTP auth prompt', () => { - beforeEach(() => { - vi.useFakeTimers() - mocks.resolvePagePromptTarget.mockReset() - }) - - afterEach(() => { - vi.advanceTimersByTime(BROWSER_PAGE_PROMPT_TIMEOUT_MS) - for (const guest of guests.splice(0)) { - guest.emit('destroyed') - } - vi.useRealTimers() - }) - - it.each([ - ['a proxy challenge', { isProxy: true }], - [ - 'an image from another site', - { url: 'https://cdn.other.com/a.png', isRequestForNavigation: false } - ] - ])('leaves %s to Electron, which cancels it', (_name, options) => { - const renderer = mockRenderer(10) - showTabIn(renderer) - - const { asked } = challenge(mockGuest(), options) - - expect(asked).toBe(false) - expect(sentRequests(renderer)).toEqual([]) - }) - - it('shares one prompt per realm and cancels a different challenge meanwhile', async () => { - const renderer = mockRenderer(10) - showTabIn(renderer) - const guest = mockGuest() - - const first = challenge(guest) - const sameRealm = challenge(guest, { - url: 'https://staging.acme.com/logo.png', - isRequestForNavigation: false - }) - const otherRealm = challenge(guest, { realm: 'Admin' }) - - expect([first.asked, sameRealm.asked, otherRealm.asked]).toEqual([true, true, false]) - const [request] = sentRequests(renderer) - expect(sentRequests(renderer)).toHaveLength(1) - await answer(renderer, request.requestId, CREDENTIALS) - expect(first.callback).toHaveBeenCalledWith('qa', 'hunter2') - expect(sameRealm.callback).toHaveBeenCalledWith('qa', 'hunter2') - }) -}) diff --git a/src/main/browser/guest-lifecycle/prompts/browser-javascript-dialogs.test.ts b/src/main/browser/guest-lifecycle/prompts/browser-javascript-dialogs.test.ts index a9efc10b55e..33e8e8bb1e8 100644 --- a/src/main/browser/guest-lifecycle/prompts/browser-javascript-dialogs.test.ts +++ b/src/main/browser/guest-lifecycle/prompts/browser-javascript-dialogs.test.ts @@ -7,7 +7,6 @@ import { getBrowserJavaScriptDialog, installBrowserJavaScriptDialogs } from './browser-javascript-dialogs' -import { respondToBrowserPagePrompt } from './browser-page-prompts' type MockContents = Electron.WebContents & EventEmitter & { debugger: EventEmitter } @@ -58,39 +57,6 @@ function setup() { } describe('browser JavaScript dialogs', () => { - it('asks in the page prompt instead of Electron’s window-wide sheet', () => { - const { guest, electronSheet, openDialog, shownPrompts } = setup() - - const callback = openDialog('confirm', 'Delete everything?') - - expect(electronSheet).not.toHaveBeenCalled() - expect(callback).not.toHaveBeenCalled() - expect(getBrowserJavaScriptDialog(guest.id)).toEqual({ - type: 'confirm', - message: 'Delete everything?', - defaultPromptText: '' - }) - expect(shownPrompts()).toEqual([ - expect.objectContaining({ - kind: 'javascript-dialog', - details: { - type: 'confirm', - message: 'Delete everything?', - defaultPromptText: '', - origin: 'https://shop.example' - } - }) - ]) - }) - - it('names an embedded page that asks, not the site around it', () => { - const { openDialog, shownPrompts } = setup() - - openDialog('prompt', 'Re-enter your password', '', { origin: 'https://ads.example' }) - - expect(shownPrompts()[0]?.details).toMatchObject({ origin: 'https://ads.example' }) - }) - it('takes an agent’s prompt answer and closes the page prompt', () => { const { guest, openDialog, closedPrompts } = setup() const callback = openDialog('prompt', 'Your name?', 'def') @@ -103,19 +69,6 @@ describe('browser JavaScript dialogs', () => { expect(answerBrowserJavaScriptDialog(guest.id, { accept: true, promptText: '' })).toBe(false) }) - it('answers the page with what the user chose in the page prompt', async () => { - const { renderer, guest, openDialog, shownPrompts } = setup() - const callback = openDialog('confirm', 'Leave?') - - await respondToBrowserPagePrompt(renderer, { - requestId: shownPrompts()[0].requestId, - answer: { accept: false, promptText: '' } - }) - - expect(callback).toHaveBeenCalledExactlyOnceWith(false, '') - expect(getBrowserJavaScriptDialog(guest.id)).toBeNull() - }) - it('turns away a second frame’s dialog and keeps the first one answerable', () => { const { guest, openDialog } = setup() const first = openDialog('confirm', 'Delete everything?') diff --git a/src/main/browser/guest-lifecycle/prompts/browser-page-prompts.test.ts b/src/main/browser/guest-lifecycle/prompts/browser-page-prompts.test.ts index 1e391d985b8..e8eccfbbe8c 100644 --- a/src/main/browser/guest-lifecycle/prompts/browser-page-prompts.test.ts +++ b/src/main/browser/guest-lifecycle/prompts/browser-page-prompts.test.ts @@ -4,7 +4,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { BrowserPagePromptRequest } from '../../../../shared/browser/prompts/browser-page-prompt' import { BROWSER_PAGE_PROMPT_TIMEOUT_MS, - cancelBrowserPagePrompts, openBrowserPagePrompt, respondToBrowserPagePrompt, showBrowserPagePromptsAwaitingRegistration, @@ -57,13 +56,6 @@ function sentRequests(renderer: Electron.WebContents): BrowserPagePromptRequest[ .map(([, request]) => request) } -function closedRequestIds(renderer: Electron.WebContents): string[] { - return vi - .mocked(renderer.send) - .mock.calls.filter(([channel]) => channel === 'browser:page-prompt-closed') - .map(([, event]) => event.requestId) -} - const latestId = (renderer: Electron.WebContents): string => sentRequests(renderer).at(-1)!.requestId @@ -172,25 +164,4 @@ describe('browser page prompts', () => { await respondToBrowserPagePrompt(renderer, { requestId: latestId(renderer), answer: true }) expect(ask(guest).opening).toBe('prompting') }) - - it('closes the prompt with a null answer when it expires or its page goes away', async () => { - const renderer = mockRenderer(10) - const expiring = ask(mockGuest(renderer, 'page-1')) - const expiringId = latestId(renderer) - const closingGuest = mockGuest(renderer, 'page-2') - const closing = ask(closingGuest) - const closingId = latestId(renderer) - - cancelBrowserPagePrompts('page-2') - vi.advanceTimersByTime(BROWSER_PAGE_PROMPT_TIMEOUT_MS) - await Promise.resolve() - - expect(closedRequestIds(renderer)).toEqual([closingId, expiringId]) - expect(expiring.settle).toHaveBeenCalledWith(null) - expect(closing.settle).toHaveBeenCalledWith(null) - await expect( - respondToBrowserPagePrompt(renderer, { requestId: closingId, answer: true }) - ).resolves.toBe('rejected') - expect(ask(closingGuest).opening).toBe('prompting') - }) }) diff --git a/src/main/browser/identity/mode/browser-retired-profile-identity-inspection.test.ts b/src/main/browser/identity/mode/browser-retired-profile-identity-inspection.test.ts deleted file mode 100644 index eb050a91f96..00000000000 --- a/src/main/browser/identity/mode/browser-retired-profile-identity-inspection.test.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { describe, expect, it } from 'vitest' -import { getOrcaProfileBrowserSessionPartition } from '../../../../shared/orca-profiles' -import { inspectRetiredBrowserSessionProfileUserAgentModes } from './browser-retired-profile-identity-inspection' - -const ORCA_PROFILE_ID = 'local-default' -const PROFILE_ID = '11111111-1111-4111-8111-111111111111' - -function profileWithMode(mode: unknown): Record { - return { - id: PROFILE_ID, - scope: 'isolated', - partition: getOrcaProfileBrowserSessionPartition(ORCA_PROFILE_ID, PROFILE_ID), - label: 'Existing', - source: null, - userAgentMode: mode - } -} - -function unhydratableProfile(extra: Record = {}): Record { - return { - id: 'not-a-uuid', - scope: 'isolated', - partition: 'persist:orca-browser-session-not-a-uuid', - label: 'Unhydratable', - source: null, - ...extra - } -} - -describe('retired browser profile identity inspection', () => { - it('detects an inspectable old choice without removing its bytes', () => { - const profile = profileWithMode('native') - - expect(inspectRetiredBrowserSessionProfileUserAgentModes([profile], ORCA_PROFILE_ID)).toEqual({ - noticePending: true, - degraded: false - }) - expect(profile.userAgentMode).toBe('native') - }) - - it.each([ - { scenario: 'an unreadable mode', entry: profileWithMode('unexpected') }, - { - scenario: 'a mode on an entry that cannot be hydrated', - entry: unhydratableProfile({ userAgentMode: 'native' }) - } - ])('turns $scenario into a degraded notice without throwing', ({ entry }) => { - expect(() => - inspectRetiredBrowserSessionProfileUserAgentModes([entry], ORCA_PROFILE_ID) - ).not.toThrow() - expect(inspectRetiredBrowserSessionProfileUserAgentModes([entry], ORCA_PROFILE_ID)).toEqual({ - noticePending: true, - degraded: true - }) - }) -}) diff --git a/src/main/browser/identity/wire-probes/browser-session-ua-wire-identity-cross-context.electron.test.ts b/src/main/browser/identity/wire-probes/browser-session-ua-wire-identity-cross-context.electron.test.ts deleted file mode 100644 index d5b3e0c58f9..00000000000 --- a/src/main/browser/identity/wire-probes/browser-session-ua-wire-identity-cross-context.electron.test.ts +++ /dev/null @@ -1,416 +0,0 @@ -import { spawn, type ChildProcess } from 'node:child_process' -import { createServer } from 'node:net' -import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs' -import { createRequire } from 'node:module' -import { tmpdir } from 'node:os' -import { basename, join } from 'node:path' -import { chromium } from 'playwright' -import { afterAll, beforeAll, describe, expect, it } from 'vitest' -import { build as buildVite } from 'vite' -import { - BrowserSessionUaCdpCollector, - type BrowserSessionUaCdpRequest, - waitForBrowserCdpEndpoint -} from './browser-session-ua-cdp-collector' -import { - startBrowserSessionUaWireProbeServer, - type WireProbeJavaScriptIdentity, - type WireProbeReceipt -} from './browser-session-ua-wire-probe-server' - -const electronBinary = createRequire(import.meta.url)('electron') as string -const fixtureRoots: string[] = [] -let processIdentityModulePath: string -let exceptionModulePath: string - -beforeAll(async () => { - const root = mkdtempSync(join(tmpdir(), 'orca-wire-identity-modules-')) - fixtureRoots.push(root) - processIdentityModulePath = join(root, 'browser-process-user-agent.cjs') - exceptionModulePath = join(root, 'browser-session-ua.cjs') - await Promise.all([ - buildModule( - 'src/main/browser/identity/browser-process-user-agent.ts', - processIdentityModulePath - ), - buildModule('src/main/browser/identity/requests/browser-session-ua.ts', exceptionModulePath) - ]) -}) - -afterAll(() => { - for (const root of fixtureRoots) { - rmSync(root, { recursive: true, force: true, maxRetries: 5, retryDelay: 100 }) - } -}) - -type ProbeArm = 'clean' | 'fallback-disabled' - -type ProbeResult = Readonly<{ - arm: ProbeArm - rawUserAgent: string - cleanUserAgent: string - navigatorUserAgent: string - receipts: readonly WireProbeReceipt[] - identities: readonly WireProbeJavaScriptIdentity[] - cdpRequests: readonly BrowserSessionUaCdpRequest[] - cdpDiagnostics: readonly string[] - fixtureResult: string - fixtureStderr: string -}> - -describe('browser session wire identity in cross-site frames and dedicated workers', () => { - it('keeps OOPIF, dedicated-worker, and client-hint identities clean', async () => { - const result = await runProbe('clean') - assertCapturedContexts(result) - const checks = identityChecks(result) - expect(checks.crossSiteDocument).toBe(true) - expect(checks.crossSiteFetch).toBe(true) - expect(checks.dedicatedWorkerScript).toBe(true) - expect(checks.dedicatedWorkerFetch).toBe(true) - expect(checks.clientHints, JSON.stringify(receiptForPath(result.receipts, '/'))).toBe(true) - }, 60_000) -}) - -async function runProbe(arm: ProbeArm): Promise { - const root = mkdtempSync(join(tmpdir(), `orca-wire-cross-context-${arm}-`)) - fixtureRoots.push(root) - const server = await startBrowserSessionUaWireProbeServer() - const resultPath = join(root, 'result.json') - const barrierPath = join(root, 'continue') - const fixturePath = join(root, 'main.cjs') - const cdpPort = await reservePort() - writeFileSync( - fixturePath, - fixtureMain({ - arm, - barrierPath, - exceptionModulePath, - httpOrigin: server.httpOrigin, - processIdentityModulePath, - resultPath - }) - ) - let process: ChildProcess | null = null - let collector: BrowserSessionUaCdpCollector | null = null - let browser: Awaited> | null = null - try { - process = launchFixture(fixturePath, root, cdpPort) - await waitForBrowserCdpEndpoint(cdpPort) - browser = await chromium.connectOverCDP(`http://127.0.0.1:${cdpPort}`) - collector = await BrowserSessionUaCdpCollector.connect(cdpPort) - await collector.installAutoAttach() - writeFileSync(barrierPath, '') - const processResult = await waitForProcess(process) - const fixtureResult = existsSync(resultPath) ? readFileSync(resultPath, 'utf8') : 'no result' - expect( - processResult.code, - `${fixtureResult}\n${processResult.stderr}\n${JSON.stringify({ diagnostics: collector.diagnostics, receipts: server.receipts, identities: server.identities })}` - ).toBe(0) - await new Promise((resolve) => setTimeout(resolve, 250)) - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: JSON.parse is untyped; the fixture writes this exact shape before exiting. - const parsed = JSON.parse(fixtureResult) as Omit< - ProbeResult, - | 'receipts' - | 'identities' - | 'cdpRequests' - | 'cdpDiagnostics' - | 'fixtureResult' - | 'fixtureStderr' - > - return { - ...parsed, - fixtureResult, - fixtureStderr: processResult.stderr, - receipts: [...server.receipts], - identities: [...server.identities], - cdpDiagnostics: [...collector.diagnostics], - cdpRequests: collector.snapshot().filter(({ url }) => { - return ( - url.startsWith(server.httpOrigin) || - url.startsWith(server.crossSiteOrigin) || - url.startsWith(server.httpsOrigin) - ) - }) - } - } finally { - await collector?.close().catch(() => {}) - await browser?.close().catch(() => {}) - await server.close() - if (process && process.exitCode === null) { - process.kill('SIGTERM') - } - } -} - -async function buildModule(entry: string, outputPath: string): Promise { - await buildVite({ - configFile: false, - logLevel: 'silent', - build: { - emptyOutDir: false, - lib: { - entry: join(process.cwd(), entry), - formats: ['cjs'], - fileName: () => basename(outputPath) - }, - outDir: join(outputPath, '..'), - target: 'node20', - rollupOptions: { external: ['electron', /^node:/] } - } - }) -} - -function launchFixture(fixturePath: string, root: string, cdpPort: number): ChildProcess { - const { ELECTRON_RUN_AS_NODE: _electronRunAsNode, ...env } = process.env - const args = [ - fixturePath, - `--user-data-dir=${join(root, 'profile')}`, - `--remote-debugging-port=${cdpPort}`, - '--site-per-process' - ] - if (process.platform === 'linux') { - args.push('--no-sandbox') - } - return spawn( - process.platform === 'linux' ? 'xvfb-run' : electronBinary, - process.platform === 'linux' ? ['--auto-servernum', electronBinary, ...args] : args, - { - env: { ...env, ORCA_BACKGROUND_LAUNCH: '1' }, - stdio: ['ignore', 'pipe', 'pipe'] - } - ) -} - -function fixtureMain(options: { - arm: ProbeArm - barrierPath: string - exceptionModulePath: string - httpOrigin: string - processIdentityModulePath: string - resultPath: string -}): string { - return String.raw` -const { app, BrowserWindow, session } = require('electron') -const { existsSync, writeFileSync } = require('node:fs') -const processIdentity = require(${JSON.stringify(options.processIdentityModulePath)}) -const { cleanElectronUserAgent } = require(${JSON.stringify(options.processIdentityModulePath)}) -const arm = ${JSON.stringify(options.arm)} -app.setName('OrcaCrossContextFixture') -app.commandLine.appendSwitch('site-per-process') -const rawUserAgent = app.userAgentFallback -if (arm === 'clean') processIdentity.initializeBrowserProcessUserAgent('clean') -const waitForBarrier = async () => { - const deadline = Date.now() + 15000 - while (!existsSync(${JSON.stringify(options.barrierPath)})) { - if (Date.now() >= deadline) throw new Error('startup barrier timeout') - await new Promise(resolve => setTimeout(resolve, 20)) - } -} -async function run() { - const timeout = setTimeout(() => { writeFileSync(${JSON.stringify(options.resultPath)}, JSON.stringify({ error: 'timeout' })); app.exit(2) }, 20000) - await app.whenReady() - await waitForBarrier() - const sess = session.fromPartition('persist:wire-cross-context') - sess.setCertificateVerifyProc((_request, callback) => callback(0)) - const windows = [] - const window = new BrowserWindow({ show: false, webPreferences: { partition: 'persist:wire-cross-context', sandbox: true } }) - windows.push(window) - window.webContents.setWindowOpenHandler(() => ({ - action: 'allow', - createWindow: options => { - const popup = new BrowserWindow({ ...options, show: false }) - windows.push(popup) - return popup.webContents - } - })) - await window.loadURL(${JSON.stringify(options.httpOrigin)} + '/?cross-context=1') - const [navigatorUserAgent] = await Promise.all([ - window.webContents.executeJavaScript('navigator.userAgent'), - window.webContents.executeJavaScript('window.probePromise') - ]) - // Allow isolated-frame CDP events to flush before the fixture exits. - await new Promise(resolve => setTimeout(resolve, 1500)) - clearTimeout(timeout) - writeFileSync(${JSON.stringify(options.resultPath)}, JSON.stringify({ arm, rawUserAgent, cleanUserAgent: cleanElectronUserAgent(rawUserAgent), navigatorUserAgent })) - for (const candidate of windows) if (!candidate.isDestroyed()) candidate.destroy() - app.exit(0) -} -run().catch(error => { writeFileSync(${JSON.stringify(options.resultPath)}, JSON.stringify({ error: String(error?.stack || error) })); app.exit(1) }) -` -} - -function assertCapturedContexts(result: ProbeResult): void { - const paths = new Set(result.receipts.map(({ path }) => path)) - for (const path of [ - '/', - '/cross-site-frame', - '/cross-site-frame-fetch', - '/dedicated-worker.js', - '/dedicated-worker-fetch', - '/report/cross-site-frame', - '/report/dedicated-worker' - ]) { - expect( - paths, - `${result.arm} omitted ${path}\n cdp: ${JSON.stringify(result.cdpDiagnostics)}\n receipts: ${JSON.stringify(result.receipts.map((r) => r.path))}\n fixture: ${result.fixtureResult}\n stderr: ${result.fixtureStderr}` - ).toContain(path) - } - expect( - result.cdpDiagnostics.some((message) => message.startsWith('attached:iframe:')), - JSON.stringify(result.cdpDiagnostics) - ).toBe(true) - expect( - result.cdpDiagnostics.some((message) => message.startsWith('attached:worker:')), - JSON.stringify(result.cdpDiagnostics) - ).toBe(true) - expect( - result.receipts - .filter(({ path }) => path === '/cross-site-frame') - .map(({ protocol }) => protocol) - ).toEqual(['https']) - expect( - result.receipts - .filter(({ path }) => path === '/cross-site-frame-fetch') - .map(({ protocol }) => protocol) - ).toEqual(['https']) - expect( - result.cdpRequests.some(({ url, targetType }) => { - return new URL(url).pathname === '/cross-site-frame-fetch' && targetType === 'iframe' - }), - JSON.stringify(result.cdpRequests.filter(({ url }) => url.includes('cross-site-frame-fetch'))) - ).toBe(true) -} - -function identityChecks(result: ProbeResult): Readonly> { - const frameIdentity = identityForContext(result.identities, 'cross-site-frame') - const workerIdentity = identityForContext(result.identities, 'dedicated-worker') - const frameReceipt = receiptForPath(result.receipts, '/cross-site-frame-fetch') - const workerScriptReceipt = receiptForPath(result.receipts, '/dedicated-worker.js') - const workerFetchReceipt = receiptForPath(result.receipts, '/dedicated-worker-fetch') - // Compare hints on a subsequent fetch because initial navigation may omit them. - const rootReceipt = receiptForPath(result.receipts, '/report/document') - return { - crossSiteDocument: frameIdentity.userAgent === result.cleanUserAgent, - crossSiteFetch: frameReceipt.userAgent === result.cleanUserAgent, - dedicatedWorkerScript: workerScriptReceipt.userAgent === result.cleanUserAgent, - dedicatedWorkerFetch: - workerIdentity.userAgent === result.cleanUserAgent && - workerFetchReceipt.userAgent === result.cleanUserAgent, - clientHints: clientHintIdentityIsClean( - rootReceipt, - identityForContext(result.identities, 'document'), - result.cleanUserAgent - ) - } -} - -function clientHintIdentityIsClean( - receipt: WireProbeReceipt, - identity: WireProbeJavaScriptIdentity, - cleanUserAgent: string -): boolean { - // Native UA-CH can remain Chromium-shaped; require a clean legacy UA on the same request. - const secChUa = receipt.clientHints['sec-ch-ua'] - const wireBrands = parseSecChUa(secChUa) - const navigatorBrands = readNavigatorBrands(identity.userAgentData) - if (!secChUa || wireBrands.length === 0 || navigatorBrands.length === 0) { - return false - } - const token = /electron|orca/i - return ( - receipt.userAgent === cleanUserAgent && - !token.test(receipt.userAgent ?? '') && - !token.test(secChUa) && - !navigatorBrands.some(({ brand, version }) => token.test(brand) || token.test(version)) && - sameBrands(wireBrands, navigatorBrands) - ) -} - -function parseSecChUa(value: string | undefined): { brand: string; version: string }[] { - if (!value) { - return [] - } - const brands: { brand: string; version: string }[] = [] - const pattern = /"([^"]+)"\s*;\s*v="([^"]*)"/g - for (const match of value.matchAll(pattern)) { - const brand = match[1] - const version = match[2] - if (brand !== undefined && version !== undefined) { - brands.push({ brand, version }) - } - } - return brands -} - -function readNavigatorBrands(value: unknown): { brand: string; version: string }[] { - if (typeof value !== 'object' || value === null) { - return [] - } - const brandsValue = Object.entries(value).find(([key]) => key === 'brands')?.[1] - if (!Array.isArray(brandsValue)) { - return [] - } - const brands: { brand: string; version: string }[] = [] - for (const entry of brandsValue) { - if (typeof entry !== 'object' || entry === null) { - continue - } - const fields = Object.fromEntries(Object.entries(entry)) - const brand = fields.brand - const version = fields.version - if (typeof brand === 'string' && typeof version === 'string') { - brands.push({ brand, version }) - } - } - return brands -} - -function sameBrands( - left: readonly { brand: string; version: string }[], - right: readonly { brand: string; version: string }[] -): boolean { - const normalize = (brands: readonly { brand: string; version: string }[]) => - brands.map(({ brand, version }) => `${brand}\u0000${version}`).sort() - return JSON.stringify(normalize(left)) === JSON.stringify(normalize(right)) -} - -function identityForContext( - identities: readonly WireProbeJavaScriptIdentity[], - context: string -): WireProbeJavaScriptIdentity { - const matches = identities.filter((identity) => identity.context === context) - expect(matches, context).toHaveLength(1) - return matches[0]! -} - -function receiptForPath(receipts: readonly WireProbeReceipt[], path: string): WireProbeReceipt { - const matches = receipts.filter((receipt) => receipt.path === path) - expect(matches, path).not.toHaveLength(0) - return matches[0]! -} - -async function reservePort(): Promise { - const server = createServer() - await new Promise((resolve, reject) => { - server.once('error', reject) - server.listen(0, '127.0.0.1', resolve) - }) - const address = server.address() - if (!address || typeof address === 'string') { - throw new Error('cdp port unavailable') - } - await new Promise((resolve) => server.close(() => resolve())) - return address.port -} - -function waitForProcess(process: ChildProcess): Promise<{ code: number | null; stderr: string }> { - let stderr = '' - process.stderr?.setEncoding('utf8') - process.stderr?.on('data', (chunk: string) => { - stderr += chunk - }) - return new Promise((resolve, reject) => { - process.once('error', reject) - process.once('exit', (code) => resolve({ code, stderr })) - }) -} diff --git a/src/main/browser/sessions/partition-policies/browser-session-partition-proxy-install.test.ts b/src/main/browser/sessions/partition-policies/browser-session-partition-proxy-install.test.ts deleted file mode 100644 index edccd0a8004..00000000000 --- a/src/main/browser/sessions/partition-policies/browser-session-partition-proxy-install.test.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -const { fromPartitionMock } = vi.hoisted(() => { - const sessionsByPartition = new Map>>() - const fromPartitionMock = vi.fn((partition: string) => { - const existing = sessionsByPartition.get(partition) - if (existing) { - return existing - } - const created = { - resolveProxy: vi.fn(async () => 'DIRECT'), - setProxy: vi.fn(async () => {}), - closeAllConnections: vi.fn(async () => {}), - getUserAgent: vi.fn(() => 'Mozilla/5.0 Electron/43.0.0 Orca/1.0'), - setUserAgent: vi.fn(), - setPermissionRequestHandler: vi.fn(), - setPermissionCheckHandler: vi.fn(), - setDisplayMediaRequestHandler: vi.fn(), - removeListener: vi.fn(), - on: vi.fn() - } - sessionsByPartition.set(partition, created) - return created - }) - return { sessionsByPartition, fromPartitionMock } -}) - -const identityState = vi.hoisted(() => ({ unavailable: false })) - -vi.mock('electron', () => ({ - session: { - defaultSession: { resolveProxy: vi.fn(async () => 'DIRECT'), setProxy: vi.fn(async () => {}) }, - fromPartition: fromPartitionMock - } -})) -vi.mock('../../guest-lifecycle/manager/browser-manager', () => ({ - browserManager: { - installCertificateRequestGuard: vi.fn(), - removeCertificateRequestGuard: vi.fn(), - notifyPermissionDenied: vi.fn(), - handleGuestWillDownload: vi.fn() - } -})) -vi.mock('../../site-settings/permissions/browser-media-access', () => ({ - hasSystemMediaAccess: vi.fn(() => false), - requestSystemMediaAccess: vi.fn(async () => false) -})) -vi.mock('../../identity/requests/browser-session-ua', () => ({ - installBrowserSessionUserAgentPolicy: vi.fn(() => vi.fn()) -})) -vi.mock('../../identity/browser-process-user-agent', () => ({ - getBrowserProcessUserAgentIdentity: () => { - if (identityState.unavailable) { - throw new Error('Browser process user agent is not initialized') - } - return { - mode: 'clean', - userAgent: 'Mozilla/5.0 Chrome/150.0.0.0 Safari/537.36' - } - } -})) -vi.mock('../../webauthn/browser-webauthn-access', () => ({ - allowsBrowserWebAuthnPermission: vi.fn(() => false), - clearBrowserWebAuthnAccessHandlers: vi.fn(), - installBrowserWebAuthnAccessHandlers: vi.fn() -})) - -import { - clearBrowserSessionPartitionPolicies, - installBrowserSessionPartitionPolicies -} from './browser-session-partition-policies' - -import { - applyBrowserSessionProxies, - setBrowserNetworkProxySettingsResolver -} from '../proxy/browser-session-proxy' -import { handleElectronProxyLogin } from '../../../network/electron-proxy-credentials' - -let partitionCounter = 0 -function nextProfile() { - partitionCounter += 1 - const partition = `persist:orca-browser-session-install-${partitionCounter}` - return { - id: `p${partitionCounter}`, - scope: 'isolated' as const, - partition, - label: 'p', - source: null - } -} - -describe('installBrowserSessionPartitionPolicies proxy wiring', () => { - beforeEach(() => { - setBrowserNetworkProxySettingsResolver(null) - // Ignore host-shell proxy variables when testing settings. - for (const key of [ - 'HTTP_PROXY', - 'http_proxy', - 'HTTPS_PROXY', - 'https_proxy', - 'ALL_PROXY', - 'all_proxy' - ]) { - vi.stubEnv(key, '') - } - }) - - afterEach(() => { - setBrowserNetworkProxySettingsResolver(null) - vi.unstubAllEnvs() - identityState.unavailable = false - }) - - it('reports an unavailable process identity through the promise, not a synchronous throw', async () => { - const profile = nextProfile() - identityState.unavailable = true - - let installation: Promise | undefined - expect(() => { - installation = installBrowserSessionPartitionPolicies(profile) - }).not.toThrow() - await expect(installation).rejects.toThrow('Browser process user agent is not initialized') - }) - - it('does not report a new partition ready until Electron finishes applying its proxy', async () => { - let finishWrite: (() => void) | undefined - setBrowserNetworkProxySettingsResolver(() => ({ - httpProxyUrl: 'socks5://127.0.0.1:1080', - httpProxyBypassRules: '' - })) - const profile = nextProfile() - const sess = fromPartitionMock(profile.partition) - sess.setProxy.mockImplementation(() => new Promise((resolve) => (finishWrite = resolve))) - - let ready = false - const installation = installBrowserSessionPartitionPolicies(profile).then(() => (ready = true)) - await vi.waitFor(() => expect(sess.setProxy).toHaveBeenCalledTimes(1)) - expect(ready).toBe(false) - - finishWrite?.() - await installation - expect(ready).toBe(true) - }) - - it('recovers partition readiness after one transient proxy rejection', async () => { - setBrowserNetworkProxySettingsResolver(() => ({ - httpProxyUrl: 'http://proxy.example:8080', - httpProxyBypassRules: '' - })) - const profile = nextProfile() - const sess = fromPartitionMock(profile.partition) - sess.setProxy.mockRejectedValueOnce(new Error('transient proxy failure')) - - await expect(installBrowserSessionPartitionPolicies(profile)).resolves.toBeUndefined() - - expect(sess.setProxy).toHaveBeenCalledTimes(2) - }) - - it('forgets failed startup credentials and restores them after recovery', async () => { - setBrowserNetworkProxySettingsResolver(() => ({ - httpProxyUrl: 'http://alice:secret@proxy.example:8080', - httpProxyBypassRules: '' - })) - const profile = nextProfile() - const sess = fromPartitionMock(profile.partition) - sess.closeAllConnections.mockRejectedValue(new Error('proxy settlement failed')) - - await expect(installBrowserSessionPartitionPolicies(profile)).rejects.toThrow( - 'proxy settlement failed' - ) - const failedCallback = vi.fn() - handleElectronProxyLogin( - { preventDefault: vi.fn() } as never, - { session: sess } as never, - {} as never, - { isProxy: true, host: 'proxy.example', port: 8080 }, - failedCallback - ) - expect(failedCallback).not.toHaveBeenCalled() - - sess.closeAllConnections.mockResolvedValue(undefined) - await expect(installBrowserSessionPartitionPolicies(profile)).resolves.toBeUndefined() - const recoveredCallback = vi.fn() - handleElectronProxyLogin( - { preventDefault: vi.fn() } as never, - { session: sess } as never, - {} as never, - { isProxy: true, host: 'proxy.example', port: 8080 }, - recoveredCallback - ) - expect(recoveredCallback).toHaveBeenCalledWith('alice', 'secret') - }) - - it('cancels an in-flight policy retry when partition policies are cleared', async () => { - let proxyUrl = 'http://old.example:8080' - let finishWrite: (() => void) | undefined - setBrowserNetworkProxySettingsResolver(() => ({ httpProxyUrl: proxyUrl })) - const profile = nextProfile() - const sess = fromPartitionMock(profile.partition) - sess.setProxy.mockImplementationOnce( - () => new Promise((resolve) => (finishWrite = resolve)) - ) - - const installation = installBrowserSessionPartitionPolicies(profile) - await vi.waitFor(() => expect(sess.setProxy).toHaveBeenCalledTimes(1)) - clearBrowserSessionPartitionPolicies(profile.partition, sess as never) - proxyUrl = 'http://new.example:8080' - await applyBrowserSessionProxies([], { httpProxyUrl: proxyUrl }) - finishWrite?.() - await installation - - expect(sess.setProxy).toHaveBeenCalledTimes(1) - }) -}) diff --git a/src/main/browser/site-settings/display/browser-site-display-controller.test.ts b/src/main/browser/site-settings/display/browser-site-display-controller.test.ts index 8ef505bf2d9..c9fc9e8eebd 100644 --- a/src/main/browser/site-settings/display/browser-site-display-controller.test.ts +++ b/src/main/browser/site-settings/display/browser-site-display-controller.test.ts @@ -4,10 +4,7 @@ import { tmpdir } from 'node:os' import { join } from 'node:path' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { PersistedUIState } from '../../../../shared/persisted-ui-state-types' -import { - browserPageZoomLevelToPercent, - normalizeBrowserPageZoomLevel -} from '../../../../shared/browser-page-zoom' +import { browserPageZoomLevelToPercent } from '../../../../shared/browser-page-zoom' import { BrowserSiteDisplayController } from './browser-site-display-controller' import { configureBrowserSiteDisplayStore, @@ -55,12 +52,6 @@ function fakeGuest(url: string): FakeGuest { return guest } -function commit(controller: BrowserSiteDisplayController, guest: FakeGuest, url: string): void { - guest.url = url - controller.onMainFrameNavigationCommitted(guest.id) - guest.emit('dom-ready') -} - function uiStore(initial: Partial = {}): { getUI: () => PersistedUIState onUIChanged: (listener: (ui: PersistedUIState) => void) => () => void @@ -89,29 +80,6 @@ beforeEach(() => { }) describe('BrowserSiteDisplayController zoom', () => { - it('keeps zoom per site and browser profile, and resets it to Default Zoom', () => { - const controller = new BrowserSiteDisplayController() - const ui = uiStore({ browserDefaultZoomLevel: normalizeBrowserPageZoomLevel(0.5) }) - controller.followZoomSettings(ui) - const github = fakeGuest('https://github.com/a') - const githubOtherPort = fakeGuest('https://github.com:8443/b') - const githubWork = fakeGuest('https://github.com/c') - const docs = fakeGuest('https://docs.example.com/') - controller.onGuestRegistered(github, null) - controller.onGuestRegistered(githubOtherPort, 'default') - controller.onGuestRegistered(githubWork, 'work') - controller.onGuestRegistered(docs, null) - - controller.zoomPage(github.id, 'in') - - expect([github, githubOtherPort, githubWork, docs].map(percent)).toEqual([125, 125, 110, 110]) - commit(controller, docs, 'https://github.com/d') - expect(percent(docs)).toBe(125) - - expect(controller.zoomPage(github.id, 'reset')).toMatchObject({ siteHasZoom: false }) - expect([github, githubOtherPort, docs].map(percent)).toEqual([110, 110, 110]) - }) - it("restores the site's zoom after Orca's UI zoom is copied onto the page", () => { const controller = new BrowserSiteDisplayController() const ui = uiStore() @@ -141,41 +109,6 @@ describe('BrowserSiteDisplayController zoom', () => { }) describe('BrowserSiteDisplayController color scheme', () => { - it('uses chat media for document guests without changing zoom, and upgrades browser registration', () => { - const controller = new BrowserSiteDisplayController() - const preview = fakeGuest('orca-preview://grant/theme.html') - preview.level = 1 - controller.onGuestDocumentStart(preview, { - url: preview.url, - profileId: null, - colorScheme: 'dark' - }) - controller.onMainFrameNavigationCommitted(preview.id) - expect(preview.mediaSent).toEqual(['dark', 'dark']) - expect(preview.level).toBe(1) - expect(preview.listenerCount('dom-ready')).toBe(0) - - const local = fakeGuest('file:///chat-scratch/theme.html') - controller.onGuestDocumentStart(local, { - url: local.url, - profileId: 'work', - colorScheme: 'dark' - }) - controller.onGuestRegistered(local, 'work') - controller.setColorScheme(local.id, 'light') - controller.setGuestColorSchemeFallback(local, 'light') - controller.setGuestColorSchemeFallback(local, 'dark') - expect(local.mediaSent.at(-1)).toBe('light') - expect(controller.getPageDisplay(local.id)?.colorScheme).toBe('light') - controller.setColorScheme(local.id, null) - expect(local.mediaSent.at(-1)).toBe('dark') - controller.setGuestColorSchemeFallback(local, undefined) - commit(controller, local, 'https://ordinary.example/') - expect(local.mediaSent.slice(-2)).toEqual(['dark', '']) - controller.onGuestRetired(preview.id) - expect(preview.debugger.isAttached()).toBe(false) - }) - it.each([ { order: 'read-first', profileId: 'work', colorScheme: 'light', saved: 'dark' }, { order: 'registration-first', profileId: 'work', colorScheme: 'light', saved: 'dark' } diff --git a/src/main/browser/site-settings/permissions/browser-site-permission-prompt.test.ts b/src/main/browser/site-settings/permissions/browser-site-permission-prompt.test.ts index 80141f91612..59b43a07dc8 100644 --- a/src/main/browser/site-settings/permissions/browser-site-permission-prompt.test.ts +++ b/src/main/browser/site-settings/permissions/browser-site-permission-prompt.test.ts @@ -20,19 +20,12 @@ import { BROWSER_PAGE_PROMPT_TIMEOUT_MS, respondToBrowserPagePrompt } from '../../guest-lifecycle/prompts/browser-page-prompts' -import { - decideBrowserSitePermissions, - isBrowserSitePermissionAllowed -} from './browser-site-permission-prompt' +import { decideBrowserSitePermissions } from './browser-site-permission-prompt' import { savedBrowserSitePermissions, - sessionBrowserSitePermissions, type BrowserSitePermissionMemory } from './browser-site-permission-memory' -import { - configureBrowserSitePermissionStore, - listBrowserSitePermissions -} from './browser-site-permission-store' +import { configureBrowserSitePermissionStore } from './browser-site-permission-store' type MockGuest = Electron.WebContents & EventEmitter @@ -83,20 +76,6 @@ function ask( return decideBrowserSitePermissions({ requester: guest, frameOrigin, memory, permissions }) } -function allowedOnCheck( - permissions: BrowserSitePermission[], - { - memory = savedBrowserSitePermissions('default'), - frameOrigin = 'https://meet.example.com' - }: { memory?: BrowserSitePermissionMemory; frameOrigin?: string } = {} -): boolean { - return isBrowserSitePermissionAllowed({ - source: { pageUrl: 'https://meet.example.com/room', frameOrigin }, - memory, - permissions - }) -} - async function answerLatest(value: unknown): Promise { const request = sentRequests(renderer).at(-1) if (!request) { @@ -140,57 +119,4 @@ describe('browser site permission prompts', () => { await expect(ask(['camera', 'microphone'])).resolves.toBe(false) expect(sentRequests(renderer)).toHaveLength(2) }) - - it("keeps a paired server's answers for its session only, where checks still see them", async () => { - const pairedSession = sessionBrowserSitePermissions('persist:paired-a') - const call = ask(['notifications'], { memory: pairedSession }) - await answerLatest('allow') - await expect(call).resolves.toBe(true) - - expect(allowedOnCheck(['notifications'], { memory: pairedSession })).toBe(true) - await expect(ask(['notifications'], { memory: pairedSession })).resolves.toBe(true) - expect(sentRequests(renderer)).toHaveLength(1) - expect(listBrowserSitePermissions('default')).toEqual([]) - void ask(['notifications'], { memory: sessionBrowserSitePermissions('persist:paired-b') }) - expect(sentRequests(renderer)).toHaveLength(2) - }) - - it("gives another site's frame only its own notification answer, and never asks for it", async () => { - const tab = ask(['notifications']) - await answerLatest('allow') - await tab - const widgetPage = ask(['notifications'], { guest: mockGuest('https://widget.example.net/') }) - await answerLatest('allow') - await widgetPage - - expect(allowedOnCheck(['notifications'], { frameOrigin: 'https://widget.example.net' })).toBe( - true - ) - await expect( - ask(['notifications'], { frameOrigin: 'https://widget.example.net' }) - ).resolves.toBe(true) - expect(allowedOnCheck(['notifications'], { frameOrigin: 'https://ads.example.net' })).toBe( - false - ) - await expect(ask(['notifications'], { frameOrigin: 'https://ads.example.net' })).resolves.toBe( - false - ) - expect(sentRequests(renderer)).toHaveLength(2) - }) - - it('remembers answers across a restart', async () => { - const directory = mkdtempSync(join(tmpdir(), 'orca-site-permissions-')) - configureBrowserSitePermissionStore(directory) - const call = ask(['midi']) - await answerLatest('allow') - await call - - // Switch directories to evict the cache and verify the next read comes from disk. - configureBrowserSitePermissionStore(mkdtempSync(join(tmpdir(), 'orca-site-permissions-'))) - expect(listBrowserSitePermissions('default')).toEqual([]) - configureBrowserSitePermissionStore(directory) - expect(listBrowserSitePermissions('default')).toEqual([ - { origin: 'https://meet.example.com', decisions: { midi: 'allow' } } - ]) - }) }) diff --git a/src/main/crash-reporting/memory/renderer-heap-allocation-profile.ts b/src/main/crash-reporting/memory/renderer-heap-allocation-profile.ts index a09aa66bdd3..2fd412f59fc 100644 --- a/src/main/crash-reporting/memory/renderer-heap-allocation-profile.ts +++ b/src/main/crash-reporting/memory/renderer-heap-allocation-profile.ts @@ -14,8 +14,10 @@ import { const SAMPLING_INTERVAL_BYTES = 512 * 1024 const START_HEAP_RATIO = 0.6 const STOP_HEAP_RATIO = 0.5 -// Main refreshes independently because hidden renderers throttle memory samples. -const PROFILE_REFRESH_MS = 30_000 +// Each profile read forces a full renderer GC, so after the first read require this much growth. +const PROFILE_READ_GROWTH_RATIO = 0.05 +// Main checks the heap itself because hidden renderers throttle memory samples. +const HEAP_CHECK_MS = 30_000 export type ProfiledDebugger = { isAttached(): boolean @@ -61,8 +63,8 @@ export function profiledRendererFor(contents: WebContents): ProfiledRenderer { export type RendererHeapReading = { heapRatio: number + heapLimitBytes: number rendererSurface: string - isHighwaterMark: boolean } type SamplingSession = { @@ -70,9 +72,13 @@ type SamplingSession = { startedAtPct: number startedAtMs: number trustedScriptPrefix: string | null + heapLimitBytes: number + admittedHeapRatio: number + profileReadAdmitted: boolean // Wait for startSampling before requesting a profile. ready: boolean reading: boolean + checking: boolean stop: () => void } @@ -94,23 +100,31 @@ export function noteRendererHeapReading( } return } - if (reading.heapRatio < STOP_HEAP_RATIO) { + noteSessionHeapRatio(renderer, session, reading.heapRatio, false, record) +} + +function noteSessionHeapRatio( + renderer: ProfiledRenderer, + session: SamplingSession, + heapRatio: number, + fromHeapCheck: boolean, + record: (data: CrashReportBreadcrumbData) => void +): void { + if (heapRatio < STOP_HEAP_RATIO) { session.stop() return } - if (reading.isHighwaterMark) { - refreshProfile(renderer, session, record) - } -} - -function refreshProfile( - renderer: ProfiledRenderer, - session: SamplingSession, - record: (data: CrashReportBreadcrumbData) => void -): void { if (!session.ready || session.reading) { return } + // The first heap check reads even without growth so a steady high heap still has evidence. + const firstReadDue = fromHeapCheck && !session.profileReadAdmitted + if (!firstReadDue && heapRatio < session.admittedHeapRatio + PROFILE_READ_GROWTH_RATIO) { + return + } + // Admission, not success, consumes the allowance: a failed read may already have paid for its GC. + session.profileReadAdmitted = true + session.admittedHeapRatio = Math.max(session.admittedHeapRatio, heapRatio) session.reading = true void renderer.debugger .sendCommand('HeapProfiler.getSamplingProfile') @@ -137,7 +151,7 @@ function startSampling( record: (data: CrashReportBreadcrumbData) => void ): void { const debug = renderer.debugger - // Do not take over a debugger attached by DevTools or another diagnostic client. + // Only sees Orca's own debugger client (the lag capture); other CDP sessions are not visible here. if (debug.isAttached()) { return } @@ -159,7 +173,7 @@ function startSampling( debug.removeListener('detach', onDetach) unwatch() if (!renderer.isDestroyed() && debug.isAttached()) { - void debug.sendCommand('HeapProfiler.stopSampling').catch(() => undefined) + // Detaching ends the inspector session, which stops sampling without stopSampling's forced GC. try { debug.detach() } catch { @@ -175,8 +189,12 @@ function startSampling( startedAtPct: Math.round(reading.heapRatio * 100), startedAtMs: Date.now(), trustedScriptPrefix: trustedScriptPrefixFor(renderer.getURL()), + heapLimitBytes: reading.heapLimitBytes, + admittedHeapRatio: reading.heapRatio, + profileReadAdmitted: false, ready: false, reading: false, + checking: false, stop } sessions.set(renderer.id, session) @@ -192,15 +210,40 @@ function startSampling( return } session.ready = true - refreshTimer = setInterval( - () => refreshProfile(renderer, session, record), - PROFILE_REFRESH_MS - ) + refreshTimer = setInterval(() => checkHeap(renderer, session, record), HEAP_CHECK_MS) refreshTimer.unref?.() }) .catch(stop) } +function checkHeap( + renderer: ProfiledRenderer, + session: SamplingSession, + record: (data: CrashReportBreadcrumbData) => void +): void { + if (session.checking) { + return + } + session.checking = true + void renderer.debugger + .sendCommand('Runtime.getHeapUsage') + .then((result) => { + const used = + result && typeof result === 'object' && 'usedSize' in result ? result.usedSize : undefined + if ( + typeof used === 'number' && + Number.isFinite(used) && + sessions.get(renderer.id) === session + ) { + noteSessionHeapRatio(renderer, session, used / session.heapLimitBytes, true, record) + } + }) + .catch(() => undefined) + .finally(() => { + session.checking = false + }) +} + export function profileRendererMemoryBreadcrumb( renderer: ProfiledRenderer, args: { name?: unknown; data?: unknown } | undefined, @@ -217,21 +260,29 @@ export function profileRendererMemoryBreadcrumb( function readHeapReading( args: { name?: unknown; data?: unknown } | undefined ): RendererHeapReading | null { - const isHighwaterMark = args?.name === 'renderer_memory_highwater' const data = args?.data - if ((!isHighwaterMark && args?.name !== 'renderer_memory') || !data || typeof data !== 'object') { + if ( + (args?.name !== 'renderer_memory_highwater' && args?.name !== 'renderer_memory') || + !data || + typeof data !== 'object' + ) { return null } const used = 'usedHeapMB' in data ? data.usedHeapMB : undefined const limit = 'heapLimitMB' in data ? data.heapLimitMB : undefined - if (typeof used !== 'number' || typeof limit !== 'number' || !(limit > 0)) { + if ( + typeof used !== 'number' || + !Number.isFinite(used) || + typeof limit !== 'number' || + !(limit > 0) + ) { return null } const surface = 'rendererSurface' in data ? data.rendererSurface : undefined return { heapRatio: used / limit, - rendererSurface: typeof surface === 'string' ? surface : 'unknown', - isHighwaterMark + heapLimitBytes: limit * 1024 * 1024, + rendererSurface: typeof surface === 'string' ? surface : 'unknown' } } diff --git a/src/main/crash-reporting/reports/crash-feedback-diagnostic-bundle.ts b/src/main/crash-reporting/reports/crash-feedback-diagnostic-bundle.ts index 2072224c13f..5b5a05b2172 100644 --- a/src/main/crash-reporting/reports/crash-feedback-diagnostic-bundle.ts +++ b/src/main/crash-reporting/reports/crash-feedback-diagnostic-bundle.ts @@ -27,7 +27,9 @@ function skippedCrashDiagnosticBundle(): CrashDiagnosticBundleAttachment { } } -async function collectCrashDiagnosticBundleAttachment(): Promise { +async function collectCrashDiagnosticBundleAttachment( + nativeHangCaptureId?: string +): Promise { const status = getDiagnosticsStatus() if (!status.bundleEnabled) { return { @@ -47,7 +49,8 @@ async function collectCrashDiagnosticBundleAttachment(): Promise { return includeDiagnosticLogs - ? collectCrashDiagnosticBundleAttachment() + ? collectCrashDiagnosticBundleAttachment(nativeHangCaptureId) : skippedCrashDiagnosticBundle() } diff --git a/src/main/crash-reporting/reports/crash-report-store.ts b/src/main/crash-reporting/reports/crash-report-store.ts index a5e22e0adf0..ad6d26b14b7 100644 --- a/src/main/crash-reporting/reports/crash-report-store.ts +++ b/src/main/crash-reporting/reports/crash-report-store.ts @@ -92,16 +92,7 @@ export class CrashReportStore { async record(input: CrashReportCreateInput): Promise { return this.withWrite(async (reports) => { - const report: CrashReportRecord = { - ...input, - id: crypto.randomUUID(), - createdAt: new Date().toISOString(), - status: 'pending', - details: sanitizeCrashReportDetails(input.details), - breadcrumbs: sanitizeCrashReportBreadcrumbs(input.breadcrumbs)?.map( - ({ origin: _origin, ...breadcrumb }) => breadcrumb - ) - } + const report = this.createRecord(input) return { reports: [report, ...reports].slice(0, MAX_REPORTS), result: report @@ -109,6 +100,41 @@ export class CrashReportStore { }) } + async importHangReport(input: CrashReportCreateInput): Promise { + return this.withWrite(async (reports) => { + const existing = reports.find( + (report) => + report.reason === 'main-thread-hang' && + report.details.captureId === input.details.captureId + ) + if (existing) { + return { reports, result: existing } + } + if ( + reports.some( + (report) => report.status === 'pending' && report.reason !== 'main-thread-hang' + ) + ) { + return { reports, result: null } + } + const report: CrashReportRecord = { ...this.createRecord(input), status: 'dismissed' } + return { reports: [report, ...reports].slice(0, MAX_REPORTS), result: report } + }) + } + + private createRecord(input: CrashReportCreateInput): CrashReportRecord { + return { + ...input, + id: crypto.randomUUID(), + createdAt: new Date().toISOString(), + status: 'pending', + details: sanitizeCrashReportDetails(input.details), + breadcrumbs: sanitizeCrashReportBreadcrumbs(input.breadcrumbs)?.map( + ({ origin: _origin, ...breadcrumb }) => breadcrumb + ) + } + } + /** Crashpad may finish writing after process-gone; merge its signature into the existing report. */ async attachDetails( id: string, @@ -203,7 +229,9 @@ export class CrashReportStore { // Reading directly avoids waiting on the write chain this callback already owns. const reports = await this.readReportsFromDisk() const { reports: nextReports, result } = await mutate(reports) - await this.writeReports(nextReports) + if (nextReports !== reports) { + await this.writeReports(nextReports) + } return result }) this.writeChain = run.then( diff --git a/src/main/daemon/daemon-entry.ts b/src/main/daemon/daemon-entry.ts index 7fcbbd801d3..09524f343cc 100644 --- a/src/main/daemon/daemon-entry.ts +++ b/src/main/daemon/daemon-entry.ts @@ -29,10 +29,12 @@ import { startDaemonScopeDeathWatch } from './process-scopes/daemon-scope-death- import { isWindowsProcessTableAvailable } from '../windows/windows-process-table' import { leaseAppImageGenerationForCurrentProcess } from '../cli/appimage/appimage-generation-lease' import { createDaemonShutdownDeadline } from './launch/daemon-shutdown-deadline' +import { setDaemonProcessName } from './daemon-process-name' async function main(): Promise { // The parent closes startup stderr after readiness; later EPIPE errors must not kill the daemon. process.stderr.on('error', () => {}) + setDaemonProcessName() const { socketPath, diff --git a/src/main/daemon/daemon-process-name.ts b/src/main/daemon/daemon-process-name.ts new file mode 100644 index 00000000000..188422f9650 --- /dev/null +++ b/src/main/daemon/daemon-process-name.ts @@ -0,0 +1,13 @@ +import { writeFileSync } from 'node:fs' + +export function setDaemonProcessName(): void { + if (process.platform !== 'linux') { + return + } + try { + // process.title overwrites argv, which daemon adoption and recovery use as identity evidence. + writeFileSync('/proc/self/comm', 'orca-agents') + } catch { + // Naming must not prevent terminals starting when procfs is unavailable or read-only. + } +} diff --git a/src/main/daemon/executable-host/macos/macos-daemon-bundle-retirement.ts b/src/main/daemon/executable-host/macos/macos-daemon-bundle-retirement.ts index 08ae78c820a..7982fc78158 100644 --- a/src/main/daemon/executable-host/macos/macos-daemon-bundle-retirement.ts +++ b/src/main/daemon/executable-host/macos/macos-daemon-bundle-retirement.ts @@ -2,7 +2,7 @@ import { readdir } from 'node:fs/promises' import { join } from 'node:path' import { runProcess } from '@orca/process-host' import { rm } from '../../../filesystem/asar-transparent-fs' -import { macDaemonCopyBundlePath } from './macos-daemon-bundle' +import { MAC_TERMINAL_HOST_BUNDLE } from './macos-daemon-bundle' const LSREGISTER = '/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister' @@ -27,13 +27,20 @@ export async function retireUnusedMacDaemonCopy(directory: string): Promise {}) + // Old copies retain their original bundle name when the helper is renamed. + const parent = join(directory, 'app.noindex') + const bundles = await readdir(parent).catch(() => []) + for (const bundle of bundles) { + if (bundle !== MAC_TERMINAL_HOST_BUNDLE && bundle !== 'Orca Terminal Host.app') { + continue + } + await runProcess({ + program: LSREGISTER, + args: ['-u', join(parent, bundle)], + timeoutMs: 5_000, + maxOutputBytes: 8192 + }).catch(() => {}) + } await rm(directory, { recursive: true, force: true }) } catch { // Retain code when its use cannot be verified. diff --git a/src/main/daemon/executable-host/macos/macos-daemon-bundle.ts b/src/main/daemon/executable-host/macos/macos-daemon-bundle.ts index ecdcfe54fa1..65e8eb7a190 100644 --- a/src/main/daemon/executable-host/macos/macos-daemon-bundle.ts +++ b/src/main/daemon/executable-host/macos/macos-daemon-bundle.ts @@ -7,9 +7,9 @@ import { rm } from '../../../filesystem/asar-transparent-fs' import { ensurePrivateDir } from '../../endpoint/publication/daemon-private-file-modes' import { inspectMacProcessCodeIdentity } from './daemon-mac-code-identity' -/** Plain Node helper packaged by config/scripts/macos-terminal-host-bundle.cjs. */ -export const MAC_TERMINAL_HOST_BUNDLE = 'Orca Terminal Host.app' -export const MAC_TERMINAL_HOST_EXECUTABLE = 'orca-terminal-host' +/** Plain Node helper packaged by config/scripts/macos/terminal-host-bundle/macos-terminal-host-bundle.cjs. */ +export const MAC_TERMINAL_HOST_BUNDLE = 'Orca Agents.app' +export const MAC_TERMINAL_HOST_EXECUTABLE = 'Orca Agents' export const MAC_DAEMON_COPY_PREFIX = 'terminal-host-' export type MacDaemonBundle = { diff --git a/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle-retirement.test.ts b/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle-retirement.test.ts index 091f660c456..61988c9001e 100644 --- a/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle-retirement.test.ts +++ b/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle-retirement.test.ts @@ -29,9 +29,9 @@ afterEach(async () => { await rm(root, { recursive: true, force: true }) }) -async function copy(name: string): Promise { +async function copy(name: string, bundle = 'Orca Agents.app'): Promise { const directory = join(root, name) - await mkdir(join(directory, 'app.noindex', 'Orca Terminal Host.app'), { recursive: true }) + await mkdir(join(directory, 'app.noindex', bundle), { recursive: true }) return directory } @@ -68,6 +68,27 @@ it.each([ expect(await exists(directory)).toBe(true) }) +it.each(['Orca Agents.app', 'Orca Terminal Host.app'])( + 'unregisters an unused %s before deleting its copy', + async (bundle) => { + const directory = await copy('terminal-host-old', bundle) + run.mockImplementation(async (spec) => { + if (spec.program === LSREGISTER) { + expect(await exists(directory)).toBe(true) + } + return unused + }) + await retireUnusedMacDaemonCopy(directory) + expect(run).toHaveBeenCalledWith( + expect.objectContaining({ + program: LSREGISTER, + args: ['-u', join(directory, 'app.noindex', bundle)] + }) + ) + expect(await exists(directory)).toBe(false) + } +) + it("retires every unused copy and staging dir except the current build's and this process's staging", async () => { const current = await copy('terminal-host-current') const oldUnused = await copy('terminal-host-old') diff --git a/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle.test.ts b/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle.test.ts index 28c8b3d75b4..450f0bbfac1 100644 --- a/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle.test.ts +++ b/src/main/daemon/executable-host/macos/testing/macos-daemon-bundle.test.ts @@ -35,13 +35,13 @@ let verifyCode: number let onCopy: (() => Promise) | null const signal = (): AbortSignal => new AbortController().signal -const helperExecutable = (): string => join(helper, 'Contents', 'MacOS', 'orca-terminal-host') +const helperExecutable = (): string => join(helper, 'Contents', 'MacOS', 'Orca Agents') beforeEach(async () => { root = await realpath(await mkdtemp(join(tmpdir(), 'orca-mac-runtime-'))) // Model an update that moved the running bundle and replaced its original path. source = join(root, 'com.stablyai.orca.ShipIt.old', 'Orca.app') - helper = join(source, 'Contents', 'Helpers', 'Orca Terminal Host.app') + helper = join(source, 'Contents', 'Helpers', 'Orca Agents.app') copies = join(root, 'profile', 'daemon-host', 'macos') await mkdir(join(source, 'Contents', 'MacOS'), { recursive: true }) await mkdir(join(helper, 'Contents', 'MacOS'), { recursive: true }) @@ -101,14 +101,7 @@ it('publishes one verified copy per helper build, from the running app rather th await rm(source, { recursive: true }) expect(copy.directory).toBe(join(copies, `terminal-host-${cdhash}`)) expect(copy.execPath).toBe( - join( - copy.directory, - 'app.noindex', - 'Orca Terminal Host.app', - 'Contents', - 'MacOS', - 'orca-terminal-host' - ) + join(copy.directory, 'app.noindex', 'Orca Agents.app', 'Contents', 'MacOS', 'Orca Agents') ) expect(await readFile(copy.execPath, 'utf8')).toBe('signed-node') expect(await readFile(copy.entryPath, 'utf8')).toBe('daemon-code') @@ -136,9 +129,9 @@ it("rejects a copy that does not satisfy the running app's requirement and publi it('keeps the winning copy when a concurrent publisher renames first', async () => { onCopy = async () => { onCopy = null - const winner = join(copies, `terminal-host-${cdhash}`, 'app.noindex', 'Orca Terminal Host.app') + const winner = join(copies, `terminal-host-${cdhash}`, 'app.noindex', 'Orca Agents.app') await cp(helper, winner, { recursive: true }) - await writeFile(join(winner, 'Contents', 'MacOS', 'orca-terminal-host'), 'winner') + await writeFile(join(winner, 'Contents', 'MacOS', 'Orca Agents'), 'winner') } const copy = await materializeMacDaemonBundle(copies, signal()) expect(await readFile(copy.execPath, 'utf8')).toBe('winner') @@ -155,7 +148,7 @@ it('stops at the shared deadline and removes the staging copy', async () => { return controller.signal.aborted ? { ...ok, code: null } : (signed?.(spec) ?? ok) }) await expect(materializeMacDaemonBundle(copies, controller.signal)).rejects.toThrow( - 'Could not copy Orca Terminal Host.app' + 'Could not copy Orca Agents.app' ) expect(await readdir(copies)).toEqual([]) }) diff --git a/src/main/daemon/executable-host/macos/testing/macos-daemon-launchd.test.ts b/src/main/daemon/executable-host/macos/testing/macos-daemon-launchd.test.ts index ae57f9a34a4..4422d64ff2e 100644 --- a/src/main/daemon/executable-host/macos/testing/macos-daemon-launchd.test.ts +++ b/src/main/daemon/executable-host/macos/testing/macos-daemon-launchd.test.ts @@ -92,7 +92,7 @@ const nativePlatform = process.platform const originalGetuid = Object.getOwnPropertyDescriptor(process, 'getuid') const originalGetSystemVersion = Object.getOwnPropertyDescriptor(process, 'getSystemVersion') const roomyDeadline = (): number => Date.now() + 60_000 -const helperExec = (): string => join(copyDir, 'MacOS', 'orca-terminal-host') +const helperExec = (): string => join(copyDir, 'MacOS', 'Orca Agents') const helperEntry = (): string => join(copyDir, 'daemon-entry.js') const service = (): string => `gui/501/${macDaemonJobLabel(state.root)}` const launchctlCalls = (verb: string): ProcessSpec[] => diff --git a/src/main/daemon/testing/daemon-process-name.integration.test.ts b/src/main/daemon/testing/daemon-process-name.integration.test.ts new file mode 100644 index 00000000000..67273230b47 --- /dev/null +++ b/src/main/daemon/testing/daemon-process-name.integration.test.ts @@ -0,0 +1,70 @@ +import { once } from 'node:events' +import { createInterface } from 'node:readline' +import { spawnProcess } from '@orca/process-host' +import { describe, expect, it } from 'vitest' +import { inspectDaemonProcessIdentity } from '../endpoint/identity/daemon-pid-identity' + +const namingModule = new URL('../daemon-process-name.ts', import.meta.url) + +describe.skipIf(process.platform !== 'linux')('Linux daemon process naming', () => { + it.each([false, true])( + 'preserves live daemon identity when naming writes are denied: %s', + async (denyWrites) => { + const socketPath = '/tmp/orca naming contract/daemon.sock' + const tokenPath = `/tmp/orca naming contract/${'long endpoint component/'.repeat(12)}daemon.token` + const script = ` + import { readFileSync } from 'node:fs' + import { setDaemonProcessName } from ${JSON.stringify(namingModule.href)} + const before = readFileSync('/proc/self/cmdline').toString('base64') + const beforeName = readFileSync('/proc/self/comm').toString('base64') + setDaemonProcessName() + process.stdin.resume() + console.log([ + before, + readFileSync('/proc/self/cmdline').toString('base64'), + beforeName, + readFileSync('/proc/self/comm').toString('base64') + ].join(' ')) + ` + const child = spawnProcess({ + program: process.env.ORCA_TEST_NODE_EXECUTABLE ?? process.execPath, + args: [ + ...(denyWrites ? ['--permission', '--allow-fs-read=*'] : []), + '--input-type=module', + '-e', + script, + '--', + 'daemon-entry.js', + '--socket', + socketPath, + '--token', + tokenPath + ] + }) + const exited = once(child, 'exit') + const lines = createInterface({ input: child.stdout }) + try { + const [line] = await Promise.race([ + once(lines, 'line'), + exited.then(() => { + throw new Error('Naming fixture exited before publishing its process identity') + }) + ]) + const [before, after, beforeName, afterName] = String(line).split(' ') + expect(Buffer.from(before, 'base64').toString()).toContain(tokenPath) + expect(after).toBe(before) + expect(Buffer.from(afterName, 'base64').toString()).toBe( + denyWrites ? Buffer.from(beforeName, 'base64').toString() : 'orca-agents\n' + ) + expect(child.pid).toBeDefined() + expect( + await inspectDaemonProcessIdentity(child.pid ?? 0, socketPath, tokenPath, null) + ).toBe('match') + } finally { + lines.close() + child.stdin.end() + await exited + } + } + ) +}) diff --git a/src/main/git/command-runner/git-exec-file.ts b/src/main/git/command-runner/git-exec-file.ts index 7500f661e11..d4687d919fd 100644 --- a/src/main/git/command-runner/git-exec-file.ts +++ b/src/main/git/command-runner/git-exec-file.ts @@ -41,7 +41,7 @@ async function gitExecFileAsyncUnlocked( ): Promise<{ stdout: string; stderr: string }> { // Trace caller intent rather than the resolved binary so WSL and native commands group together. return withGitSpan( - { args, ...(options.cwd !== undefined ? { cwd: options.cwd } : {}) }, + { args, cwd: options.cwd, admissionTier: options.admissionTier }, async (span) => { if (options.onStderr && options.terminationBarrier) { throw new Error('onStderr is not supported with terminationBarrier.') @@ -137,6 +137,9 @@ async function gitExecFileAsyncUnlocked( ) { await terminationState.current const wasMissing = invalidateMissingDirectWslGit(error, resolved) + if (options.canStart?.() === false) { + throw createAbortError() + } const fallback = resolveGitCommand(args, effectiveOptions, true, true) result = await capture(fallback) // Why: matching failures can be normal Git control flow; only a successful login retry proves the direct environment was insufficient. @@ -225,7 +228,8 @@ async function gitExecFileAsyncBufferInSpan( args: string[], options: GitBufferExecOptions ): Promise<{ stdout: Buffer }> { - return withGitSpan({ args, cwd: options.cwd }, async (span) => { + const meta = { args, cwd: options.cwd, admissionTier: options.admissionTier } + return withGitSpan(meta, async (span) => { const checkoutRoutingReady = pendingWslDriveCheckoutGitRouting(args, options) if (checkoutRoutingReady) { await checkoutRoutingReady diff --git a/src/main/git/command-runner/git-spawn.ts b/src/main/git/command-runner/git-spawn.ts index af7ec64214f..a8eae4ab821 100644 --- a/src/main/git/command-runner/git-spawn.ts +++ b/src/main/git/command-runner/git-spawn.ts @@ -69,7 +69,7 @@ export async function withGitAdmission( if (admission) { await admission } - const span = startGitSpan({ args, cwd: options.cwd }) + const span = startGitSpan({ args, cwd: options.cwd, admissionTier: options.admissionTier }) let grant: Awaited> | null = null try { grant = await acquireGitAdmission({ diff --git a/src/main/git/command-runner/git-stream-stdout.ts b/src/main/git/command-runner/git-stream-stdout.ts index 61873b9602e..46234e2a943 100644 --- a/src/main/git/command-runner/git-stream-stdout.ts +++ b/src/main/git/command-runner/git-stream-stdout.ts @@ -69,7 +69,8 @@ function streamInSpan( maxBuffer: number, timeoutMs: number | undefined ): Promise { - return withGitSpan({ args, cwd: options.cwd }, async (span) => { + const meta = { args, cwd: options.cwd, admissionTier: options.admissionTier } + return withGitSpan(meta, async (span) => { const checkoutRoutingReady = pendingWslDriveCheckoutGitRouting(args, options) if (checkoutRoutingReady) { await checkoutRoutingReady diff --git a/src/main/git/refs/resolution/repo-default-base-ref.ts b/src/main/git/refs/resolution/repo-default-base-ref.ts index f811ffd7bb4..aec7701f864 100644 --- a/src/main/git/refs/resolution/repo-default-base-ref.ts +++ b/src/main/git/refs/resolution/repo-default-base-ref.ts @@ -5,12 +5,15 @@ import { resolveDefaultBaseRefViaExec } from '../../../../shared/git/refs/git-de export type LocalGitExecOptions = { wslDistro?: string admissionTier?: GitAdmissionTier + /** Checked at admission; a bounded optional read refuses git that would start past its deadline. */ + canStart?: () => boolean } export type LocalDefaultBaseRefGitOptions = { cwd: string wslDistro?: string admissionTier?: GitAdmissionTier + canStart?: () => boolean } export const DEFAULT_BASE_REF_PROBE_TIMEOUT_MS = 15_000 @@ -22,7 +25,8 @@ export function gitExecOptions( return { cwd, ...(options.wslDistro ? { wslDistro: options.wslDistro } : {}), - ...(options.admissionTier ? { admissionTier: options.admissionTier } : {}) + ...(options.admissionTier ? { admissionTier: options.admissionTier } : {}), + ...(options.canStart ? { canStart: options.canStart } : {}) } } diff --git a/src/main/git/refs/snapshot/branch-ref-snapshot.ts b/src/main/git/refs/snapshot/branch-ref-snapshot.ts index 71317810d8e..c58194294e9 100644 --- a/src/main/git/refs/snapshot/branch-ref-snapshot.ts +++ b/src/main/git/refs/snapshot/branch-ref-snapshot.ts @@ -9,6 +9,7 @@ import { import { BranchRefSnapshotStore, BranchSnapshotIdentityChanged } from './branch-ref-snapshot-store' import { subscribeGitRefChanges } from '../git-ref-change-signal' import { readTranslatedWorktreeGraph } from '../../worktrees/catalog/worktree-list-reader' +import { withRepositoryGitCause } from '../../repository-git-cause' const snapshots = new BranchRefSnapshotStore({ subscribe: subscribeGitRefChanges }) @@ -16,6 +17,19 @@ async function withIdentity( path: string, git: LocalGitExecOptions, read: (identity: BranchSnapshotIdentity) => Promise +): Promise { + return withRepositoryGitCause( + path, + git, + { family: 'refs', reason: 'branch-snapshot', cache: 'uncached' }, + () => readWithIdentity(path, git, read) + ) +} + +async function readWithIdentity( + path: string, + git: LocalGitExecOptions, + read: (identity: BranchSnapshotIdentity) => Promise ): Promise { for (let attempt = 0; attempt < 2; attempt++) { const identity = await resolveBranchSnapshotIdentity(path, git) diff --git a/src/main/git/remotes/origin-stand-in-remote.ts b/src/main/git/remotes/origin-stand-in-remote.ts new file mode 100644 index 00000000000..605c58ac6a5 --- /dev/null +++ b/src/main/git/remotes/origin-stand-in-remote.ts @@ -0,0 +1,41 @@ +import { deriveOriginStandInRemoteName } from '../../../shared/git/remotes/git-remote-identity' +import { gitExecFileAsync } from '../command-runner/git-exec-file' +import { listCachedRemoteNames, type RemoteNameListingGitOptions } from './remote-name-listing' +import { REMOTE_URL_PROBE_TIMEOUT_MS } from './remote-url-probe' + +async function readOriginStandInRemoteName( + repoPath: string, + connectionId: string | null | undefined, + localGitOptions: RemoteNameListingGitOptions +): Promise { + const names = await listCachedRemoteNames(repoPath, connectionId, localGitOptions) + if (!names?.some((name) => name !== 'origin' && name !== 'upstream')) { + return null + } + try { + const { stdout } = await gitExecFileAsync(['remote', '-v'], { + cwd: repoPath, + timeout: REMOTE_URL_PROBE_TIMEOUT_MS, + ...(localGitOptions.wslDistro ? { wslDistro: localGitOptions.wslDistro } : {}), + ...(localGitOptions.admissionTier ? { admissionTier: localGitOptions.admissionTier } : {}) + }) + return deriveOriginStandInRemoteName(stdout) + } catch { + return null + } +} + +/** Origin's GitHub role falls to the remote project identity reads when origin is missing or a local path. */ +export async function resolveOriginWithStandIn( + repoPath: string, + connectionId: string | null | undefined, + localGitOptions: RemoteNameListingGitOptions, + resolveRemote: (remoteName: string) => Promise +): Promise { + const origin = await resolveRemote('origin') + if (origin !== null) { + return origin + } + const standIn = await readOriginStandInRemoteName(repoPath, connectionId, localGitOptions) + return standIn ? resolveRemote(standIn) : null +} diff --git a/src/main/git/worktrees/creation/worktree-base-ref-probe.ts b/src/main/git/worktrees/creation/worktree-base-ref-probe.ts index 8d0f1c6b10a..25b67689b97 100644 --- a/src/main/git/worktrees/creation/worktree-base-ref-probe.ts +++ b/src/main/git/worktrees/creation/worktree-base-ref-probe.ts @@ -8,6 +8,7 @@ import { resolveWorktreeAddBaseRef } from '../../../../shared/worktree/base-refs type GitExecOptions = { wslDistro?: string admissionTier?: GitAdmissionTier + canStart?: () => boolean } /** Return the probe's commit OID so callers need not resolve it again. */ diff --git a/src/main/github/repositories/github-api-repository-origin-stand-in-real-git.test.ts b/src/main/github/repositories/github-api-repository-origin-stand-in-real-git.test.ts new file mode 100644 index 00000000000..c5f43c181c7 --- /dev/null +++ b/src/main/github/repositories/github-api-repository-origin-stand-in-real-git.test.ts @@ -0,0 +1,47 @@ +import { mkdtemp, rm } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { runProcess } from '@orca/process-host' +import { afterEach, expect, it } from 'vitest' +import { resolveIssueGitHubApiRepositorySource } from './github-api-repository' +import { resolvePrWorkItemSource } from '../client/list/work-item-list-request' +import { installRealWorkerThreadChildProcesses } from '../../worker-thread-child-process/worker-thread-child-process-real.test-fixtures' + +let directory: string | null = null + +afterEach(async () => { + if (directory) { + await rm(directory, { recursive: true, force: true }) + directory = null + } +}) + +async function createRepo(remotes: [name: string, url: (repo: string) => string][]) { + const repo = await mkdtemp(join(tmpdir(), 'orca-origin-stand-in-')) + directory = repo + const git = async (args: string[]) => { + const result = await runProcess({ program: 'git', args, cwd: repo }) + if (result.code !== 0) { + throw new Error(result.stderr) + } + } + await git(['init', '-q']) + await git(['init', '--bare', '-q', join(repo, 'mirror.git')]) + for (const [name, url] of remotes) { + await git(['remote', 'add', name, url(repo)]) + } + return repo +} + +it('reads GitHub from the remote standing in for an origin that is a local path (#42102)', async () => { + const repo = await createRepo([ + ['origin', (root) => join(root, 'mirror.git')], + ['github', () => 'https://github.com/acme/widgets.git'] + ]) + const expected = { owner: 'acme', repo: 'widgets', host: 'github.com' } + + expect((await resolveIssueGitHubApiRepositorySource(repo, undefined)).source).toEqual(expected) + expect((await resolvePrWorkItemSource(repo, undefined)).source).toEqual(expected) +}) + +installRealWorkerThreadChildProcesses() diff --git a/src/main/github/repositories/github-api-repository-remote-probe.ts b/src/main/github/repositories/github-api-repository-remote-probe.ts index 0ebec3d2603..da1bae27754 100644 --- a/src/main/github/repositories/github-api-repository-remote-probe.ts +++ b/src/main/github/repositories/github-api-repository-remote-probe.ts @@ -6,6 +6,7 @@ import { } from './github-repository-identity' import type { GitHubRepositoryIdentity as GitHubApiRepository } from '../../../shared/github/repositories/repository-identity' import { shouldProbeGitRemote } from '../../git/remotes/remote-name-listing' +import { resolveOriginWithStandIn } from '../../git/remotes/origin-stand-in-remote' import { getEnterpriseGitHubRepoSlug, @@ -128,10 +129,14 @@ export async function getGitHubApiRepositoryForRemote( }) } +/** The repo origin names; a project whose origin is missing or a local path reads its stand-in remote. */ export async function getOriginGitHubApiRepository( repoPath: string, connectionId?: string | null, - localGitOptions: LocalGitExecOptions = {} + localGitOptions: LocalGitExecOptions = {}, + probeOptions: GitHubRemoteIdentityProbeOptions = {} ): Promise { - return getGitHubApiRepositoryForRemote(repoPath, 'origin', connectionId, localGitOptions) + return resolveOriginWithStandIn(repoPath, connectionId, localGitOptions, (name) => + getGitHubApiRepositoryForRemote(repoPath, name, connectionId, localGitOptions, probeOptions) + ) } diff --git a/src/main/github/repositories/github-api-repository.test.ts b/src/main/github/repositories/github-api-repository.test.ts index 023ff616841..851e18cedd6 100644 --- a/src/main/github/repositories/github-api-repository.test.ts +++ b/src/main/github/repositories/github-api-repository.test.ts @@ -34,7 +34,8 @@ vi.mock('./github-enterprise-repository', async (importOriginal) => ({ })) vi.mock('../../git/remotes/remote-name-listing', () => ({ - shouldProbeGitRemote: shouldProbeGitRemoteMock + shouldProbeGitRemote: shouldProbeGitRemoteMock, + listCachedRemoteNames: async () => null })) import { _resetOriginGitHubApiRepositoryCache, diff --git a/src/main/github/repositories/github-api-repository.ts b/src/main/github/repositories/github-api-repository.ts index 7e33081061f..b2f34c8b75b 100644 --- a/src/main/github/repositories/github-api-repository.ts +++ b/src/main/github/repositories/github-api-repository.ts @@ -41,9 +41,8 @@ export async function getIssueGitHubApiRepository( localGitOptions: LocalGitExecOptions = {} ): Promise { return withGitHubRepoExecution(repoPath, connectionId, localGitOptions, async () => { - const originPromise = getGitHubApiRepositoryForRemote( + const originPromise = getOriginGitHubApiRepository( repoPath, - 'origin', connectionId, localGitOptions ).then( @@ -81,15 +80,9 @@ export async function resolveGitHubApiRepositoryCandidates( localGitOptions: LocalGitExecOptions = {} ): Promise { return withGitHubRepoExecution(repoPath, connectionId, localGitOptions, async () => { - const originPromise = getGitHubApiRepositoryForRemote( - repoPath, - 'origin', - connectionId, - localGitOptions, - { - requireVerifiedSshProbe: true - } - ).then( + const originPromise = getOriginGitHubApiRepository(repoPath, connectionId, localGitOptions, { + requireVerifiedSshProbe: true + }).then( (value) => ({ status: 'fulfilled' as const, value }), (reason: unknown) => ({ status: 'rejected' as const, reason }) ) @@ -151,22 +144,12 @@ export async function resolveIssueGitHubApiRepositorySource( if (upstream) { return { source: upstream, fellBack: false } } - const origin = await getGitHubApiRepositoryForRemote( - repoPath, - 'origin', - connectionId, - localGitOptions - ) + const origin = await getOriginGitHubApiRepository(repoPath, connectionId, localGitOptions) return { source: origin, fellBack: origin !== null } } if (preference === 'origin') { return { - source: await getGitHubApiRepositoryForRemote( - repoPath, - 'origin', - connectionId, - localGitOptions - ), + source: await getOriginGitHubApiRepository(repoPath, connectionId, localGitOptions), fellBack: false } } diff --git a/src/main/hang-watchdog/hang-watchdog-worker-protocol.ts b/src/main/hang-watchdog/hang-watchdog-worker-protocol.ts index b731d1fa6d2..8668760ebac 100644 --- a/src/main/hang-watchdog/hang-watchdog-worker-protocol.ts +++ b/src/main/hang-watchdog/hang-watchdog-worker-protocol.ts @@ -1,6 +1,7 @@ export const HANG_WATCHDOG_HEARTBEAT_INTERVAL_MS = 2_000 export const HANG_WATCHDOG_TIMEOUT_MS = 45_000 export const HANG_WATCHDOG_CHECK_INTERVAL_MS = 5_000 +import type { NativeHangProcessMetadata } from './native-hang-report' export type HangWatchdogWorkerData = { parentPid: number @@ -8,12 +9,15 @@ export type HangWatchdogWorkerData = { timeoutMs: number checkIntervalMs: number tracePath?: string + artifactDirectory?: string + processMetadata?: NativeHangProcessMetadata } export type MainToHangWatchdogWorkerMessage = | { type: 'heartbeat' } | { type: 'shutdown' } | { type: 'capture-drain-ack'; token: string } + | { type: 'menu-bar-setting'; enabled: boolean } | { type: 'power-event'; event: HangPowerReceipt['event']; observedAt: number } import type { HangPowerReceipt } from './hang-observations' diff --git a/src/main/hang-watchdog/main-thread-hang-capture.test.ts b/src/main/hang-watchdog/main-thread-hang-capture.test.ts index 3d8bb430345..627fce1591a 100644 --- a/src/main/hang-watchdog/main-thread-hang-capture.test.ts +++ b/src/main/hang-watchdog/main-thread-hang-capture.test.ts @@ -5,6 +5,9 @@ const state = vi.hoisted(() => ({ clock: 0, delayedWrite: false, rejectRunner: false, + parkedStop: false, + successfulNative: false, + artifacts: new Array<{ showMenuBarIcon: boolean | null }>(), commands: new Array(), terminations: new Array<() => void>(), records: new Array() @@ -14,8 +17,16 @@ vi.mock('node:inspector', () => ({ Session: class { connectToMainThread() {} disconnect() {} - post(method: string, _params: unknown, response: (error: null, result?: unknown) => void) { + post( + method: string, + _params: unknown, + response: (error: Error | null, result?: unknown) => void + ) { state.commands.push(method) + if (method === 'Profiler.stop' && state.parkedStop) { + response(new Error('uncertain inspector transport')) + return + } response( null, method === 'Profiler.stop' @@ -31,9 +42,22 @@ vi.mock('@orca/process-host', () => ({ if (state.rejectRunner) { throw new Error('runner rejected after possible acquisition') } + if (state.successfulNative) { + options.onChildTerminated() + return { stdout: 'native evidence', stderr: '', code: 0, timedOut: false } + } return { stdout: '', stderr: '', code: null, timedOut: true } } })) +vi.mock('./native-hang-capture-store', () => ({ + createNativeHangCaptureId: (time: number) => `hang-${time}`, + NativeHangCaptureStore: class { + async save(artifact: { showMenuBarIcon: boolean | null }) { + state.artifacts.push(structuredClone(artifact)) + } + async recover() {} + } +})) vi.mock('./hang-detection-marker', () => ({ readAvailableHangDetectionMarker: () => null, writeHangDetectionMarker: (_path: string, record: unknown) => { @@ -53,6 +77,9 @@ beforeEach(() => { state.clock = 0 state.delayedWrite = false state.rejectRunner = false + state.parkedStop = false + state.successfulNative = false + state.artifacts = [] state.commands = [] state.terminations = [] state.records = [] @@ -75,6 +102,15 @@ function watchdog() { { parentPid: 123, markerPath: '/qa/main-thread-hang.json', + artifactDirectory: '/qa/captures', + processMetadata: { + appVersion: '1', + electronVersion: '43', + chromeVersion: '150', + arch: 'arm64', + osRelease: '25', + osVersion: 'Darwin' + }, timeoutMs: 100, checkIntervalMs: 25 }, @@ -124,7 +160,7 @@ it.each([false, true])( await vi.advanceTimersByTimeAsync(125) await vi.dynamicImportSettled() expect(state.records.at(-1)).toMatchObject({ - observations: [expect.anything(), expect.not.objectContaining({ mainJs: expect.anything() })] + observations: [expect.anything(), expect.not.objectContaining({ native: expect.anything() })] }) owner.send({ type: 'heartbeat' }) state.terminations.shift()?.() @@ -153,3 +189,42 @@ it.each([false, true])( owner.send({ type: 'shutdown' }) } ) + +it('captures a later native episode while the earlier inspector cleanup remains uncertain', async () => { + state.parkedStop = true + const owner = watchdog() + await vi.advanceTimersByTimeAsync(125) + await vi.dynamicImportSettled() + state.terminations.shift()?.() + owner.send({ type: 'heartbeat' }) + await vi.dynamicImportSettled() + await vi.advanceTimersByTimeAsync(125) + await vi.dynamicImportSettled() + expect(state.records.at(-1)).toMatchObject({ + observations: [ + expect.objectContaining({ mainJs: expect.objectContaining({ state: 'failed' }) }), + expect.objectContaining({ native: expect.objectContaining({ state: 'completed' }) }) + ] + }) + owner.send({ type: 'shutdown' }) +}) + +it('snapshots only the setting actually received before each episode', async () => { + state.successfulNative = true + const owner = watchdog() + await vi.advanceTimersByTimeAsync(125) + await vi.dynamicImportSettled() + owner.send({ type: 'heartbeat' }) + owner.send({ type: 'menu-bar-setting', enabled: false }) + await vi.dynamicImportSettled() + await vi.advanceTimersByTimeAsync(125) + await vi.dynamicImportSettled() + owner.send({ type: 'menu-bar-setting', enabled: true }) + expect(state.artifacts.map((item) => item.showMenuBarIcon)).toEqual([null, false]) + owner.send({ type: 'heartbeat' }) + await vi.dynamicImportSettled() + await vi.advanceTimersByTimeAsync(125) + await vi.dynamicImportSettled() + expect(state.artifacts.map((item) => item.showMenuBarIcon)).toEqual([null, false, true]) + owner.send({ type: 'shutdown' }) +}) diff --git a/src/main/hang-watchdog/main-thread-hang-watchdog-entry.ts b/src/main/hang-watchdog/main-thread-hang-watchdog-entry.ts index 94cc8e897db..17b2d976b1b 100644 --- a/src/main/hang-watchdog/main-thread-hang-watchdog-entry.ts +++ b/src/main/hang-watchdog/main-thread-hang-watchdog-entry.ts @@ -12,6 +12,7 @@ import { type HangPowerReceipt } from './hang-observations' import { captureHangSnapshot } from './hang-snapshot' +import { createWatchdogHangCapture } from './watchdog-hang-capture' import type { HangWatchdogWorkerData, MainToHangWatchdogWorkerMessage @@ -22,13 +23,6 @@ type HangWatchdogPort = { close: () => void postMessage?: (message: { type: 'capture-drain'; token: string }) => void } -type CaptureOwner = { - id: string - reason?: 'recovery' | 'shutdown' - stopJs?: (reason: 'recovery' | 'shutdown') => void - stopNative?: () => void - done?: Promise -} export function runWatchdog( config: HangWatchdogWorkerData, @@ -43,7 +37,7 @@ export function runWatchdog( let sequence = 0 let activeStallId: string | null = null let stopped = false - let captureOwner: CaptureOwner | null = null + let showMenuBarIcon: boolean | null = null let drain: { token: string; acknowledge: () => void } | null = null let collector: AbortController | null = null let recentPower: HangPowerReceipt[] = [] @@ -80,55 +74,18 @@ export function runWatchdog( observations = retainHangObservation(observations, { ...record, ...change }) save() } - const capture = (record: HangObservation, detectedAt: number): void => { - if (isMainThread || captureOwner || stopped || record.kind !== 'heartbeat-stall') { - return - } - const owner: CaptureOwner = { id: record.id } - captureOwner = owner - owner.done = (async () => { - const [inspector, js, native] = await Promise.all([ - import('node:inspector'), - import('./main-js-hang-capture'), - import('./native-hang-capture') - ]) - const mainJs = js.captureMainJsHang({ - session: new inspector.Session(), - detectedAt, - now: () => performance.now(), - publish: (mainJs) => update(record.id, { mainJs }), - drain: () => - new Promise((resolve) => { - drain = { token: record.id, acknowledge: resolve } - port.postMessage?.({ type: 'capture-drain', token: record.id }) - }) - }) - owner.stopJs = mainJs.stop - if (owner.reason) { - mainJs.stop(owner.reason) - } - const nativeCapture = - !owner.reason && process.platform === 'darwin' - ? native.captureNativeHang({ - pid: config.parentPid, - publish: (native) => update(record.id, { native }) - }) - : null - owner.stopNative = nativeCapture?.stop - await Promise.all([mainJs.done, nativeCapture?.done]) - })() - .catch(() => { - // A published baseline remains useful if an optional collector cannot initialize. - }) - .finally(() => { - if (captureOwner === owner) { - captureOwner = null - } - if (stopped) { - port.close() - } - }) - } + const captures = createWatchdogHangCapture({ + parentPid: config.parentPid, + artifactDirectory: config.artifactDirectory, + processMetadata: config.processMetadata, + publish: update, + drain: (token) => + new Promise((resolve) => { + drain = { token, acknowledge: resolve } + port.postMessage?.({ type: 'capture-drain', token }) + }), + onIdle: () => port.close() + }) const openReceiptWindow = (id: string): void => { receiptWindow = { id, until: Date.now() + config.checkIntervalMs, remaining: 4 } } @@ -204,7 +161,9 @@ export function runWatchdog( } openReceiptWindow(record.id) save() - capture(record, detectedAt) + if (!isMainThread) { + captures.capture(record, detectedAt, showMenuBarIcon) + } enrich(record) } const loop = createHangWatchdogDetectionLoop({ @@ -218,10 +177,7 @@ export function runWatchdog( } const id = activeStallId activeStallId = null - if (captureOwner?.id === id) { - captureOwner.reason ??= 'recovery' - captureOwner.stopJs?.('recovery') - } + captures.recover(id) update(id, { selfRecovered: true, resolution: captureHangSnapshot() }) openReceiptWindow(id) }, @@ -254,6 +210,8 @@ export function runWatchdog( } if (message.type === 'heartbeat') { loop.recordHeartbeat() + } else if (message.type === 'menu-bar-setting') { + showMenuBarIcon = message.enabled } else if (message.type === 'power-event') { const receipt = parsePowerReceipt({ ...message, receivedAt: Date.now() }) if (!receipt) { @@ -281,13 +239,7 @@ export function runWatchdog( receiptWindow = null clearInterval(checkTimer) collector?.abort() - if (captureOwner) { - captureOwner.reason ??= 'shutdown' - captureOwner.stopJs?.('shutdown') - captureOwner.stopNative?.() - } else { - port.close() - } + captures.shutdown() } }) } diff --git a/src/main/hang-watchdog/main-thread-hang-watchdog.ts b/src/main/hang-watchdog/main-thread-hang-watchdog.ts index 502a133639f..8dac63f5c83 100644 --- a/src/main/hang-watchdog/main-thread-hang-watchdog.ts +++ b/src/main/hang-watchdog/main-thread-hang-watchdog.ts @@ -1,9 +1,11 @@ import type { Worker } from 'node:worker_threads' +import os from 'node:os' import { spawnWorkerThread } from '../worker-threads/worker-thread-spawn' import { app, powerMonitor } from 'electron' import { hangDetectionMarkerPath } from './hang-detection-marker' import { resolveHangWatchdogWorkerPath } from './hang-watchdog-worker-path' import { getTraceFilePath, resolveObservabilityConsent } from '../observability' +import { nativeHangCaptureDirectory } from './native-hang-capture-store' import { HANG_WATCHDOG_CHECK_INTERVAL_MS, HANG_WATCHDOG_HEARTBEAT_INTERVAL_MS, @@ -16,6 +18,7 @@ import { export type MainThreadHangWatchdogHandle = { stop: () => void worker: Worker + setMenuBarIconSetting: (enabled: boolean) => void } function positiveTiming(value: string | undefined, fallback: number): number { @@ -41,6 +44,15 @@ export function installMainThreadHangWatchdog(options: { parentPid: process.pid, markerPath: hangDetectionMarkerPath(options.userDataPath), tracePath: getTraceFilePath(), + artifactDirectory: nativeHangCaptureDirectory(options.userDataPath), + processMetadata: { + appVersion: app.getVersion(), + electronVersion: process.versions.electron ?? 'unknown', + chromeVersion: process.versions.chrome ?? 'unknown', + arch: os.arch(), + osRelease: os.release(), + osVersion: os.version() + }, timeoutMs: positiveTiming(process.env.ORCA_HANG_WATCHDOG_TIMEOUT_MS, HANG_WATCHDOG_TIMEOUT_MS), checkIntervalMs: positiveTiming( process.env.ORCA_HANG_WATCHDOG_CHECK_INTERVAL_MS, @@ -117,5 +129,9 @@ export function installMainThreadHangWatchdog(options: { }) worker.unref() app.on('will-quit', stop) - return { stop, worker } + return { + stop, + worker, + setMenuBarIconSetting: (enabled) => postMessage({ type: 'menu-bar-setting', enabled }) + } } diff --git a/src/main/hang-watchdog/native-hang-artifact.test.ts b/src/main/hang-watchdog/native-hang-artifact.test.ts new file mode 100644 index 00000000000..c69d2084a64 --- /dev/null +++ b/src/main/hang-watchdog/native-hang-artifact.test.ts @@ -0,0 +1,246 @@ +import fs from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterEach, beforeEach, expect, it, vi } from 'vitest' +import { CrashReportStore } from '../crash-reporting/reports/crash-report-store' +import { createPreviousNativeHangReport } from './previous-native-hang-report' +import { + NativeHangCaptureStore, + nativeHangCaptureDirectory, + readNativeHangCapture, + readPreviousNativeHangCapture +} from './native-hang-capture-store' +import { sanitizeNativeHangReport, type NativeHangArtifact } from './native-hang-report' +import { readPreviousNativeHangTelemetry } from './previous-native-hang-telemetry' +import { mainThreadHangDetectedSchema } from '../../shared/telemetry-daemon-event-schemas' +import { getLatestPendingReport } from '../ipc/crash-reporting/crash-reporting-sendable-reports' +import { collectBundle } from '../observability/bundle' + +const sample = `Sampling process 123 for 1 second with 10 milliseconds of run time between samples +Process: Orca [123] +Path: /Users/Test User/Secret Project/Orca.app/Contents/MacOS/Orca +Analysis Tool: /Users/Test User/Private Tools/sample +OS Version: macOS 26.1 (25B78) +Call graph: + 100 Thread_1 DispatchQueue_1: com.apple.main-thread (serial) + + 100 nativeWait (in Orca) + 12 [0x10000000c] + 100 Thread_42 background-worker + + 100 backgroundWork (in /Users/Test User/Private (Client List)/Worker) + 8 [0x100100008] +Total number in stack (recursive counted multiple, when >=5): + 100 nativeWait +password=fixture-private-value +Binary Images: +0x100000000 - 0x1000fffff Orca (1.2.3) /Users/Test User/Secret Project/Orca.app/Contents/MacOS/Orca +0x100100000 - 0x1001fffff Worker (4.5.6) /Users/Test User/Private Project/Worker +` + +function artifact(time: number): NativeHangArtifact { + return { + version: 1, + captureId: `hang-${time}-00000000-0000-0000-0000-${String(time).padStart(12, '0')}`, + detectedAt: time, + capturedAt: time + 1, + pid: 123, + showMenuBarIcon: null, + process: { + appVersion: '1.2.3', + electronVersion: '43.8.6', + chromeVersion: '150', + arch: 'arm64', + osRelease: '25.1.0', + osVersion: 'Darwin Kernel Version 25.1.0' + }, + report: sample + } +} + +let directory: string +beforeEach(async () => { + vi.useFakeTimers({ toFake: ['Date'] }) + vi.setSystemTime('2026-11-12T01:00:00.000Z') + directory = await fs.mkdtemp(join(tmpdir(), 'orca-native-hang-')) +}) +afterEach(async () => { + vi.useRealTimers() + await fs.rm(directory, { recursive: true, force: true }) +}) + +it('retains every sampled thread and image identity while removing full spaced paths and credentials', async () => { + const store = new NativeHangCaptureStore(directory) + await store.save(artifact(1)) + const capture = await readNativeHangCapture(directory) + expect(capture?.artifact).toMatchObject({ + showMenuBarIcon: null, + process: { appVersion: '1.2.3', electronVersion: '43.8.6' } + }) + expect(capture?.artifact.report).toContain('Thread_42 background-worker') + expect(capture?.artifact.report).toContain('backgroundWork (in Worker) + 8 [0x100100008]') + expect(capture?.artifact.report).toContain('macOS 26.1 (25B78)') + expect(capture?.artifact.report).toContain( + '0x100100000 - 0x1001fffff Worker (4.5.6) ' + ) + expect(capture?.artifact.report).not.toMatch( + /Test User|Secret Project|Private Project|Client List|Private Tools|fixture-private-value/ + ) + expect((await fs.stat(capture!.path)).mode & 0o777).toBe(0o600) +}) + +it('withholds complete-artifact admission for a cut report or unsafe image row', () => { + expect(sanitizeNativeHangReport(sample.trimEnd())).toBeNull() + expect(sanitizeNativeHangReport(sample.replace('Binary Images:', 'Missing Images:'))).toBeNull() + expect(sanitizeNativeHangReport(`${sample}unparsed /Users/Test User/private image\n`)).toBeNull() + expect(sanitizeNativeHangReport(sample.replace('[0x100100008]', 'unknown location'))).toBeNull() +}) + +it.each([ + { count: 4, times: [1, 2, 3, 4] }, + { count: 40, times: [37, 38, 39, 40] } +])( + 'bounds retained evidence after $count incidents and preserves unrelated files', + async ({ count, times }) => { + const store = new NativeHangCaptureStore(directory) + await fs.writeFile(join(directory, 'unrelated.txt'), 'keep') + await fs.writeFile( + join(directory, 'hang-0-00000000-0000-0000-0000-000000000000.tmp'), + 'interrupted' + ) + for (let time = 1; time <= count; time++) { + await store.save(artifact(time)) + } + const names = await fs.readdir(directory) + const retained: number[] = [] + for (const name of names.filter((name) => name.endsWith('.json'))) { + retained.push(JSON.parse(await fs.readFile(join(directory, name), 'utf8')).detectedAt) + } + expect(retained.sort((a, b) => a - b)).toEqual(times) + expect(names.filter((name) => name.endsWith('.tmp'))).toEqual([]) + expect(await fs.readFile(join(directory, 'unrelated.txt'), 'utf8')).toBe('keep') + } +) + +it('keeps manual freeze reports silent and preserves identity and sent status across restarts', async () => { + await new NativeHangCaptureStore(directory).save(artifact(1)) + const store = new CrashReportStore(join(directory, 'reports.json')) + const previous = createPreviousNativeHangReport({ store, directory, processStartedAt: 100 }) + await Promise.all([previous.ensureImported(), previous.ensureImported()]) + const report = (await store.listRecent())[0]! + expect(await getLatestPendingReport(store)).toBeNull() + expect(report).toMatchObject({ + status: 'dismissed', + details: { captureId: artifact(1).captureId, showMenuBarIcon: null } + }) + await store.markDismissedSent(report.id) + await createPreviousNativeHangReport({ store, directory, processStartedAt: 200 }).ensureImported() + expect(await store.listRecent()).toMatchObject([{ id: report.id, status: 'sent' }]) + expect((await readPreviousNativeHangCapture(directory, 200))?.artifact.captureId).toBe( + artifact(1).captureId + ) +}) + +it('preserves an ordinary pending crash and imports freeze evidence on a later manual open', async () => { + await new NativeHangCaptureStore(directory).save(artifact(1)) + const store = new CrashReportStore(join(directory, 'reports.json')) + const original = await store.record({ + source: 'renderer', + processType: 'renderer', + reason: 'crashed', + exitCode: 5, + platform: 'darwin', + appVersion: '1', + electronVersion: '43', + chromeVersion: '150', + arch: 'arm64', + osRelease: '25', + details: {} + }) + const previous = createPreviousNativeHangReport({ store, directory, processStartedAt: 100 }) + await previous.ensureImported() + expect((await getLatestPendingReport(store))?.id).toBe(original.id) + expect(await store.listRecent()).toHaveLength(1) + await store.dismiss(original.id) + await previous.ensureImported() + expect((await store.listRecent())[0]).toMatchObject({ + reason: 'main-thread-hang', + status: 'dismissed', + details: { captureId: artifact(1).captureId } + }) + expect(await getLatestPendingReport(store)).toBeNull() +}) + +it('enriches only the matching freeze event with captured safe frames, build and setting', async () => { + const captures = nativeHangCaptureDirectory(directory) + await new NativeHangCaptureStore(captures).save({ ...artifact(1), showMenuBarIcon: false }) + await new NativeHangCaptureStore(captures).save({ ...artifact(2), showMenuBarIcon: true }) + const marker = { detectedAt: 1, parentPid: 123, unresponsiveMs: 50000, selfRecovered: false } + const details = await readPreviousNativeHangTelemetry(directory, marker) + expect(details).toEqual({ + native_top_frames: ['nativeWait [Orca]'], + macos_build: 'macOS 26.1 (25B78)', + menu_bar_icon: false + }) + expect( + mainThreadHangDetectedSchema.safeParse({ + unresponsive_ms: 50000, + self_recovered: false, + ...details + }).success + ).toBe(true) + expect(await readPreviousNativeHangTelemetry(directory, { ...marker, parentPid: 999 })).toEqual( + {} + ) + expect(await readPreviousNativeHangTelemetry(directory, { ...marker, detectedAt: 3 })).toEqual({}) +}) + +it('selects the reported incident and never replaces missing evidence with a newer capture', async () => { + const store = new NativeHangCaptureStore(directory) + await store.save(artifact(1)) + await store.save(artifact(2)) + expect((await readNativeHangCapture(directory, artifact(1).captureId))?.artifact.detectedAt).toBe( + 1 + ) + expect((await readNativeHangCapture(directory))?.artifact.detectedAt).toBe(2) + expect(await readNativeHangCapture(directory, artifact(3).captureId)).toBeNull() +}) + +it('keeps an intact large capture with both log sources inside the attachment limit', async () => { + const trace = join(directory, 'main.trace') + const daemon = join(directory, 'daemon.log') + await fs.writeFile( + trace, + `${JSON.stringify({ name: 'important-main-span', ts: '2026-11-12T00:59:00.000Z', value: 't'.repeat(16_000) })}\n` + ) + await fs.writeFile( + daemon, + Array.from({ length: 200 }, () => + JSON.stringify({ name: 'daemon-event', value: 'a'.repeat(8_000) }) + ).join('\n') + ) + const clean = sample.replace('password=fixture-private-value\n', '') + const base = { type: 'native-hang-capture', status: 'complete', ...artifact(1), report: clean } + const escapedPadding = Math.floor((3_145_600 - Buffer.byteLength(JSON.stringify(base))) / 2) + const report = clean.replace( + 'nativeWait (in Orca)', + `${'\\'.repeat(escapedPadding)}nativeWait (in Orca)` + ) + + const bundle = collectBundle({ + traceFilePath: trace, + maxFiles: 1, + daemonLogFilePath: daemon, + appVersion: '1', + platform: 'darwin', + arch: 'arm64', + osRelease: '25', + orcaChannel: 'dev', + nativeHangRecord: { type: 'native-hang-capture', status: 'complete', ...artifact(1), report } + }) + const lines = bundle.payload + .trimEnd() + .split('\n') + .map((line) => JSON.parse(line)) + expect(lines.find((line) => line.type === 'native-hang-capture')?.report).toBe(report) + expect(lines.some((line) => line.name === 'important-main-span')).toBe(true) + expect(lines.some((line) => line.name === 'daemon-event')).toBe(true) + expect(Buffer.byteLength(bundle.payload)).toBeLessThanOrEqual(4_194_304) + expect(bundle.bytes).toBe(Buffer.byteLength(bundle.payload)) +}) diff --git a/src/main/hang-watchdog/native-hang-capture-store.ts b/src/main/hang-watchdog/native-hang-capture-store.ts new file mode 100644 index 00000000000..a2995849369 --- /dev/null +++ b/src/main/hang-watchdog/native-hang-capture-store.ts @@ -0,0 +1,178 @@ +import { randomUUID } from 'node:crypto' +import { constants } from 'node:fs' +import fs from 'node:fs/promises' +import { join } from 'node:path' +import { + MAX_NATIVE_HANG_ARTIFACT_BYTES, + parseNativeHangArtifact, + type NativeHangArtifact +} from './native-hang-report' + +const CAPTURE_ID = /^hang-(\d{1,16})-[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/ +const CAPTURE_FILE = /^(hang-\d{1,16}-[\da-f-]{36})(\.(?:recovered|seen))?\.json$/ +type CaptureFile = { name: string; captureId: string; detectedAt: number } +export type StoredNativeHangCapture = { artifact: NativeHangArtifact; path: string } + +export function nativeHangCaptureDirectory(userDataPath: string): string { + return join(userDataPath, 'hang-captures') +} + +export function createNativeHangCaptureId(detectedAt: number): string { + return `hang-${detectedAt}-${randomUUID()}` +} + +function captureFile(name: string): CaptureFile | null { + const match = CAPTURE_FILE.exec(name) + const id = match && CAPTURE_ID.exec(match[1]!) + return match && id ? { name, captureId: match[1]!, detectedAt: Number(id[1]) } : null +} + +async function entries(directory: string): Promise { + try { + if (!(await fs.lstat(directory)).isDirectory()) { + return null + } + const handle = await fs.opendir(directory) + try { + const names: string[] = [] + while (names.length < 64) { + const entry = await handle.read() + if (!entry) { + return names + } + names.push(entry.name) + } + return null + } finally { + await handle.close() + } + } catch { + return null + } +} + +export async function listNativeHangCaptures(directory: string): Promise { + return ((await entries(directory)) ?? []) + .map(captureFile) + .filter((file): file is CaptureFile => file !== null) + .sort((a, b) => b.detectedAt - a.detectedAt || b.name.localeCompare(a.name)) +} + +async function readCaptureFile( + directory: string, + file: CaptureFile +): Promise { + const filePath = join(directory, file.name) + let handle: Awaited> | undefined + try { + handle = await fs.open(filePath, constants.O_RDONLY | constants.O_NOFOLLOW) + const stat = await handle.stat() + if (!stat.isFile() || stat.size > MAX_NATIVE_HANG_ARTIFACT_BYTES) { + return null + } + const bytes = Buffer.alloc(stat.size + 1) + const { bytesRead } = await handle.read(bytes, 0, bytes.length, 0) + if (bytesRead !== stat.size) { + return null + } + const parsed: unknown = JSON.parse(bytes.subarray(0, bytesRead).toString('utf8')) + const artifact = parseNativeHangArtifact(parsed) + return artifact && + artifact.captureId === file.captureId && + artifact.detectedAt === file.detectedAt + ? { artifact, path: filePath } + : null + } catch { + return null + } finally { + await handle?.close() + } +} + +export async function readNativeHangCapture( + directory: string, + captureId?: string +): Promise { + const files = captureId + ? CAPTURE_ID.test(captureId) + ? ['', '.seen', '.recovered'].map((state) => captureFile(`${captureId}${state}.json`)!) + : [] + : await listNativeHangCaptures(directory) + for (const file of files) { + const capture = await readCaptureFile(directory, file) + if (capture) { + return capture + } + } + return null +} + +export async function readPreviousNativeHangCapture( + directory: string, + processStartedAt: number +): Promise { + for (const file of await listNativeHangCaptures(directory)) { + if (file.detectedAt < processStartedAt) { + const capture = await readCaptureFile(directory, file) + if (capture) { + return capture + } + } + } + return null +} + +export class NativeHangCaptureStore { + private busy = false + + constructor(private readonly directory: string) {} + + async save(artifact: NativeHangArtifact): Promise { + if (this.busy || !CAPTURE_ID.test(artifact.captureId)) { + return + } + this.busy = true + const temporary = join(this.directory, `${artifact.captureId}.tmp`) + try { + const safe = parseNativeHangArtifact(artifact) + if (!safe) { + return + } + const payload = `${JSON.stringify(safe)}\n` + if (Buffer.byteLength(payload) > MAX_NATIVE_HANG_ARTIFACT_BYTES) { + return + } + await fs.mkdir(this.directory, { recursive: true, mode: 0o700 }) + if (!(await fs.lstat(this.directory)).isDirectory()) { + return + } + await fs.chmod(this.directory, 0o700) + const names = await entries(this.directory) + if (!names) { + return + } + const captures = names + .map(captureFile) + .filter((file): file is CaptureFile => !!file) + .sort((a, b) => b.detectedAt - a.detectedAt) + for (const name of names) { + if (name.endsWith('.tmp') && CAPTURE_ID.test(name.slice(0, -4))) { + await fs.unlink(join(this.directory, name)) + } + } + for (const [index, file] of captures.entries()) { + const stat = await fs.lstat(join(this.directory, file.name)) + if (index >= 3 || stat.size > MAX_NATIVE_HANG_ARTIFACT_BYTES || !stat.isFile()) { + await fs.unlink(join(this.directory, file.name)) + } + } + await fs.writeFile(temporary, payload, { mode: 0o600, flag: 'wx' }) + await fs.rename(temporary, join(this.directory, `${artifact.captureId}.json`)) + } catch { + // Optional full evidence must not interrupt marker capture or child cleanup. + } finally { + await fs.unlink(temporary).catch(() => {}) + this.busy = false + } + } +} diff --git a/src/main/hang-watchdog/native-hang-capture.ts b/src/main/hang-watchdog/native-hang-capture.ts index 3ab8b3cadfe..f311bf1caa6 100644 --- a/src/main/hang-watchdog/native-hang-capture.ts +++ b/src/main/hang-watchdog/native-hang-capture.ts @@ -1,4 +1,5 @@ import type { runProcess as runNativeProcess } from '@orca/process-host' +import { MAX_NATIVE_HANG_REPORT_BYTES } from './native-hang-report' import { emptyHangStacks, hangLabel, @@ -117,8 +118,13 @@ export function reduceNativeHangSample( export function captureNativeHang(options: { pid: number publish: (capture: NativeHangCapture) => void -}): { stop: () => void; done: Promise } { + completeReport?: (report: string) => void +}): { stop: () => void; started: Promise; done: Promise } { const abort = new AbortController() + let acquired: () => void = () => {} + const started = new Promise((resolve) => { + acquired = resolve + }) const baseline: NativeHangCapture = { ...emptyHangStacks(), state: 'collecting', @@ -141,6 +147,7 @@ export function captureNativeHang(options: { runProcess = (await import('@orca/process-host')).runProcess } catch { publish({ ...baseline, state: 'failed', completedAt: Date.now(), cleanup: 'unverified' }) + acquired() return } let terminated = false @@ -149,11 +156,11 @@ export function captureNativeHang(options: { release = resolve }) try { - const result = await runProcess({ + const pending = runProcess({ program: '/usr/bin/sample', args: [String(options.pid), '1', '10', '-file', '/dev/stdout'], - timeoutMs: 2500, - maxOutputBytes: 128 * 1024, + timeoutMs: 10_000, + maxOutputBytes: MAX_NATIVE_HANG_REPORT_BYTES, killOnOutputLimit: true, signal: abort.signal, onChildTerminated: () => { @@ -161,6 +168,8 @@ export function captureNativeHang(options: { release() } }) + acquired() + const result = await pending publish({ ...baseline, ...reduceNativeHangSample(result.stdout), @@ -171,6 +180,14 @@ export function captureNativeHang(options: { cleanup: terminated ? 'terminated' : 'unverified', ...(result.code !== null ? { exitCode: result.code } : {}) }) + if ( + result.code === 0 && + !result.timedOut && + !result.outputTruncated && + !abort.signal.aborted + ) { + options.completeReport?.(result.stdout) + } } catch { publish({ ...baseline, @@ -178,11 +195,13 @@ export function captureNativeHang(options: { completedAt: Date.now(), cleanup: terminated ? 'terminated' : 'unverified' }) + } finally { + acquired() } if (!terminated) { await termination publish({ ...latest, cleanup: 'terminated' }) } })() - return { stop: () => abort.abort(), done } + return { stop: () => abort.abort(), started, done } } diff --git a/src/main/hang-watchdog/native-hang-report.ts b/src/main/hang-watchdog/native-hang-report.ts new file mode 100644 index 00000000000..1b75d578146 --- /dev/null +++ b/src/main/hang-watchdog/native-hang-report.ts @@ -0,0 +1,140 @@ +import { basename } from 'node:path/posix' +import { sanitizeCrashReportString } from '../../shared/crash-report-redaction' +import { redactString } from '../observability/redactor' + +export const MAX_NATIVE_HANG_REPORT_BYTES = 2 * 1024 * 1024 +export const MAX_NATIVE_HANG_ARTIFACT_BYTES = 3 * 1024 * 1024 + +export type NativeHangProcessMetadata = { + appVersion: string + electronVersion: string + chromeVersion: string + arch: string + osRelease: string + osVersion: string +} + +export type NativeHangArtifact = { + version: 1 + captureId: string + detectedAt: number + capturedAt: number + pid: number + showMenuBarIcon: boolean | null + process: NativeHangProcessMetadata + report: string +} + +export function sanitizeNativeHangReport(text: string): string | null { + if ( + !text.endsWith('\n') || + !/^OS Version:\s+.+\(.+\)/m.test(text) || + !/^Call graph:/m.test(text) || + !/^\s+\d+ Thread_\S+/m.test(text) + ) { + return null + } + const lines = text.split('\n') + const images = lines.indexOf('Binary Images:') + if (images === -1) { + return null + } + let imageCount = 0 + for (let index = 0; index < lines.length; index++) { + const line = lines[index]! + if (index > images && line.trim()) { + const image = + /^(\s*0x[\da-f]+\s+-\s+0x[\da-f]+\s+.+\s+<[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}>)\s+.+$/i.exec( + line + ) + if (!image) { + return null + } + lines[index] = `${image[1]} [redacted-path]` + imageCount++ + } else if (/^(?:Path|Analysis Tool):/.test(line)) { + lines[index] = `${line.slice(0, line.indexOf(':'))}: [redacted-path]` + } else { + lines[index] = line.replace( + /\(in (\/.+)\)(?=\s+(?:\+\s+\d+\s+)?\[0x[\da-f]+\])/gi, + (_match, location: string) => `(in ${basename(location)})` + ) + if (lines[index]!.includes('(in /')) { + return null + } + } + } + if (!imageCount) { + return null + } + // Artifact admission bounds the whole value; scalar truncation would destroy image identities. + return redactString(sanitizeCrashReportString(lines.join('\n'), Number.MAX_SAFE_INTEGER)) +} + +export function parseNativeHangArtifact(value: unknown): NativeHangArtifact | null { + if ( + !value || + typeof value !== 'object' || + !('version' in value) || + value.version !== 1 || + !('captureId' in value) || + typeof value.captureId !== 'string' || + !('detectedAt' in value) || + typeof value.detectedAt !== 'number' || + !Number.isSafeInteger(value.detectedAt) || + !('capturedAt' in value) || + typeof value.capturedAt !== 'number' || + !Number.isSafeInteger(value.capturedAt) || + !('pid' in value) || + typeof value.pid !== 'number' || + !Number.isSafeInteger(value.pid) || + value.pid <= 0 || + !('showMenuBarIcon' in value) || + (typeof value.showMenuBarIcon !== 'boolean' && value.showMenuBarIcon !== null) || + !('report' in value) || + typeof value.report !== 'string' || + !('process' in value) || + !value.process || + typeof value.process !== 'object' + ) { + return null + } + const metadata = value.process + if ( + !('appVersion' in metadata) || + typeof metadata.appVersion !== 'string' || + !('electronVersion' in metadata) || + typeof metadata.electronVersion !== 'string' || + !('chromeVersion' in metadata) || + typeof metadata.chromeVersion !== 'string' || + !('arch' in metadata) || + typeof metadata.arch !== 'string' || + !('osRelease' in metadata) || + typeof metadata.osRelease !== 'string' || + !('osVersion' in metadata) || + typeof metadata.osVersion !== 'string' + ) { + return null + } + const report = sanitizeNativeHangReport(value.report) + if (!report) { + return null + } + return { + version: 1, + captureId: value.captureId, + detectedAt: value.detectedAt, + capturedAt: value.capturedAt, + pid: value.pid, + showMenuBarIcon: value.showMenuBarIcon, + process: { + appVersion: sanitizeCrashReportString(metadata.appVersion), + electronVersion: sanitizeCrashReportString(metadata.electronVersion), + chromeVersion: sanitizeCrashReportString(metadata.chromeVersion), + arch: sanitizeCrashReportString(metadata.arch), + osRelease: sanitizeCrashReportString(metadata.osRelease), + osVersion: sanitizeCrashReportString(metadata.osVersion) + }, + report + } +} diff --git a/src/main/hang-watchdog/previous-native-hang-report.ts b/src/main/hang-watchdog/previous-native-hang-report.ts new file mode 100644 index 00000000000..adb0723207e --- /dev/null +++ b/src/main/hang-watchdog/previous-native-hang-report.ts @@ -0,0 +1,45 @@ +import type { CrashReportStore } from '../crash-reporting/reports/crash-report-store' +import { readPreviousNativeHangCapture } from './native-hang-capture-store' + +export function createPreviousNativeHangReport(options: { + store: CrashReportStore + directory: string + processStartedAt: number +}): { ensureImported: () => Promise } { + let importing: Promise | undefined + const prepare = async (): Promise => { + const capture = await readPreviousNativeHangCapture(options.directory, options.processStartedAt) + if (!capture) { + return + } + const artifact = capture.artifact + await options.store.importHangReport({ + source: 'child', + processType: 'main', + reason: 'main-thread-hang', + exitCode: null, + appVersion: artifact.process.appVersion, + electronVersion: artifact.process.electronVersion, + chromeVersion: artifact.process.chromeVersion, + platform: 'darwin', + arch: artifact.process.arch, + osRelease: artifact.process.osRelease, + details: { + captureId: artifact.captureId, + detectedAt: new Date(artifact.detectedAt).toISOString(), + capturedAt: new Date(artifact.capturedAt).toISOString(), + targetPid: artifact.pid, + osVersion: artifact.process.osVersion, + showMenuBarIcon: artifact.showMenuBarIcon + } + }) + } + return { + ensureImported: () => + (importing ??= prepare() + .catch(() => {}) + .finally(() => { + importing = undefined + })) + } +} diff --git a/src/main/hang-watchdog/previous-native-hang-telemetry.ts b/src/main/hang-watchdog/previous-native-hang-telemetry.ts new file mode 100644 index 00000000000..e90532c2525 --- /dev/null +++ b/src/main/hang-watchdog/previous-native-hang-telemetry.ts @@ -0,0 +1,41 @@ +import type { EventProps } from '../../shared/telemetry-events' +import type { HangDetectionMarker } from './hang-detection-marker' +import { + listNativeHangCaptures, + nativeHangCaptureDirectory, + readNativeHangCapture +} from './native-hang-capture-store' +import { reduceNativeHangSample } from './native-hang-capture' + +export type NativeHangTelemetry = Pick< + EventProps<'main_thread_hang_detected'>, + 'native_top_frames' | 'macos_build' | 'menu_bar_icon' +> + +export async function readPreviousNativeHangTelemetry( + userDataPath: string, + marker: HangDetectionMarker +): Promise { + const directory = nativeHangCaptureDirectory(userDataPath) + for (const file of await listNativeHangCaptures(directory)) { + if (file.detectedAt !== marker.detectedAt) { + continue + } + const capture = await readNativeHangCapture(directory, file.captureId) + if (!capture || capture.artifact.pid !== marker.parentPid) { + continue + } + const artifact = capture.artifact + const macosBuild = /^OS Version:\s*(macOS \d+(?:\.\d+){0,3} \([A-Za-z0-9]+\))\s*$/m.exec( + artifact.report + )?.[1] + return { + native_top_frames: reduceNativeHangSample(artifact.report).stacks.flatMap((stack) => + stack.frames.map((frame) => `${frame.name} [${frame.module}]`) + ), + ...(macosBuild && macosBuild.length <= 64 ? { macos_build: macosBuild } : {}), + menu_bar_icon: artifact.showMenuBarIcon + } + } + return {} +} diff --git a/src/main/hang-watchdog/watchdog-hang-capture.ts b/src/main/hang-watchdog/watchdog-hang-capture.ts new file mode 100644 index 00000000000..cb3d5d915b8 --- /dev/null +++ b/src/main/hang-watchdog/watchdog-hang-capture.ts @@ -0,0 +1,137 @@ +import { createNativeHangCaptureId, NativeHangCaptureStore } from './native-hang-capture-store' +import type { NativeHangProcessMetadata } from './native-hang-report' +import type { HangObservation } from './hang-observations' + +type CaptureOwner = { + id: string + reason?: 'recovery' | 'shutdown' + stop?: (reason: 'recovery' | 'shutdown') => void +} + +export function createWatchdogHangCapture(options: { + parentPid: number + artifactDirectory?: string + processMetadata?: NativeHangProcessMetadata + publish: (id: string, change: Partial) => void + drain: (token: string) => Promise + onIdle: () => void +}): { + capture: (record: HangObservation, detectedAt: number, showMenuBarIcon: boolean | null) => void + recover: (id: string) => void + shutdown: () => void +} { + let stopped = false + let jsOwner: CaptureOwner | null = null + let nativeOwner: CaptureOwner | null = null + const store = options.artifactDirectory + ? new NativeHangCaptureStore(options.artifactDirectory) + : null + const idle = (): void => { + if (stopped && !jsOwner && !nativeOwner) { + options.onIdle() + } + } + const capture = ( + record: HangObservation, + detectedAt: number, + showMenuBarIcon: boolean | null + ): void => { + if (stopped || record.kind !== 'heartbeat-stall') { + return + } + let nativeStarted: Promise = Promise.resolve() + if (process.platform === 'darwin' && !nativeOwner) { + const owner: CaptureOwner = { id: record.id } + nativeOwner = owner + const captureId = createNativeHangCaptureId(record.detectedAt) + const metadata = options.processMetadata + nativeStarted = import('./native-hang-capture') + .then((native) => { + const child = native.captureNativeHang({ + pid: options.parentPid, + publish: (native) => options.publish(record.id, { native }), + completeReport: (report) => { + if (store && metadata) { + void store.save({ + version: 1, + captureId, + detectedAt: record.detectedAt, + capturedAt: Date.now(), + pid: options.parentPid, + showMenuBarIcon, + process: metadata, + report + }) + } + } + }) + owner.stop = () => child.stop() + if (owner.reason === 'shutdown') { + child.stop() + } + void child.done.finally(() => { + if (nativeOwner === owner) { + nativeOwner = null + } + idle() + }) + return child.started + }) + .catch(() => { + if (nativeOwner === owner) { + nativeOwner = null + } + idle() + }) + } + if (!jsOwner) { + const owner: CaptureOwner = { id: record.id } + jsOwner = owner + void (async () => { + await nativeStarted + const [inspector, js] = await Promise.all([ + import('node:inspector'), + import('./main-js-hang-capture') + ]) + const mainJs = js.captureMainJsHang({ + session: new inspector.Session(), + detectedAt, + now: () => performance.now(), + publish: (mainJs) => options.publish(record.id, { mainJs }), + drain: () => options.drain(record.id) + }) + owner.stop = mainJs.stop + if (owner.reason) { + mainJs.stop(owner.reason) + } + await mainJs.done + })() + .catch(() => {}) + .finally(() => { + if (jsOwner === owner) { + jsOwner = null + } + idle() + }) + } + } + return { + capture, + recover: (id) => { + if (jsOwner?.id === id) { + jsOwner.reason ??= 'recovery' + jsOwner.stop?.('recovery') + } + }, + shutdown: () => { + stopped = true + for (const owner of [jsOwner, nativeOwner]) { + if (owner) { + owner.reason ??= 'shutdown' + owner.stop?.('shutdown') + } + } + idle() + } + } +} diff --git a/src/main/ipc/crash-reporting/crash-reporting-sendable-reports.ts b/src/main/ipc/crash-reporting/crash-reporting-sendable-reports.ts index 4c8317f641a..fb0b07894a4 100644 --- a/src/main/ipc/crash-reporting/crash-reporting-sendable-reports.ts +++ b/src/main/ipc/crash-reporting/crash-reporting-sendable-reports.ts @@ -23,8 +23,12 @@ export async function getLatestPendingReport( ): Promise>> { const reports = await store.listRecent() return ( - reports.find((report) => report.status === 'pending' && !submittedReportIds.has(report.id)) ?? - null + reports.find( + (report) => + report.status === 'pending' && + report.reason !== 'main-thread-hang' && + !submittedReportIds.has(report.id) + ) ?? null ) } diff --git a/src/main/ipc/crash-reporting/crash-reporting-submission.ts b/src/main/ipc/crash-reporting/crash-reporting-submission.ts index 6472bb9b1e3..559a0bd311f 100644 --- a/src/main/ipc/crash-reporting/crash-reporting-submission.ts +++ b/src/main/ipc/crash-reporting/crash-reporting-submission.ts @@ -101,7 +101,10 @@ export async function submitCrashReport( inFlightSubmissions.add(report.id) try { const diagnosticUpload = await prepareCrashDiagnosticBundle( - args.includeDiagnosticLogs !== false + args.includeDiagnosticLogs !== false, + report.reason === 'main-thread-hang' && typeof report.details.captureId === 'string' + ? report.details.captureId + : undefined ) const diagnosticBundle = diagnosticUpload.diagnosticBundle const reportOnlyDiagnosticBundle = diagnosticBundleForReportOnlyRetry(diagnosticUpload) diff --git a/src/main/ipc/crash-reporting/crash-reporting.ts b/src/main/ipc/crash-reporting/crash-reporting.ts index da8291e69f4..cd1cfc5ce82 100644 --- a/src/main/ipc/crash-reporting/crash-reporting.ts +++ b/src/main/ipc/crash-reporting/crash-reporting.ts @@ -1,4 +1,7 @@ import { clipboard, ipcMain } from 'electron' +import { getCanonicalUserDataPath } from '../../persistence/loading-store/user-data-path' +import { nativeHangCaptureDirectory } from '../../hang-watchdog/native-hang-capture-store' +import { createPreviousNativeHangReport } from '../../hang-watchdog/previous-native-hang-report' import { type CrashReportCopyDiagnosticsArgs, type CrashReportSubmitArgs, @@ -48,11 +51,23 @@ export function _getCrashReportingStateSizesForTests(): { } export function registerCrashReportingHandlers(store: CrashReportStore): void { + const directory = nativeHangCaptureDirectory(getCanonicalUserDataPath()) + const previousHang = + process.platform === 'darwin' + ? createPreviousNativeHangReport({ + store, + directory, + processStartedAt: Date.now() - process.uptime() * 1000 + }) + : null ipcMain.removeHandler('crashReports:getLatestPending') ipcMain.handle('crashReports:getLatestPending', () => getLatestPendingReport(store)) ipcMain.removeHandler('crashReports:getLatestReport') - ipcMain.handle('crashReports:getLatestReport', () => getLatestSendableReport(store)) + ipcMain.handle('crashReports:getLatestReport', async () => { + await previousHang?.ensureImported() + return getLatestSendableReport(store) + }) ipcMain.removeHandler('crashReports:dismiss') ipcMain.handle('crashReports:dismiss', async (_event, args: { reportId: string }) => { diff --git a/src/main/ipc/hooks/register-worktree-hook-check-handler.ts b/src/main/ipc/hooks/register-worktree-hook-check-handler.ts index ae5ac61df6f..84a2d78e74d 100644 --- a/src/main/ipc/hooks/register-worktree-hook-check-handler.ts +++ b/src/main/ipc/hooks/register-worktree-hook-check-handler.ts @@ -10,13 +10,24 @@ import { hasHooksFile, loadHooks, hasUnrecognizedOrcaYamlKeys } from '../../work import { resolveRepoForExecutionHost } from '../worktrees/repo-host-ownership' import { blockedWslDistroForPath } from '../../wsl/filesystem/wsl-unc-access-gate' import type { WorktreeIpcContext } from '../worktrees/worktree-ipc-context' +import type { SetupHooksCreateSource } from '../../../shared/worktree/setup-hooks-create-source' +import { readCreateSourceSetupHooks } from '../../workspace-hooks/create-source-setup-hooks' +import { getWorktreeCreatePrefetchGitOptions } from '../../workspaces/execution-host/project-runtime-git-options' export function registerWorktreeHookCheckHandler(context: WorktreeIpcContext): void { - const { store } = context + const { store, runtime } = context ipcMain.handle( 'hooks:check', - async (_event, args: { repoId: string; hostId?: ExecutionHostId; background?: boolean }) => { + async ( + _event, + args: { + repoId: string + hostId?: ExecutionHostId + background?: boolean + createSource?: SetupHooksCreateSource + } + ) => { const repo = resolveRepoForExecutionHost(store, args.repoId, args.hostId) if (!repo) { const repoIdExists = store.getRepos().some((candidate) => candidate.id === args.repoId) @@ -58,6 +69,23 @@ export function registerWorktreeHookCheckHandler(context: WorktreeIpcContext): v } } + if (args.createSource && !args.background) { + const created = await readCreateSourceSetupHooks({ + repo, + source: args.createSource, + runtime, + gitOptions: getWorktreeCreatePrefetchGitOptions(store, repo) + }) + if (created) { + return { + status: 'ok', + hasHooks: created.hooks !== null, + hooks: created.hooks, + mayNeedUpdate: false + } + } + } + const has = hasHooksFile(repo.path) const hooks = scopeHooksToRepoKind(repo, has ? loadHooks(repo.path) : null) // Well-formed unknown keys may come from a newer Orca; suggest updating instead of parse repair. diff --git a/src/main/observability/bundle.ts b/src/main/observability/bundle.ts index 61bfdbb29da..3fa933b8af5 100644 --- a/src/main/observability/bundle.ts +++ b/src/main/observability/bundle.ts @@ -22,6 +22,7 @@ export type CollectBundleOptions = { readonly arch: string readonly osRelease: string readonly orcaChannel: 'stable' | 'rc' | 'dev' + readonly nativeHangRecord?: Record } export type CollectedBundle = { @@ -172,6 +173,13 @@ export function collectBundle(opts: CollectBundleOptions): CollectedBundle { const headerLine = JSON.stringify({ type: 'bundle-header', ...header }) const headerBytes = Buffer.byteLength(`${headerLine}\n`) + const nativeLine = opts.nativeHangRecord + ? JSON.stringify(redactValue(opts.nativeHangRecord, 'server')) + : null + const nativeBytes = nativeLine ? Buffer.byteLength(nativeLine) + 1 : 0 + if (headerBytes + nativeBytes > MAX_BUNDLE_BYTES) { + throw new Error('Saved freeze report exceeds the diagnostic attachment size limit.') + } const recordWindow = { cutoffMs, cutoffNanos, @@ -179,7 +187,8 @@ export function collectBundle(opts: CollectBundleOptions): CollectedBundle { } // Reserve daemon space so busy traces cannot crowd out OOM diagnostics. - const available = MAX_BUNDLE_BYTES - headerBytes + const available = MAX_BUNDLE_BYTES - headerBytes - nativeBytes + const traceReservation = nativeLine ? Math.min(256 * 1024, Math.floor(available / 2)) : 0 // Collect up to the full cap, reserve the daemon floor, then return unused trace space. const daemonAll = opts.daemonLogFilePath ? collectNewestRecords( @@ -188,16 +197,19 @@ export function collectBundle(opts: CollectBundleOptions): CollectedBundle { recordWindow ) : { lines: [], bytes: 0 } - const reserved = takeNewestLines(daemonAll.lines, Math.min(DAEMON_LOG_BUDGET_BYTES, available)) + const reserved = takeNewestLines( + daemonAll.lines, + Math.min(DAEMON_LOG_BUDGET_BYTES, available - traceReservation) + ) const traces = collectNewestRecords( listRotatedFiles(opts.traceFilePath, opts.maxFiles), available - reserved.bytes, recordWindow ) const daemon = takeNewestLines(daemonAll.lines, available - traces.bytes) - const lines = [headerLine, ...traces.lines, ...daemon.lines] + const lines = [headerLine, ...(nativeLine ? [nativeLine] : []), ...traces.lines, ...daemon.lines] const spanCount = traces.lines.length + daemon.lines.length - const currentBytes = headerBytes + traces.bytes + daemon.bytes + const currentBytes = headerBytes + nativeBytes + traces.bytes + daemon.bytes const payload = `${lines.join('\n')}\n` return { diff --git a/src/main/observability/git-execution-spans.test.ts b/src/main/observability/git-execution-spans.test.ts new file mode 100644 index 00000000000..c740a49585c --- /dev/null +++ b/src/main/observability/git-execution-spans.test.ts @@ -0,0 +1,73 @@ +import { afterEach, expect, it } from 'vitest' +import { createGitOperationExecutor } from '../git/command-runner/admission/git-operation-executor' +import { runWithGitCause } from './git-operation-cause' +import { startGitSpan, withGitSpan, _resetGitSpanSamplingForTests } from './git-execution-spans' +import { setActiveSink } from './tracer' + +afterEach(() => { + setActiveSink(null) + _resetGitSpanSamplingForTests() +}) + +it('attributes scoped Git intent without retaining argv operands in its shape', async () => { + const records: unknown[] = [] + setActiveSink({ push: (record) => records.push(record), flush() {}, close() {} }) + await createGitOperationExecutor('background').run(() => + runWithGitCause( + { family: 'catalog', reason: 'desktop-catalog', cache: 'miss' }, + undefined, + () => + withGitSpan( + { + args: [ + '-C', + '/private/repo', + '-c', + 'key=private-value', + 'worktree', + 'list', + '--porcelain', + '-z' + ] + }, + async () => undefined + ) + ) + ) + await withGitSpan( + { args: ['commit', '-mprivate-message', '--', '--private-file'], admissionTier: 'interactive' }, + async () => undefined + ) + await runWithGitCause( + { family: 'refs', reason: 'branch-snapshot', cache: 'uncached' }, + undefined, + async () => startGitSpan({ args: ['diff', '--output=/private/output', '--', 'file'] }).end() + ) + expect(records).toEqual([ + expect.objectContaining({ + attributes: expect.objectContaining({ + 'git.caller': 'desktop-catalog', + 'git.argv_shape': 'worktree list --porcelain', + 'git.admission_tier': 'background', + 'git.foreground': false + }) + }), + expect.objectContaining({ + attributes: expect.objectContaining({ + 'git.caller': 'unattributed', + 'git.argv_shape': 'commit -m', + 'git.admission_tier': 'interactive', + 'git.foreground': true + }) + }), + expect.objectContaining({ + attributes: expect.objectContaining({ + 'git.caller': 'branch-snapshot', + 'git.argv_shape': 'diff --output', + 'git.admission_tier': 'status', + 'git.foreground': 'unknown' + }) + }) + ]) + expect(JSON.stringify(records)).not.toMatch(/private|key=/) +}) diff --git a/src/main/observability/git-execution-spans.ts b/src/main/observability/git-execution-spans.ts index 08d17ca266b..8915b331af0 100644 --- a/src/main/observability/git-execution-spans.ts +++ b/src/main/observability/git-execution-spans.ts @@ -1,5 +1,12 @@ import { hasActiveTraceSink, startSpan, withSpan, type ActiveSpan } from './tracer' import { getGitOperationCause } from './git-operation-cause' +import { resolveGitAdmissionTier } from '../git/command-runner/admission/git-operation-executor' +import type { GitAdmissionTier } from '../../shared/rpc-contract/source-control/git-admission-tier-params' + +const GIT_ACTION_NAMES: Record = { + worktree: ['list', 'add', 'remove', 'move', 'prune', 'lock', 'unlock', 'repair'], + remote: ['get-url', 'set-url', 'add', 'remove', 'rename', 'show'] +} const GIT_FAST_SUCCESS_THRESHOLD_MS = 250 const GIT_FAST_SUCCESS_WINDOW_MS = 60_000 @@ -77,6 +84,34 @@ function gitSubcommandFromArgs(args: readonly string[]): string { return args[gitSubcommandIndex(args)] ?? '' } +function gitArgvShape(args: readonly string[]): string { + const index = gitSubcommandIndex(args) + if (index < 0) { + return '' + } + const subcommand = args[index] ?? '' + let name = /^[a-z][a-z0-9-]*$/.test(subcommand) ? subcommand : '' + const action = args[index + 1] + if ( + Object.hasOwn(GIT_ACTION_NAMES, subcommand) && + GIT_ACTION_NAMES[subcommand].includes(action) + ) { + name += ` ${action}` + } + for (let i = index + 1; i < args.length; i++) { + const arg = args[i] + if (arg === '--') { + break + } + // Discard option values, including attached short-option operands. + const flag = /^(--[a-z][a-z0-9-]*)(?:=|$)/.exec(arg)?.[1] ?? /^(-[a-zA-Z])/.exec(arg)?.[1] + if (flag) { + return `${name} ${flag}` + } + } + return name +} + function gitCommandVariant(args: readonly string[]): string { const index = gitSubcommandIndex(args) switch (args[index]) { @@ -177,6 +212,11 @@ function addGitAttributes(span: ActiveSpan, meta: GitSpanArgs): void { span.setAttribute('git.arg_count', meta.args.length) span.setAttribute('git.variant', gitCommandVariant(meta.args)) const cause = getGitOperationCause() + span.setAttribute('git.caller', cause?.reason ?? 'unattributed') + span.setAttribute('git.argv_shape', gitArgvShape(meta.args)) + const tier = resolveGitAdmissionTier(meta.admissionTier) + span.setAttribute('git.admission_tier', tier) + span.setAttribute('git.foreground', tier === 'status' ? 'unknown' : tier === 'interactive') if (cause) { span.setAttribute('git.operation', cause.family) span.setAttribute('git.reason', cause.reason) @@ -199,6 +239,7 @@ export function _gitSpanSamplingBucketCountForTests(): number { export type GitSpanArgs = { readonly args: readonly string[] readonly cwd?: string + readonly admissionTier?: GitAdmissionTier } export async function withGitSpan( diff --git a/src/main/observability/git-operation-cause.ts b/src/main/observability/git-operation-cause.ts index 5d1ea7198e0..c19279483ee 100644 --- a/src/main/observability/git-operation-cause.ts +++ b/src/main/observability/git-operation-cause.ts @@ -10,6 +10,7 @@ export type GitOperationCause = { | 'worktree-scan' | 'creation-base-refresh' | 'branch-search' + | 'branch-snapshot' | 'status-read' | 'remote-fetch' | 'base-refresh' diff --git a/src/main/observability/index.ts b/src/main/observability/index.ts index 008a82a0156..cfcf44d055c 100644 --- a/src/main/observability/index.ts +++ b/src/main/observability/index.ts @@ -186,17 +186,35 @@ export async function collectDiagnosticBundle( meta: Pick< CollectBundleOptions, 'appVersion' | 'platform' | 'arch' | 'osRelease' | 'orcaChannel' | 'lookbackMinutes' - > + > & { nativeHangCaptureId?: string } ): Promise { // Flush before collection so the bundle includes the user’s latest action. await sink?.flushAsync() + const { nativeHangCaptureId, ...bundleMeta } = meta + let nativeHangRecord: Record | undefined + if (process.platform === 'darwin' && resolveObservabilityConsent().localFileEnabled) { + const [captures, paths] = await Promise.all([ + import('../hang-watchdog/native-hang-capture-store'), + import('../persistence/loading-store/user-data-path') + ]) + const capture = await captures.readNativeHangCapture( + captures.nativeHangCaptureDirectory(paths.getCanonicalUserDataPath()), + nativeHangCaptureId + ) + nativeHangRecord = capture + ? { type: 'native-hang-capture', status: 'complete', ...capture.artifact } + : nativeHangCaptureId + ? { type: 'native-hang-capture', status: 'unavailable', captureId: nativeHangCaptureId } + : undefined + } return _collectBundle({ traceFilePath: getTraceFilePath(), maxFiles: DEFAULT_MAX_FILES, // The daemon writes a separate file; collection does not glob the directory. daemonLogFilePath: getDaemonLogFilePath(), daemonLogMaxFiles: DAEMON_LOG_MAX_FILES, - ...meta + ...bundleMeta, + nativeHangRecord }) } diff --git a/src/main/runtime/client/events/runtime-notifier-contract.ts b/src/main/runtime/client/events/runtime-notifier-contract.ts index a91a15a9255..299078fa642 100644 --- a/src/main/runtime/client/events/runtime-notifier-contract.ts +++ b/src/main/runtime/client/events/runtime-notifier-contract.ts @@ -1,4 +1,5 @@ import type { WorkspaceMetadataSet } from '../../../../shared/worktree/metadata/workspace-metadata-set' +import type { WorkspaceCleanupRunFinishedEvent } from '../../../../shared/workspace-cleanup/workspace-cleanup-run' import type { RuntimeEditorTabReveal, RuntimeFileOpenPosition @@ -55,6 +56,7 @@ export type RuntimeNotifier = { worktreeRemoteBranchConflict?(event: WorktreeRemoteBranchConflictEvent): void reposChanged(): void browserProfilesChanged?(): void + workspaceCleanupRunFinished?(run: WorkspaceCleanupRunFinishedEvent['run']): void activateWorktree( repoId: string, worktreeId: string, diff --git a/src/main/runtime/construction/runtime-identity-state.ts b/src/main/runtime/construction/runtime-identity-state.ts index ea4a9ce5aa7..6b0383c745f 100644 --- a/src/main/runtime/construction/runtime-identity-state.ts +++ b/src/main/runtime/construction/runtime-identity-state.ts @@ -91,6 +91,7 @@ export abstract class OrcaRuntimeWithRuntimeId extends RuntimeConstructionServic } protected abstract claimIdleShellPromptForPty(ptyId: string): Promise + protected abstract isAgentSettledForDelivery(ptyId: string): boolean protected abstract terminalHandleAccess(): TerminalHandleAccess protected readonly runtimeId = randomUUID() @@ -339,7 +340,8 @@ export abstract class OrcaRuntimeWithRuntimeId extends RuntimeConstructionServic getHookTurn: (ptyId, agent) => this.readTuiIdleHookTurnForPty(ptyId, agent), readScreenLines: (ptyId) => this.readLiveTerminalScreenLines(ptyId), readRuledScreen: (ptyId) => this.readRuledScreen(ptyId), - getOutputClockAt: (ptyId) => this.readOutputClockAt(ptyId) + getOutputClockAt: (ptyId) => this.readOutputClockAt(ptyId), + isSettledForDelivery: (ptyId) => this.isAgentSettledForDelivery(ptyId) } protected readonly terminalIdlePolls = new RuntimeTerminalIdlePolls({ diff --git a/src/main/runtime/construction/runtime-repository-command-state.ts b/src/main/runtime/construction/runtime-repository-command-state.ts index 59f39b3725f..9562eb18589 100644 --- a/src/main/runtime/construction/runtime-repository-command-state.ts +++ b/src/main/runtime/construction/runtime-repository-command-state.ts @@ -21,6 +21,8 @@ import { storeBackedBranchSwitchSources } from '../integrations/git/runtime-branch-switch-host' import { OrcaRuntimeWithFileCommands } from './runtime-file-command-state' +import { readCreateSourceSetupHooks } from '../../workspace-hooks/create-source-setup-hooks' +import { getWorktreeCreatePrefetchGitOptions } from '../../workspaces/execution-host/project-runtime-git-options' export abstract class OrcaRuntimeWithRepositoryCommands extends OrcaRuntimeWithFileCommands { protected readonly gitCommands = new RuntimeGitCommands({ @@ -156,7 +158,14 @@ export abstract class OrcaRuntimeWithRepositoryCommands extends OrcaRuntimeWithF protected readonly gitHubProjectCommands = new RuntimeGitHubProjectCommands() protected readonly repositoryHooks = new RuntimeRepositoryHooksCommands({ - resolveRepo: (selector) => this.resolveRepoSelector(selector) + resolveRepo: (selector) => this.resolveRepoSelector(selector), + readCreateSourceHooks: (repo, source) => + readCreateSourceSetupHooks({ + repo, + source, + runtime: this.remoteFetches, + gitOptions: getWorktreeCreatePrefetchGitOptions(this.requireStore(), repo) + }) }) protected readonly repositoryIssueCommand = new RuntimeRepositoryIssueCommand({ diff --git a/src/main/runtime/orchestration/db/federation/peer-mail-store.ts b/src/main/runtime/orchestration/db/federation/peer-mail-store.ts index 4fc7015d837..28948462d3b 100644 --- a/src/main/runtime/orchestration/db/federation/peer-mail-store.ts +++ b/src/main/runtime/orchestration/db/federation/peer-mail-store.ts @@ -75,17 +75,6 @@ export function listHomePeerMailEnvironments(this: OrchestrationDb): string[] { return rows.map((row) => row.environment_id) } -/** One server's check, for its pull loop: a seek on that server's home rows, not every server's. */ -export function hasHomePeerMailEnvironment(this: OrchestrationDb, environmentId: string): boolean { - return ( - this.db - .prepare( - `SELECT 1 FROM peer_mail_conversations WHERE role = 'home' AND environment_id = ? LIMIT 1` - ) - .get(environmentId) !== undefined - ) -} - /** Conversations a paired Orca opened here that hold replies it has not acknowledged yet. */ export function listPeerConversationIdsWithPendingReplies( this: OrchestrationDb, @@ -189,7 +178,6 @@ export type PeerMailStoreMethods = { openHomePeerMailConversation: typeof openHomePeerMailConversation getPeerMailConversation: typeof getPeerMailConversation listHomePeerMailEnvironments: typeof listHomePeerMailEnvironments - hasHomePeerMailEnvironment: typeof hasHomePeerMailEnvironment listPeerConversationIdsWithPendingReplies: typeof listPeerConversationIdsWithPendingReplies getPeerMailMessage: typeof getPeerMailMessage isPeerMailSenderLabel: typeof isPeerMailSenderLabel @@ -201,7 +189,6 @@ export function attachPeerMailStore(ctor: { prototype: object }): void { openHomePeerMailConversation, getPeerMailConversation, listHomePeerMailEnvironments, - hasHomePeerMailEnvironment, listPeerConversationIdsWithPendingReplies, getPeerMailMessage, isPeerMailSenderLabel, diff --git a/src/main/runtime/orchestration/federation/peer-mail/peer-mail-relay-environments.ts b/src/main/runtime/orchestration/federation/peer-mail/peer-mail-relay-environments.ts index d3cc5c2ea91..e83c38f56b9 100644 --- a/src/main/runtime/orchestration/federation/peer-mail/peer-mail-relay-environments.ts +++ b/src/main/runtime/orchestration/federation/peer-mail/peer-mail-relay-environments.ts @@ -6,24 +6,22 @@ export function peerMailRelayEnvironments(db: OrchestrationDb): Set { return new Set([...db.listHomePeerMailEnvironments(), ...listLiveRemoteRunLinkEnvironments(db)]) } -/** Whether a server's pull loop still has a reason to run; a store read error keeps it running. Runs - * every pull, so it asks about this one server only: closed links' history never enters it. */ +// Every pull asks about one server only, so closed links' history never enters it: an index seek +// for a home conversation, then one per live link state, stopping at the first row. One equality +// per state, because an IN list builds a temporary set on every call. +const RELAY_WANTS_SQL = ` +SELECT 1 FROM peer_mail_conversations WHERE role = 'home' AND environment_id = ?1 +UNION ALL +SELECT 1 FROM remote_run_links WHERE environment_id = ?1 AND state = 'open' +UNION ALL +SELECT 1 FROM remote_run_links WHERE environment_id = ?1 AND state = 'cancel_owed' +LIMIT 1` + +/** Whether a server's pull loop still has a reason to run; a store read error keeps it running. */ export function peerMailRelayWants(db: OrchestrationDb, environmentId: string): boolean { try { - return db.hasHomePeerMailEnvironment(environmentId) || hasLiveRemoteRunLink(db, environmentId) + return db.db.prepare(RELAY_WANTS_SQL).get(environmentId) !== undefined } catch { return true } } - -/** A seek on this server's own (environment_id, state) index rows, however many closed links it keeps. */ -function hasLiveRemoteRunLink(db: OrchestrationDb, environmentId: string): boolean { - return ( - db.db - .prepare( - `SELECT 1 FROM remote_run_links - WHERE environment_id = ? AND state IN ('open', 'cancel_owed') LIMIT 1` - ) - .get(environmentId) !== undefined - ) -} diff --git a/src/main/runtime/orchestration/legacy-remote/federation.ts b/src/main/runtime/orchestration/legacy-remote/federation.ts index 522efc19515..4150b8d9618 100644 --- a/src/main/runtime/orchestration/legacy-remote/federation.ts +++ b/src/main/runtime/orchestration/legacy-remote/federation.ts @@ -19,6 +19,7 @@ import { import { FederationAttachStartParams } from '../../../../shared/rpc-contract/orchestration/orchestration-federation-start-params' import { failFederatedAttachmentWithReceipt } from './federation-start-receipt' import { prepareFederationWorkerLaunchOnHost } from '../../rpc/methods/orchestration/worker/start/launch/worker-opencode-model-preflight' +import { reusedWorkerLaunchReceipt } from '../../rpc/methods/orchestration/worker/start/launch/worker-launch-preferences' import { isWorkerStartTimeoutWithinTimerLimit, resolveWorkerStartReadinessTimeoutMs @@ -158,6 +159,11 @@ export const ORCHESTRATION_FEDERATION_ATTACH_METHODS = [ `Terminal ${terminalHandle} is not running a recognized agent.` ) } + launch.receipt = reusedWorkerLaunchReceipt(runtime, launch.receipt, { + address: terminalHandle, + terminalHandle, + orcaSessionId: null + }) effects.push({ kind: 'terminal', role: 'agent', diff --git a/src/main/runtime/orchestration/mailbox/senders/orchestration-sender-name.ts b/src/main/runtime/orchestration/mailbox/senders/orchestration-sender-name.ts index 52bcf492372..647e5a21acc 100644 --- a/src/main/runtime/orchestration/mailbox/senders/orchestration-sender-name.ts +++ b/src/main/runtime/orchestration/mailbox/senders/orchestration-sender-name.ts @@ -252,12 +252,16 @@ function observedTaskName( return task?.display_name || task?.task_title || null } +export function liveSenderAgent(observation: SenderObservation): AgentType | null { + return observation.chat?.agent || observation.terminal?.agent || null +} + /** Current live kind wins; exact durable dispatch knowledge survives loss of live observations. */ export function orchestrationSenderAgent( sources: Pick, observation: SenderObservation ): AgentType | null { - const live = observation.chat?.agent || observation.terminal?.agent + const live = liveSenderAgent(observation) if (live) { return live } diff --git a/src/main/runtime/orchestration/mailbox/senders/runtime-orchestration-sender-names.ts b/src/main/runtime/orchestration/mailbox/senders/runtime-orchestration-sender-names.ts index 3a343377bc9..468e0bde791 100644 --- a/src/main/runtime/orchestration/mailbox/senders/runtime-orchestration-sender-names.ts +++ b/src/main/runtime/orchestration/mailbox/senders/runtime-orchestration-sender-names.ts @@ -12,6 +12,8 @@ import { structuredAgentSessionIdFromTabId } from '../../../../../shared/agent-s import type { TerminalTab } from '../../../../../shared/workspace-layout/terminal-tab-types' import type { OrchestrationDb } from '../../db/orchestration-db' import { + liveSenderAgent, + observeOrchestrationSender, orchestrationSenderName, structuredChatNaming, captureMirroredTabs, @@ -93,6 +95,11 @@ export class RuntimeOrchestrationSenderNames { ) } + /** The agent a chat or terminal party is running now, as its sender card would show it. */ + liveAgentOf(party: AgentMessageSender['party']): AgentType | null { + return liveSenderAgent(observeOrchestrationSender(party, this.namingSources())) + } + /** Name and agent share one current chat or terminal observation. */ snapshotOf(party: AgentMessageSender['party'], reportedDispatchId?: string) { return observeSenderSnapshot(party, this.namingSources(), reportedDispatchId) diff --git a/src/main/runtime/orchestration/workers/turn-stops/failed-worker-start-report.ts b/src/main/runtime/orchestration/workers/turn-stops/failed-worker-start-report.ts index 4b2fbfc7335..f9d21e1c70e 100644 --- a/src/main/runtime/orchestration/workers/turn-stops/failed-worker-start-report.ts +++ b/src/main/runtime/orchestration/workers/turn-stops/failed-worker-start-report.ts @@ -1,5 +1,5 @@ import type { OrchestrationDb } from '../../db/orchestration-db' -import type { WorkerDispatchRow } from '../../db/orchestration-records' +import type { DispatchContextRow, WorkerDispatchRow } from '../../db/orchestration-records' import { reportWorkerTurnStop } from './worker-turn-stop-report' /** What a failed start left behind, as its residual resources name it. */ @@ -28,6 +28,32 @@ function describeLeftover(residualResources: string): string | undefined { return described.length > 0 ? described.join(', ') : undefined } +function reusesTerminal(worker: WorkerDispatchRow): boolean { + try { + const options: unknown = JSON.parse(worker.start_options) + return ( + typeof options === 'object' && options !== null && 'terminal' in options && !!options.terminal + ) + } catch { + return false + } +} + +/** A start that failed after its terminal opened still has output to read; a local reuse start + * that failed before binding never ran in the terminal it named. Federated rows never bind here. */ +export function failedWorkerStartHasOutput( + db: OrchestrationDb, + worker: WorkerDispatchRow, + dispatch: DispatchContextRow | undefined +): boolean { + const unboundReuse = + reusesTerminal(worker) && + !dispatch?.assignee_handle && + !dispatch?.assignee_orca_session_id && + !db.getFederatedDispatch(worker.dispatch_id) + return Boolean(worker.agent_terminal_handle || dispatch?.assignee_handle) && !unboundReuse +} + /** A failed start leaves its task unowned, and the caller may never have read the start's receipt. */ export function reportFailedWorkerStart( db: OrchestrationDb, @@ -51,8 +77,7 @@ export function reportFailedWorkerStart( cause: `it never started: ${worker.last_error ?? 'its start failed'}`, lastOutput: undefined, leftover: describeLeftover(worker.residual_resources), - // A start that failed after its terminal opened still has output to read. - ...(worker.agent_terminal_handle || dispatch.assignee_handle ? {} : { neverStarted: true }), + ...(failedWorkerStartHasOutput(db, worker, dispatch) ? {} : { neverStarted: true }), ...(settled ? { settled } : {}) }, { getDb: () => db, isWaitingForMail: () => false, notify } diff --git a/src/main/runtime/repositories/runtime-project-group-controller.ts b/src/main/runtime/repositories/runtime-project-group-controller.ts index d71a0ab0ee1..5c4ae0768fe 100644 --- a/src/main/runtime/repositories/runtime-project-group-controller.ts +++ b/src/main/runtime/repositories/runtime-project-group-controller.ts @@ -71,7 +71,8 @@ export class RuntimeProjectGroupController { throw new Error('folder_workspace_project_group_not_found') } const checked = await new RuntimeRepositoryHooksCommands({ - resolveRepo: async () => owner + resolveRepo: async () => owner, + readCreateSourceHooks: async () => undefined }).checkRepoHooks(groupId, options) return { ...checked, diff --git a/src/main/runtime/repositories/runtime-repository-hooks-commands.ts b/src/main/runtime/repositories/runtime-repository-hooks-commands.ts index c5f9058eba0..f2670dcf1e5 100644 --- a/src/main/runtime/repositories/runtime-repository-hooks-commands.ts +++ b/src/main/runtime/repositories/runtime-repository-hooks-commands.ts @@ -19,13 +19,18 @@ import { inspectSetupScriptImportCandidates } from '../../../shared/workspace-se import { joinWorktreeRelativePath } from '../files/paths/runtime-relative-paths' import { blockedWslDistroForPath } from '../../wsl/filesystem/wsl-unc-access-gate' import { hashOrcaHookTrustContent } from '../../workspace-hooks/created-worktree-setup-trust' +import type { SetupHooksCreateSource } from '../../../shared/worktree/setup-hooks-create-source' -type RuntimeRepositoryHooksCommandsDeps = { - resolveRepo: (selector: string) => Promise +type RuntimeRepositoryHooksCommandsDeps = { + resolveRepo: (selector: string) => Promise + readCreateSourceHooks: ( + repo: TRepo, + source: SetupHooksCreateSource + ) => Promise<{ hooks: OrcaHooks | null } | undefined> } -export class RuntimeRepositoryHooksCommands { - constructor(private readonly deps: RuntimeRepositoryHooksCommandsDeps) {} +export class RuntimeRepositoryHooksCommands { + constructor(private readonly deps: RuntimeRepositoryHooksCommandsDeps) {} async getRepoHooks(repoSelector: string) { const repo = await this.deps.resolveRepo(repoSelector) @@ -60,7 +65,10 @@ export class RuntimeRepositoryHooksCommands { } } - async checkRepoHooks(repoSelector: string, options: { background?: boolean } = {}) { + async checkRepoHooks( + repoSelector: string, + options: { background?: boolean; createSource?: SetupHooksCreateSource } = {} + ) { const repo = await this.deps.resolveRepo(repoSelector) if (isFolderRepo(repo) && !isRepoOnCatalogHost(repo)) { return { status: 'ok' as const, hasHooks: false, hooks: null, mayNeedUpdate: false } @@ -83,6 +91,17 @@ export class RuntimeRepositoryHooksCommands { : ('wsl-distro-unverifiable' as const) } } + if (options.createSource && !options.background) { + const created = await this.deps.readCreateSourceHooks(repo, options.createSource) + if (created) { + return { + status: 'ok' as const, + hasHooks: created.hooks !== null, + hooks: created.hooks, + mayNeedUpdate: false + } + } + } const has = hasHooksFile(repo.path) const hooks = scopeHooksToRepoKind(repo, has ? loadHooks(repo.path) : null) return { diff --git a/src/main/runtime/rpc/methods/orchestration/worker/start/failed-worker-start-report.test.ts b/src/main/runtime/rpc/methods/orchestration/worker/start/failed-worker-start-report.test.ts index 3edacf8f406..ba0dceae158 100644 --- a/src/main/runtime/rpc/methods/orchestration/worker/start/failed-worker-start-report.test.ts +++ b/src/main/runtime/rpc/methods/orchestration/worker/start/failed-worker-start-report.test.ts @@ -26,4 +26,57 @@ describe('a worker-start that fails', () => { ) expect(mail[0]?.body).not.toContain('still open') }) + + it('names the agent already running in a reused terminal when the start never binds', async () => { + h.setup() + vi.spyOn(h.runtime.orchestrationSenderNames, 'liveAgentOf').mockImplementation((party) => + party.terminalHandle === 'term_reused' ? 'claude' : null + ) + vi.spyOn(h.runtime, 'waitForTerminal').mockResolvedValue({ + handle: 'term_reused', + condition: 'tui-idle', + satisfied: false, + status: 'running', + exitCode: null + }) + const task = h.db.createTask({ spec: 'follow up on the PR', runId: h.activeRunId }) + const receipt = await h.call('orchestration.workerStart', { + task: task.id, + from: 'term_coord', + terminal: 'term_reused' + }) + expect(receipt).toMatchObject({ state: 'failed', failedStage: 'agent_readiness' }) + + const [lost] = h.db.getUnreadRunMailbox(h.activeRunId, 100, ['escalation']) + expect(lost?.from_handle).toMatch(/^dispatch:/) + expect(h.runtime.orchestrationSenderNames.sender(lost!.from_handle).agent).toBe('claude') + }) + + it('treats a reuse start that failed before binding as never started', async () => { + h.setup() + vi.spyOn(h.runtime, 'waitForTerminal').mockResolvedValue({ + handle: 'term_reused', + condition: 'tui-idle', + satisfied: false, + status: 'running', + exitCode: null + }) + const task = h.db.createTask({ spec: 'follow up on the PR', runId: h.activeRunId }) + const receipt = await h.call('orchestration.workerStart', { + task: task.id, + from: 'term_coord', + terminal: 'term_reused' + }) + expect(receipt).toMatchObject({ state: 'failed' }) + const dispatchId = h.db.getDispatchContext(task.id)?.id + + const [lost] = h.db.getUnreadRunMailbox(h.activeRunId, 100, ['escalation']) + expect(lost?.body).not.toContain('worker-read') + await expect( + h.call('orchestration.workerRead', { dispatch: dispatchId }) + ).rejects.toMatchObject({ + code: 'worker_never_started', + message: expect.stringContaining('never started: Agent did not become ready') + }) + }) }) diff --git a/src/main/runtime/rpc/methods/orchestration/worker/start/launch/worker-launch-preferences.ts b/src/main/runtime/rpc/methods/orchestration/worker/start/launch/worker-launch-preferences.ts index 71b4a7a77c2..a64d7b36e91 100644 --- a/src/main/runtime/rpc/methods/orchestration/worker/start/launch/worker-launch-preferences.ts +++ b/src/main/runtime/rpc/methods/orchestration/worker/start/launch/worker-launch-preferences.ts @@ -2,6 +2,9 @@ import type { AgentLaunchPreferences } from '../../../../../../../../shared/agen import { checkAgentLaunchModelPreferences } from '../../../../../../../../shared/agent-launch/choices/agent-launch-model-preferences' import { ORCHESTRATION_WORKER_LAUNCH_PREFERENCES_RUNTIME_CAPABILITY } from '../../../../../../../../shared/orchestration/orchestration-runtime-capabilities' import type { TuiAgent } from '../../../../../../../../shared/agent-launch/catalog/tui-agent' +import { isTuiAgent } from '../../../../../../../../shared/agent-launch/catalog/tui-agent-config' +import type { OrcaRuntimeService } from '../../../../../../orca-runtime' +import type { AgentMessageSender } from '../../../../../../../../shared/agent-session/agent-session-message-source' import { OrchestrationError } from '../../../../../../orchestration/orchestration-error' export type OrchestrationWorkerLaunchSelection = { @@ -28,6 +31,25 @@ export function createWorkerLaunchReceipt(args: { return { requested: selection, effective: { ...selection } } } +/** A reuse start launches nothing; the agent already running there is its effective agent, so + * mail from a start that never binds still names it. */ +export function reusedWorkerLaunchReceipt( + runtime: Pick, + receipt: OrchestrationWorkerLaunchReceipt, + party: AgentMessageSender['party'] +): OrchestrationWorkerLaunchReceipt { + if (receipt.effective?.agent) { + return receipt + } + const running = runtime.orchestrationSenderNames.liveAgentOf(party) + return isTuiAgent(running) + ? { + ...receipt, + effective: { ...(receipt.effective ?? receipt.requested), agent: running } + } + : receipt +} + export function createPendingWorkerLaunchReceipt(args: { agent: TuiAgent | null model?: string diff --git a/src/main/runtime/rpc/methods/orchestration/worker/start/local-worker-start-dispatch.ts b/src/main/runtime/rpc/methods/orchestration/worker/start/local-worker-start-dispatch.ts index dc8832e6b4c..5a8cdea62d6 100644 --- a/src/main/runtime/rpc/methods/orchestration/worker/start/local-worker-start-dispatch.ts +++ b/src/main/runtime/rpc/methods/orchestration/worker/start/local-worker-start-dispatch.ts @@ -1,6 +1,10 @@ import type { TuiAgent } from '../../../../../../../shared/agent-launch/catalog/tui-agent' import type { AgentLaunchModeReceipt as WorkerStartModeReceipt } from '../../../../../../../shared/agent-launch/contracts/agent-launch-intent' -import type { OrchestrationWorkerLaunchReceipt } from './launch/worker-launch-preferences' +import { + reusedWorkerLaunchReceipt, + type OrchestrationWorkerLaunchReceipt +} from './launch/worker-launch-preferences' +import { resolveDispatchAssigneeParty } from '../../../../../orchestration/addressing/orchestration-party' import type { WorkerStartInput } from './worker-start-input' import type { RunRow } from '../../../../../orchestration/db/orchestration-records' import type { startLocalWorker } from './local-worker-start' @@ -49,7 +53,14 @@ export function createLocalWorkerStartDispatch( baseBranch: params.baseBranch ?? null, terminal: params.terminal ?? null, agent: agent ?? null, - launch: launchReceipt, + // Mail from a reuse start that never binds still names the agent already running there. + launch: params.terminal + ? reusedWorkerLaunchReceipt( + runtime, + launchReceipt, + resolveDispatchAssigneeParty(params.terminal, db) + ) + : launchReceipt, timeoutMs: params.timeoutMs ?? 60_000, setup: createsWorktree ? (params.setup ?? 'run') : 'not_applicable', setupSource: createsWorktree diff --git a/src/main/runtime/rpc/methods/orchestration/worker/worker-control.ts b/src/main/runtime/rpc/methods/orchestration/worker/worker-control.ts index 9ea94c34645..71ba02a4de5 100644 --- a/src/main/runtime/rpc/methods/orchestration/worker/worker-control.ts +++ b/src/main/runtime/rpc/methods/orchestration/worker/worker-control.ts @@ -18,6 +18,7 @@ import { sessionIdFromStructuredWorkerIncarnation } from '../../../../orchestrat import { readExactWorkerOutput } from './output/worker-output' import { exposeWorkerTerminalResource } from './release/worker-terminal-resource-presentation' import { liveWorkerTerminalAutoReleaseAt } from '../../../../orchestration/terminal-authority/release/worker-terminal-ownership' +import { failedWorkerStartHasOutput } from '../../../../orchestration/workers/turn-stops/failed-worker-start-report' import { readFederatedWorkerOutput } from '../../../../orchestration/legacy-remote-home/federated-worker-read' import { showFederatedWorker } from '../../../../orchestration/legacy-remote-home/federated-worker-show' import { @@ -93,8 +94,8 @@ export const ORCHESTRATION_WORKER_CONTROL_METHODS = [ const dispatch = db.getDispatchContextById(params.dispatch) const worker = db.getWorkerDispatch(params.dispatch) const terminalHandle = worker?.agent_terminal_handle ?? dispatch?.assignee_handle - // A start that never got a terminal has only its failure, on any host. - if (worker?.state === 'failed' && !terminalHandle) { + // A start that never ran in a terminal has only its failure, on any host. + if (worker?.state === 'failed' && !failedWorkerStartHasOutput(db, worker, dispatch)) { throw new OrchestrationError( 'worker_never_started', `Worker Dispatch ${params.dispatch} never started: ${worker.last_error ?? 'its start failed'}` diff --git a/src/main/runtime/rpc/methods/projects/repo.ts b/src/main/runtime/rpc/methods/projects/repo.ts index 21672047b84..da9c4181b46 100644 --- a/src/main/runtime/rpc/methods/projects/repo.ts +++ b/src/main/runtime/rpc/methods/projects/repo.ts @@ -233,7 +233,10 @@ export const REPO_METHODS = [ permission: 'workspace', params: RepoHooksCheck, handler: async (params, { runtime }) => - runtime.checkRepoHooks(params.repo, { background: repoHooksCheckIsBackground(params) }) + runtime.checkRepoHooks(params.repo, { + background: repoHooksCheckIsBackground(params), + createSource: params.createSource + }) }), defineMethod({ name: 'repo.setupScriptImports', diff --git a/src/main/runtime/terminal/input/terminal-agent-prompt-render.ts b/src/main/runtime/terminal/input/terminal-agent-prompt-render.ts index 92bc15fe592..8e3fcf077dd 100644 --- a/src/main/runtime/terminal/input/terminal-agent-prompt-render.ts +++ b/src/main/runtime/terminal/input/terminal-agent-prompt-render.ts @@ -197,6 +197,7 @@ export abstract class OrcaRuntimeWithCreateAgentPromptRenderGate extends OrcaRun timeoutMs?: number signal?: AbortSignal launchReadiness?: boolean + acceptsMidTurnInput?: boolean } ): Promise { // Switch point: a saved pane main holds with no terminal yet starts first (once, shared). diff --git a/src/main/runtime/terminal/wait/launched-agent-composer-readiness.ts b/src/main/runtime/terminal/wait/launched-agent-composer-readiness.ts index ca2c71375d9..3008d1cad24 100644 --- a/src/main/runtime/terminal/wait/launched-agent-composer-readiness.ts +++ b/src/main/runtime/terminal/wait/launched-agent-composer-readiness.ts @@ -225,7 +225,12 @@ export async function waitForWorkerAgentReady( ? waitWatchingForAgentExit(runtime, handle, agent, args.creation, undefined, (signal) => waitForWorkerStartComposer(runtime, handle, agent, args.timeoutMs, signal) ) - : runtime.waitForTerminal(handle, { condition: 'tui-idle', timeoutMs: args.timeoutMs })) + : // A reused pane's agent queues or steers a task sent mid-turn, as it does mail. + runtime.waitForTerminal(handle, { + condition: 'tui-idle', + timeoutMs: args.timeoutMs, + acceptsMidTurnInput: true + })) return args.reusesTerminal ? result : requireFreshReadiness(runtime, handle, args.creation, result) diff --git a/src/main/runtime/terminal/wait/reused-agent-mid-turn-readiness.test.ts b/src/main/runtime/terminal/wait/reused-agent-mid-turn-readiness.test.ts new file mode 100644 index 00000000000..c4ba4f86762 --- /dev/null +++ b/src/main/runtime/terminal/wait/reused-agent-mid-turn-readiness.test.ts @@ -0,0 +1,37 @@ +import { afterEach, describe, expect, it, vi } from 'vitest' +import { createTranscriptPane } from '../../orca-runtime-tests/agent-transcript-pane-test-harness' +import { waitForWorkerAgentReady } from './launched-agent-composer-readiness' + +vi.mock('electron', () => ({ + BrowserWindow: { fromId: vi.fn(() => null) }, + webContents: { fromId: vi.fn(() => null) }, + ipcMain: { on: vi.fn(), removeListener: vi.fn() }, + app: { getPath: vi.fn(() => '/tmp') } +})) + +describe('a worker start reusing a pane whose agent is mid-turn', () => { + afterEach(() => { + vi.restoreAllMocks() + }) + + // Claude's spinner title while a turn runs. + function midTurnClaudePane() { + return createTranscriptPane({ + paneTitle: 'Terminal', + foregroundProcess: 'claude', + data: '\x1b]0;⠂ Watch PR checks\x07✻ Running gh pr checks --watch…\r\n', + launchAgent: 'claude' + }) + } + + it('is ready at once, since the agent queues a task sent mid-turn', async () => { + const pane = await midTurnClaudePane() + await expect( + waitForWorkerAgentReady(pane.runtime, pane.handle, { + agent: undefined, + reusesTerminal: true, + timeoutMs: 150 + }) + ).resolves.toMatchObject({ satisfied: true }) + }) +}) diff --git a/src/main/runtime/terminal/wait/terminal-delivery-refusal.ts b/src/main/runtime/terminal/wait/terminal-delivery-refusal.ts index 5750a2ec1d1..56e194d187a 100644 --- a/src/main/runtime/terminal/wait/terminal-delivery-refusal.ts +++ b/src/main/runtime/terminal/wait/terminal-delivery-refusal.ts @@ -1,5 +1,6 @@ import type { MailboxDeliveryHold } from '../../orchestration/mailbox/delivery-hold/mailbox-delivery-hold' import { isTuiIdleReadyVerdict, type TuiIdleVerdict } from './tui-idle-evidence' +import type { TuiIdleEvidenceSource } from './tui-idle-evidence-source' /** Why pointer plus Enter would not be typed into a settled-looking worker terminal now (dialogs and * drafts are checked first); null means it would. Takes the waits' readiness ranking plus a working @@ -26,3 +27,12 @@ export function terminalDeliveryRefusal(input: { ? { kind: 'blocked', reason: verdict.reason } : { kind: 'unsettled' } } + +/** A wait that accepts mid-turn input settles on a working agent exactly where mail would be typed in. */ +export function settlesForMidTurnInput( + verdict: TuiIdleVerdict, + ptyId: string, + source: Pick +): boolean { + return verdict.kind === 'working' && source.isSettledForDelivery?.(ptyId) === true +} diff --git a/src/main/runtime/terminal/wait/terminal-idle-polls.ts b/src/main/runtime/terminal/wait/terminal-idle-polls.ts index b460abb4897..511a3039da5 100644 --- a/src/main/runtime/terminal/wait/terminal-idle-polls.ts +++ b/src/main/runtime/terminal/wait/terminal-idle-polls.ts @@ -9,6 +9,7 @@ import { buildPtyTerminalWaitResult } from './terminal-wait-results' import { buildTerminalWaitText } from './terminal-wait-tail-state' +import { settlesForMidTurnInput } from './terminal-delivery-refusal' import { evaluateTuiIdle, type QuietForegroundLane, type TuiIdleVerdict } from './tui-idle-evidence' import { outputClockOf, @@ -56,6 +57,8 @@ type IdlePollEntry = { /** One reading of a waiter's pane, and the results it would settle with. */ type IdlePollSample = { verdict: TuiIdleVerdict + /** A mid-turn agent that takes input settles a waiter that accepts it. */ + takesInputNow: boolean ptyId: string ready(): RuntimeTerminalWait blocked(reason: RuntimeTerminalWaitBlockedReason): RuntimeTerminalWait @@ -116,11 +119,12 @@ export class RuntimeTerminalIdlePolls { const { pty } = entry const readWaitText = () => buildTerminalWaitText(pty.tailBuffer, pty.tailPartialLine, pty.preview) + const evidence = ptyTuiIdleEvidence(this.deps, pty, readWaitText) + const verdict = evaluateTuiIdle({ ...evidence, launchReadiness: entry.waiter.launchReadiness }) return { - verdict: evaluateTuiIdle({ - ...ptyTuiIdleEvidence(this.deps, pty, readWaitText), - launchReadiness: entry.waiter.launchReadiness - }), + verdict, + takesInputNow: + !!entry.waiter.acceptsMidTurnInput && settlesForMidTurnInput(verdict, pty.ptyId, this.deps), ptyId: pty.ptyId, ready: () => buildPtyTerminalWaitResult(handle, 'tui-idle', pty), blocked: (reason) => buildPtyTerminalWaitBlockedResult(handle, 'tui-idle', pty, reason), @@ -144,7 +148,7 @@ export class RuntimeTerminalIdlePolls { return } // Strong readiness outranks unscoped dialog wording elsewhere on the screen. - if (verdict.kind === 'ready-strong') { + if (verdict.kind === 'ready-strong' || sample.takesInputNow) { this.settle(entry, sample.ready()) return } diff --git a/src/main/runtime/terminal/wait/terminal-wait-settlements.ts b/src/main/runtime/terminal/wait/terminal-wait-settlements.ts index f94565d90a0..83e2748f8bd 100644 --- a/src/main/runtime/terminal/wait/terminal-wait-settlements.ts +++ b/src/main/runtime/terminal/wait/terminal-wait-settlements.ts @@ -8,8 +8,8 @@ import { import type { AgentStatus } from '../../../../shared/agent-status/title/agent-title-core' import { detectExplicitIdleStatusFromTitle } from './terminal-wait-detection' import { buildTerminalWaitText } from './terminal-wait-tail-state' -import { evaluateTuiIdle, type TuiIdleVerdict } from './tui-idle-evidence' -import { terminalDeliveryRefusal } from './terminal-delivery-refusal' +import { evaluateTuiIdle } from './tui-idle-evidence' +import { settlesForMidTurnInput, terminalDeliveryRefusal } from './terminal-delivery-refusal' import { ptyTuiIdleEvidence } from './tui-idle-evidence-source' import { TUI_IDLE_QUIESCENCE_MS } from './terminal-idle-policy' import { USER_INPUT_HOLD_CAP_MS } from './claude-open-dialog-hold' @@ -44,14 +44,21 @@ export abstract class OrcaRuntimeWithResolveExitWaiters extends OrcaRuntimeWithB return } // Re-rank titles: weak readiness cannot see tail-truncated dialogs and must wait for a rendered-screen poll. - const verdict = this.evaluateTuiIdleForPty(pty) + const evidence = ptyTuiIdleEvidence(this.tuiIdleEvidenceSource, pty, () => + buildTerminalWaitText(pty.tailBuffer, pty.tailPartialLine, pty.preview) + ) + const verdict = evaluateTuiIdle(evidence) for (const waiter of waiters) { if (verdict.kind === 'blocked') { this.terminalWaiters.resolve( waiter, buildPtyTerminalWaitBlockedResult(waiter.handle, 'tui-idle', pty, verdict.reason) ) - } else if (verdict.kind === 'ready-strong') { + } else if ( + verdict.kind === 'ready-strong' || + (waiter.acceptsMidTurnInput && + settlesForMidTurnInput(verdict, ptyId, this.tuiIdleEvidenceSource)) + ) { this.terminalWaiters.resolve( waiter, buildPtyTerminalWaitResult(waiter.handle, 'tui-idle', pty) @@ -193,14 +200,6 @@ export abstract class OrcaRuntimeWithResolveExitWaiters extends OrcaRuntimeWithB : !!readTerminalComposerTypedText(context) } - protected evaluateTuiIdleForPty(pty: RuntimePtyWorktreeRecord): TuiIdleVerdict { - return evaluateTuiIdle( - ptyTuiIdleEvidence(this.tuiIdleEvidenceSource, pty, () => - buildTerminalWaitText(pty.tailBuffer, pty.tailPartialLine, pty.preview) - ) - ) - } - protected getAdoptedPtyExplicitIdleStatus(pty: RuntimePtyWorktreeRecord): AgentStatus | null { const title = pty.lastOscTitle ?? this.getAdoptedPtyTitle(pty) return title ? detectExplicitIdleStatusFromTitle(title) : null diff --git a/src/main/runtime/terminal/wait/terminal-wait.ts b/src/main/runtime/terminal/wait/terminal-wait.ts index f26b02f37bd..2d23683b961 100644 --- a/src/main/runtime/terminal/wait/terminal-wait.ts +++ b/src/main/runtime/terminal/wait/terminal-wait.ts @@ -12,6 +12,7 @@ import { readsTrustedScreen } from '../../agent-state-rules/agent-state-rules-en import { showsScreenProbeBanner } from '../../agent-state-rules/agent-state-text-anchors' import { buildTerminalWaitText } from './terminal-wait-tail-state' import { evaluateTuiIdle, type TuiIdleVerdict } from './tui-idle-evidence' +import { settlesForMidTurnInput } from './terminal-delivery-refusal' import { outputClockOf, ptyTuiIdleEvidence, @@ -61,8 +62,19 @@ export class RuntimeTerminalWait { ) {} /** Why one helper: the immediate check and the poll must rank the same terminal the same way. */ - private evaluate(pty: RuntimePtyWorktreeRecord, waitText: string): TuiIdleVerdict { - return evaluateTuiIdle(ptyTuiIdleEvidence(this.deps, pty, () => waitText)) + private evaluate( + pty: RuntimePtyWorktreeRecord, + waitText: string, + acceptsMidTurnInput: boolean | undefined + ): { verdict: TuiIdleVerdict; ready: boolean } { + const evidence = ptyTuiIdleEvidence(this.deps, pty, () => waitText) + const verdict = evaluateTuiIdle(evidence) + return { + verdict, + ready: + verdict.kind === 'ready-strong' || + (!!acceptsMidTurnInput && settlesForMidTurnInput(verdict, pty.ptyId, this.deps)) + } } async wait( @@ -73,6 +85,8 @@ export class RuntimeTerminalWait { signal?: AbortSignal /** Main-internal, never on the wire: see `TerminalWaiter.launchReadiness`. */ launchReadiness?: boolean + /** Main-internal, never on the wire: see `TerminalWaiter.acceptsMidTurnInput`. */ + acceptsMidTurnInput?: boolean } ): Promise { const condition = options?.condition ?? 'exit' @@ -85,11 +99,13 @@ export class RuntimeTerminalWait { } const waitText = buildTerminalWaitText(pty.tailBuffer, pty.tailPartialLine, pty.preview) // Only strong verdicts settle synchronously; weak evidence needs the poll's rendered-screen check. - const verdict = condition === 'tui-idle' ? this.evaluate(pty, waitText) : null + const ranked = + condition === 'tui-idle' ? this.evaluate(pty, waitText, options?.acceptsMidTurnInput) : null + const verdict = ranked?.verdict ?? null if (verdict?.kind === 'blocked') { return buildPtyTerminalWaitBlockedResult(handle, condition, pty, verdict.reason) } - if (verdict?.kind === 'ready-strong') { + if (ranked?.ready) { return buildPtyTerminalWaitResult(handle, condition, pty) } return await new Promise((resolve, reject) => { @@ -109,7 +125,8 @@ export class RuntimeTerminalWait { timeout: null, cancelIdlePoll: null, abortCleanup: null, - ...(options?.launchReadiness ? { launchReadiness: true } : {}) + ...(options?.launchReadiness ? { launchReadiness: true } : {}), + ...(options?.acceptsMidTurnInput ? { acceptsMidTurnInput: true } : {}) } if (!this.waiters.bindAbort(waiter, options?.signal)) { reject(new Error('request_aborted')) diff --git a/src/main/runtime/terminal/wait/terminal-waiter.ts b/src/main/runtime/terminal/wait/terminal-waiter.ts index a56e2e72752..addf226cad6 100644 --- a/src/main/runtime/terminal/wait/terminal-waiter.ts +++ b/src/main/runtime/terminal/wait/terminal-waiter.ts @@ -16,4 +16,6 @@ export type TerminalWaiter = { abortCleanup: (() => void) | null /** Main-only launch-readiness wait: name-only titles require quiet output (TuiIdleEvaluationInput.launchReadiness). */ launchReadiness?: boolean + /** Main-only: a recognized agent mid-turn settles it, as mail delivery treats one (`settlesForMidTurnInput`). */ + acceptsMidTurnInput?: boolean } diff --git a/src/main/runtime/terminal/wait/tui-idle-evidence-source.ts b/src/main/runtime/terminal/wait/tui-idle-evidence-source.ts index 1b386ed39a4..06035d8dcde 100644 --- a/src/main/runtime/terminal/wait/tui-idle-evidence-source.ts +++ b/src/main/runtime/terminal/wait/tui-idle-evidence-source.ts @@ -35,6 +35,8 @@ export type TuiIdleEvidenceSource = { readRuledScreen?(ptyId: string | null | undefined): RuledScreen | null /** The PTY's quiet clock: its last output, else when main began receiving its silent stream. */ getOutputClockAt?(ptyId: string | null | undefined): number | null + /** Whether mail delivery would type into this pane now (drafts, prompts and overlays hold it). */ + isSettledForDelivery?(ptyId: string): boolean } /** One clock per terminal, read by ptyId. */ diff --git a/src/main/runtime/workspaces/catalog/runtime-workspace-change-events.ts b/src/main/runtime/workspaces/catalog/runtime-workspace-change-events.ts index 90226e7b05e..9169085e2f3 100644 --- a/src/main/runtime/workspaces/catalog/runtime-workspace-change-events.ts +++ b/src/main/runtime/workspaces/catalog/runtime-workspace-change-events.ts @@ -69,6 +69,7 @@ export abstract class RuntimeWorkspaceChangeEvents extends NativeChatLaunchDraft /** The cleanup runner finished a run on this host; clients may toast. */ notifyWorkspaceCleanupRunFinished(run: WorkspaceCleanupRunFinishedEvent['run']): void { + this.notifier?.workspaceCleanupRunFinished?.(run) this.emitClientEvent({ type: 'workspaceCleanupRunFinished', run }) } } diff --git a/src/main/startup/main-process-observers.ts b/src/main/startup/main-process-observers.ts index 9ed997eaff7..5b9e69bce58 100644 --- a/src/main/startup/main-process-observers.ts +++ b/src/main/startup/main-process-observers.ts @@ -16,6 +16,7 @@ import { setCodexTrustGrantTelemetry } from '../codex/trust/grants/codex-trust-g import { initObservability } from '../observability/index' import { recordDurableCrashBreadcrumb } from '../crash-reporting/breadcrumbs/durable-crash-breadcrumb' import { reportPreviousHangDetection } from '../hang-watchdog/previous-hang-detection' +import type { NativeHangTelemetry } from '../hang-watchdog/previous-native-hang-telemetry' import { getCanonicalUserDataPath } from '../persistence/loading-store/user-data-path' import { recoverPendingSkillTransactions } from '../skills/transaction-state/skill-transaction-startup-recovery' import { initCohortClassifier } from '../telemetry/cohort-classifier' @@ -113,10 +114,23 @@ export function initializeMainProcessObservers(): void { }) state.hangDetection = reportPreviousHangDetection(getCanonicalUserDataPath()) if (state.hangDetection) { - track('main_thread_hang_detected', { - unresponsive_ms: Math.round(state.hangDetection.unresponsiveMs), - self_recovered: state.hangDetection.selfRecovered - }) + const marker = state.hangDetection + const report = (details: NativeHangTelemetry): void => { + track('main_thread_hang_detected', { + unresponsive_ms: Math.round(marker.unresponsiveMs), + self_recovered: marker.selfRecovered, + ...details + }) + } + if (process.platform === 'darwin') { + void import('../hang-watchdog/previous-native-hang-telemetry') + .then(({ readPreviousNativeHangTelemetry }) => + readPreviousNativeHangTelemetry(getCanonicalUserDataPath(), marker) + ) + .then(report, () => report({})) + } else { + report({}) + } } state.skillTransactionRecovery = recoverPendingSkillTransactions( join(app.getPath('userData'), 'skill-installs') diff --git a/src/main/startup/main-process-ready-foundation.ts b/src/main/startup/main-process-ready-foundation.ts index 354f4df927b..839ed16b4c6 100644 --- a/src/main/startup/main-process-ready-foundation.ts +++ b/src/main/startup/main-process-ready-foundation.ts @@ -88,7 +88,7 @@ export async function initializeReadyFoundation(): Promise { }) const canonicalUserDataPath = getCanonicalUserDataPath() preservePreviousHangDetection(canonicalUserDataPath) - installMainThreadHangWatchdog({ userDataPath: canonicalUserDataPath }) + const hangWatchdog = installMainThreadHangWatchdog({ userDataPath: canonicalUserDataPath }) // Install certificate decisions before any webview/headless window can issue TLS. app.on( 'certificate-error', @@ -174,6 +174,7 @@ export async function initializeReadyFoundation(): Promise { } const store = profileState.store state.store = store + hangWatchdog?.setMenuBarIconSetting(store.getSettings().showMenuBarIcon !== false) // SSH users keep ssh2 loaded before interactive use, as before #35731; others load it on first connect. if (store.getSshTargets().length > 0) { preloadSsh2() @@ -271,6 +272,7 @@ export async function initializeReadyFoundation(): Promise { void switchBrowserExtensionSupport(settings.browserExtensionsEnabled !== false) } if ('showMenuBarIcon' in updates) { + hangWatchdog?.setMenuBarIconSetting(settings.showMenuBarIcon !== false) // Store owns settings mutations; sync every menu-bar toggle through this listener. syncMacMenuBarIcon(settings.showMenuBarIcon !== false) } diff --git a/src/main/window/runtime-window-lifecycle.ts b/src/main/window/runtime-window-lifecycle.ts index 22c9b64e9ef..f1bc293bfc6 100644 --- a/src/main/window/runtime-window-lifecycle.ts +++ b/src/main/window/runtime-window-lifecycle.ts @@ -52,6 +52,7 @@ export function registerRuntimeWindowLifecycle( reposChanged: () => send('repos:changed'), browserProfilesChanged: () => send('browser:session:profilesChanged'), automationsChanged: (payload) => send('automations:changed', payload), + workspaceCleanupRunFinished: (run) => send('workspaceCleanup:runFinished', run), activateWorktree: ( repoId, worktreeId, diff --git a/src/main/workspace-hooks/create-source-setup-hooks-real-git.test.ts b/src/main/workspace-hooks/create-source-setup-hooks-real-git.test.ts new file mode 100644 index 00000000000..56dc35be59b --- /dev/null +++ b/src/main/workspace-hooks/create-source-setup-hooks-real-git.test.ts @@ -0,0 +1,75 @@ +import { mkdtemp, rm, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterEach, expect, it } from 'vitest' +import type { Repo } from '../../shared/repo-types' +import { gitExecFileAsync } from '../git/command-runner/git-exec-file' +import { RuntimeRemoteFetchController } from '../runtime/repositories/runtime-remote-fetch-controller' +import { readCreateSourceSetupHooks } from './create-source-setup-hooks' + +const roots: string[] = [] +afterEach(async () => { + await Promise.all(roots.splice(0).map((root) => rm(root, { recursive: true, force: true }))) +}) + +const commitArgs = ['-c', 'user.name=Test', '-c', 'user.email=test@example.com'] + +async function git(cwd: string, ...args: string[]): Promise { + await gitExecFileAsync(args, { cwd }) +} + +async function commitOrcaYaml(cwd: string, setupLine: string, eol = '\n'): Promise { + const yaml = ['scripts:', ' setup: |', ` ${setupLine}`, ''].join(eol) + await writeFile(join(cwd, 'orca.yaml'), yaml) + await git(cwd, 'add', 'orca.yaml') + await git(cwd, ...commitArgs, 'commit', '-m', setupLine) +} + +// A project checkout left on old setup commands while origin/main moved on. +async function staleCheckout(): Promise<{ repo: Repo; upstream: string }> { + const root = await mkdtemp(join(tmpdir(), 'orca-create-source-hooks-')) + roots.push(root) + const upstream = join(root, 'upstream') + const checkout = join(root, 'checkout') + await git(root, 'init', '-b', 'main', upstream) + await git(upstream, 'config', 'core.autocrlf', 'false') + await commitOrcaYaml(upstream, 'node old-setup.mjs') + await git(root, 'clone', upstream, checkout) + await commitOrcaYaml(upstream, 'node new-setup.mjs', '\r\n') + const repo: Repo = { + id: 'repo-1', + path: checkout, + displayName: 'repo', + badgeColor: '#000000', + addedAt: 0 + } + return { repo, upstream } +} + +function read(repo: Repo, source: Parameters[0]['source']) { + return readCreateSourceSetupHooks({ + repo, + source, + runtime: new RuntimeRemoteFetchController(), + gitOptions: {} + }) +} + +it('reads the refreshed base instead of the stale project checkout', async () => { + const { repo } = await staleCheckout() + + const result = await read(repo, { kind: 'base', baseBranch: 'origin/main' }) + + expect(result?.hooks?.scripts.setup).toBe('node new-setup.mjs') +}) + +it('reads an explicitly reused local branch, and the base when that branch is absent', async () => { + const { repo } = await staleCheckout() + await git(repo.path, 'branch', 'feature', 'main') + + const reused = await read(repo, { kind: 'branch', ref: 'feature', baseBranch: 'origin/main' }) + const created = await read(repo, { kind: 'branch', ref: 'missing', baseBranch: 'origin/main' }) + + expect(reused?.hooks?.scripts.setup).toBe('node old-setup.mjs') + expect(created?.hooks?.scripts.setup).toBe('node new-setup.mjs') +}) diff --git a/src/main/workspace-hooks/create-source-setup-hooks.ts b/src/main/workspace-hooks/create-source-setup-hooks.ts new file mode 100644 index 00000000000..9d5656a70e1 --- /dev/null +++ b/src/main/workspace-hooks/create-source-setup-hooks.ts @@ -0,0 +1,166 @@ +import type { Repo } from '../../shared/repo-types' +import type { OrcaHooks } from '../../shared/orca-yaml-hook-types' +import { parseOrcaYaml } from '../../shared/orca-yaml' +import { scopeHooksToRepoKind } from '../../shared/folder-workspace-hooks' +import { isFolderRepo } from '../../shared/repo-kind' +import { resolveWorktreeAddBaseRef } from '../../shared/worktree/base-refs/base-ref' +import type { SetupHooksCreateSource } from '../../shared/worktree/setup-hooks-create-source' +import { gitExecFileAsync } from '../git/command-runner/git-exec-file' +import { + getDefaultBaseRefAsync, + type LocalGitExecOptions +} from '../git/refs/resolution/repo-default-base-ref' +import { + hasLocalWorktreeBaseRef, + hasWorktreeBaseCommitRef +} from '../git/worktrees/creation/worktree-base-ref-probe' +import { resolveWorktreeCreateBase } from '../workspaces/creation/worktree-create-base' +import type { + RemoteFetchResult, + RemoteTrackingBase +} from '../runtime/repositories/runtime-remote-fetch-controller' + +// Leaves the 15 s hooks-check RPC room to fall back to the checkout read. +const CREATE_SOURCE_READ_DEADLINE_MS = 8_000 + +export type CreateSourceSetupHooksRuntime = { + resolveRemoteTrackingBase: ( + repoPath: string, + baseBranch: string, + options?: LocalGitExecOptions + ) => Promise + hasRemoteTrackingRef: ( + repoPath: string, + base: RemoteTrackingBase, + options?: LocalGitExecOptions + ) => Promise + getOrStartRemoteTrackingBaseRefresh: ( + repoPath: string, + base: RemoteTrackingBase, + options?: LocalGitExecOptions + ) => Promise +} + +class DeadlinePassed extends Error {} + +/** + * The orca.yaml hooks at the ref a create will check out. Undefined when that ref can't be read in + * time; callers then read the project checkout, as before, and the host's created-worktree check stays the backstop. + */ +export async function readCreateSourceSetupHooks(args: { + repo: Repo + source: SetupHooksCreateSource + runtime: CreateSourceSetupHooksRuntime + gitOptions: LocalGitExecOptions +}): Promise<{ hooks: OrcaHooks | null } | undefined> { + if (isFolderRepo(args.repo)) { + return undefined + } + const deadline = Date.now() + CREATE_SOURCE_READ_DEADLINE_MS + // Git admission refuses past the deadline, even for a step the race already abandoned. + const gated = { ...args.gitOptions, canStart: () => Date.now() < deadline } + const step = async (work: () => Promise): Promise => { + const remaining = deadline - Date.now() + if (remaining <= 0) { + throw new DeadlinePassed() + } + let timer: ReturnType | undefined + try { + return await Promise.race([ + work(), + new Promise((_, reject) => { + timer = setTimeout(() => reject(new DeadlinePassed()), remaining) + }) + ]) + } finally { + clearTimeout(timer) + } + } + try { + const ref = await step(() => resolveCreateSourceRef(args, gated, step)) + return ref ? await step(() => readOrcaYamlAtRef(args.repo, ref, gated)) : undefined + } catch { + return undefined + } +} + +async function resolveCreateSourceRef( + args: Parameters[0], + gitOptions: LocalGitExecOptions, + step: (work: () => Promise) => Promise +): Promise { + const { repo, source, runtime } = args + // Explicit reuse checks out exactly the local branch when it exists, otherwise creates it from the base. + if (source.kind === 'branch') { + const localRef = `refs/heads/${source.ref}` + if (await step(() => hasWorktreeBaseCommitRef(repo.path, localRef, gitOptions))) { + return localRef + } + } + const baseBranch = await step(() => + resolveWorktreeCreateBase({ + requestedBaseBranch: source.baseBranch, + repoWorktreeBaseRef: repo.worktreeBaseRef, + resolveDefaultBaseRef: () => getDefaultBaseRefAsync(repo.path, gitOptions), + isBaseUsable: async (candidate) => { + const remoteBase = await runtime.resolveRemoteTrackingBase(repo.path, candidate, gitOptions) + if (remoteBase && (await runtime.hasRemoteTrackingRef(repo.path, remoteBase, gitOptions))) { + return true + } + return hasLocalWorktreeBaseRef(repo.path, candidate, gitOptions) + } + }) + ) + if (!baseBranch) { + return null + } + // Refresh exactly when create would, sharing its in-flight fetch and freshness. + const remoteBase = await step(() => + runtime.resolveRemoteTrackingBase(repo.path, baseBranch, gitOptions) + ) + if (remoteBase) { + const [hasRemoteRef, hasLocalRef] = await step(() => + Promise.all([ + runtime.hasRemoteTrackingRef(repo.path, remoteBase, gitOptions), + hasLocalWorktreeBaseRef(repo.path, baseBranch, gitOptions) + ]) + ) + if (hasRemoteRef || !hasLocalRef) { + // Ungated and never aborted: past the deadline create joins this same fetch. + await step(() => + runtime.getOrStartRemoteTrackingBaseRefresh(repo.path, remoteBase, args.gitOptions) + ) + } + } + const qualified = await step(() => + resolveWorktreeAddBaseRef(baseBranch, (candidate) => + hasWorktreeBaseCommitRef(repo.path, candidate, gitOptions) + ) + ) + return (await step(() => hasWorktreeBaseCommitRef(repo.path, qualified, gitOptions))) + ? qualified + : null +} + +async function readOrcaYamlAtRef( + repo: Repo, + ref: string, + gitOptions: LocalGitExecOptions +): Promise<{ hooks: OrcaHooks | null } | undefined> { + const { stdout: entry } = await gitExecFileAsync(['ls-tree', ref, '--', 'orca.yaml'], { + cwd: repo.path, + ...gitOptions + }) + if (!entry.trim()) { + return { hooks: null } + } + // A symlink's blob is its target path; the checkout follows it, so read the checkout instead. + if (!entry.startsWith('100')) { + return undefined + } + const { stdout } = await gitExecFileAsync(['show', `${ref}:orca.yaml`], { + cwd: repo.path, + ...gitOptions + }) + return { hooks: scopeHooksToRepoKind(repo, parseOrcaYaml(stdout)) } +} diff --git a/src/main/workspaces/cleanup/workspace-cleanup-run-summary.ts b/src/main/workspaces/cleanup/workspace-cleanup-run-summary.ts index b865a5ea5b1..494c39c996a 100644 --- a/src/main/workspaces/cleanup/workspace-cleanup-run-summary.ts +++ b/src/main/workspaces/cleanup/workspace-cleanup-run-summary.ts @@ -1,6 +1,12 @@ -import type { WorkspaceCleanupEvaluation } from '../../../shared/workspace-cleanup/workspace-cleanup-evaluation' +import type { + WorkspaceCleanupEvaluation, + WorkspaceCleanupEvaluationInput +} from '../../../shared/workspace-cleanup/workspace-cleanup-evaluation' +import { hasWorktreeAtRiskLocalFiles } from '../../../shared/worktree/removal/at-risk-local-files' import { WORKSPACE_CLEANUP_REPORT_ROW_LIMIT, + WORKSPACE_CLEANUP_ROW_IGNORED_FILE_LIMIT, + type WorkspaceCleanupRowDetails, WORKSPACE_CLEANUP_UNWATCHED_CAUSES, type WorkspaceCleanupRun, type WorkspaceCleanupRunOutcome, @@ -12,6 +18,26 @@ export type WorkspaceCleanupKeptOutcome = Pick< 'outcome' | 'reason' | 'keepCause' | 'waiting' > +/** What the evidence already says about a row, for its label; no new Git reads. */ +export function workspaceCleanupRowDetails( + input: Pick +): WorkspaceCleanupRowDetails { + const review = input.git.merge?.mergedReview + const files = input.git.atRiskLocalFiles + return { + ...(review?.containsHead ? { prNumber: review.number } : {}), + ...(files && hasWorktreeAtRiskLocalFiles(files) + ? { + ignoredFiles: { + count: files.count, + samplePaths: files.samplePaths.slice(0, WORKSPACE_CLEANUP_ROW_IGNORED_FILE_LIMIT), + complete: files.complete + } + } + : {}) + } +} + export function keptRunOutcome( evaluation: WorkspaceCleanupEvaluation ): WorkspaceCleanupKeptOutcome { diff --git a/src/main/workspaces/cleanup/workspace-cleanup-runner-preview.test.ts b/src/main/workspaces/cleanup/workspace-cleanup-runner-preview.test.ts new file mode 100644 index 00000000000..4ccc129a108 --- /dev/null +++ b/src/main/workspaces/cleanup/workspace-cleanup-runner-preview.test.ts @@ -0,0 +1,48 @@ +import { afterEach, describe, expect, it, vi } from 'vitest' +import type { OrcaRuntimeService } from '../../runtime/orca-runtime' +import type { RuntimeStore } from '../../runtime/construction/runtime-store-contract' +import { getDefaultWorkspaceCleanupRules } from '../../../shared/workspace-cleanup/workspace-cleanup-policy' + +const { collectWorkspaces } = vi.hoisted(() => ({ collectWorkspaces: vi.fn() })) + +vi.mock('./workspace-cleanup-run-evidence', () => ({ + collectWorkspaceCleanupWorkspaces: collectWorkspaces +})) +vi.mock('../space-analysis/workspace-space-analysis-snapshot', () => ({ + readWorkspaceSpaceAnalysisSnapshot: () => Promise.resolve(null) +})) + +const { WorkspaceCleanupRunner } = await import('./workspace-cleanup-runner') + +function createRunner(): InstanceType { + const store = { + getSettings: () => ({ workspaceCleanupPolicy: getDefaultWorkspaceCleanupRules() }) + } + return new WorkspaceCleanupRunner({ + // SAFETY: preview only reads settings from the store and passes the runtime through to mocked evidence. + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: see above + store: store as unknown as RuntimeStore, + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: see above + runtime: {} as OrcaRuntimeService, + historyDirectory: '/unused' + }) +} + +describe('workspace cleanup runner preview', () => { + afterEach(() => { + collectWorkspaces.mockReset() + }) + + it('shares one evaluation between concurrent previews of the same rules', async () => { + let finish: (value: []) => void = () => {} + collectWorkspaces.mockReturnValue(new Promise<[]>((resolve) => (finish = resolve))) + const runner = createRunner() + + const first = runner.preview() + const second = runner.preview(getDefaultWorkspaceCleanupRules()) + finish([]) + await Promise.all([first, second]) + + expect(collectWorkspaces).toHaveBeenCalledTimes(1) + }) +}) diff --git a/src/main/workspaces/cleanup/workspace-cleanup-runner.ts b/src/main/workspaces/cleanup/workspace-cleanup-runner.ts index 95cab81bd2e..f51f1243c95 100644 --- a/src/main/workspaces/cleanup/workspace-cleanup-runner.ts +++ b/src/main/workspaces/cleanup/workspace-cleanup-runner.ts @@ -16,6 +16,7 @@ import type { WorkspaceCleanupReport, WorkspaceCleanupRun, WorkspaceCleanupRunRow, + WorkspaceCleanupRowDetails, WorkspaceCleanupRunTrigger, WorkspaceCleanupWorkspaceRef } from '../../../shared/workspace-cleanup/workspace-cleanup-run' @@ -24,7 +25,11 @@ import { type WorkspaceCleanupWorkspace } from './workspace-cleanup-run-evidence' import { decideWorkspaceCleanup, removeWorkspaceForCleanup } from './workspace-cleanup-removal-step' -import { keptRunOutcome, summarizeWorkspaceCleanupRun } from './workspace-cleanup-run-summary' +import { + keptRunOutcome, + summarizeWorkspaceCleanupRun, + workspaceCleanupRowDetails +} from './workspace-cleanup-run-summary' import { appendWorkspaceCleanupRun, readWorkspaceCleanupRunHistory @@ -39,7 +44,7 @@ const SETTINGS_DEBOUNCE_MS = 10 * 1000 type DecidedWorkspace = { workspace: WorkspaceCleanupWorkspace - ref: WorkspaceCleanupWorkspaceRef & { sizeBytes?: number } + ref: WorkspaceCleanupWorkspaceRef & WorkspaceCleanupRowDetails & { sizeBytes?: number } evaluation: WorkspaceCleanupEvaluation } @@ -54,6 +59,8 @@ export type WorkspaceCleanupRunnerDeps = { export class WorkspaceCleanupRunner { private readonly deps: WorkspaceCleanupRunnerDeps private current: Promise | null = null + // Every caller asking for the same rules while one evaluation runs shares it: reopened pages, several clients. + private readonly previews = new Map>() private timer: ReturnType | null = null private nextRunAt: number | null = null private enabledRules = new Set() @@ -107,9 +114,28 @@ export class WorkspaceCleanupRunner { } /** What a run would do now, removing nothing; `rules` previews other global rules. */ - async preview(rules?: WorkspaceCleanupRules): Promise { + preview(rules?: WorkspaceCleanupRules): Promise { + const effective = rules ?? this.globalRules() + const key = JSON.stringify(effective) + const shared = this.previews.get(key) + if (shared) { + return shared + } + const evaluation = this.evaluatePreview(effective) + this.previews.set(key, evaluation) + void evaluation + .catch(() => undefined) + .finally(() => { + if (this.previews.get(key) === evaluation) { + this.previews.delete(key) + } + }) + return evaluation + } + + private async evaluatePreview(rules: WorkspaceCleanupRules): Promise { const evaluatedAt = Date.now() - const decided = await this.evaluate(rules ?? this.globalRules(), evaluatedAt) + const decided = await this.evaluate(rules, evaluatedAt) return { evaluatedAt, rows: decided.map(({ ref, evaluation }) => ({ ...ref, evaluation })) } } @@ -193,7 +219,11 @@ export class WorkspaceCleanupRunner { const sizeBytes = sizes.get(workspace.ref.worktreeId) decided.push({ workspace, - ref: { ...workspace.ref, ...(sizeBytes !== undefined ? { sizeBytes } : {}) }, + ref: { + ...workspace.ref, + ...workspaceCleanupRowDetails(workspace.input), + ...(sizeBytes !== undefined ? { sizeBytes } : {}) + }, evaluation: await decideWorkspaceCleanup(this.deps.runtime, workspace, now) }) } diff --git a/src/preload/api/agent-hooks/agent-hook-api.ts b/src/preload/api/agent-hooks/agent-hook-api.ts index 37579bff473..2aa5c83398e 100644 --- a/src/preload/api/agent-hooks/agent-hook-api.ts +++ b/src/preload/api/agent-hooks/agent-hook-api.ts @@ -1,10 +1,16 @@ import type { OrcaHooks } from '../../../shared/orca-yaml-hook-types' import type { ExecutionHostId } from '../../../shared/execution-host' import type { SetupScriptImportCandidate } from '../../../shared/workspace-setup/setup-script-imports' +import type { SetupHooksCreateSource } from '../../../shared/worktree/setup-hooks-create-source' export type HooksApi = { - /** `background`: a render-driven probe, refused (status 'error') rather than booting a stopped WSL distro. */ - check: (args: { repoId: string; hostId?: ExecutionHostId; background?: boolean }) => Promise<{ + /** `background`: a render-driven probe, refused (status 'error') rather than booting a stopped WSL distro. `createSource`: read orca.yaml at the ref a create checks out. */ + check: (args: { + repoId: string + hostId?: ExecutionHostId + background?: boolean + createSource?: SetupHooksCreateSource + }) => Promise<{ status?: 'ok' | 'error' hasHooks: boolean hooks: OrcaHooks | null diff --git a/src/preload/api/agent-hooks/hooks-bridge.ts b/src/preload/api/agent-hooks/hooks-bridge.ts index be35b2d12ad..1a8ca98eef0 100644 --- a/src/preload/api/agent-hooks/hooks-bridge.ts +++ b/src/preload/api/agent-hooks/hooks-bridge.ts @@ -1,10 +1,15 @@ import { ipcRenderer } from 'electron' import type { ExecutionHostId } from '../../../shared/execution-host' import type { PreloadApi } from '../../api-types' +import type { SetupHooksCreateSource } from '../../../shared/worktree/setup-hooks-create-source' export const hooksApi = { - check: (args: { repoId: string; hostId?: ExecutionHostId; background?: boolean }) => - ipcRenderer.invoke('hooks:check', args), + check: (args: { + repoId: string + hostId?: ExecutionHostId + background?: boolean + createSource?: SetupHooksCreateSource + }) => ipcRenderer.invoke('hooks:check', args), inspectSetupScriptImports: (args: { repoId: string; hostId?: ExecutionHostId }) => ipcRenderer.invoke('hooks:inspectSetupScriptImports', args), diff --git a/src/preload/api/workspaces/workspace-cleanup-api.ts b/src/preload/api/workspaces/workspace-cleanup-api.ts index e286bbd2913..a16c8d7b7b2 100644 --- a/src/preload/api/workspaces/workspace-cleanup-api.ts +++ b/src/preload/api/workspaces/workspace-cleanup-api.ts @@ -12,6 +12,7 @@ import type { WorkspaceSpaceScanProgress } from '../../../shared/workspace-disk-space/workspace-space-types' import type { ExecutionHostId } from '../../../shared/execution-host' +import type { WorkspaceCleanupRunFinishedEvent } from '../../../shared/workspace-cleanup/workspace-cleanup-run' import type { WorkspaceSpaceChange } from '../../../shared/workspace-disk-space/workspace-space-change' export type WorkspaceCleanupApi = { @@ -27,6 +28,8 @@ export type WorkspaceCleanupApi = { beginRemovalSnapshotPruneBatch?: (args: WorkspaceCleanupSnapshotPruneBatchArgs) => Promise recordRemovalSnapshotPrune?: (args: WorkspaceCleanupSnapshotPruneRecordArgs) => Promise finishRemovalSnapshotPruneBatch?: (args: WorkspaceCleanupSnapshotPruneBatchArgs) => Promise + /** This app's own cleanup runner finished a run. */ + onRunFinished: (callback: (run: WorkspaceCleanupRunFinishedEvent['run']) => void) => () => void } export type WorkspaceSpaceApi = { diff --git a/src/preload/api/workspaces/workspace-cleanup-bridge.ts b/src/preload/api/workspaces/workspace-cleanup-bridge.ts index 4c979e55e84..f7d47eb08b0 100644 --- a/src/preload/api/workspaces/workspace-cleanup-bridge.ts +++ b/src/preload/api/workspaces/workspace-cleanup-bridge.ts @@ -1,5 +1,6 @@ import { ipcRenderer } from 'electron' import type { WorkspaceCleanupScanProgress } from '../../../shared/workspace-cleanup/workspace-cleanup' +import type { WorkspaceCleanupRunFinishedEvent } from '../../../shared/workspace-cleanup/workspace-cleanup-run' import type { PreloadApi } from '../../api-types' export const workspaceCleanupApi = { @@ -30,5 +31,13 @@ export const workspaceCleanupApi = { recordRemovalSnapshotPrune: (args) => ipcRenderer.invoke('workspaceCleanup:recordRemovalSnapshotPrune', args), finishRemovalSnapshotPruneBatch: (args) => - ipcRenderer.invoke('workspaceCleanup:finishRemovalSnapshotPruneBatch', args) + ipcRenderer.invoke('workspaceCleanup:finishRemovalSnapshotPruneBatch', args), + onRunFinished: (callback) => { + const listener = ( + _event: Electron.IpcRendererEvent, + run: WorkspaceCleanupRunFinishedEvent['run'] + ): void => callback(run) + ipcRenderer.on('workspaceCleanup:runFinished', listener) + return () => ipcRenderer.removeListener('workspaceCleanup:runFinished', listener) + } } satisfies PreloadApi['workspaceCleanup'] diff --git a/src/renderer/src/components/automations/authoring/automation-orca-save.ts b/src/renderer/src/components/automations/authoring/automation-orca-save.ts index e2dd43ee641..9eb54531ce9 100644 --- a/src/renderer/src/components/automations/authoring/automation-orca-save.ts +++ b/src/renderer/src/components/automations/authoring/automation-orca-save.ts @@ -17,7 +17,6 @@ import type { AutomationUpdateInput } from '../../../../../shared/automations/automation-definition' import { getRepoExecutionHostId } from '../../../../../shared/execution-host' -import { ensureHooksApproved } from '@/runtime/repo-hooks/ensure-hooks-confirmed' import { translate } from '@/i18n/i18n' import { useAppStore } from '@/store/index' import { listAutomationsForTarget } from '../hosts/automation-host-client' @@ -28,7 +27,7 @@ import { import { buildDraftPrecheck, buildDraftSchedule } from './automation-draft-model' import { buildAutomationRunContextForRepo } from './automation-run-context' import { resolveAutomationSetupDecisionForSave } from './automation-setup-decision' -import { reconfirmSkippedSetup } from './automation-setup-review' +import { confirmAutomationSaveSetup } from './automation-setup-review' import { createAutomationOnDestination, moveAutomationToDestination, @@ -135,14 +134,17 @@ export async function saveOrcaAutomation( draftSetupDecision: draft.setupDecision }) : currentAutomation.setupDecision - const trust = - setupDecision === 'run' && ((targetEdited && !recordedContext) || edited('setupDecision')) - ? await ensureHooksApproved(useAppStore.getState(), draft.projectId, 'setup', setupHostId) - : null - // Stored with `run` so later runs execute only this content. - const setupTrustHash = - trust?.approvedContentHash ?? - (await reconfirmSkippedSetup(context, trust, setupDecision, currentAutomation, setupHostId)) + const { trust, setupTrustHash } = await confirmAutomationSaveSetup(context, { + // A new base can bring different orca.yaml setup, so it needs its own approval. + prompt: + setupDecision === 'run' && + ((targetEdited && !recordedContext) || edited('setupDecision') || edited('baseBranch')), + repoId: draft.projectId, + hostId: setupHostId, + baseBranch: edited('baseBranch') ? draft.baseBranch : currentAutomation?.baseBranch, + setupDecision, + automation: currentAutomation + }) if (trust?.decision === 'skip') { setupDecision = 'skip' } diff --git a/src/renderer/src/components/automations/authoring/automation-setup-review.ts b/src/renderer/src/components/automations/authoring/automation-setup-review.ts index 280510157b4..3e01a078725 100644 --- a/src/renderer/src/components/automations/authoring/automation-setup-review.ts +++ b/src/renderer/src/components/automations/authoring/automation-setup-review.ts @@ -13,6 +13,25 @@ import { getAutomationRunRepoId } from '../../../../../shared/automations/histor import type { SetupDecision, SetupTrustMismatch } from '../../../../../shared/worktree/create-types' import type { ExecutionHostId } from '../../../../../shared/execution-host' +/** Runs create from the automation's base, so approve the orca.yaml there, not the project checkout's. */ +export function approveAutomationSetup( + repoId: string, + hostId: ExecutionHostId | undefined, + baseBranch: string | null | undefined +): Promise { + const createSource = { kind: 'base' as const, baseBranch: baseBranch?.trim() || undefined } + return ensureHooksApproved( + useAppStore.getState(), + repoId, + 'setup', + hostId, + undefined, + undefined, + undefined, + createSource + ) +} + /** A skipped setup still waiting for approval; null once the automation approves that content. */ export type PendingAutomationSetupReview = { content: SetupTrustMismatch | null } @@ -71,15 +90,48 @@ export async function reviewAutomationSkippedSetup( } /** - * Saving an automation whose last run skipped changed setup re-confirms that setup: the skipped - * content when the host recorded it, else the repo's current one. Returns the hash to store. + * A save's setup approval: prompt when the target or setup choice changed, else re-review a skipped run. + * The hash is stored with `run` so later runs execute only this content. */ -export async function reconfirmSkippedSetup( +export async function confirmAutomationSaveSetup( + context: Pick, + args: { + prompt: boolean + repoId: string + hostId: ExecutionHostId | undefined + /** The base this save persists, which an edit may have just changed. */ + baseBranch: string | null | undefined + setupDecision: SetupDecision | undefined + automation: Automation | null + } +): Promise<{ trust: HookTrustApproval | null; setupTrustHash: string | undefined }> { + const trust = args.prompt + ? await approveAutomationSetup(args.repoId, args.hostId, args.baseBranch) + : null + const setupTrustHash = + trust?.approvedContentHash ?? + (await reconfirmSkippedSetup( + context, + trust, + args.setupDecision, + args.automation, + args.hostId, + args.baseBranch + )) + return { trust, setupTrustHash } +} + +/** + * Saving an automation whose last run skipped changed setup re-confirms that setup: the skipped + * content when the host recorded it, else the content at the automation's base. Returns the hash to store. + */ +async function reconfirmSkippedSetup( context: Pick, trust: HookTrustApproval | null, setupDecision: SetupDecision | undefined, automation: Automation | null, - hostId: ExecutionHostId | undefined + hostId: ExecutionHostId | undefined, + baseBranch: string | null | undefined ): Promise { // A changed target or setup choice was just confirmed by the regular save prompt. if (trust || context.local.targetEdited || setupDecision !== 'run' || !automation) { @@ -100,7 +152,7 @@ export async function reconfirmSkippedSetup( hostId, 'automation' ) - : await ensureHooksApproved(useAppStore.getState(), repoId, 'setup', hostId) + : await approveAutomationSetup(repoId, hostId, baseBranch) return approval.decision === 'run' && approval.approvedContentHash !== automation.setupTrustHash ? approval.approvedContentHash : undefined diff --git a/src/renderer/src/components/crash-report/CrashReportDialogSurface.test.tsx b/src/renderer/src/components/crash-report/CrashReportDialogSurface.test.tsx new file mode 100644 index 00000000000..fd0a6acecb9 --- /dev/null +++ b/src/renderer/src/components/crash-report/CrashReportDialogSurface.test.tsx @@ -0,0 +1,68 @@ +// @vitest-environment happy-dom + +import { act, cleanup, fireEvent, render, screen } from '@testing-library/react' +import { afterEach, expect, it, vi } from 'vitest' +import type { CrashReportRecord } from '../../../../shared/crash-reporting' +import { CrashReportDialogSurface } from './CrashReportDialogSurface' + +vi.mock('sonner', () => ({ + toast: { dismiss: vi.fn(), error: vi.fn(), success: vi.fn(), warning: vi.fn() } +})) + +afterEach(() => { + cleanup() + vi.restoreAllMocks() +}) + +it('honors attachment consent when sending a manually opened freeze report', async () => { + const report: CrashReportRecord = { + id: 'freeze-report-1', + createdAt: '2026-11-12T01:00:00.000Z', + status: 'dismissed', + source: 'child', + processType: 'main', + reason: 'main-thread-hang', + exitCode: null, + appVersion: '1.4.214', + platform: 'darwin', + osRelease: '25.1.0', + arch: 'arm64', + electronVersion: '43', + chromeVersion: '150', + details: { captureId: 'incident-1', detectedAt: '2026-11-11T23:00:00.000Z' } + } + const submit = vi.fn().mockResolvedValue({ ok: true, report: { ...report, status: 'sent' } }) + Object.defineProperty(window, 'api', { + configurable: true, + value: { + gh: { viewer: () => Promise.resolve(null) }, + crashReports: { submit } + } + }) + const onOpenChange = vi.fn() + await act(async () => { + render( + {}} + /> + ) + }) + expect(submit).not.toHaveBeenCalled() + fireEvent.click(screen.getByRole('checkbox')) + await act(async () => { + fireEvent.click(screen.getByRole('button', { name: 'Send Report' })) + }) + expect(submit).toHaveBeenCalledWith({ + reportId: 'freeze-report-1', + notes: '', + includeDiagnosticLogs: false, + submitAnonymously: true, + githubLogin: null, + githubEmail: null + }) + expect(onOpenChange).toHaveBeenCalledWith(false) +}) diff --git a/src/renderer/src/components/crash-report/CrashReportDialogSurface.tsx b/src/renderer/src/components/crash-report/CrashReportDialogSurface.tsx index 2894f7f9391..cd8170220a1 100644 --- a/src/renderer/src/components/crash-report/CrashReportDialogSurface.tsx +++ b/src/renderer/src/components/crash-report/CrashReportDialogSurface.tsx @@ -15,14 +15,12 @@ import { Label } from '@/components/ui/label' import { useMountedRef } from '@/hooks/useMountedRef' import { formatCrashReportText, - isReactErrorBoundaryReport, MAX_USER_NOTES_LENGTH, type CrashReportDiagnosticBundle, type CrashReportRecord } from '../../../../shared/crash-reporting' import type { GitHubViewer } from '../../../../shared/github/pull-requests/pull-request-types' -import { translate } from '@/i18n/i18n' -import { useIntlLocale, useTranslate, type Translate } from '@/i18n/use-translate' +import { useIntlLocale, useTranslate } from '@/i18n/use-translate' import { CRASH_REPORT_SUBMIT_FAILURE_TOAST_ID, getCrashReportCopySubmissionFailure, @@ -30,73 +28,12 @@ import { getCrashReportSubmitWarningNotice } from './crash-report-submit-notice' import { useCrashReportCopy } from './use-crash-report-copy' - -function formatSummary(report: CrashReportRecord, t: Translate = translate): string { - if (isReactErrorBoundaryReport(report)) { - const surface = typeof report.details.surface === 'string' ? report.details.surface : null - return surface - ? t( - 'auto.components.crash.report.CrashReportDialogSurface.renderErrorIn', - 'React render error in {{surface}}', - { surface } - ) - : t('auto.components.crash.report.CrashReportDialogSurface.renderError', 'React render error') - } - return `${report.processType} ${report.reason}${ - report.exitCode === null ? '' : ` (exit ${report.exitCode})` - }` -} - -function getDialogTitle(report: CrashReportRecord | null, t: Translate = translate): string { - if (!report) { - return t('auto.components.crash.report.CrashReportDialogSurface.reportTitle', 'Report a crash') - } - return report && isReactErrorBoundaryReport(report) - ? t( - 'auto.components.crash.report.CrashReportDialogSurface.uiErrorTitle', - 'Orca hit a recoverable UI error' - ) - : t( - 'auto.components.crash.report.CrashReportDialogSurface.closedTitle', - 'Orca closed unexpectedly' - ) -} - -function getDialogDescription(report: CrashReportRecord | null, t: Translate = translate): string { - if (!report) { - return t( - 'auto.components.crash.report.CrashReportDialogSurface.reportDescription', - 'Send a privacy-safe crash report. Recent redacted diagnostic logs are included when available.' - ) - } - return report && isReactErrorBoundaryReport(report) - ? t( - 'auto.components.crash.report.CrashReportDialogSurface.uiErrorDescription', - 'Send a privacy-safe diagnostic report to help us understand the failed UI surface.' - ) - : t( - 'auto.components.crash.report.CrashReportDialogSurface.closedDescription', - 'Send a privacy-safe diagnostic report to help us understand what happened.' - ) -} - -function getNotesPlaceholder(report: CrashReportRecord | null, t: Translate = translate): string { - if (!report) { - return t( - 'auto.components.crash.report.CrashReportDialogSurface.reportNotesPlaceholder', - 'Optional: what happened?' - ) - } - return report && isReactErrorBoundaryReport(report) - ? t( - 'auto.components.crash.report.CrashReportDialogSurface.uiErrorNotesPlaceholder', - 'Optional: what were you doing before this UI error?' - ) - : t( - 'auto.components.crash.report.CrashReportDialogSurface.closedNotesPlaceholder', - 'Optional: what were you doing before Orca closed?' - ) -} +import { + formatSummary, + getDialogTitle, + getDialogDescription, + getNotesPlaceholder +} from './crash-report-dialog-copy' type CrashReportDialogSurfaceProps = { open: boolean @@ -129,6 +66,7 @@ export function CrashReportDialogSurface({ [deferredNotes, report] ) const copyCrashReportDetails = useCrashReportCopy(report, notes) + const isFreezeReport = report?.reason === 'main-thread-hang' const clearViewer = useCallback((): void => { viewerRequestIdRef.current += 1 @@ -167,7 +105,7 @@ export function CrashReportDialogSurface({ diagnosticBundle?: CrashReportDiagnosticBundle ): void => { const failure = { error, ...(diagnosticBundle ? { diagnosticBundle } : {}) } - const notice = getCrashReportSubmitFailureNotice(failure, includeDiagnosticLogs) + const notice = getCrashReportSubmitFailureNotice(failure, includeDiagnosticLogs, isFreezeReport) const copyFailure = getCrashReportCopySubmissionFailure(failure) toast.error(notice.title, { id: CRASH_REPORT_SUBMIT_FAILURE_TOAST_ID, @@ -222,12 +160,18 @@ export function CrashReportDialogSurface({ onReportChange(result.report) setNotes('') toast.dismiss(CRASH_REPORT_SUBMIT_FAILURE_TOAST_ID) - const warningNotice = getCrashReportSubmitWarningNotice(result, includeDiagnosticLogs) + const warningNotice = getCrashReportSubmitWarningNotice( + result, + includeDiagnosticLogs, + isFreezeReport + ) if (warningNotice) { toast.warning(warningNotice.title, { description: warningNotice.description }) } else { toast.success( - t('auto.components.crash.report.CrashReportDialog.8e24fe4f75', 'Crash report sent.') + isFreezeReport + ? t('crashReport.freeze.sent', 'Freeze report sent.') + : t('auto.components.crash.report.CrashReportDialog.8e24fe4f75', 'Crash report sent.') ) } onOpenChange(false) @@ -277,8 +221,12 @@ export function CrashReportDialogSurface({
{formatSummary(report, t)}
- {new Date(report.createdAt).toLocaleString(intlLocale)} · {report.platform}{' '} - {report.arch} ·{' '} + {new Date( + isFreezeReport && typeof report.details.detectedAt === 'string' + ? report.details.detectedAt + : report.createdAt + ).toLocaleString(intlLocale)}{' '} + · {report.platform} {report.arch} ·{' '} {t('auto.components.crash.report.CrashReportDialog.835037edc9', 'Orca')}{' '} {report.appVersion}
@@ -336,16 +284,23 @@ export function CrashReportDialogSurface({ />
- {t( - 'auto.components.crash.report.CrashReportDialog.e59f0b9427', - 'Sends a capped redacted log bundle with the report.' - )} + {isFreezeReport + ? t( + 'crashReport.freeze.attachDescription', + 'Sends the saved freeze report with a capped, redacted log bundle.' + ) + : t( + 'auto.components.crash.report.CrashReportDialog.e59f0b9427', + 'Sends a capped redacted log bundle with the report.' + )}
diff --git a/src/renderer/src/components/crash-report/crash-report-dialog-copy.ts b/src/renderer/src/components/crash-report/crash-report-dialog-copy.ts new file mode 100644 index 00000000000..fceb7d8019b --- /dev/null +++ b/src/renderer/src/components/crash-report/crash-report-dialog-copy.ts @@ -0,0 +1,94 @@ +import { + isReactErrorBoundaryReport, + type CrashReportRecord +} from '../../../../shared/crash-reporting' +import { translate } from '@/i18n/i18n' +import type { Translate } from '@/i18n/use-translate' + +export function formatSummary(report: CrashReportRecord, t: Translate = translate): string { + if (report.reason === 'main-thread-hang') { + return t('crashReport.freeze.summary', 'Orca stopped responding') + } + if (isReactErrorBoundaryReport(report)) { + const surface = typeof report.details.surface === 'string' ? report.details.surface : null + return surface + ? t( + 'auto.components.crash.report.CrashReportDialogSurface.renderErrorIn', + 'React render error in {{surface}}', + { surface } + ) + : t('auto.components.crash.report.CrashReportDialogSurface.renderError', 'React render error') + } + return `${report.processType} ${report.reason}${ + report.exitCode === null ? '' : ` (exit ${report.exitCode})` + }` +} + +export function getDialogTitle(report: CrashReportRecord | null, t: Translate = translate): string { + if (report?.reason === 'main-thread-hang') { + return t('crashReport.freeze.title', 'Report a freeze') + } + if (!report) { + return t('auto.components.crash.report.CrashReportDialogSurface.reportTitle', 'Report a crash') + } + return report && isReactErrorBoundaryReport(report) + ? t( + 'auto.components.crash.report.CrashReportDialogSurface.uiErrorTitle', + 'Orca hit a recoverable UI error' + ) + : t( + 'auto.components.crash.report.CrashReportDialogSurface.closedTitle', + 'Orca closed unexpectedly' + ) +} + +export function getDialogDescription( + report: CrashReportRecord | null, + t: Translate = translate +): string { + if (report?.reason === 'main-thread-hang') { + return t( + 'crashReport.freeze.description', + 'Send the saved freeze report to help us understand what happened.' + ) + } + if (!report) { + return t( + 'auto.components.crash.report.CrashReportDialogSurface.reportDescription', + 'Send a privacy-safe crash report. Recent redacted diagnostic logs are included when available.' + ) + } + return report && isReactErrorBoundaryReport(report) + ? t( + 'auto.components.crash.report.CrashReportDialogSurface.uiErrorDescription', + 'Send a privacy-safe diagnostic report to help us understand the failed UI surface.' + ) + : t( + 'auto.components.crash.report.CrashReportDialogSurface.closedDescription', + 'Send a privacy-safe diagnostic report to help us understand what happened.' + ) +} + +export function getNotesPlaceholder( + report: CrashReportRecord | null, + t: Translate = translate +): string { + if (report?.reason === 'main-thread-hang') { + return t('crashReport.freeze.notes', 'Optional: what were you doing before Orca froze?') + } + if (!report) { + return t( + 'auto.components.crash.report.CrashReportDialogSurface.reportNotesPlaceholder', + 'Optional: what happened?' + ) + } + return report && isReactErrorBoundaryReport(report) + ? t( + 'auto.components.crash.report.CrashReportDialogSurface.uiErrorNotesPlaceholder', + 'Optional: what were you doing before this UI error?' + ) + : t( + 'auto.components.crash.report.CrashReportDialogSurface.closedNotesPlaceholder', + 'Optional: what were you doing before Orca closed?' + ) +} diff --git a/src/renderer/src/components/crash-report/crash-report-submit-notice.ts b/src/renderer/src/components/crash-report/crash-report-submit-notice.ts index 29824b60416..5fa9cbb7201 100644 --- a/src/renderer/src/components/crash-report/crash-report-submit-notice.ts +++ b/src/renderer/src/components/crash-report/crash-report-submit-notice.ts @@ -63,7 +63,8 @@ export function getCrashReportCopySubmissionFailure( export function getCrashReportSubmitFailureNotice( failure: CrashReportSubmitFailureLike, - includeDiagnosticLogs: boolean + includeDiagnosticLogs: boolean, + isFreezeReport = false ): CrashReportSubmitFailureNotice { const ticketDetail = failure.diagnosticBundle?.status === 'uploaded' @@ -76,30 +77,40 @@ export function getCrashReportSubmitFailureNotice( const omittedDetail = failure.diagnosticBundle?.status === 'not_uploaded' ? asSentence( - translate( - 'auto.components.crash.report.submit.notice.diagnosticsReason', - 'Diagnostic logs were not attached: {{value0}}', - { value0: normalizedFailureMessage(failure.diagnosticBundle.reason) } - ) + isFreezeReport + ? translate( + 'crashReport.freeze.attachmentsOmitted', + 'The saved freeze report and diagnostic logs were not attached: {{value0}}', + { value0: normalizedFailureMessage(failure.diagnosticBundle.reason) } + ) + : translate( + 'auto.components.crash.report.submit.notice.diagnosticsReason', + 'Diagnostic logs were not attached: {{value0}}', + { value0: normalizedFailureMessage(failure.diagnosticBundle.reason) } + ) ) : null const attachmentAlreadyOmitted = failure.diagnosticBundle?.status === 'not_uploaded' const recovery = includeDiagnosticLogs && !attachmentAlreadyOmitted - ? translate( - 'auto.components.crash.report.submit.notice.uncheckDiagnostics', - 'Uncheck "Attach recent diagnostic logs" and try again, or copy the details.' - ) + ? isFreezeReport + ? translate( + 'crashReport.freeze.uncheckAttachments', + 'Uncheck "Attach saved freeze report and diagnostic logs" and try again, or copy the details.' + ) + : translate( + 'auto.components.crash.report.submit.notice.uncheckDiagnostics', + 'Uncheck "Attach recent diagnostic logs" and try again, or copy the details.' + ) : translate( 'auto.components.crash.report.submit.notice.checkConnection', 'Check your connection and try again, or copy the details.' ) return { - title: translate( - 'auto.components.crash.report.submit.notice.notSent', - "Crash report wasn't sent" - ), + title: isFreezeReport + ? translate('crashReport.freeze.notSent', "Freeze report wasn't sent") + : translate('auto.components.crash.report.submit.notice.notSent', "Crash report wasn't sent"), description: [ asSentence(normalizedFailureMessage(failure.error)), ticketDetail, @@ -114,21 +125,33 @@ export function getCrashReportSubmitFailureNotice( export function getCrashReportSubmitWarningNotice( result: Extract, - includeDiagnosticLogs: boolean + includeDiagnosticLogs: boolean, + isFreezeReport = false ): CrashReportSubmitWarningNotice | null { if (!includeDiagnosticLogs || result.diagnosticBundle?.status !== 'not_uploaded') { return null } return { - title: translate( - 'auto.components.crash.report.submit.notice.sentWithoutDiagnostics', - 'Crash report sent without diagnostic logs' - ), - description: translate( - 'auto.components.crash.report.submit.notice.diagnosticsReason', - 'Diagnostic logs were not attached: {{value0}}', - { value0: normalizedFailureMessage(result.diagnosticBundle.reason) } - ) + title: isFreezeReport + ? translate( + 'crashReport.freeze.sentWithoutAttachments', + 'Details sent without the saved freeze report or diagnostic logs' + ) + : translate( + 'auto.components.crash.report.submit.notice.sentWithoutDiagnostics', + 'Crash report sent without diagnostic logs' + ), + description: isFreezeReport + ? translate( + 'crashReport.freeze.attachmentsOmitted', + 'The saved freeze report and diagnostic logs were not attached: {{value0}}', + { value0: normalizedFailureMessage(result.diagnosticBundle.reason) } + ) + : translate( + 'auto.components.crash.report.submit.notice.diagnosticsReason', + 'Diagnostic logs were not attached: {{value0}}', + { value0: normalizedFailureMessage(result.diagnosticBundle.reason) } + ) } } diff --git a/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-message-sender-view.test.tsx b/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-message-sender-view.test.tsx index 850b37187a7..9e7638cdb71 100644 --- a/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-message-sender-view.test.tsx +++ b/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-message-sender-view.test.tsx @@ -4,7 +4,7 @@ import { act, cleanup, renderHook } from '@testing-library/react' import { afterEach, beforeEach, expect, it, vi } from 'vitest' import { render } from '../actions/native-chat-tooltip-test-harness' import { useAppStore } from '@/store' -import { makeTab } from '@/store/terminals/terminal-tab.test-fixture' +import { makeTab } from '@/store/terminals/testing/terminal-tab.test-fixture' import { makeWorktree } from '@/store/slices/worktrees/worktree.test-fixture' import { TEST_REPO } from '@/store/repos/repo.test-fixture' import type { AgentStatusEntry } from '../../../../../../shared/agent-status/contracts/agent-status-types' @@ -13,7 +13,6 @@ import '@/components/sidebar/workspace-card/activity/worktree-agent-row-selector import { useAgentMessageSenderView } from './native-chat-agent-message-sender-view' import { initialStore, status, resetSenderStore } from './native-chat-agent-sender.test-fixture' -const renders = new Map() function Probe({ id, workspace = 'workspace', @@ -41,7 +40,6 @@ function Probe({ remote ? { kind: 'environment', environmentId: 'remote' } : { kind: 'local' }, proof === 'terminal' ? undefined : `${proof === 'gone' ? 'closed' : 'source'}-${sourceId}` ) - renders.set(id, (renders.get(id) ?? 0) + 1) return null } let publicationRevision = 0 @@ -77,7 +75,6 @@ function write(i: number, update: Partial) { beforeEach(() => { vi.useFakeTimers({ toFake: ['Date'] }) vi.setSystemTime(2_000_000) - renders.clear() resetSenderStore() publishSources(1) publishSources(10, 'runtime:remote', 'remote') @@ -126,7 +123,7 @@ it.each(['run:coordinator', 'dispatch:past'])( } ) -it('shows only a proved Dispatch invocation and withdraws proof without changing unrelated sender rows', () => { +it('shows only a proved Dispatch invocation and withdraws missing proof', () => { write(0, { agentType: 'codex' }) const saved = { name: 'Worker', @@ -182,15 +179,14 @@ it('shows only a proved Dispatch invocation and withdraws proof without changing const single = renderHook(() => useAgentMessageSenderView(saved, 'workspace', { kind: 'local' })) expect(single.result.current).toMatchObject({ agentType: 'codex', dot: 'working' }) expect(alias.result.current).toEqual({ agentType: 'codex' }) - const before = new Map(renders) act(() => publish(false, 2)) - expect(renders).toEqual(before) + expect(single.result.current.agentType).toBe('codex') expect(single.result.current.dot).toBeUndefined() expect(alias.result.current.agentType).toBe('codex') expect(alias.result.current.dot).toBeUndefined() act(() => publish(false, 3)) - expect(renders).toEqual(before) + expect(alias.result.current.dot).toBeUndefined() // The current terminal alias must not bypass missing source proof. write(0, { state: 'waiting' }) diff --git a/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-sender.test-fixture.ts b/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-sender.test-fixture.ts index 127fd6a14c1..cde81b4c7cb 100644 --- a/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-sender.test-fixture.ts +++ b/src/renderer/src/components/native-chat/messages/agent-senders/native-chat-agent-sender.test-fixture.ts @@ -1,7 +1,7 @@ import { structuredAgentSessionPaneKey } from '../../../../../../shared/agent-session/view/structured-agent-session-projection' import type { OrcaSessionId } from '../../../../../../shared/orca-session-address' import { useAppStore } from '@/store' -import { makeTab } from '@/store/terminals/terminal-tab.test-fixture' +import { makeTab } from '@/store/terminals/testing/terminal-tab.test-fixture' import { makeUnifiedTab } from '@/store/slices/tabs/tab-group.test-fixture' import type { AgentStatusEntry } from '../../../../../../shared/agent-status/contracts/agent-status-types' import type { AgentMessageSource } from '../../../../../../shared/agent-session/agent-session-message-source' diff --git a/src/renderer/src/components/native-chat/messages/rows/NativeChatAgentMessageCard.fixture.tsx b/src/renderer/src/components/native-chat/messages/rows/NativeChatAgentMessageCard.fixture.tsx index 0f591dddcce..fbcb49999fe 100644 --- a/src/renderer/src/components/native-chat/messages/rows/NativeChatAgentMessageCard.fixture.tsx +++ b/src/renderer/src/components/native-chat/messages/rows/NativeChatAgentMessageCard.fixture.tsx @@ -1,7 +1,7 @@ import type { AgentStatusEntry } from '../../../../../../shared/agent-status/contracts/agent-status-types' import type { NativeChatMessage } from '../../../../../../shared/native-chat/native-chat-types' import { defineFixture } from '../../../../component-fixtures/component-fixture' -import { makeTab } from '@/store/terminals/terminal-tab.test-fixture' +import { makeTab } from '@/store/terminals/testing/terminal-tab.test-fixture' import type { AgentMessageSource } from '../../../../../../shared/agent-session/agent-session-message-source' import { NativeChatAgentMessageCard } from './NativeChatAgentMessageCard' import { MessageRow } from './NativeChatMessageRow' diff --git a/src/renderer/src/components/native-chat/pane/routing/native-chat-layout-actions.ts b/src/renderer/src/components/native-chat/pane/routing/native-chat-layout-actions.ts index ceb92e18243..d70bc3608a7 100644 --- a/src/renderer/src/components/native-chat/pane/routing/native-chat-layout-actions.ts +++ b/src/renderer/src/components/native-chat/pane/routing/native-chat-layout-actions.ts @@ -3,7 +3,7 @@ import { translate } from '@/i18n/i18n' import type { AppState } from '@/store/types' import { useAppStore } from '@/store' import { requestActiveTerminalPaneSplit } from '@/components/tab-bar/request-active-terminal-pane-split' -import { openNewTerminalTabInWorkspace } from '@/store/terminals/terminal-active-workspace-creation' +import { openNewTerminalTabInWorkspace } from '@/store/terminals/tabs/creation/terminal-active-workspace-creation' import { FLOATING_TERMINAL_WORKTREE_ID } from '../../../../../../shared/constants' import type { NativeChatSplitDirection } from './native-chat-pane-shortcut' diff --git a/src/renderer/src/components/settings/form-controls/SettingsFormControls.tsx b/src/renderer/src/components/settings/form-controls/SettingsFormControls.tsx index 995a0a52a82..4aa0610a117 100644 --- a/src/renderer/src/components/settings/form-controls/SettingsFormControls.tsx +++ b/src/renderer/src/components/settings/form-controls/SettingsFormControls.tsx @@ -253,7 +253,7 @@ type ColorFieldProps = { type NumberFieldProps = { label: string - description: string + description?: string /** undefined renders the field empty — pair it with `placeholder` and `onClear` for an unset state. */ value: number | undefined defaultValue?: number @@ -369,15 +369,17 @@ export function NumberField({ className={className} label={label} description={ - <> - {description} - {defaultValue !== undefined ? ( - - {t('auto.components.settings.SettingsFormControls.b661b034ec', '· Default:')}{' '} - {defaultValue} - - ) : null} - + description || defaultValue !== undefined ? ( + <> + {description} + {defaultValue !== undefined ? ( + + {t('auto.components.settings.SettingsFormControls.b661b034ec', '· Default:')}{' '} + {defaultValue} + + ) : null} + + ) : undefined } control={
diff --git a/src/renderer/src/components/settings/navigation/settings-navigation-types.ts b/src/renderer/src/components/settings/navigation/settings-navigation-types.ts index c90336ad724..798d0163f16 100644 --- a/src/renderer/src/components/settings/navigation/settings-navigation-types.ts +++ b/src/renderer/src/components/settings/navigation/settings-navigation-types.ts @@ -15,6 +15,7 @@ export type SettingsNavInstallStatus = const SETTINGS_NAV_TARGETS = [ 'general', + 'workspace-cleanup', 'integrations', 'accounts', 'browser', diff --git a/src/renderer/src/components/settings/page/settings-page-renderer.tsx b/src/renderer/src/components/settings/page/settings-page-renderer.tsx index 376049e9d6a..df2ec7f741f 100644 --- a/src/renderer/src/components/settings/page/settings-page-renderer.tsx +++ b/src/renderer/src/components/settings/page/settings-page-renderer.tsx @@ -25,7 +25,8 @@ import { renderMobileSettingsSection, renderOrcaAccountSettingsSection, renderSetupGuideSettingsSection, - renderShareSkillsSettingsSection + renderShareSkillsSettingsSection, + renderWorkspaceCleanupSettingsSection } from './settings-setup-workflow-section-renderers' import { renderGitSettingsSection, @@ -169,6 +170,7 @@ export function renderSettingsPage( {renderOrcaAccountSettingsSection(context, t)} {renderSetupGuideSettingsSection(context, t)} {renderGeneralSettingsSection(context, t)} + {renderWorkspaceCleanupSettingsSection(context, t)} {renderIntegrationsSettingsSection(context, t)} {renderMobileSettingsSection(context, t)} {renderAutomationsSettingsSection(context, t)} diff --git a/src/renderer/src/components/settings/page/settings-setup-workflow-section-renderers.tsx b/src/renderer/src/components/settings/page/settings-setup-workflow-section-renderers.tsx index e70d30dc142..5f8715f59d5 100644 --- a/src/renderer/src/components/settings/page/settings-setup-workflow-section-renderers.tsx +++ b/src/renderer/src/components/settings/page/settings-setup-workflow-section-renderers.tsx @@ -13,6 +13,8 @@ import { translate } from '@/i18n/i18n' import type { Translate } from '@/i18n/use-translate' import type { SettingsRenderContext } from './settings-render-context' import { SettingsGroup } from '../section-layout/SettingsGroup' +import { WorkspaceCleanupSettingsPane } from '../workspace-cleanup/WorkspaceCleanupSettingsPane' +import { runtimeTargetEnvironmentId } from '@/runtime/rpc/targets/runtime-client-target' export function renderOrcaAccountSettingsSection( context: SettingsRenderContext, @@ -236,3 +238,32 @@ export function renderSessionHistorySettingsSection( ) } + +export function renderWorkspaceCleanupSettingsSection( + context: SettingsRenderContext, + t: Translate = translate +): React.JSX.Element | null { + const { model, navigation, view } = context + // A paired browser's settings are its own; the cleanup rules live on the host it pairs with. + return model.showDesktopOnlySettings ? ( + + {view.isSectionMounted('workspace-cleanup') ? ( + + ) : null} + + ) : null +} diff --git a/src/renderer/src/components/settings/section-layout/SettingsGroupDisclosure.tsx b/src/renderer/src/components/settings/section-layout/SettingsGroupDisclosure.tsx index 9a51102871f..612a79198f9 100644 --- a/src/renderer/src/components/settings/section-layout/SettingsGroupDisclosure.tsx +++ b/src/renderer/src/components/settings/section-layout/SettingsGroupDisclosure.tsx @@ -8,6 +8,8 @@ import { SETTINGS_GROUP_NESTED_INSET_CLASS } from './SettingsGroup' type SettingsGroupDisclosureProps = { label?: string + /** A muted hint after the label naming what the disclosure holds. */ + description?: string forceOpen?: boolean children: React.ReactNode } @@ -15,6 +17,7 @@ type SettingsGroupDisclosureProps = { /** Collapsible rows inside a SettingsGroup card, one fixed step in from the card's rows. Search force-opens it so matches remain reachable. */ export function SettingsGroupDisclosure({ label, + description, forceOpen = false, children }: SettingsGroupDisclosureProps): React.JSX.Element { @@ -40,6 +43,9 @@ export function SettingsGroupDisclosure({ )} /> {label ?? t('auto.components.settings.AppearanceAdvancedDisclosure.advanced', 'Advanced')} + {description ? ( + {description} + ) : null} {/* Stays mounted while collapsed so a settings jump can find and reveal its rows. */}