@veewo/claw-core 0.2.2 → 0.2.4

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 (54) hide show
  1. package/README.md +16 -16
  2. package/dist/src/daily-maintenance.d.ts +2 -0
  3. package/dist/src/daily-maintenance.js +66 -110
  4. package/dist/src/daily-maintenance.js.map +1 -1
  5. package/dist/src/errors.d.ts +1 -1
  6. package/dist/src/errors.js.map +1 -1
  7. package/dist/src/focus-transitions.d.ts +158 -0
  8. package/dist/src/focus-transitions.js +586 -0
  9. package/dist/src/focus-transitions.js.map +1 -0
  10. package/dist/src/index.d.ts +2 -0
  11. package/dist/src/index.js +2 -0
  12. package/dist/src/index.js.map +1 -1
  13. package/dist/src/io.d.ts +6 -0
  14. package/dist/src/io.js +133 -33
  15. package/dist/src/io.js.map +1 -1
  16. package/dist/src/knowledge-assignments.d.ts +0 -6
  17. package/dist/src/knowledge-assignments.js +1 -8
  18. package/dist/src/knowledge-assignments.js.map +1 -1
  19. package/dist/src/knowledge-sidecar.d.ts +4 -1
  20. package/dist/src/knowledge-sidecar.js +17 -10
  21. package/dist/src/knowledge-sidecar.js.map +1 -1
  22. package/dist/src/plan-view.d.ts +2 -1
  23. package/dist/src/plan-view.js +12 -0
  24. package/dist/src/plan-view.js.map +1 -1
  25. package/dist/src/plan.d.ts +3 -0
  26. package/dist/src/plan.js +54 -30
  27. package/dist/src/plan.js.map +1 -1
  28. package/dist/src/resources/delegate-writer/TEMPLATE.json +5 -5
  29. package/dist/src/resources/knowledge-writer/CONTENT-COVERAGE.md +30 -30
  30. package/dist/src/resources/knowledge-writer/SKILL.md +9 -9
  31. package/dist/src/resources/knowledge-writer/TEMPLATE.json +1 -1
  32. package/dist/src/resources/knowledge-writer/agents/openai.yaml +4 -4
  33. package/dist/src/resources/knowledge-writer/knowledge-format.md +47 -47
  34. package/dist/src/resources/knowledge-writer/non-claw-fallback.md +53 -53
  35. package/dist/src/session-bindings.d.ts +2 -1
  36. package/dist/src/session-bindings.js +22 -1
  37. package/dist/src/session-bindings.js.map +1 -1
  38. package/dist/src/task-lifecycle.d.ts +13 -0
  39. package/dist/src/task-lifecycle.js +142 -0
  40. package/dist/src/task-lifecycle.js.map +1 -0
  41. package/dist/src/templates/plans/default.js +1 -1
  42. package/dist/src/types.d.ts +19 -1
  43. package/dist/src/workflow-guidance.codex.config.json +363 -0
  44. package/dist/src/workflow-guidance.config.json +374 -363
  45. package/dist/src/workflow-guidance.js +10 -2
  46. package/dist/src/workflow-guidance.js.map +1 -1
  47. package/dist/src/workflow-guidance.qoder.config.json +362 -0
  48. package/package.json +48 -48
  49. package/dist/src/embedding-config.d.ts +0 -9
  50. package/dist/src/embedding-config.js +0 -21
  51. package/dist/src/embedding-config.js.map +0 -1
  52. package/dist/src/project-config-defaults.d.ts +0 -6
  53. package/dist/src/project-config-defaults.js +0 -5
  54. package/dist/src/project-config-defaults.js.map +0 -1
package/README.md CHANGED
@@ -1,16 +1,16 @@
1
- # @veewo/claw-core
2
-
3
- `@veewo/claw-core` is the shared workflow engine behind `claw-kit`.
4
-
5
- It provides the core primitives that let `.claw` act as a project-level working surface for config resolution, planning, project recall, truth ingestion, and task retention.
6
-
7
- ## Responsibilities
8
-
9
- - project config normalization and runtime resolution
10
- - plan lifecycle and workflow guidance primitives
11
- - project memory and search indexing behavior
12
- - truth ingestion and retention mechanics
13
-
14
- ## Repository
15
-
16
- - [claw-kit](https://github.com/chanyuenpang/claw-kit)
1
+ # @veewo/claw-core
2
+
3
+ `@veewo/claw-core` is the shared workflow engine behind `claw-kit`.
4
+
5
+ It provides the core primitives that let `.claw` act as a project-level working surface for config resolution, planning, project recall, truth ingestion, and task retention.
6
+
7
+ ## Responsibilities
8
+
9
+ - project config normalization and runtime resolution
10
+ - plan lifecycle and workflow guidance primitives
11
+ - project memory and search indexing behavior
12
+ - truth ingestion and retention mechanics
13
+
14
+ ## Repository
15
+
16
+ - [claw-kit](https://github.com/chanyuenpang/claw-kit)
@@ -2,6 +2,7 @@ import type { ProjectContext } from "./types.js";
2
2
  export type DailyMaintenanceResult = {
3
3
  ran: boolean;
4
4
  tmpCleared: boolean;
5
+ tmpEntriesRemoved: number;
5
6
  legacyTmpRemoved: boolean;
6
7
  archivedTasks: number;
7
8
  prunedArchivedTasks: number;
@@ -9,6 +10,7 @@ export type DailyMaintenanceResult = {
9
10
  logsRemoved: number;
10
11
  expiredSessionsRemoved: number;
11
12
  staleBindingsRemoved: number;
13
+ expiredTaskDirectoriesRemoved: number;
12
14
  legacyFinalizerJobsRemoved: number;
13
15
  knowledgeSessionsRemoved: number;
14
16
  };
@@ -1,35 +1,33 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { readJsonFile, withFileLock, writeJsonFile } from "./io.js";
4
- import { listTaskDirectories } from "./context.js";
5
4
  import { pruneStaleSessionBindings } from "./session-bindings.js";
6
5
  import { pruneLegacyKnowledgeRuntime } from "./knowledge-sidecar.js";
7
6
  import { sessionWorkflowBaseDir, sweepExpiredSessionWorkflows } from "./session-workflows.js";
8
- import { enforceTaskRetention } from "./task-retention.js";
7
+ import { runTaskLifecycleMaintenance } from "./task-lifecycle.js";
9
8
  export function runDailyMaintenance(project, options = {}) {
10
9
  const now = options.now ?? new Date();
11
10
  const date = localDate(now);
12
11
  const projectResult = options.includeProject === false ? { ran: false } : runOncePerDay(path.join(project.clawDir, "runtime", "maintenance.json"), date, () => {
13
12
  const runtimeTmp = path.join(project.clawDir, "runtime", "tmp");
14
13
  const legacyTmp = path.join(project.clawDir, "tmp");
15
- clearDirectory(runtimeTmp);
14
+ const tmpEntriesRemoved = cleanupTemporaryDirectory(runtimeTmp, now.getTime());
16
15
  const legacyTmpRemoved = removeDirectory(legacyTmp);
17
16
  const cutoffDate = previousLocalDate(now);
18
- const archivedDatedTasks = archiveDatedTaskDirectoriesBefore(project, cutoffDate);
19
- const archivedLegacyTasks = archiveLegacyTaskDirectoriesBefore(project, cutoffDate);
20
- const retention = enforceTaskRetention(project, undefined, now.getTime(), { includeDatedTasks: false, includeLegacyTasks: false });
21
- const emptyDatedDirectoriesRemoved = removeEmptyDatedTaskDirectories(project);
17
+ const taskLifecycle = runTaskLifecycleMaintenance(project, now);
22
18
  const logsRemoved = pruneProjectLogs(project, cutoffDate);
23
- const staleBindingsRemoved = pruneStaleSessionBindings(project).length;
19
+ const staleBindingsRemoved = pruneStaleSessionBindings(project, now.getTime()).length;
24
20
  const legacyRuntime = pruneLegacyKnowledgeRuntime(project);
25
21
  return {
26
22
  tmpCleared: true,
23
+ tmpEntriesRemoved,
27
24
  legacyTmpRemoved,
28
- archivedTasks: archivedDatedTasks + archivedLegacyTasks + retention.archivedTasks.length,
29
- prunedArchivedTasks: retention.prunedArchivedTasks.length,
30
- emptyDatedDirectoriesRemoved,
25
+ archivedTasks: taskLifecycle.archivedTasks,
26
+ prunedArchivedTasks: taskLifecycle.prunedArchivedTasks,
27
+ emptyDatedDirectoriesRemoved: taskLifecycle.emptyDatedDirectoriesRemoved,
31
28
  logsRemoved,
32
29
  staleBindingsRemoved,
30
+ expiredTaskDirectoriesRemoved: taskLifecycle.expiredTaskDirectoriesRemoved,
33
31
  legacyFinalizerJobsRemoved: legacyRuntime.jobsRemoved,
34
32
  knowledgeSessionsRemoved: legacyRuntime.sessionsRemoved,
35
33
  };
@@ -45,6 +43,7 @@ export function runDailyMaintenance(project, options = {}) {
45
43
  return {
46
44
  ran: projectResult.ran || sessionResult.ran,
47
45
  tmpCleared: projectResult.value?.tmpCleared ?? false,
46
+ tmpEntriesRemoved: projectResult.value?.tmpEntriesRemoved ?? 0,
48
47
  legacyTmpRemoved: projectResult.value?.legacyTmpRemoved ?? false,
49
48
  archivedTasks: projectResult.value?.archivedTasks ?? 0,
50
49
  prunedArchivedTasks: projectResult.value?.prunedArchivedTasks ?? 0,
@@ -52,6 +51,7 @@ export function runDailyMaintenance(project, options = {}) {
52
51
  logsRemoved: projectResult.value?.logsRemoved ?? 0,
53
52
  expiredSessionsRemoved: sessionResult.value?.expiredSessionsRemoved ?? 0,
54
53
  staleBindingsRemoved: projectResult.value?.staleBindingsRemoved ?? 0,
54
+ expiredTaskDirectoriesRemoved: projectResult.value?.expiredTaskDirectoriesRemoved ?? 0,
55
55
  legacyFinalizerJobsRemoved: projectResult.value?.legacyFinalizerJobsRemoved ?? 0,
56
56
  knowledgeSessionsRemoved: projectResult.value?.knowledgeSessionsRemoved ?? 0,
57
57
  };
@@ -75,38 +75,69 @@ function readStamp(stampPath) {
75
75
  return null;
76
76
  }
77
77
  }
78
- function clearDirectory(directory) {
78
+ const TEMPORARY_TTL_MS = 24 * 60 * 60 * 1000;
79
+ function cleanupTemporaryDirectory(directory, nowMs) {
79
80
  fs.mkdirSync(directory, { recursive: true });
80
- for (const child of fs.readdirSync(directory))
81
- fs.rmSync(path.join(directory, child), { recursive: true, force: true });
81
+ return cleanupTemporaryEntries(directory, nowMs);
82
82
  }
83
- function removeDirectory(directory) {
84
- if (!fs.existsSync(directory))
85
- return false;
86
- fs.rmSync(directory, { recursive: true, force: true });
87
- return true;
88
- }
89
- function removeEmptyDatedTaskDirectories(project) {
90
- return [
91
- project.tasksDir,
92
- path.join(project.clawDir, "archive", "tasks"),
93
- ].reduce((removed, root) => removed + removeEmptyDatedDirectories(root), 0);
94
- }
95
- function removeEmptyDatedDirectories(root) {
96
- if (!fs.existsSync(root))
97
- return 0;
83
+ function cleanupTemporaryEntries(directory, nowMs) {
98
84
  let removed = 0;
99
- for (const entry of fs.readdirSync(root, { withFileTypes: true })) {
100
- if (!entry.isDirectory() || !/^\d{4}-\d{2}-\d{2}$/.test(entry.name))
85
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
86
+ const target = path.join(directory, entry.name);
87
+ if (entry.isDirectory() && !entry.isSymbolicLink()) {
88
+ removed += cleanupTemporaryEntries(target, nowMs);
89
+ if (fs.readdirSync(target).length === 0) {
90
+ fs.rmdirSync(target);
91
+ }
101
92
  continue;
102
- const directory = path.join(root, entry.name);
103
- if (fs.readdirSync(directory).length > 0)
93
+ }
94
+ if (!entry.isFile() || !isExpiredTemporaryEntry(target, nowMs))
104
95
  continue;
105
- fs.rmdirSync(directory);
106
- removed += 1;
96
+ try {
97
+ fs.unlinkSync(target);
98
+ removed += 1;
99
+ }
100
+ catch {
101
+ // A concurrent writer or host lock must not make maintenance blocking.
102
+ }
107
103
  }
108
104
  return removed;
109
105
  }
106
+ function isExpiredTemporaryEntry(filePath, nowMs) {
107
+ try {
108
+ const stat = fs.statSync(filePath);
109
+ const envelope = readTemporaryEnvelope(filePath);
110
+ if (envelope?.expiresAt) {
111
+ const expiresAt = Date.parse(envelope.expiresAt);
112
+ if (Number.isFinite(expiresAt))
113
+ return expiresAt <= nowMs;
114
+ }
115
+ return nowMs - stat.mtimeMs >= TEMPORARY_TTL_MS;
116
+ }
117
+ catch {
118
+ return false;
119
+ }
120
+ }
121
+ function readTemporaryEnvelope(filePath) {
122
+ if (!/\.json$/i.test(filePath))
123
+ return null;
124
+ try {
125
+ const value = readJsonFile(filePath);
126
+ if (!value || typeof value !== "object" || Array.isArray(value))
127
+ return null;
128
+ const expiresAt = value.expiresAt;
129
+ return typeof expiresAt === "string" ? { expiresAt } : {};
130
+ }
131
+ catch {
132
+ return null;
133
+ }
134
+ }
135
+ function removeDirectory(directory) {
136
+ if (!fs.existsSync(directory))
137
+ return false;
138
+ fs.rmSync(directory, { recursive: true, force: true });
139
+ return true;
140
+ }
110
141
  function pruneProjectLogs(project, cutoffDate) {
111
142
  return pruneLogDirectory(path.join(project.clawDir, "logs"), cutoffDate, true);
112
143
  }
@@ -139,79 +170,4 @@ function previousLocalDate(now) {
139
170
  const previous = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
140
171
  return localDate(previous);
141
172
  }
142
- /**
143
- * Archive date-scoped task directories before the supplied local date. Moving the
144
- * date directory (rather than marking individual plans) also handles older tasks
145
- * that predate completedAt and leaves no empty date directories behind.
146
- */
147
- function archiveDatedTaskDirectoriesBefore(project, cutoffDate) {
148
- if (!fs.existsSync(project.tasksDir))
149
- return 0;
150
- const archiveRoot = path.join(project.clawDir, "archive", "tasks");
151
- let archivedTaskCount = 0;
152
- for (const entry of fs.readdirSync(project.tasksDir, { withFileTypes: true })) {
153
- if (!entry.isDirectory() || !/^\d{4}-\d{2}-\d{2}$/.test(entry.name) || entry.name >= cutoffDate)
154
- continue;
155
- const sourceDateDir = path.join(project.tasksDir, entry.name);
156
- const taskCount = fs.readdirSync(sourceDateDir, { withFileTypes: true }).filter((child) => child.isDirectory()).length;
157
- moveDateDirectory(sourceDateDir, path.join(archiveRoot, entry.name));
158
- archivedTaskCount += taskCount;
159
- }
160
- return archivedTaskCount;
161
- }
162
- function moveDateDirectory(sourceDateDir, targetDateDir) {
163
- fs.mkdirSync(path.dirname(targetDateDir), { recursive: true });
164
- if (!fs.existsSync(targetDateDir)) {
165
- fs.renameSync(sourceDateDir, targetDateDir);
166
- return;
167
- }
168
- for (const child of fs.readdirSync(sourceDateDir, { withFileTypes: true })) {
169
- const source = path.join(sourceDateDir, child.name);
170
- let target = path.join(targetDateDir, child.name);
171
- let suffix = 1;
172
- while (fs.existsSync(target)) {
173
- target = path.join(targetDateDir, `${child.name}--${suffix}`);
174
- suffix += 1;
175
- }
176
- fs.renameSync(source, target);
177
- }
178
- fs.rmdirSync(sourceDateDir);
179
- }
180
- function archiveLegacyTaskDirectoriesBefore(project, cutoffDate) {
181
- const archiveRoot = path.join(project.clawDir, "archive", "tasks");
182
- let archivedTaskCount = 0;
183
- for (const task of listTaskDirectories(project)) {
184
- if (/^\d{4}-\d{2}-\d{2}[\\/]/.test(task.relativePath))
185
- continue;
186
- const planPath = path.join(task.taskDir, "plan.json");
187
- const updatedAt = readPlanUpdatedAt(planPath);
188
- if (!updatedAt || localDate(new Date(updatedAt)) >= cutoffDate)
189
- continue;
190
- moveDirectoryWithCollision(task.taskDir, path.join(archiveRoot, task.relativePath));
191
- archivedTaskCount += 1;
192
- }
193
- return archivedTaskCount;
194
- }
195
- function readPlanUpdatedAt(planPath) {
196
- if (!fs.existsSync(planPath))
197
- return null;
198
- try {
199
- const plan = readJsonFile(planPath);
200
- const timestamp = typeof plan.updatedAt === "string" ? Date.parse(plan.updatedAt) : Number.NaN;
201
- return Number.isFinite(timestamp) ? timestamp : fs.statSync(planPath).mtimeMs;
202
- }
203
- catch {
204
- return fs.statSync(planPath).mtimeMs;
205
- }
206
- }
207
- function moveDirectoryWithCollision(sourceDir, targetDir) {
208
- fs.mkdirSync(path.dirname(targetDir), { recursive: true });
209
- let target = targetDir;
210
- let suffix = 1;
211
- while (fs.existsSync(target)) {
212
- target = `${targetDir}--${suffix}`;
213
- suffix += 1;
214
- }
215
- fs.renameSync(sourceDir, target);
216
- }
217
173
  //# sourceMappingURL=daily-maintenance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daily-maintenance.js","sourceRoot":"","sources":["../../src/daily-maintenance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daily-maintenance.js","sourceRoot":"","sources":["../../src/daily-maintenance.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type ClawErrorCode = "PROJECT_ROOT_NOT_FOUND" | "CLAW_DIR_NOT_FOUND" | "PROJECT_ALREADY_INITIALIZED" | "PROJECT_CONFIG_INVALID" | "TASK_NOT_FOUND" | "TASK_NAME_INVALID" | "ACTIVE_PLAN_INVALID" | "ACTIVE_PLAN_MISSING" | "PLAN_NOT_FOUND" | "PLAN_ALREADY_EXISTS" | "PLAN_STATUS_INVALID" | "PLAN_STATUS_NOT_SETTABLE" | "PLAN_STATUS_TRANSITION_FORBIDDEN" | "PLAN_STATUS_REOPEN_REQUIRED" | "TASK_STATUS_FORBIDDEN_IN_NON_ACTIVE_PLAN" | "PLAN_WRITE_CONFLICT" | "PLAN_STALE_EDIT" | "RETROSPECTIVE_REQUIRED" | "MEMORY_QUERY_REQUIRED" | "MEMORY_DISABLED" | "MEMORY_STORE_BUSY" | "MEMORY_VECTOR_INDEX_REQUIRED" | "GITNEXUS_REFRESH_FAILED" | "TRUTH_TARGET_INVALID" | "INPUT_REQUIRED";
1
+ export type ClawErrorCode = "PROJECT_ROOT_NOT_FOUND" | "CLAW_DIR_NOT_FOUND" | "PROJECT_ALREADY_INITIALIZED" | "PROJECT_CONFIG_INVALID" | "TASK_NOT_FOUND" | "TASK_NAME_INVALID" | "ACTIVE_PLAN_INVALID" | "ACTIVE_PLAN_MISSING" | "PLAN_NOT_FOUND" | "PLAN_ALREADY_EXISTS" | "PLAN_STATUS_INVALID" | "PLAN_STATUS_NOT_SETTABLE" | "PLAN_STATUS_TRANSITION_FORBIDDEN" | "PLAN_STATUS_REOPEN_REQUIRED" | "TASK_STATUS_FORBIDDEN_IN_NON_ACTIVE_PLAN" | "PLAN_WRITE_CONFLICT" | "PLAN_STALE_EDIT" | "CURRENT_PLAN_REQUIRED" | "PLAN_NOT_RESUMABLE" | "PLAN_FOCUS_CONFLICT" | "PLAN_TRANSITION_CONFLICT" | "FOCUS_RECOVERY_CONFLICT" | "SESSION_IDENTITY_INVALID" | "SESSION_NOT_FOUND" | "SESSION_EXPIRED" | "SESSION_PROTOCOL_UNSUPPORTED" | "SESSION_COMMAND_FAILED" | "SESSION_OPERATION_UNSUPPORTED" | "RETROSPECTIVE_REQUIRED" | "MEMORY_QUERY_REQUIRED" | "MEMORY_DISABLED" | "MEMORY_STORE_BUSY" | "MEMORY_VECTOR_INDEX_REQUIRED" | "GITNEXUS_REFRESH_FAILED" | "TRUTH_TARGET_INVALID" | "INPUT_REQUIRED";
2
2
  export declare class ClawError extends Error {
3
3
  readonly code: ClawErrorCode;
4
4
  readonly details: Record<string, unknown> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,IAAI,CAAgB;IACpB,OAAO,CAAsC;IAEtD,YAAY,IAAmB,EAAE,OAAe,EAAE,OAAiC;QACjF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAsCA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,IAAI,CAAgB;IACpB,OAAO,CAAsC;IAEtD,YAAY,IAAmB,EAAE,OAAe,EAAE,OAAiC;QACjF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,158 @@
1
+ import type { PlanDocument, PlanLeaveReason, ProjectContext } from "./types.js";
2
+ export type PlanRef = {
3
+ projectRoot: string;
4
+ taskName: string;
5
+ planFile: string;
6
+ };
7
+ export type PlanFocusOwner = {
8
+ sessionKeyHash: string;
9
+ planRef: PlanRef;
10
+ acquiredAt: string;
11
+ updatedAt: string;
12
+ };
13
+ export type PlanFocusRegistry = {
14
+ schemaVersion: 1;
15
+ owners: Record<string, PlanFocusOwner>;
16
+ };
17
+ export type FocusSessionRecord = {
18
+ schemaVersion: 1;
19
+ sessionKeyHash: string;
20
+ currentPlan?: PlanRef;
21
+ updatedAt: string;
22
+ };
23
+ export interface FocusSessionStore {
24
+ read(sessionKeyHash: string): FocusSessionRecord;
25
+ buildPersistedRecord(sessionKeyHash: string, record: FocusSessionRecord): unknown;
26
+ writePersistedAtomic(sessionKeyHash: string, persistedRecord: unknown): void;
27
+ queuePath(sessionKeyHash: string): string;
28
+ resourcePath(sessionKeyHash: string): string;
29
+ }
30
+ export type FocusTransitionKind = "create" | "resume" | "leave" | "end" | "expire" | "subplan_create" | "subplan_complete";
31
+ export type FocusTransitionJournal = {
32
+ schemaVersion: 1;
33
+ transitionId: string;
34
+ kind: FocusTransitionKind;
35
+ sessionKeyHash: string;
36
+ phase: "prepared" | "applying" | "committed";
37
+ createdAt: string;
38
+ updatedAt: string;
39
+ before: {
40
+ sessionRecordHash: string;
41
+ ownerRegistryHash: string;
42
+ sessionCurrentPlan?: PlanRef;
43
+ plans: Array<{
44
+ ref: PlanRef;
45
+ contentHash: string;
46
+ }>;
47
+ };
48
+ after: {
49
+ sessionRecord: unknown;
50
+ ownerRegistry: PlanFocusRegistry;
51
+ sessionCurrentPlan?: PlanRef;
52
+ plans: Array<{
53
+ ref: PlanRef;
54
+ content: PlanDocument;
55
+ }>;
56
+ };
57
+ };
58
+ export type FocusTransitionResult = {
59
+ changed: boolean;
60
+ transitionId?: string;
61
+ previousCurrentPlan?: PlanRef;
62
+ currentPlan?: PlanRef;
63
+ enteredEndPlans: Array<{
64
+ ref: PlanRef;
65
+ plan: PlanDocument;
66
+ endedAt: string;
67
+ }>;
68
+ };
69
+ export type FocusFailurePoint = "after_prepared" | "after_applying" | "after_plan" | "after_owners" | "after_session" | "after_committed";
70
+ export type FocusTransitionTestHooks = {
71
+ failAt?: FocusFailurePoint;
72
+ failAfterPlanWrites?: number;
73
+ };
74
+ export declare class ProjectFocusSessionStore implements FocusSessionStore {
75
+ readonly project: ProjectContext;
76
+ constructor(project: ProjectContext);
77
+ read(sessionKeyHash: string): FocusSessionRecord;
78
+ buildPersistedRecord(sessionKeyHash: string, record: FocusSessionRecord): unknown;
79
+ writePersistedAtomic(sessionKeyHash: string, persistedRecord: unknown): void;
80
+ queuePath(sessionKeyHash: string): string;
81
+ resourcePath(sessionKeyHash: string): string;
82
+ }
83
+ export declare function createPlanRef(project: ProjectContext, taskName: string, planFile?: string): PlanRef;
84
+ export declare function focusSessionKeyHash(sessionKey: string): string;
85
+ export declare function focusTransitionsDirectory(project: ProjectContext): string;
86
+ export declare function focusQueuePath(project: ProjectContext): string;
87
+ export declare function focusOwnersPath(project: ProjectContext): string;
88
+ export declare function readFocusedPlan(project: ProjectContext, sessionKey: string, sessionStore?: FocusSessionStore): PlanRef | undefined;
89
+ export declare function readPlanFocusOwner(project: ProjectContext, ref: PlanRef): PlanFocusOwner | undefined;
90
+ export declare function leaveCurrentPlan(input: {
91
+ project: ProjectContext;
92
+ sessionKey: string;
93
+ reason?: PlanLeaveReason;
94
+ sessionStore?: FocusSessionStore;
95
+ testHooks?: FocusTransitionTestHooks;
96
+ }): Promise<FocusTransitionResult>;
97
+ export declare function releaseCurrentPlanFocus(input: {
98
+ project: ProjectContext;
99
+ sessionKey: string;
100
+ expectedEnd?: boolean;
101
+ kind?: "end" | "expire";
102
+ sessionStore?: FocusSessionStore;
103
+ testHooks?: FocusTransitionTestHooks;
104
+ }): Promise<FocusTransitionResult>;
105
+ export declare function activatePlan(input: {
106
+ project: ProjectContext;
107
+ sessionKey: string;
108
+ target?: PlanRef;
109
+ sessionStore?: FocusSessionStore;
110
+ testHooks?: FocusTransitionTestHooks;
111
+ }): Promise<FocusTransitionResult>;
112
+ export declare function switchCurrentPlan(input: {
113
+ project: ProjectContext;
114
+ sessionKey: string;
115
+ target: PlanRef;
116
+ kind?: FocusTransitionKind;
117
+ additionalPlanUpdates?: Array<{
118
+ ref: PlanRef;
119
+ content: PlanDocument;
120
+ }>;
121
+ preserveTargetStatus?: boolean;
122
+ preserveCurrentEndState?: boolean;
123
+ sessionStore?: FocusSessionStore;
124
+ testHooks?: FocusTransitionTestHooks;
125
+ }): Promise<FocusTransitionResult>;
126
+ export declare function createPlanAndSwitchFocus(input: {
127
+ project: ProjectContext;
128
+ sessionKey: string;
129
+ createdPlan: PlanRef;
130
+ sessionStore?: FocusSessionStore;
131
+ testHooks?: FocusTransitionTestHooks;
132
+ }): Promise<FocusTransitionResult>;
133
+ export declare function createSubplanAndSwitchFocus(input: {
134
+ project: ProjectContext;
135
+ sessionKey: string;
136
+ parentPlan: PlanRef;
137
+ parentAfterLink: PlanDocument;
138
+ childPlan: PlanRef;
139
+ sessionStore?: FocusSessionStore;
140
+ testHooks?: FocusTransitionTestHooks;
141
+ }): Promise<FocusTransitionResult>;
142
+ export declare function completeSubplanAndRestoreParent(input: {
143
+ project: ProjectContext;
144
+ sessionKey: string;
145
+ childPlan: PlanRef;
146
+ completedChild: PlanDocument;
147
+ parentPlan: PlanRef;
148
+ parentTaskId: number;
149
+ sessionStore?: FocusSessionStore;
150
+ testHooks?: FocusTransitionTestHooks;
151
+ }): Promise<FocusTransitionResult>;
152
+ export declare function recoverProjectFocusTransitions(input: {
153
+ project: ProjectContext;
154
+ sessionStore?: FocusSessionStore;
155
+ }): Promise<{
156
+ recovered: string[];
157
+ discarded: string[];
158
+ }>;