(options?: {
archivedAt?: string;
runtimeConfig?: FrontendWorkspaceMetadata["runtimeConfig"];
})
| 8096 | }); |
| 8097 | |
| 8098 | function createHarness(options?: { |
| 8099 | archivedAt?: string; |
| 8100 | runtimeConfig?: FrontendWorkspaceMetadata["runtimeConfig"]; |
| 8101 | }): { |
| 8102 | workspaceService: WorkspaceService; |
| 8103 | metadataEvents: Array<FrontendWorkspaceMetadata | null>; |
| 8104 | managedPath: string; |
| 8105 | } { |
| 8106 | const runtimeConfig = options?.runtimeConfig ?? { |
| 8107 | type: "worktree", |
| 8108 | srcBaseDir: tempSrcBaseDir, |
| 8109 | }; |
| 8110 | const managedPath = path.join(tempSrcBaseDir, "_workspaces", workspaceName); |
| 8111 | |
| 8112 | const getCurrentMetadata = async (): Promise<FrontendWorkspaceMetadata> => { |
| 8113 | const transcriptOnly = await fsPromises |
| 8114 | .access(managedPath) |
| 8115 | .then(() => false) |
| 8116 | .catch(() => true); |
| 8117 | |
| 8118 | return { |
| 8119 | id: workspaceId, |
| 8120 | name: workspaceName, |
| 8121 | projectName, |
| 8122 | projectPath, |
| 8123 | runtimeConfig, |
| 8124 | archivedAt: options?.archivedAt, |
| 8125 | transcriptOnly, |
| 8126 | namedWorkspacePath: managedPath, |
| 8127 | }; |
| 8128 | }; |
| 8129 | |
| 8130 | const mockConfig: Partial<Config> = { |
| 8131 | srcDir: tempSrcBaseDir, |
| 8132 | getSessionDir: mock(() => "/tmp/test/sessions"), |
| 8133 | generateStableId: mock(() => "test-id"), |
| 8134 | getAllWorkspaceMetadata: mock(async () => [await getCurrentMetadata()]), |
| 8135 | }; |
| 8136 | |
| 8137 | const aiService = { |
| 8138 | on: mock(() => undefined), |
| 8139 | off: mock(() => undefined), |
| 8140 | } as unknown as AIService; |
| 8141 | |
| 8142 | const workspaceService = createWorkspaceServiceForTest({ |
| 8143 | config: mockConfig, |
| 8144 | historyService, |
| 8145 | aiService, |
| 8146 | initStateManager: mockInitStateManager as InitStateManager, |
| 8147 | }); |
| 8148 | |
| 8149 | const metadataEvents: Array<FrontendWorkspaceMetadata | null> = []; |
| 8150 | workspaceService.on("metadata", (event: unknown) => { |
| 8151 | if (!event || typeof event !== "object") { |
| 8152 | return; |
| 8153 | } |
| 8154 | const parsed = event as { workspaceId: string; metadata: FrontendWorkspaceMetadata | null }; |
| 8155 | if (parsed.workspaceId === workspaceId) { |
no test coverage detected