@codetreker/daynight 0.21.2 → 0.21.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +1176 -0
  2. package/dist/api/client.js +15 -2
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/api/types.d.ts +1 -0
  5. package/dist/commands/review/instance-lock.js +2 -114
  6. package/dist/commands/review/instance-lock.js.map +1 -1
  7. package/dist/commands/skill/skills/using-daynight/SKILL.md +39 -41
  8. package/dist/commands/skill/skills/using-daynight/references/create-task.md +15 -12
  9. package/dist/commands/skill/skills/using-daynight/references/execute-task-in-managed.md +91 -0
  10. package/dist/commands/skill/skills/using-daynight/references/goal.md +34 -32
  11. package/dist/commands/skill/skills/using-daynight/references/handbook.md +41 -10
  12. package/dist/commands/skill/skills/using-daynight/references/handoff.md +1 -1
  13. package/dist/commands/skill/skills/using-daynight/references/run-task.md +55 -164
  14. package/dist/commands/skill/skills/using-daynight/references/task-content.md +6 -4
  15. package/dist/commands/skill/skills/using-daynight/references/task-execution.md +136 -0
  16. package/dist/commands/task/command.js +13 -1
  17. package/dist/commands/task/command.js.map +1 -1
  18. package/dist/commands/task/definition.js +3 -2
  19. package/dist/commands/task/definition.js.map +1 -1
  20. package/dist/commands/worker/identity.d.ts +2 -0
  21. package/dist/commands/worker/identity.js +41 -0
  22. package/dist/commands/worker/identity.js.map +1 -0
  23. package/dist/commands/worker/instance-lock.d.ts +6 -0
  24. package/dist/commands/worker/instance-lock.js +7 -0
  25. package/dist/commands/worker/instance-lock.js.map +1 -0
  26. package/dist/commands/worker/paths.d.ts +11 -0
  27. package/dist/commands/worker/paths.js +16 -0
  28. package/dist/commands/worker/paths.js.map +1 -0
  29. package/dist/commands/worker/store.d.ts +55 -0
  30. package/dist/commands/worker/store.js +460 -0
  31. package/dist/commands/worker/store.js.map +1 -0
  32. package/dist/commands/worker/types.d.ts +101 -0
  33. package/dist/commands/worker/types.js +2 -0
  34. package/dist/commands/worker/types.js.map +1 -0
  35. package/dist/commands/worker/worktrees.d.ts +29 -0
  36. package/dist/commands/worker/worktrees.js +285 -0
  37. package/dist/commands/worker/worktrees.js.map +1 -0
  38. package/dist/config/document.d.ts +1 -1
  39. package/dist/config/document.js +1 -0
  40. package/dist/config/document.js.map +1 -1
  41. package/dist/platform/instance-lock.d.ts +5 -0
  42. package/dist/platform/instance-lock.js +115 -0
  43. package/dist/platform/instance-lock.js.map +1 -0
  44. package/dist/repository/git.d.ts +2 -0
  45. package/dist/repository/git.js +8 -5
  46. package/dist/repository/git.js.map +1 -1
  47. package/package.json +2 -2
  48. package/dist/commands/skill/skills/using-daynight/references/autopilot.md +0 -136
@@ -0,0 +1,460 @@
1
+ import path from "node:path";
2
+ import Database from "better-sqlite3";
3
+ import { canonicalId } from "../../api/parse.js";
4
+ import { normalizeServerUrl } from "../../config/server.js";
5
+ const integer = (value, name, minimum = 0) => {
6
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < minimum)
7
+ throw new Error(`${name} must be a safe integer of at least ${minimum}.`);
8
+ return value;
9
+ };
10
+ const text = (value, name, empty = false) => {
11
+ if (typeof value !== "string" || (!empty && value.trim().length === 0))
12
+ throw new Error(`${name} must be ${empty ? "a" : "a nonempty"} string.`);
13
+ return value;
14
+ };
15
+ const id = (value, name) => {
16
+ const normalized = canonicalId(text(value, name));
17
+ if (normalized === null)
18
+ throw new Error(`${name} must be a UUID.`);
19
+ return normalized;
20
+ };
21
+ const absolutePath = (value, name) => {
22
+ const result = text(value, name);
23
+ if (!path.isAbsolute(result))
24
+ throw new Error(`${name} must be absolute.`);
25
+ return result;
26
+ };
27
+ const bool = (value, name) => {
28
+ if (typeof value !== "boolean")
29
+ throw new Error(`${name} must be boolean.`);
30
+ return value;
31
+ };
32
+ const oneOf = (value, choices, name) => {
33
+ if (typeof value !== "string" || !choices.includes(value))
34
+ throw new Error(`${name} is invalid.`);
35
+ return value;
36
+ };
37
+ const record = (value, fields, name) => {
38
+ if (typeof value !== "object" || value === null || Array.isArray(value))
39
+ throw new Error(`${name} must be an object.`);
40
+ if (Object.keys(value).length !== fields.length || fields.some((field) => !Object.hasOwn(value, field)))
41
+ throw new Error(`${name} has invalid fields.`);
42
+ return value;
43
+ };
44
+ const nullable = (value, parse) => value === null ? null : parse(value);
45
+ const version = (value) => {
46
+ if (typeof value !== "string" || !/^[1-9][0-9]*$/.test(value) || BigInt(value) > 9223372036854775807n)
47
+ throw new Error("Remote version must be a positive int64 decimal string.");
48
+ return value;
49
+ };
50
+ const exactVersion = (value) => {
51
+ if (typeof value !== "bigint")
52
+ throw new Error("Remote version must be provided as bigint.");
53
+ return version(value.toString());
54
+ };
55
+ const projectKey = (value) => ({ serverOrigin: normalizeServerUrl(value.serverOrigin), projectId: id(value.projectId, "Project ID") });
56
+ const claimKey = (value) => ({ ...projectKey(value), taskId: id(value.taskId, "Task ID"), claimId: id(value.claimId, "Claim ID") });
57
+ const parseConfiguration = (value) => {
58
+ const data = record(value, ["agent", "model", "args", "recoveryLimit"], "Frozen execution configuration");
59
+ if (!Array.isArray(data.args))
60
+ throw new Error("Agent arguments must be an array.");
61
+ return { agent: oneOf(data.agent, ["copilot", "codex"], "Agent"), model: nullable(data.model, (entry) => text(entry, "Model")),
62
+ args: data.args.map((entry) => text(entry, "Agent argument", true)), recoveryLimit: integer(data.recoveryLimit, "Recovery limit") };
63
+ };
64
+ const parseWorktree = (value) => {
65
+ const data = record(value, ["repositoryPath", "commonDirectory", "worktreePath", "branch"], "Worktree binding");
66
+ return { repositoryPath: absolutePath(data.repositoryPath, "Repository path"), commonDirectory: absolutePath(data.commonDirectory, "Git common directory"), worktreePath: absolutePath(data.worktreePath, "Worktree path"), branch: text(data.branch, "Worktree branch") };
67
+ };
68
+ const parseHerdr = (value) => {
69
+ const data = record(value, ["session", "workspaceId", "paneId"], "Herdr binding");
70
+ return { session: text(data.session, "Herdr session"), workspaceId: text(data.workspaceId, "Herdr workspace ID"), paneId: text(data.paneId, "Herdr pane ID") };
71
+ };
72
+ const parseNative = (value) => {
73
+ const data = record(value, ["sessionId", "source"], "Native session reference");
74
+ return { sessionId: text(data.sessionId, "Native session ID"), source: oneOf(data.source, ["herdr", "native-history"], "Native reference source") };
75
+ };
76
+ const parseResources = (value) => {
77
+ const data = record(value, ["worktree", "herdr", "nativeSession"], "Execution resources");
78
+ return { worktree: nullable(data.worktree, parseWorktree), herdr: nullable(data.herdr, parseHerdr), nativeSession: nullable(data.nativeSession, parseNative) };
79
+ };
80
+ const parseRecovery = (value) => {
81
+ const data = record(value, ["count", "pauseReason", "retryAuthorized"], "Recovery state");
82
+ return { count: integer(data.count, "Recovery count"), pauseReason: nullable(data.pauseReason, (entry) => text(entry, "Pause reason")), retryAuthorized: bool(data.retryAuthorized, "Recovery retry authorization") };
83
+ };
84
+ const parseCleanup = (value) => {
85
+ const data = record(value, ["kind", "startedAt", "deadline", "input", "result", "error", "agentStopped", "workspaceClosed", "worktreeDeleted"], "Cleanup state");
86
+ const result = { kind: oneOf(data.kind, ["terminal", "shutdown"], "Cleanup kind"), startedAt: integer(data.startedAt, "Cleanup start"), deadline: integer(data.deadline, "Cleanup deadline"),
87
+ input: oneOf(data.input, ["not-submitted", "unknown", "submitted", "rejected", "unavailable"], "Cleanup input state"),
88
+ result: nullable(data.result, (entry) => oneOf(entry, ["completed", "timed-out", "failed", "unavailable"], "Cleanup result")), error: nullable(data.error, (entry) => text(entry, "Cleanup error")),
89
+ agentStopped: bool(data.agentStopped, "Agent stopped"), workspaceClosed: bool(data.workspaceClosed, "Workspace closed"), worktreeDeleted: bool(data.worktreeDeleted, "Worktree deleted") };
90
+ if (result.deadline < result.startedAt || result.deadline - result.startedAt > 600_000)
91
+ throw new Error("Cleanup deadline must be within ten minutes of its original start.");
92
+ if ((result.workspaceClosed && !result.agentStopped) || (result.worktreeDeleted && !result.workspaceClosed))
93
+ throw new Error("Cleanup progress is out of order.");
94
+ return result;
95
+ };
96
+ const parseIntent = (value) => {
97
+ if (typeof value !== "object" || value === null || !("kind" in value))
98
+ throw new Error("Control intent must be an object.");
99
+ if (value.kind === "release") {
100
+ const data = record(value, ["kind", "sourceClaimId", "version"], "Release intent");
101
+ return { kind: "release", sourceClaimId: id(data.sourceClaimId, "Source claim ID"), version: version(data.version) };
102
+ }
103
+ const data = record(value, ["kind", "sourceClaimId", "version", "targetClaimId", "target"], "Transfer intent");
104
+ const target = record(data.target, ["userId", "workerId", "machine", "platform", "agent", "worktreeId"], "Transfer target");
105
+ const machine = record(target.machine, ["id", "name"], "Transfer machine");
106
+ return { kind: oneOf(data.kind, ["transfer"], "Control kind"), sourceClaimId: id(data.sourceClaimId, "Source claim ID"), version: version(data.version), targetClaimId: id(data.targetClaimId, "Target claim ID"),
107
+ target: { userId: id(target.userId, "Target user ID"), workerId: id(target.workerId, "Target worker ID"), machine: { id: id(machine.id, "Machine ID"), name: text(machine.name, "Machine name") },
108
+ platform: oneOf(target.platform, ["linux", "windows", "macos"], "Target platform"), agent: oneOf(target.agent, ["copilot", "codex"], "Target agent"), worktreeId: id(target.worktreeId, "Target worktree ID") } };
109
+ };
110
+ const parseControl = (value) => {
111
+ const data = record(value, ["intent", "requestedAt", "submission", "submittedAt", "outcome", "resultVersion", "error"], "Control state");
112
+ const result = { intent: parseIntent(data.intent), requestedAt: integer(data.requestedAt, "Control request time"), submission: oneOf(data.submission, ["not-submitted", "unknown", "confirmed", "rejected"], "Control submission"),
113
+ submittedAt: nullable(data.submittedAt, (entry) => integer(entry, "Control submission time")), outcome: nullable(data.outcome, (entry) => oneOf(entry, ["applied", "ownership-ended"], "Control outcome")), resultVersion: nullable(data.resultVersion, version), error: nullable(data.error, (entry) => text(entry, "Control error")) };
114
+ if ((result.submission === "confirmed") !== (result.outcome !== null))
115
+ throw new Error("Control outcome does not match its submission state.");
116
+ if ((result.outcome === "applied") !== (result.resultVersion !== null))
117
+ throw new Error("Only an applied remote control outcome has a result version.");
118
+ if (result.submission === "unknown" && result.submittedAt === null)
119
+ throw new Error("Unknown control submission is missing its submission time.");
120
+ return result;
121
+ };
122
+ const same = (left, right) => JSON.stringify(left) === JSON.stringify(right);
123
+ const projectColumns = "server_origin AS serverOrigin, project_id AS projectId, repo_url AS repoUrl, local_path AS localPath";
124
+ const taskColumns = `server_origin AS serverOrigin, project_id AS projectId, task_id AS taskId, claim_id AS claimId,
125
+ worker_id AS workerId, worktree_id AS worktreeId, status, repo_url AS repoUrl, repository_path AS repositoryPath,
126
+ configuration, resources, recovery, cleanup, control, created_at AS createdAt, updated_at AS updatedAt`;
127
+ const asTask = (row) => ({ ...row,
128
+ configuration: row.configuration === null ? null : parseConfiguration(JSON.parse(row.configuration)),
129
+ resources: parseResources(JSON.parse(row.resources)), recovery: parseRecovery(JSON.parse(row.recovery)),
130
+ cleanup: row.cleanup === null ? null : parseCleanup(JSON.parse(row.cleanup)), control: row.control === null ? null : parseControl(JSON.parse(row.control)) });
131
+ const schema = `
132
+ CREATE TABLE projects (
133
+ server_origin TEXT NOT NULL, project_id TEXT NOT NULL, repo_url TEXT NOT NULL, local_path TEXT NOT NULL,
134
+ PRIMARY KEY(server_origin, project_id)
135
+ ) STRICT;
136
+ CREATE TABLE tasks (
137
+ server_origin TEXT NOT NULL, project_id TEXT NOT NULL, task_id TEXT NOT NULL, claim_id TEXT NOT NULL,
138
+ worker_id TEXT NOT NULL, worktree_id TEXT NOT NULL,
139
+ status TEXT NOT NULL CHECK(status IN ('pending', 'active', 'done')),
140
+ repo_url TEXT NOT NULL, repository_path TEXT NOT NULL,
141
+ configuration TEXT CHECK(configuration IS NULL OR json_valid(configuration)),
142
+ resources TEXT NOT NULL CHECK(json_valid(resources)), recovery TEXT NOT NULL CHECK(json_valid(recovery)),
143
+ cleanup TEXT CHECK(cleanup IS NULL OR json_valid(cleanup)), control TEXT CHECK(control IS NULL OR json_valid(control)),
144
+ created_at INTEGER NOT NULL CHECK(created_at >= 0), updated_at INTEGER NOT NULL CHECK(updated_at >= 0),
145
+ PRIMARY KEY(server_origin, project_id, task_id, claim_id), UNIQUE(server_origin, claim_id)
146
+ ) STRICT;
147
+ CREATE UNIQUE INDEX tasks_one_active_per_task ON tasks(server_origin, project_id, task_id) WHERE status = 'active';
148
+ PRAGMA user_version = 1;
149
+ `;
150
+ export const openWorkerStore = (databaseFile, options = {}) => {
151
+ absolutePath(databaseFile, "The SQLite database path");
152
+ const busyTimeoutMs = options.busyTimeoutMs === undefined ? 5000 : integer(options.busyTimeoutMs, "SQLite busy timeout", 1);
153
+ if (busyTimeoutMs > 60_000)
154
+ throw new Error("SQLite busy timeout must not exceed 60000 milliseconds.");
155
+ const db = new Database(databaseFile, { timeout: busyTimeoutMs });
156
+ try {
157
+ const journalMode = db.pragma("journal_mode = WAL", { simple: true });
158
+ if (journalMode !== "wal")
159
+ throw new Error(`SQLite refused WAL mode: ${String(journalMode)}.`);
160
+ db.pragma("synchronous = FULL");
161
+ if (db.pragma("synchronous", { simple: true }) !== 2)
162
+ throw new Error("SQLite refused synchronous=FULL.");
163
+ db.transaction(() => {
164
+ const currentVersion = db.pragma("user_version", { simple: true });
165
+ if (currentVersion !== 0 && currentVersion !== 1)
166
+ throw new Error(`Unsupported worker SQLite schema version ${currentVersion}; supported version is 1.`);
167
+ const tables = db.prepare("SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name").all();
168
+ if (currentVersion === 0) {
169
+ if (tables.length !== 0)
170
+ throw new Error("An unversioned worker database must not contain existing tables.");
171
+ db.exec(schema);
172
+ }
173
+ else if (!same(tables.map(({ name }) => name), ["projects", "tasks"]))
174
+ throw new Error("The worker database does not contain its projects/tasks schema.");
175
+ db.prepare(`SELECT ${projectColumns} FROM projects LIMIT 0`).all();
176
+ db.prepare(`SELECT ${taskColumns} FROM tasks LIMIT 0`).all();
177
+ }).immediate();
178
+ }
179
+ catch (error) {
180
+ try {
181
+ db.close();
182
+ }
183
+ catch (closeError) {
184
+ throw new AggregateError([error, closeError], "Worker SQLite startup and connection cleanup failed.");
185
+ }
186
+ throw error;
187
+ }
188
+ const atomic = (operation) => db.transaction(operation).immediate();
189
+ const getProject = (identity) => db.prepare(`SELECT ${projectColumns} FROM projects WHERE server_origin = @serverOrigin AND project_id = @projectId`).get(projectKey(identity)) ?? null;
190
+ const getTask = (identity) => {
191
+ const row = db.prepare(`SELECT ${taskColumns} FROM tasks WHERE server_origin = @serverOrigin AND project_id = @projectId AND task_id = @taskId AND claim_id = @claimId`).get(claimKey(identity));
192
+ return row === undefined ? null : asTask(row);
193
+ };
194
+ const needTask = (identity) => {
195
+ const task = getTask(identity);
196
+ if (task === null)
197
+ throw new Error("The claimed task is not registered.");
198
+ return task;
199
+ };
200
+ const writeTask = (task) => {
201
+ const values = { ...task, configuration: task.configuration === null ? null : JSON.stringify(parseConfiguration(task.configuration)), resources: JSON.stringify(parseResources(task.resources)), recovery: JSON.stringify(parseRecovery(task.recovery)),
202
+ cleanup: task.cleanup === null ? null : JSON.stringify(parseCleanup(task.cleanup)), control: task.control === null ? null : JSON.stringify(parseControl(task.control)) };
203
+ db.prepare(`UPDATE tasks SET status = @status, configuration = @configuration, resources = @resources, recovery = @recovery,
204
+ cleanup = @cleanup, control = @control, updated_at = @updatedAt
205
+ WHERE server_origin = @serverOrigin AND project_id = @projectId AND task_id = @taskId AND claim_id = @claimId`).run(values);
206
+ return needTask(task);
207
+ };
208
+ const change = (identity, now, operation) => atomic(() => {
209
+ integer(now, "Task update time");
210
+ const task = needTask(identity);
211
+ if (task.status === "done")
212
+ throw new Error("The local execution is already done.");
213
+ return writeTask({ ...operation(task), updatedAt: now });
214
+ });
215
+ const requireOrdinary = (task) => {
216
+ if (task.control !== null || task.cleanup !== null)
217
+ throw new Error("A control or cleanup intent prevents ordinary execution.");
218
+ if (task.configuration === null)
219
+ throw new Error("The original frozen execution configuration is missing.");
220
+ };
221
+ const needCleanup = (task) => {
222
+ if (task.cleanup === null)
223
+ throw new Error("Cleanup has not started.");
224
+ return task.cleanup;
225
+ };
226
+ const fullyCleaned = (task) => {
227
+ const cleanup = needCleanup(task);
228
+ if (cleanup.kind !== "terminal" || cleanup.result === null || !cleanup.agentStopped || !cleanup.workspaceClosed || !cleanup.worktreeDeleted)
229
+ throw new Error("Terminal cleanup must record its result and confirm agent stopped, workspace closed and worktree deleted.");
230
+ };
231
+ return {
232
+ close: () => { db.close(); },
233
+ getProject,
234
+ listProjects: () => db.prepare(`SELECT ${projectColumns} FROM projects ORDER BY server_origin, project_id`).all(),
235
+ registerProject: (project) => atomic(() => {
236
+ const value = { ...projectKey(project), repoUrl: text(project.repoUrl, "Repository URL"), localPath: absolutePath(project.localPath, "Project local path") };
237
+ const existing = getProject(value);
238
+ if (existing !== null && (existing.repoUrl !== value.repoUrl || existing.localPath !== value.localPath)) {
239
+ const unfinished = db.prepare("SELECT 1 FROM tasks WHERE server_origin = @serverOrigin AND project_id = @projectId AND status <> 'done' LIMIT 1").get(value);
240
+ if (unfinished !== undefined)
241
+ throw new Error("An unfinished execution prevents changing its project repository binding.");
242
+ }
243
+ db.prepare(`INSERT INTO projects(server_origin, project_id, repo_url, local_path) VALUES (@serverOrigin, @projectId, @repoUrl, @localPath)
244
+ ON CONFLICT(server_origin, project_id) DO UPDATE SET repo_url = excluded.repo_url, local_path = excluded.local_path`).run(value);
245
+ return value;
246
+ }),
247
+ getTask,
248
+ listTasks: () => db.prepare(`SELECT ${taskColumns} FROM tasks ORDER BY created_at, server_origin, project_id, task_id, claim_id`).all().map(asTask),
249
+ listUnfinishedTasks: () => db.prepare(`SELECT ${taskColumns} FROM tasks WHERE status <> 'done' ORDER BY created_at, server_origin, project_id, task_id, claim_id`).all().map(asTask),
250
+ registerPending: (claim, input, now) => atomic(() => {
251
+ const key = { ...claimKey(claim), workerId: id(claim.workerId, "Worker ID"), worktreeId: id(claim.worktreeId, "Worktree ID") };
252
+ integer(now, "Task creation time");
253
+ oneOf(input.kind, ["new", "recovered"], "Pending registration kind");
254
+ if (input.kind === "new" && input.configuration === null)
255
+ throw new Error("A new execution requires its frozen configuration.");
256
+ const configuration = input.configuration === null ? null : parseConfiguration(input.configuration);
257
+ const existing = getTask(key);
258
+ if (existing !== null) {
259
+ if (existing.workerId !== key.workerId || existing.worktreeId !== key.worktreeId)
260
+ throw new Error("The claim is already bound to a different worker or worktree identity.");
261
+ return existing;
262
+ }
263
+ const project = getProject(key);
264
+ if (project === null)
265
+ throw new Error("The project repository binding must be persisted before claiming a task.");
266
+ const values = { ...key, configuration: configuration === null ? null : JSON.stringify(configuration), repoUrl: project.repoUrl, repositoryPath: project.localPath,
267
+ resources: JSON.stringify({ worktree: null, herdr: null, nativeSession: null }), recovery: JSON.stringify({ count: 0, pauseReason: configuration === null ? "Original frozen execution configuration is missing." : null, retryAuthorized: false }), now };
268
+ db.prepare(`INSERT INTO tasks(server_origin, project_id, task_id, claim_id, worker_id, worktree_id, status, repo_url, repository_path, configuration, resources, recovery, created_at, updated_at)
269
+ VALUES (@serverOrigin, @projectId, @taskId, @claimId, @workerId, @worktreeId, 'pending', @repoUrl, @repositoryPath, @configuration, @resources, @recovery, @now, @now)`).run(values);
270
+ return needTask(key);
271
+ }),
272
+ restoreOriginalConfiguration: (identity, configuration, now) => change(identity, now, (task) => {
273
+ const original = parseConfiguration(configuration);
274
+ if (task.configuration !== null && !same(task.configuration, original))
275
+ throw new Error("The frozen execution configuration cannot be replaced.");
276
+ return { ...task, configuration: original };
277
+ }),
278
+ activateTask: (identity, now) => change(identity, now, (task) => {
279
+ requireOrdinary(task);
280
+ if (task.recovery.pauseReason !== null)
281
+ throw new Error("The execution is paused.");
282
+ return { ...task, status: "active" };
283
+ }),
284
+ bindWorktree: (identity, binding, now) => change(identity, now, (task) => {
285
+ if (task.status !== "active")
286
+ throw new Error("Resource creation requires an active execution.");
287
+ const value = parseWorktree(binding);
288
+ if (value.repositoryPath !== task.repositoryPath)
289
+ throw new Error("The worktree repository does not match the original project binding.");
290
+ if (task.resources.worktree !== null && !same(task.resources.worktree, value))
291
+ throw new Error("The execution already has a different worktree binding.");
292
+ return { ...task, resources: { ...task.resources, worktree: value } };
293
+ }),
294
+ bindHerdr: (identity, binding, now) => change(identity, now, (task) => {
295
+ if (task.status !== "active" || task.resources.worktree === null)
296
+ throw new Error("Herdr binding requires an active execution and its original worktree.");
297
+ const value = parseHerdr(binding);
298
+ if (task.resources.herdr !== null && !same(task.resources.herdr, value))
299
+ throw new Error("The execution already has a different Herdr binding.");
300
+ return { ...task, resources: { ...task.resources, herdr: value } };
301
+ }),
302
+ rebindHerdr: (identity, expectedPrevious, next, proof, now) => change(identity, now, (task) => {
303
+ requireOrdinary(task);
304
+ if (task.status !== "active" || task.resources.worktree === null || task.resources.herdr === null)
305
+ throw new Error("Herdr rebinding requires the active original worktree and workspace binding.");
306
+ if (!same(task.resources.herdr, parseHerdr(expectedPrevious)))
307
+ throw new Error("The previous Herdr binding does not match the original execution.");
308
+ if (proof.originalAgentStopped !== true || proof.oldWorkspaceClosed !== true)
309
+ throw new Error("Herdr rebinding requires confirmed original agent stop and old workspace closure.");
310
+ return { ...task, resources: { ...task.resources, herdr: parseHerdr(next) } };
311
+ }),
312
+ bindNativeSession: (identity, reference, now) => change(identity, now, (task) => {
313
+ if (task.status !== "active" || task.resources.herdr === null)
314
+ throw new Error("Native history binding requires an active Herdr workspace.");
315
+ const value = parseNative(reference);
316
+ if (task.resources.nativeSession !== null && task.resources.nativeSession.sessionId !== value.sessionId)
317
+ throw new Error("The original native session cannot be replaced.");
318
+ return { ...task, resources: { ...task.resources, nativeSession: value } };
319
+ }),
320
+ pauseTask: (identity, reason, now) => change(identity, now, (task) => ({ ...task, recovery: { ...task.recovery, pauseReason: text(reason, "Pause reason") } })),
321
+ clearPause: (identity, now) => change(identity, now, (task) => {
322
+ requireOrdinary(task);
323
+ return { ...task, recovery: { ...task.recovery, pauseReason: null } };
324
+ }),
325
+ authorizeRecoveryRetry: (identity, now) => change(identity, now, (task) => {
326
+ requireOrdinary(task);
327
+ if (task.status !== "active" || task.recovery.pauseReason === null)
328
+ throw new Error("An extra recovery requires a paused active execution.");
329
+ return { ...task, recovery: { ...task.recovery, retryAuthorized: true } };
330
+ }),
331
+ beginRecovery: (identity, now) => change(identity, now, (task) => {
332
+ requireOrdinary(task);
333
+ if (task.status !== "active")
334
+ throw new Error("Only an active execution can recover.");
335
+ const recovery = task.recovery;
336
+ if (recovery.pauseReason !== null && !recovery.retryAuthorized)
337
+ throw new Error("The paused execution requires an explicit recovery retry.");
338
+ if (task.configuration === null)
339
+ throw new Error("The original frozen execution configuration is missing.");
340
+ if (recovery.count >= task.configuration.recoveryLimit && !recovery.retryAuthorized)
341
+ throw new Error("The execution recovery budget is exhausted.");
342
+ return { ...task, recovery: { count: integer(recovery.count + 1, "Recovery count"), pauseReason: null, retryAuthorized: false } };
343
+ }),
344
+ beginCleanup: (identity, input, now) => change(identity, now, (task) => {
345
+ oneOf(input.kind, ["terminal", "shutdown"], "Cleanup kind");
346
+ const existing = task.cleanup;
347
+ if (existing !== null)
348
+ return { ...task, cleanup: { ...existing, kind: existing.kind === "terminal" ? "terminal" : input.kind } };
349
+ if (task.control !== null && input.kind !== "terminal")
350
+ throw new Error("A source control intent requires terminal cleanup.");
351
+ return { ...task, status: "active", cleanup: parseCleanup({ kind: input.kind, startedAt: now, deadline: input.deadline, input: "not-submitted", result: null, error: null, agentStopped: false, workspaceClosed: false, worktreeDeleted: false }) };
352
+ }),
353
+ markCleanupInputSubmitting: (identity, now) => change(identity, now, (task) => {
354
+ const cleanup = needCleanup(task);
355
+ if (cleanup.input !== "not-submitted" || cleanup.agentStopped || cleanup.result !== null)
356
+ throw new Error("Cleanup input cannot be submitted again or after cleanup completion or agent stop.");
357
+ if (now >= cleanup.deadline)
358
+ throw new Error("The original cleanup deadline has elapsed; no new input may be submitted.");
359
+ return { ...task, cleanup: { ...cleanup, input: "unknown" } };
360
+ }),
361
+ recordCleanupInputOutcome: (identity, input, now) => change(identity, now, (task) => {
362
+ const cleanup = needCleanup(task);
363
+ oneOf(input, ["submitted", "rejected", "unavailable"], "Cleanup input outcome");
364
+ if (cleanup.input !== "unknown" && !(cleanup.input === "not-submitted" && input === "unavailable") && cleanup.input !== input)
365
+ throw new Error("The cleanup input outcome conflicts with the original submission.");
366
+ return { ...task, cleanup: { ...cleanup, input } };
367
+ }),
368
+ recordCleanupResult: (identity, result, error, now) => change(identity, now, (task) => {
369
+ const cleanup = needCleanup(task);
370
+ oneOf(result, ["completed", "timed-out", "failed", "unavailable"], "Cleanup result");
371
+ if (cleanup.result !== null && cleanup.result !== result)
372
+ throw new Error("The original cleanup result cannot be replaced.");
373
+ if (result === "timed-out" && now < cleanup.deadline)
374
+ throw new Error("The original cleanup deadline has not elapsed.");
375
+ return { ...task, cleanup: { ...cleanup, result, error: error === null ? null : text(error, "Cleanup error") } };
376
+ }),
377
+ recordCleanupError: (identity, error, now) => change(identity, now, (task) => ({ ...task, cleanup: { ...needCleanup(task), error: text(error, "Cleanup error") } })),
378
+ confirmAgentStopped: (identity, proof, now) => change(identity, now, (task) => {
379
+ if (proof.agentStopped !== true)
380
+ throw new Error("The caller must confirm the original agent has stopped.");
381
+ return { ...task, cleanup: { ...needCleanup(task), agentStopped: true } };
382
+ }),
383
+ confirmWorkspaceClosed: (identity, proof, now) => change(identity, now, (task) => {
384
+ const cleanup = needCleanup(task);
385
+ if (!cleanup.agentStopped || proof.workspaceClosed !== true)
386
+ throw new Error("Workspace closure requires confirmed original agent stop.");
387
+ return { ...task, cleanup: { ...cleanup, workspaceClosed: true } };
388
+ }),
389
+ confirmWorktreeDeleted: (identity, proof, now) => change(identity, now, (task) => {
390
+ const cleanup = needCleanup(task);
391
+ if (cleanup.kind !== "terminal" || !cleanup.workspaceClosed || proof.worktreeDeleted !== true)
392
+ throw new Error("Worktree deletion requires confirmed workspace closure and terminal cleanup.");
393
+ return { ...task, cleanup: { ...cleanup, worktreeDeleted: true } };
394
+ }),
395
+ resumeAfterShutdown: (identity, now) => change(identity, now, (task) => {
396
+ const cleanup = needCleanup(task);
397
+ if (cleanup.kind !== "shutdown" || cleanup.result === null || !cleanup.agentStopped || !cleanup.workspaceClosed || task.control !== null)
398
+ throw new Error("Shutdown resume requires the original agent stopped, workspace closed and its cleanup result recorded.");
399
+ if (task.configuration === null)
400
+ throw new Error("The original frozen execution configuration is missing.");
401
+ return { ...task, cleanup: null, resources: { ...task.resources, herdr: null } };
402
+ }),
403
+ recordControlIntent: (identity, input, now) => change(identity, now, (task) => {
404
+ const intent = parseIntent(input);
405
+ if (intent.sourceClaimId !== task.claimId)
406
+ throw new Error("The control intent must name the original claim.");
407
+ if (intent.kind === "transfer" && (intent.targetClaimId === task.claimId || intent.target.worktreeId === task.worktreeId))
408
+ throw new Error("Transfer requires new claim and worktree identities.");
409
+ if (task.control !== null) {
410
+ if (!same(task.control.intent, intent))
411
+ throw new Error("A different source control intent is already recorded.");
412
+ return task;
413
+ }
414
+ return { ...task, cleanup: task.cleanup === null ? null : { ...task.cleanup, kind: "terminal" }, control: { intent, requestedAt: now, submission: "not-submitted", submittedAt: null, outcome: null, resultVersion: null, error: null } };
415
+ }),
416
+ markControlSubmitting: (identity, expectedVersion, now) => change(identity, now, (task) => {
417
+ fullyCleaned(task);
418
+ if (task.control === null || task.control.submission !== "not-submitted")
419
+ throw new Error("A control write requires an unsubmitted original intent; unknown writes cannot be replayed.");
420
+ if (exactVersion(expectedVersion) !== task.control.intent.version)
421
+ throw new Error("The remote write version does not match the original control decision.");
422
+ return { ...task, control: { ...task.control, submission: "unknown", submittedAt: now } };
423
+ }),
424
+ confirmControlApplied: (identity, resultVersion, now) => change(identity, now, (task) => {
425
+ fullyCleaned(task);
426
+ const control = task.control;
427
+ if (control === null)
428
+ throw new Error("A source control intent is required.");
429
+ const resolvedVersion = exactVersion(resultVersion);
430
+ if (control.submission !== "unknown" && control.submission !== "confirmed")
431
+ throw new Error("An applied control outcome requires an original submission.");
432
+ if (control.submission === "confirmed" && (control.outcome !== "applied" || control.resultVersion !== resolvedVersion))
433
+ throw new Error("The confirmed control result cannot be replaced.");
434
+ return { ...task, control: { ...control, submission: "confirmed", outcome: "applied", resultVersion: resolvedVersion, error: null } };
435
+ }),
436
+ confirmControlOwnershipEnded: (identity, proof, now) => change(identity, now, (task) => {
437
+ fullyCleaned(task);
438
+ const control = task.control;
439
+ if (control === null)
440
+ throw new Error("A source control intent is required.");
441
+ if (proof.completeOwnClaimInventory !== true || proof.claimAbsent !== true)
442
+ throw new Error("Ownership exit requires the original claim to be absent from a successful complete own-claim inventory.");
443
+ if (control.submission === "confirmed")
444
+ return task;
445
+ return { ...task, control: { ...control, submission: "confirmed", outcome: "ownership-ended", resultVersion: null, error: null } };
446
+ }),
447
+ rejectControlSubmission: (identity, error, now) => change(identity, now, (task) => {
448
+ if (task.control === null || task.control.submission !== "unknown")
449
+ throw new Error("A definite control rejection requires an original unknown submission.");
450
+ return { ...task, control: { ...task.control, submission: "rejected", error: text(error, "Control error") } };
451
+ }),
452
+ completeTask: (identity, now) => change(identity, now, (task) => {
453
+ fullyCleaned(task);
454
+ if (task.control !== null && task.control.submission !== "confirmed")
455
+ throw new Error("The source control outcome must be reconciled before local completion.");
456
+ return { ...task, status: "done" };
457
+ }),
458
+ };
459
+ };
460
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/commands/worker/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import type { TaskPlatform, WorkerAgent, WorkerHerdr, WorkerMachine } from "../../api/types.js";
2
+ export type ProjectIdentity = {
3
+ serverOrigin: string;
4
+ projectId: string;
5
+ };
6
+ export type WorkerProject = ProjectIdentity & {
7
+ repoUrl: string;
8
+ localPath: string;
9
+ };
10
+ export type ClaimIdentity = ProjectIdentity & {
11
+ taskId: string;
12
+ claimId: string;
13
+ };
14
+ export type PendingClaim = ClaimIdentity & {
15
+ workerId: string;
16
+ worktreeId: string;
17
+ };
18
+ export type FrozenExecutionConfiguration = {
19
+ agent: WorkerAgent;
20
+ model: string | null;
21
+ args: readonly string[];
22
+ recoveryLimit: number;
23
+ };
24
+ export type WorktreeBinding = {
25
+ repositoryPath: string;
26
+ commonDirectory: string;
27
+ worktreePath: string;
28
+ branch: string;
29
+ };
30
+ export type NativeSessionReference = {
31
+ sessionId: string;
32
+ source: "herdr" | "native-history";
33
+ };
34
+ export type ExecutionResources = {
35
+ worktree: WorktreeBinding | null;
36
+ herdr: WorkerHerdr | null;
37
+ nativeSession: NativeSessionReference | null;
38
+ };
39
+ export type RecoveryState = {
40
+ count: number;
41
+ pauseReason: string | null;
42
+ retryAuthorized: boolean;
43
+ };
44
+ export type CleanupState = {
45
+ kind: "terminal" | "shutdown";
46
+ startedAt: number;
47
+ deadline: number;
48
+ input: "not-submitted" | "unknown" | "submitted" | "rejected" | "unavailable";
49
+ result: "completed" | "timed-out" | "failed" | "unavailable" | null;
50
+ error: string | null;
51
+ agentStopped: boolean;
52
+ workspaceClosed: boolean;
53
+ worktreeDeleted: boolean;
54
+ };
55
+ export type TransferTarget = {
56
+ userId: string;
57
+ workerId: string;
58
+ machine: WorkerMachine;
59
+ platform: TaskPlatform;
60
+ agent: WorkerAgent;
61
+ worktreeId: string;
62
+ };
63
+ export type ControlIntent = {
64
+ kind: "release";
65
+ sourceClaimId: string;
66
+ version: string;
67
+ } | {
68
+ kind: "transfer";
69
+ sourceClaimId: string;
70
+ version: string;
71
+ targetClaimId: string;
72
+ target: TransferTarget;
73
+ };
74
+ export type ControlState = {
75
+ intent: ControlIntent;
76
+ requestedAt: number;
77
+ submission: "not-submitted" | "unknown" | "confirmed" | "rejected";
78
+ submittedAt: number | null;
79
+ outcome: "applied" | "ownership-ended" | null;
80
+ resultVersion: string | null;
81
+ error: string | null;
82
+ };
83
+ export type LocalTask = PendingClaim & {
84
+ status: "pending" | "active" | "done";
85
+ repoUrl: string;
86
+ repositoryPath: string;
87
+ configuration: FrozenExecutionConfiguration | null;
88
+ resources: ExecutionResources;
89
+ recovery: RecoveryState;
90
+ cleanup: CleanupState | null;
91
+ control: ControlState | null;
92
+ createdAt: number;
93
+ updatedAt: number;
94
+ };
95
+ export type PendingConfiguration = {
96
+ kind: "new";
97
+ configuration: FrozenExecutionConfiguration;
98
+ } | {
99
+ kind: "recovered";
100
+ configuration: FrozenExecutionConfiguration | null;
101
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/worker/types.ts"],"names":[],"mappings":""}