@codetreker/daynight 0.21.13 → 0.24.0

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 (102) hide show
  1. package/README.md +364 -287
  2. package/config.example.yml +69 -0
  3. package/dist/api/client.d.ts +2 -2
  4. package/dist/api/client.js +10 -7
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/types.d.ts +1 -8
  7. package/dist/cli/prompts.d.ts +1 -0
  8. package/dist/commands/auth/credentials.js +1 -1
  9. package/dist/commands/auth/credentials.js.map +1 -1
  10. package/dist/commands/review/config.d.ts +2 -1
  11. package/dist/commands/review/config.js +22 -39
  12. package/dist/commands/review/config.js.map +1 -1
  13. package/dist/commands/review/configuration-guide.js +7 -6
  14. package/dist/commands/review/configuration-guide.js.map +1 -1
  15. package/dist/commands/review/definition.js +1 -1
  16. package/dist/commands/review/definition.js.map +1 -1
  17. package/dist/commands/review/repositories.js +19 -19
  18. package/dist/commands/review/repositories.js.map +1 -1
  19. package/dist/commands/skill/skills/using-daynight/references/execute-task-in-managed.md +6 -5
  20. package/dist/commands/skill/skills/using-daynight/references/handbook.md +1 -1
  21. package/dist/commands/skill/skills/using-daynight/references/handoff.md +1 -1
  22. package/dist/commands/worker/attach.d.ts +3 -0
  23. package/dist/commands/worker/attach.js +53 -0
  24. package/dist/commands/worker/attach.js.map +1 -0
  25. package/dist/commands/worker/cleanup.d.ts +8 -2
  26. package/dist/commands/worker/cleanup.js +44 -160
  27. package/dist/commands/worker/cleanup.js.map +1 -1
  28. package/dist/commands/worker/config.d.ts +13 -3
  29. package/dist/commands/worker/config.js +35 -13
  30. package/dist/commands/worker/config.js.map +1 -1
  31. package/dist/commands/worker/configuration-guide.d.ts +19 -0
  32. package/dist/commands/worker/configuration-guide.js +86 -0
  33. package/dist/commands/worker/configuration-guide.js.map +1 -0
  34. package/dist/commands/worker/control.d.ts +11 -18
  35. package/dist/commands/worker/control.js +75 -132
  36. package/dist/commands/worker/control.js.map +1 -1
  37. package/dist/commands/worker/coordinator.d.ts +10 -8
  38. package/dist/commands/worker/coordinator.js +311 -473
  39. package/dist/commands/worker/coordinator.js.map +1 -1
  40. package/dist/commands/worker/definition.js +34 -18
  41. package/dist/commands/worker/definition.js.map +1 -1
  42. package/dist/commands/worker/diagnostics.js +2 -3
  43. package/dist/commands/worker/diagnostics.js.map +1 -1
  44. package/dist/commands/worker/execution.d.ts +35 -10
  45. package/dist/commands/worker/execution.js +92 -283
  46. package/dist/commands/worker/execution.js.map +1 -1
  47. package/dist/commands/worker/herdr/agents.d.ts +12 -91
  48. package/dist/commands/worker/herdr/agents.js +111 -358
  49. package/dist/commands/worker/herdr/agents.js.map +1 -1
  50. package/dist/commands/worker/herdr/instance.d.ts +1 -0
  51. package/dist/commands/worker/herdr/instance.js +30 -5
  52. package/dist/commands/worker/herdr/instance.js.map +1 -1
  53. package/dist/commands/worker/herdr/preflight.d.ts +21 -9
  54. package/dist/commands/worker/herdr/preflight.js +118 -124
  55. package/dist/commands/worker/herdr/preflight.js.map +1 -1
  56. package/dist/commands/worker/herdr.d.ts +7 -63
  57. package/dist/commands/worker/herdr.js.map +1 -1
  58. package/dist/commands/worker/identity.js +2 -2
  59. package/dist/commands/worker/identity.js.map +1 -1
  60. package/dist/commands/worker/index.d.ts +8 -0
  61. package/dist/commands/worker/index.js +21 -14
  62. package/dist/commands/worker/index.js.map +1 -1
  63. package/dist/commands/worker/prompts.d.ts +10 -3
  64. package/dist/commands/worker/prompts.js +21 -32
  65. package/dist/commands/worker/prompts.js.map +1 -1
  66. package/dist/commands/worker/remote.d.ts +2 -3
  67. package/dist/commands/worker/remote.js +1 -6
  68. package/dist/commands/worker/remote.js.map +1 -1
  69. package/dist/commands/worker/repositories.d.ts +40 -0
  70. package/dist/commands/worker/repositories.js +236 -0
  71. package/dist/commands/worker/repositories.js.map +1 -0
  72. package/dist/commands/worker/runtime.d.ts +1 -0
  73. package/dist/commands/worker/runtime.js +135 -212
  74. package/dist/commands/worker/runtime.js.map +1 -1
  75. package/dist/commands/worker/setup-environment.d.ts +31 -0
  76. package/dist/commands/worker/setup-environment.js +146 -0
  77. package/dist/commands/worker/setup-environment.js.map +1 -0
  78. package/dist/commands/worker/setup.d.ts +11 -0
  79. package/dist/commands/worker/setup.js +113 -0
  80. package/dist/commands/worker/setup.js.map +1 -0
  81. package/dist/commands/worker/store.d.ts +12 -114
  82. package/dist/commands/worker/store.js +92 -817
  83. package/dist/commands/worker/store.js.map +1 -1
  84. package/dist/commands/worker/types.d.ts +10 -114
  85. package/dist/commands/worker/worktrees.d.ts +9 -9
  86. package/dist/commands/worker/worktrees.js +77 -37
  87. package/dist/commands/worker/worktrees.js.map +1 -1
  88. package/dist/config/document.d.ts +0 -1
  89. package/dist/config/document.js +1 -22
  90. package/dist/config/document.js.map +1 -1
  91. package/dist/config/errors.d.ts +2 -2
  92. package/dist/config/errors.js.map +1 -1
  93. package/dist/config/files.d.ts +7 -1
  94. package/dist/config/files.js +4 -1
  95. package/dist/config/files.js.map +1 -1
  96. package/dist/config/ownership.d.ts +12 -0
  97. package/dist/config/ownership.js +39 -0
  98. package/dist/config/ownership.js.map +1 -0
  99. package/dist/repository/location.d.ts +7 -0
  100. package/dist/repository/location.js +51 -0
  101. package/dist/repository/location.js.map +1 -0
  102. package/package.json +4 -3
@@ -0,0 +1,146 @@
1
+ import { valid, gte } from "semver";
2
+ import { createOperation } from "../../api/operation.js";
3
+ import { runHerdrCommand } from "./herdr/command.js";
4
+ import { resolveHerdrInstancePaths } from "./herdr/instance.js";
5
+ import { createNativePrerequisiteChecks, hasNativePrerequisiteCleanupFailure, nativeHookRuntimeChecks } from "./herdr/preflight.js";
6
+ import { createWorkerPromptBuilder } from "./prompts.js";
7
+ const record = async (probe, operation) => {
8
+ operation.check();
9
+ const identity = { label: probe.label, ...(probe.agent === undefined ? {} : { agent: probe.agent }) };
10
+ try {
11
+ const detail = await probe.verify(operation);
12
+ operation.check();
13
+ return { ...identity, status: "passed", detail };
14
+ }
15
+ catch (cause) {
16
+ if (hasNativePrerequisiteCleanupFailure(cause))
17
+ throw cause;
18
+ operation.check();
19
+ return { ...identity, status: "missing", detail: cause instanceof Error ? cause.message : "The prerequisite check failed.", remedy: probe.remedy };
20
+ }
21
+ };
22
+ const integrationState = (source, agent) => {
23
+ const matches = [...source.matchAll(new RegExp(`^${agent}: ([a-z_]+)(?:\\s|$)`, "gm"))];
24
+ if (matches.length !== 1)
25
+ throw new Error(`Herdr did not report exactly one ${agent} integration state.`);
26
+ const state = matches[0][1];
27
+ if (state !== "current")
28
+ throw new Error(`The official ${agent} Herdr integration is ${state}.`);
29
+ return "The installed official integration is current.";
30
+ };
31
+ const inspectProbes = async (probes, operation) => {
32
+ const results = await Promise.allSettled(probes.map((probe) => record(probe, operation)));
33
+ for (const result of results) {
34
+ if (result.status === "rejected" && hasNativePrerequisiteCleanupFailure(result.reason))
35
+ throw result.reason;
36
+ }
37
+ operation.check();
38
+ return results.map((result) => {
39
+ if (result.status === "rejected")
40
+ throw result.reason;
41
+ return result.value;
42
+ });
43
+ };
44
+ export const inspectWorkerEnvironment = async (options, dependencies = {}) => {
45
+ options.signal.throwIfAborted();
46
+ const platform = dependencies.platform === undefined ? process.platform : dependencies.platform;
47
+ const environment = { ...(dependencies.environment === undefined ? process.env : dependencies.environment) };
48
+ const runCommand = dependencies.runCommand === undefined ? runHerdrCommand : dependencies.runCommand;
49
+ const operation = createOperation({ signal: options.signal, limits: { totalMs: 30_000, requestMs: 10_000, totalBytes: 4 * 1_048_576 } });
50
+ const command = async (file, args, scope) => (await runCommand({ file, args, environment, cwd: options.workingDirectory }, scope)).stdout;
51
+ try {
52
+ if (options.configuration !== undefined) {
53
+ const { agent } = options.configuration;
54
+ const probes = createNativePrerequisiteChecks({ homeDirectory: options.homeDirectory, environment, platform, runCommand }, {
55
+ context: { cwd: options.workingDirectory }, configuration: options.configuration,
56
+ }).filter(({ kind }) => kind !== "version" && kind !== "runtime");
57
+ const checks = await inspectProbes(probes.map((probe) => ({ ...probe, agent })), operation);
58
+ operation.check();
59
+ return [...checks, {
60
+ label: `${agent} provider authentication and trust`, status: "unverified", agent,
61
+ detail: "Read-only configuration checks do not prove provider authentication, folder trust or execution in a future task worktree.",
62
+ remedy: `Authenticate the ${agent} CLI explicitly and handle native trust or permission prompts before unattended task execution.`,
63
+ }];
64
+ }
65
+ let integrations;
66
+ const readIntegrations = (scope) => {
67
+ if (integrations === undefined)
68
+ integrations = command("herdr", ["integration", "status"], scope);
69
+ return integrations;
70
+ };
71
+ const probes = [{
72
+ label: "Operating system", remedy: "Run the worker on Linux, macOS or Windows.",
73
+ verify: async () => {
74
+ if (!["linux", "darwin", "win32"].includes(platform))
75
+ throw new Error(`Unsupported worker platform: ${platform}.`);
76
+ return platform === "darwin" ? "macos" : platform === "win32" ? "windows" : "linux";
77
+ },
78
+ }, {
79
+ label: "Node.js", remedy: "Install Node.js 22 or newer and run Daynight with it.",
80
+ verify: async () => {
81
+ const version = dependencies.nodeVersion === undefined ? process.versions.node : dependencies.nodeVersion;
82
+ if (valid(version) === null || !gte(version, "22.0.0"))
83
+ throw new Error("Daynight requires Node.js 22 or newer.");
84
+ return version;
85
+ },
86
+ }, {
87
+ label: "Git", remedy: "Install Git and make it available on PATH.",
88
+ verify: async (scope) => {
89
+ const output = await command("git", ["--version"], scope);
90
+ const match = /^git version ([^\r\n]+)/m.exec(output);
91
+ if (match === null)
92
+ throw new Error("Cannot identify the installed Git executable.");
93
+ return match[1];
94
+ },
95
+ }, {
96
+ label: "Herdr", remedy: "Install Herdr 0.9.5 or newer and make it available on PATH.",
97
+ verify: async (scope) => {
98
+ const output = await command("herdr", ["--version"], scope);
99
+ const match = /^herdr (\S+)\s*$/m.exec(output);
100
+ if (match === null || valid(match[1]) === null || !gte(match[1], "0.9.5"))
101
+ throw new Error("The worker requires Herdr 0.9.5 or newer.");
102
+ return match[1];
103
+ },
104
+ }, {
105
+ label: "Private Herdr endpoint", remedy: "Use an OS account whose home path fits the private Herdr socket or named-pipe limit.",
106
+ verify: async () => { const paths = resolveHerdrInstancePaths(options.paths, platform); return paths.apiEndpoint; },
107
+ }, ...nativeHookRuntimeChecks({ environment, cwd: options.workingDirectory, platform, runCommand }), {
108
+ label: "Bundled using-daynight skill", remedy: "Reinstall or update the Daynight npm package to restore its complete bundled skill.",
109
+ verify: async (scope) => {
110
+ if (options.packageDirectory === undefined)
111
+ throw new Error("The installed package directory is unavailable for skill inspection.");
112
+ const verify = dependencies.verifySkill === undefined ? createWorkerPromptBuilder : dependencies.verifySkill;
113
+ await verify(options.packageDirectory);
114
+ scope.check();
115
+ return "The installed bundle includes the managed execution references.";
116
+ },
117
+ }];
118
+ for (const agent of ["codex", "copilot"]) {
119
+ const [, version] = createNativePrerequisiteChecks({ homeDirectory: options.homeDirectory, environment, platform, runCommand }, {
120
+ context: { cwd: options.workingDirectory }, configuration: { agent, model: null, args: [] },
121
+ });
122
+ probes.push({ ...version, agent }, {
123
+ label: `${agent} Herdr integration`, agent,
124
+ remedy: `Run herdr integration install ${agent}, then inspect herdr integration status.`,
125
+ verify: async (scope) => integrationState(await readIntegrations(scope), agent),
126
+ });
127
+ }
128
+ const checks = await inspectProbes(probes, operation);
129
+ operation.check();
130
+ const bundleChecks = options.packageDirectory === undefined
131
+ ? checks.map((check) => check.label === "Bundled using-daynight skill" ? { ...check, status: "unverified" } : check)
132
+ : checks;
133
+ return [...bundleChecks, {
134
+ label: "Task tools and Git transport", status: "unverified",
135
+ detail: "Project Git access and task-specific tools are checked when the actual task uses them.",
136
+ remedy: "Prepare Git credentials and task tools, including an authenticated GitHub CLI when PR delivery requires it.",
137
+ }, {
138
+ label: "Live Herdr protocol and native execution", status: "unverified",
139
+ detail: "The private daemon protocol, capabilities and real native startup are verified by worker run.",
140
+ }];
141
+ }
142
+ finally {
143
+ operation.dispose();
144
+ }
145
+ };
146
+ //# sourceMappingURL=setup-environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-environment.js","sourceRoot":"","sources":["../../../src/commands/worker/setup-environment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CliContext } from "../../cli/context.js";
2
+ import { prepareWorkerSetup, readWorkerProjects, readWorkerRepositorySnapshot, saveWorkerSetup } from "./repositories.js";
3
+ import { inspectWorkerEnvironment } from "./setup-environment.js";
4
+ export type WorkerSetupDependencies = {
5
+ inspectEnvironment: typeof inspectWorkerEnvironment;
6
+ readSnapshot: typeof readWorkerRepositorySnapshot;
7
+ readProjects: typeof readWorkerProjects;
8
+ prepare: typeof prepareWorkerSetup;
9
+ save: typeof saveWorkerSetup;
10
+ };
11
+ export declare const runWorkerSetup: (context: CliContext, dependencies?: WorkerSetupDependencies, suppliedSignal?: AbortSignal) => Promise<void>;
@@ -0,0 +1,113 @@
1
+ import { CliCancelledError, withCliCancellation } from "../../cli/cancellation.js";
2
+ import { terminalText } from "../../platform/terminal.js";
3
+ import { resolveWorkerPaths } from "./paths.js";
4
+ import { configuredWorkerProjectIds, prepareWorkerSetup, readWorkerProjects, readWorkerRepositorySnapshot, saveWorkerSetup, } from "./repositories.js";
5
+ import { inspectWorkerEnvironment } from "./setup-environment.js";
6
+ const defaultDependencies = {
7
+ inspectEnvironment: inspectWorkerEnvironment,
8
+ readSnapshot: readWorkerRepositorySnapshot,
9
+ readProjects: readWorkerProjects,
10
+ prepare: prepareWorkerSetup,
11
+ save: saveWorkerSetup,
12
+ };
13
+ const agentName = (agent) => agent === "codex" ? "Codex" : "Copilot";
14
+ const renderChecks = (checks, context) => {
15
+ for (const check of checks) {
16
+ context.stderr(`[${check.status}] ${terminalText(check.label)}: ${terminalText(check.detail)}\n`);
17
+ if (check.remedy !== undefined)
18
+ context.stderr(` ${terminalText(check.remedy)}\n`);
19
+ }
20
+ };
21
+ export const runWorkerSetup = async (context, dependencies = defaultDependencies, suppliedSignal) => withCliCancellation(context, async (signal) => {
22
+ signal.throwIfAborted();
23
+ const prompt = context.prompt;
24
+ if (prompt?.isInteractive !== true)
25
+ throw new Error("daynight worker setup requires terminal input and stderr. Run it in an interactive terminal.");
26
+ const homeDirectory = context.homeDirectory();
27
+ const workingDirectory = context.workingDirectory();
28
+ const paths = resolveWorkerPaths(homeDirectory);
29
+ const snapshot = await dependencies.readSnapshot(paths, signal);
30
+ const environment = { homeDirectory, workingDirectory, packageDirectory: context.packageDirectory, paths, signal };
31
+ context.stderr("Worker environment checks\n");
32
+ const commonChecks = await dependencies.inspectEnvironment(environment);
33
+ renderChecks(commonChecks, context);
34
+ context.stderr(snapshot.serverToken === undefined
35
+ ? "[missing] Daynight login: Run daynight login before selecting Projects.\n"
36
+ : "[unverified] Daynight login: Checking access when loading Projects.\n");
37
+ signal.throwIfAborted();
38
+ if (snapshot.serverToken === undefined)
39
+ throw new Error("You are not logged in. Run daynight login, then daynight worker setup.");
40
+ const agent = await prompt.select({
41
+ message: "Which agent should execute tasks?",
42
+ choices: [{ name: "Copilot", value: "copilot" }, { name: "Codex", value: "codex" }],
43
+ default: snapshot.configuration.agent,
44
+ }, signal);
45
+ signal.throwIfAborted();
46
+ if (agent !== "copilot" && agent !== "codex")
47
+ throw new Error("Choose Codex or Copilot from the available agents.");
48
+ const projects = await dependencies.readProjects(snapshot, signal);
49
+ signal.throwIfAborted();
50
+ context.stderr("[passed] Daynight login: Accessible Projects loaded from the configured service.\n");
51
+ if (projects.length === 0)
52
+ throw new Error("No accessible Daynight Projects exist. Create a Project before running daynight worker setup.");
53
+ const configured = new Set(configuredWorkerProjectIds(snapshot, projects));
54
+ const projectIds = await prompt.selectMany({
55
+ message: "Run tasks from which existing Daynight Projects? This replaces the configured selection.",
56
+ choices: projects.map((project) => ({
57
+ name: `${terminalText(project.name)} · ${project.id} · ${terminalText(project.repoUrl)}`,
58
+ value: project.id,
59
+ checked: configured.has(project.id),
60
+ })),
61
+ requiredMessage: "Select at least one Project.",
62
+ }, signal);
63
+ signal.throwIfAborted();
64
+ if (projectIds.length === 0 || new Set(projectIds).size !== projectIds.length ||
65
+ projectIds.some((id) => !projects.some((project) => project.id === id))) {
66
+ throw new Error("Select one or more distinct Projects from the available choices.");
67
+ }
68
+ const options = { paths, homeDirectory, snapshot, projects, projectIds, agent, signal };
69
+ const plan = await dependencies.prepare(options);
70
+ signal.throwIfAborted();
71
+ const checkedConfigurations = new Set();
72
+ const selectedChecks = [];
73
+ for (const repository of plan.configuration.repositories) {
74
+ const configuration = { agent: repository.agent, model: repository.model, args: repository.args };
75
+ const identity = JSON.stringify(configuration);
76
+ if (checkedConfigurations.has(identity))
77
+ continue;
78
+ checkedConfigurations.add(identity);
79
+ context.stderr(`\n${agentName(agent)} checks for Project ${repository.projectId}\n`);
80
+ const checks = await dependencies.inspectEnvironment({ ...environment, configuration });
81
+ signal.throwIfAborted();
82
+ renderChecks(checks, context);
83
+ selectedChecks.push(...checks);
84
+ }
85
+ context.stderr(`\nWorker configuration\nAgent: ${agentName(agent)}\n`);
86
+ for (const repository of plan.configuration.repositories) {
87
+ const project = projects.find(({ id }) => id === repository.projectId);
88
+ context.stderr(`Project: ${terminalText(project.name)} · ${project.id}\n Repository: ${terminalText(repository.remote)}\n Path: ${terminalText(repository.path)}\n`);
89
+ }
90
+ for (const repository of plan.removedRepositories)
91
+ context.stderr(`Remove from worker selection: ${repository.projectId === undefined ? terminalText(repository.remote) : repository.projectId}\n`);
92
+ if (plan.resetGlobalNativeSettings)
93
+ context.stderr(`Reset global model and native arguments for the switch to ${agentName(agent)}.\n`);
94
+ for (const repository of plan.resetRepositories)
95
+ context.stderr(`Reset incompatible native overrides for ${repository.projectId === undefined ? terminalText(repository.remote) : repository.projectId} (${agentName(repository.agent)} → ${agentName(agent)}).\n`);
96
+ context.stderr("Changes apply at the next worker startup. Existing execution settings remain frozen.\n");
97
+ const save = await prompt.select({
98
+ message: "Save this worker configuration?",
99
+ choices: [{ name: "Save", value: true }, { name: "Cancel", value: false }],
100
+ default: true,
101
+ }, signal);
102
+ signal.throwIfAborted();
103
+ if (save !== true)
104
+ throw new CliCancelledError("Worker setup cancelled. Configuration was not saved.");
105
+ await dependencies.save(options);
106
+ signal.throwIfAborted();
107
+ context.stderr(`Worker configuration saved to ${terminalText(paths.configFile)}.\n`);
108
+ const relevantChecks = [...commonChecks.filter((check) => check.agent === undefined || check.agent === agent), ...selectedChecks];
109
+ context.stderr(relevantChecks.some(({ status }) => status === "missing")
110
+ ? "Repair the missing prerequisites above, then run daynight worker run.\n"
111
+ : "Run daynight worker run. Native login, repository trust and task execution are verified when the worker starts them.\n");
112
+ }, suppliedSignal, () => new CliCancelledError("Worker setup cancelled."));
113
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/worker/setup.ts"],"names":[],"mappings":"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"}
@@ -1,123 +1,21 @@
1
- import type { WorkerHerdr } from "../../api/types.js";
2
- import type { HerdrLaunchEvidence, HerdrStopObservation, HerdrTaskBinding, HerdrWorkspaceEvidence } from "./herdr/agents.js";
3
- import type { ClaimAttempt, ClaimIdentity, CleanupState, ControlIntent, ExecutionSummary, FrozenExecutionConfiguration, LocalTask, NativeExecutionState, NativeSessionReference, PendingClaim, PendingConfiguration, ProjectIdentity, WorkerProject, WorkerProjectRecord, WorktreeBinding } from "./types.js";
4
- export declare const isUnstartedPendingSource: (task: LocalTask) => boolean;
5
- export declare const isUnstartedPending: (task: LocalTask) => boolean;
1
+ import type { WorkerAgent } from "../../api/types.js";
2
+ import type { ClaimIdentity, LocalTask, ProjectIdentity, WorkerProject } from "./types.js";
6
3
  export declare const openWorkerStore: (databaseFile: string, options?: {
7
4
  busyTimeoutMs?: number;
8
5
  }) => {
9
6
  close: () => void;
10
- getProject: (identity: ProjectIdentity) => WorkerProjectRecord | null;
11
- listProjects: () => WorkerProjectRecord[];
12
- registerProject: (project: WorkerProject) => WorkerProjectRecord;
13
- getClaimAttempt: (identity: ProjectIdentity) => ClaimAttempt | null;
14
- listClaimAttempts: () => (ProjectIdentity & {
15
- attempt: ClaimAttempt;
16
- })[];
17
- beginClaimAttempt: (identity: ProjectIdentity, input: ClaimAttempt) => ClaimAttempt;
18
- rejectClaimAttempt: (identity: ProjectIdentity, expectedClaimId: string, proof: {
19
- definiteRejection: true;
20
- } | {
21
- notSubmitted: true;
22
- }) => void;
7
+ getProject: (identity: ProjectIdentity) => WorkerProject | null;
8
+ listProjects: () => WorkerProject[];
9
+ registerProject: (input: WorkerProject) => WorkerProject;
23
10
  getTask: (identity: ClaimIdentity) => LocalTask | null;
24
11
  listTasks: () => LocalTask[];
25
12
  listUnfinishedTasks: () => LocalTask[];
26
- recordObservedUnattemptedWorkspace: (owner: PendingClaim, now: number) => LocalTask | null;
27
- registerPending: (claim: PendingClaim, input: PendingConfiguration, now: number, verifiedUserId?: string | null) => LocalTask;
28
- bindUserScope: (identity: ClaimIdentity, userId: string, now: number) => LocalTask;
29
- restoreOriginalConfiguration: (identity: ClaimIdentity, configuration: FrozenExecutionConfiguration, now: number) => LocalTask;
30
- activateTask: (identity: ClaimIdentity, now: number) => LocalTask;
31
- activatePausedRecovery: (identity: ClaimIdentity, reason: string, now: number) => LocalTask;
32
- bindWorktree: (identity: ClaimIdentity, binding: WorktreeBinding, now: number) => LocalTask;
33
- bindHerdr: (identity: ClaimIdentity, binding: WorkerHerdr, now: number) => LocalTask;
34
- bindHerdrExecution: (identity: ClaimIdentity, binding: HerdrTaskBinding, workspaceEvidence: HerdrWorkspaceEvidence | null, now: number) => LocalTask;
35
- markWorkspaceSubmitting: (identity: ClaimIdentity, now: number) => LocalTask;
36
- recordWorkspaceNotSubmitted: (identity: ClaimIdentity, proof: {
37
- notSubmitted: true;
38
- } | {
39
- definiteRejection: true;
40
- }, now: number) => LocalTask;
41
- markNativeLaunchSubmitting: (identity: ClaimIdentity, now: number) => LocalTask;
42
- recordNativeLaunchNotSubmitted: (identity: ClaimIdentity, proof: {
43
- notSubmitted: true;
44
- } | {
45
- definiteRejection: true;
46
- }, now: number) => LocalTask;
47
- markNativePromptSubmitting: (identity: ClaimIdentity, now: number) => LocalTask;
48
- recordNativeStartOutcome: (identity: ClaimIdentity, input: {
49
- launchEvidence?: HerdrLaunchEvidence;
50
- promptSubmission: NativeExecutionState["promptSubmission"];
51
- }, now: number) => LocalTask;
52
- recordStopObservation: (identity: ClaimIdentity, observation: HerdrStopObservation, now: number) => LocalTask;
53
- markExecutionSummarySubmitting: (identity: ClaimIdentity, input: Omit<ExecutionSummary, "submission">, now: number) => LocalTask;
54
- recordExecutionSummaryOutcome: (identity: ClaimIdentity, expectedVersion: string, submission: "confirmed" | "rejected", now: number) => LocalTask;
55
- recordExecutionSummaryNotSubmitted: (identity: ClaimIdentity, expectedVersion: string, proof: {
56
- notSubmitted: true;
57
- }, now: number) => LocalTask;
58
- reconcileExecutionSummary: (identity: ClaimIdentity, input: Omit<ExecutionSummary, "submission">, now: number) => LocalTask;
59
- rebindHerdr: (identity: ClaimIdentity, expectedPrevious: WorkerHerdr, next: WorkerHerdr, proof: {
60
- originalAgentStopped: true;
61
- oldWorkspaceClosed: true;
62
- }, now: number) => LocalTask;
63
- rebindHerdrExecution: (identity: ClaimIdentity, expectedPrevious: HerdrTaskBinding, next: HerdrTaskBinding, workspaceEvidence: HerdrWorkspaceEvidence | null, proof: {
64
- originalAgentStopped: true;
65
- oldWorkspaceClosed: true;
66
- }, now: number) => LocalTask;
67
- bindNativeSession: (identity: ClaimIdentity, reference: NativeSessionReference, now: number) => LocalTask;
68
- pauseTask: (identity: ClaimIdentity, reason: string, now: number) => LocalTask;
69
- clearPause: (identity: ClaimIdentity, now: number) => LocalTask;
70
- authorizeRecoveryRetry: (identity: ClaimIdentity, now: number) => LocalTask;
71
- authorizeRecoveryRetryAtCount: (identity: ClaimIdentity, expectedCount: number, now: number) => LocalTask;
72
- beginRecovery: (identity: ClaimIdentity, now: number) => LocalTask;
73
- beginCleanup: (identity: ClaimIdentity, input: {
74
- kind: CleanupState["kind"];
75
- deadline: number;
76
- }, now: number) => LocalTask;
77
- markCleanupInputSubmitting: (identity: ClaimIdentity, now: number) => LocalTask;
78
- recordCleanupInputOutcome: (identity: ClaimIdentity, input: "submitted" | "rejected" | "unavailable", now: number) => LocalTask;
79
- recordCleanupInputEvidence: (identity: ClaimIdentity, baseline: NonNullable<CleanupState["baseline"]>, now: number) => LocalTask;
80
- recordCleanupResult: (identity: ClaimIdentity, result: NonNullable<CleanupState["result"]>, error: string | null, now: number) => LocalTask;
81
- recordCleanupError: (identity: ClaimIdentity, error: string, now: number) => LocalTask;
82
- confirmAgentStopped: (identity: ClaimIdentity, proof: {
83
- agentStopped: true;
84
- }, now: number) => LocalTask;
85
- confirmWorkspaceClosed: (identity: ClaimIdentity, proof: {
86
- workspaceClosed: true;
87
- }, now: number) => LocalTask;
88
- confirmWorktreeDeleted: (identity: ClaimIdentity, proof: {
89
- worktreeDeleted: true;
90
- }, now: number) => LocalTask;
91
- resumeAfterShutdown: (identity: ClaimIdentity, now: number) => LocalTask;
92
- recordControlIntent: (identity: ClaimIdentity, input: ControlIntent, now: number) => LocalTask;
93
- replaceRejectedControlIntent: (identity: ClaimIdentity, input: ControlIntent, proof: {
94
- observedVersion: bigint;
95
- }, now: number) => LocalTask;
96
- confirmUnstartedControlCleanup: (identity: ClaimIdentity, proof: {
97
- completeHerdrInventory: true;
98
- noOwnedResources: true;
99
- }, deadline: number, now: number) => LocalTask;
100
- markControlSubmitting: (identity: ClaimIdentity, expectedVersion: bigint, now: number) => LocalTask;
101
- confirmControlApplied: (identity: ClaimIdentity, resultVersion: bigint, now: number) => LocalTask;
102
- confirmControlOwnershipEnded: (identity: ClaimIdentity, proof: {
103
- completeOwnClaimInventory: true;
104
- claimAbsent: true;
105
- }, now: number) => LocalTask;
106
- confirmControlOwnershipEndedByTask: (identity: ClaimIdentity, proof: {
107
- observedClaimId: string | null;
108
- observedState: "active" | "released" | "completed" | null;
109
- }, now: number) => LocalTask;
110
- completeAppliedControl: (identity: ClaimIdentity, expectedIntent: ControlIntent, resultVersion: bigint, now: number) => LocalTask;
111
- completeEndedControl: (identity: ClaimIdentity, expectedIntent: ControlIntent, proof: {
112
- observedClaimId: string | null;
113
- observedState: "active" | "released" | "completed" | null;
114
- }, now: number) => LocalTask;
115
- rejectControlSubmission: (identity: ClaimIdentity, error: string, now: number) => LocalTask;
116
- completeTask: (identity: ClaimIdentity, now: number) => LocalTask;
117
- completeUnstartedPending: (identity: ClaimIdentity, proof: {
118
- completeOwnClaimInventory: true;
119
- claimAbsent: true;
120
- authenticatedUserId: string;
121
- }, now: number) => LocalTask;
13
+ registerPending: (input: ClaimIdentity & {
14
+ agent: WorkerAgent;
15
+ sessionId?: string | null;
16
+ }) => LocalTask;
17
+ activateTask: (identity: ClaimIdentity) => LocalTask;
18
+ completeTask: (identity: ClaimIdentity) => LocalTask;
19
+ setSessionId: (identity: ClaimIdentity, sessionId: string) => LocalTask;
122
20
  };
123
21
  export type WorkerStore = ReturnType<typeof openWorkerStore>;