Skip to content

Commit d080a42

Browse files
committed
feat(webui): add task supervision workspace and recovery
1 parent 383cf8d commit d080a42

51 files changed

Lines changed: 1856 additions & 305 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎cmd/odek/refs_e2e_test.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ func TestE2E_RunWithCtxFile(t *testing.T) {
7070
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
7171
homeDir := t.TempDir()
7272
os.Setenv("HOME", homeDir)
73+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
7374
os.Unsetenv("ODEK_SYSTEM")
7475

7576
// Create a temp working directory with a test file
@@ -164,6 +165,7 @@ func TestE2E_RunWithAtRef(t *testing.T) {
164165
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
165166
homeDir := t.TempDir()
166167
os.Setenv("HOME", homeDir)
168+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
167169
os.Unsetenv("ODEK_SYSTEM")
168170

169171
workDir := t.TempDir()
@@ -244,6 +246,7 @@ func TestE2E_RunWithBothCtxAndAtRef(t *testing.T) {
244246
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
245247
homeDir := t.TempDir()
246248
os.Setenv("HOME", homeDir)
249+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
247250
os.Unsetenv("ODEK_SYSTEM")
248251

249252
workDir := t.TempDir()
@@ -328,6 +331,7 @@ func TestE2E_RunWithCtxMissingFile(t *testing.T) {
328331
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
329332
homeDir := t.TempDir()
330333
os.Setenv("HOME", homeDir)
334+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
331335
os.Unsetenv("ODEK_SYSTEM")
332336

333337
sessionDir := filepath.Join(homeDir, ".odek", "sessions")
@@ -373,6 +377,7 @@ func TestE2E_RunWithCtxShortFlag(t *testing.T) {
373377
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
374378
homeDir := t.TempDir()
375379
os.Setenv("HOME", homeDir)
380+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
376381
os.Unsetenv("ODEK_SYSTEM")
377382

378383
workDir := t.TempDir()
@@ -434,6 +439,7 @@ func TestE2E_RunWithMultipleCtxFiles(t *testing.T) {
434439
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
435440
homeDir := t.TempDir()
436441
os.Setenv("HOME", homeDir)
442+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
437443
os.Unsetenv("ODEK_SYSTEM")
438444

439445
workDir := t.TempDir()

‎cmd/odek/repl_e2e_test.go‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ func TestE2E_REPL_BasicPrompt(t *testing.T) {
7070
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
7171
homeDir := t.TempDir()
7272
os.Setenv("HOME", homeDir)
73+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
7374
os.Unsetenv("ODEK_SYSTEM")
7475

7576
defer func() {
@@ -184,6 +185,7 @@ func TestE2E_REPL_MultiTurn(t *testing.T) {
184185
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
185186
homeDir := t.TempDir()
186187
os.Setenv("HOME", homeDir)
188+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
187189
os.Unsetenv("ODEK_SYSTEM")
188190

189191
defer func() {
@@ -290,6 +292,7 @@ func TestE2E_REPL_SlashHelp(t *testing.T) {
290292
os.Setenv("ODEK_BASE_URL", llmSrv.URL)
291293
homeDir := t.TempDir()
292294
os.Setenv("HOME", homeDir)
295+
writeMockProviderFixture(t, homeDir, llmSrv.URL)
293296
os.Unsetenv("ODEK_SYSTEM")
294297

295298
defer func() {

‎cmd/odek/sandbox_e2e_test.go‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import (
2626
// into the sandbox container and accessible via the container's shell.
2727
func TestE2E_SandboxFileInjection(t *testing.T) {
2828
skipIfNoE2E(t)
29+
if !dockerAvailable() {
30+
t.Skip("Docker daemon unavailable")
31+
}
2932

3033
// Create temp file to inject
3134
workDir := t.TempDir()
@@ -78,6 +81,9 @@ func TestE2E_SandboxFileInjection(t *testing.T) {
7881
// in subdirectories preserve their relative path in the container.
7982
func TestE2E_SandboxFileInjection_NestedPath(t *testing.T) {
8083
skipIfNoE2E(t)
84+
if !dockerAvailable() {
85+
t.Skip("Docker daemon unavailable")
86+
}
8187

8288
workDir := t.TempDir()
8389
subDir := filepath.Join(workDir, "subdir")
@@ -129,6 +135,9 @@ func TestE2E_SandboxFileInjection_NestedPath(t *testing.T) {
129135
// path files outside cwd are injected by basename into /workspace/.
130136
func TestE2E_SandboxFileInjection_AbsolutePath(t *testing.T) {
131137
skipIfNoE2E(t)
138+
if !dockerAvailable() {
139+
t.Skip("Docker daemon unavailable")
140+
}
132141

133142
// Create a file outside the working directory
134143
externalDir := t.TempDir()
@@ -179,6 +188,9 @@ func TestE2E_SandboxFileInjection_AbsolutePath(t *testing.T) {
179188
// multiple files at once.
180189
func TestE2E_SandboxFileInjection_MultipleFiles(t *testing.T) {
181190
skipIfNoE2E(t)
191+
if !dockerAvailable() {
192+
t.Skip("Docker daemon unavailable")
193+
}
182194

183195
workDir := t.TempDir()
184196
os.WriteFile(filepath.Join(workDir, "a.txt"), []byte("file A"), 0644)
@@ -225,6 +237,9 @@ func TestE2E_SandboxFileInjection_MultipleFiles(t *testing.T) {
225237
// the in-container processes kept running until the container was destroyed.
226238
func TestE2E_SandboxTimeoutKillsInContainerProcesses(t *testing.T) {
227239
skipIfNoE2E(t)
240+
if !dockerAvailable() {
241+
t.Skip("Docker daemon unavailable")
242+
}
228243

229244
workDir := t.TempDir()
230245
containerName := fmt.Sprintf("odek-test-timeout-%d", time.Now().UnixNano())

0 commit comments

Comments
 (0)