forked from molecule-ai/molecule-core
Adds step-level checkpoint storage so workflows can resume from the last completed step after a crash or restart without replaying prior work. - Migration: `workflow_checkpoints` table — workspace_id (FK + CASCADE), workflow_id, step_name, step_index, completed_at, payload JSONB. UNIQUE(workspace_id, workflow_id, step_name) + covering index on (workspace_id, workflow_id, completed_at DESC). - Handlers (platform/internal/handlers/checkpoints.go): POST /workspaces/:id/checkpoints — upsert via ON CONFLICT DO UPDATE GET /workspaces/:id/checkpoints/:wfid — list steps ordered step_index DESC DELETE /workspaces/:id/checkpoints/:wfid — clear on clean shutdown (404 if none) - Router: all three routes on the wsAuth group (WorkspaceAuth middleware); workspace A's token cannot reach workspace B's checkpoints. - Tests (11 cases, sqlmock + race-safe): upsert-insert, upsert-update, payload forwarding, list-ordered, list-not-found, rows.Err() → 500, delete-success, delete-not-found, callerMismatch 403 on all 3 endpoints. Closes #788. Parent: #583-1. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cmd/server | ||
| internal | ||
| migrations | ||
| pkg/provisionhook | ||
| Dockerfile | ||
| Dockerfile.tenant | ||
| entrypoint-tenant.sh | ||
| go.mod | ||
| go.sum | ||