(result)
| 336 | job.lastRunAt = job.immediate ? 0 : now() |
| 337 | |
| 338 | if (!job.action && !job.promptFile && !job.goalFile) return { ok: false, error: "Missing action. Example: /loop 0s continue from progress.md, /loop-goal ship the feature, or /loop 0s --prompt-file loop-prompt.md" } |
| 339 | return { ok: true, job } |
| 340 | } |
| 341 | |
| 342 | function stateDir(directory) { return path.join(directory, STATE_DIR) } |
| 343 | function statePath(directory, sessionID) { return path.join(stateDir(directory), `${safeID(sessionID)}.json`) } |
| 344 | async function ensureDir(directory) { await fs.mkdir(directory, { recursive: true }) } |
no outgoing calls
no test coverage detected