import { describe, expect, test } from 'vitest' import { SessionInboundMessageSchema, SessionOutboundMessageSchema, } from './messages.js' describe('workspace message schemas', () => { test('parses fetch_workspaces_request', () => { const parsed = SessionInboundMessageSchema.parse({ type: 'fetch_workspaces_request', requestId: 'req-1', filter: { query: 'repo', projectId: 'remote:github.com/acme/repo', idPrefix: '/Users/me', }, sort: [{ key: 'activity_at', direction: 'desc' }], page: { limit: 50 }, subscribe: {}, }) expect(parsed.type).toBe('fetch_workspaces_request') }) test('parses open_project_request', () => { const parsed = SessionInboundMessageSchema.parse({ type: 'open_project_request', cwd: '/tmp/repo', requestId: 'req-open', }) expect(parsed.type).toBe('open_project_request') }) test('rejects invalid workspace update payload', () => { const result = SessionOutboundMessageSchema.safeParse({ type: 'workspace_update', payload: { kind: 'upsert', workspace: { id: '/repo', projectId: '/repo', projectDisplayName: 'repo', projectRootPath: '/repo', projectKind: 'non_git', workspaceKind: 'directory', name: '', status: 'not-a-bucket', activityAt: null, }, }, }) expect(result.success).toBe(false) }) })