(directory, client, sessionID)
| 1557 | } |
| 1558 | job.goalStatus = "completed"; |
| 1559 | job.enabled = false; |
| 1560 | job.paused = true; |
| 1561 | job.goalCompletedAt = now(); |
| 1562 | job.goalSummary = parsed.summary || job.goalSummary || "Goal completed."; |
| 1563 | job.goalEvidence = completionEvidence || "No evidence provided."; |
| 1564 | job.noProgressCount = 0; |
| 1565 | state.jobs = (state.jobs || []).map((candidate) => candidate.id === job.id ? job : candidate); |
| 1566 | await writeState(directory, sessionID, state); |
| 1567 | await writeGoalReport(directory, sessionID, job); |
| 1568 | await appendLoopLog(directory, "goal-complete", { sessionID, job: job.name || job.id, summary: job.goalSummary }); |
| 1569 | return { ok: true, job, message: `Goal completed: ${job.goalSummary}` }; |
| 1570 | } |
| 1571 | async function setGoalBlocked(directory, sessionID, args = {}) { |
| 1572 | const state = await readState(directory, sessionID); |
| 1573 | const job = pickGoalJob(state, args.target); |
| 1574 | if (!job) |
| 1575 | return { ok: false, message: "No active experimental goal was found." }; |
no test coverage detected