@isaacriehm/cairn-core 0.13.2 → 0.14.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/attention/bulk-accept.js +19 -0
- package/dist/attention/bulk-accept.js.map +1 -1
- package/dist/gc/entity-orphan.d.ts +55 -0
- package/dist/gc/entity-orphan.js +171 -0
- package/dist/gc/entity-orphan.js.map +1 -0
- package/dist/gc/index.d.ts +4 -0
- package/dist/gc/index.js +2 -0
- package/dist/gc/index.js.map +1 -1
- package/dist/gc/retire.d.ts +57 -0
- package/dist/gc/retire.js +189 -0
- package/dist/gc/retire.js.map +1 -0
- package/dist/gc/sweep.js +11 -0
- package/dist/gc/sweep.js.map +1 -1
- package/dist/gc/types.d.ts +2 -2
- package/dist/hooks/ask-user-blocked.d.ts +8 -0
- package/dist/hooks/ask-user-blocked.js +13 -0
- package/dist/hooks/ask-user-blocked.js.map +1 -0
- package/dist/hooks/post-tool-use/ask-user-blocked.d.ts +18 -0
- package/dist/hooks/post-tool-use/ask-user-blocked.js +113 -0
- package/dist/hooks/post-tool-use/ask-user-blocked.js.map +1 -0
- package/dist/hooks/post-tool-use/index.d.ts +1 -0
- package/dist/hooks/post-tool-use/index.js +1 -0
- package/dist/hooks/post-tool-use/index.js.map +1 -1
- package/dist/hooks/runners/context-threshold.js +2 -2
- package/dist/hooks/runners/context-threshold.js.map +1 -1
- package/dist/hooks/runners/gc-autotrigger.d.ts +7 -4
- package/dist/hooks/runners/gc-autotrigger.js +7 -4
- package/dist/hooks/runners/gc-autotrigger.js.map +1 -1
- package/dist/hooks/runners/stop.js +260 -115
- package/dist/hooks/runners/stop.js.map +1 -1
- package/dist/init/ingest-docs.d.ts +2 -4
- package/dist/init/ingest-docs.js +2 -4
- package/dist/init/ingest-docs.js.map +1 -1
- package/dist/mcp/errors.d.ts +1 -1
- package/dist/mcp/errors.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/schemas.d.ts +16 -94
- package/dist/mcp/schemas.js +41 -89
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/tools/decision-get.js +9 -0
- package/dist/mcp/tools/decision-get.js.map +1 -1
- package/dist/mcp/tools/index.js +8 -29
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/invariant-get.js +8 -0
- package/dist/mcp/tools/invariant-get.js.map +1 -1
- package/dist/mcp/tools/mission-advance.d.ts +15 -0
- package/dist/mcp/tools/mission-advance.js +36 -1
- package/dist/mcp/tools/mission-advance.js.map +1 -1
- package/dist/mcp/tools/record-decision.js +14 -1
- package/dist/mcp/tools/record-decision.js.map +1 -1
- package/dist/mcp/tools/retire-entity.d.ts +22 -0
- package/dist/mcp/tools/retire-entity.js +62 -0
- package/dist/mcp/tools/retire-entity.js.map +1 -0
- package/dist/mcp/tools/task-complete.js +28 -22
- package/dist/mcp/tools/task-complete.js.map +1 -1
- package/dist/mcp/tools/task-create.d.ts +0 -1
- package/dist/mcp/tools/task-create.js +41 -10
- package/dist/mcp/tools/task-create.js.map +1 -1
- package/dist/mcp/tools/task-journal-append.js +23 -2
- package/dist/mcp/tools/task-journal-append.js.map +1 -1
- package/dist/mcp/tools/task-reopen.d.ts +7 -0
- package/dist/mcp/tools/task-reopen.js +40 -0
- package/dist/mcp/tools/task-reopen.js.map +1 -0
- package/dist/tasks/index.d.ts +2 -2
- package/dist/tasks/index.js +1 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/lifecycle.d.ts +62 -19
- package/dist/tasks/lifecycle.js +147 -42
- package/dist/tasks/lifecycle.js.map +1 -1
- package/package.json +2 -2
- package/dist/mcp/tools/align-drain.d.ts +0 -7
- package/dist/mcp/tools/align-drain.js +0 -26
- package/dist/mcp/tools/align-drain.js.map +0 -1
- package/dist/mcp/tools/archive.d.ts +0 -8
- package/dist/mcp/tools/archive.js +0 -72
- package/dist/mcp/tools/archive.js.map +0 -1
- package/dist/mcp/tools/attention-restore.d.ts +0 -14
- package/dist/mcp/tools/attention-restore.js +0 -22
- package/dist/mcp/tools/attention-restore.js.map +0 -1
- package/dist/mcp/tools/decisions-for-symbol.d.ts +0 -7
- package/dist/mcp/tools/decisions-for-symbol.js +0 -42
- package/dist/mcp/tools/decisions-for-symbol.js.map +0 -1
- package/dist/mcp/tools/get-full.d.ts +0 -7
- package/dist/mcp/tools/get-full.js +0 -46
- package/dist/mcp/tools/get-full.js.map +0 -1
- package/dist/mcp/tools/ground-get.d.ts +0 -7
- package/dist/mcp/tools/ground-get.js +0 -77
- package/dist/mcp/tools/ground-get.js.map +0 -1
- package/dist/mcp/tools/mission-close.d.ts +0 -8
- package/dist/mcp/tools/mission-close.js +0 -48
- package/dist/mcp/tools/mission-close.js.map +0 -1
- package/dist/mcp/tools/mission-reopen.d.ts +0 -13
- package/dist/mcp/tools/mission-reopen.js +0 -56
- package/dist/mcp/tools/mission-reopen.js.map +0 -1
- package/dist/mcp/tools/reject-candidate.d.ts +0 -24
- package/dist/mcp/tools/reject-candidate.js +0 -71
- package/dist/mcp/tools/reject-candidate.js.map +0 -1
- package/dist/mcp/tools/search-candidates.d.ts +0 -20
- package/dist/mcp/tools/search-candidates.js +0 -93
- package/dist/mcp/tools/search-candidates.js.map +0 -1
- package/dist/mcp/tools/supersedes-chain.d.ts +0 -6
- package/dist/mcp/tools/supersedes-chain.js +0 -66
- package/dist/mcp/tools/supersedes-chain.js.map +0 -1
- package/dist/mcp/tools/timeline.d.ts +0 -9
- package/dist/mcp/tools/timeline.js +0 -61
- package/dist/mcp/tools/timeline.js.map +0 -1
|
@@ -3,22 +3,19 @@
|
|
|
3
3
|
* phase transitions and the only path that moves a task directory from
|
|
4
4
|
* `tasks/active/` to `tasks/done/`.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* Plus a read helper `readTaskAttestationState` used by the Stop hook
|
|
12
|
-
* auto-graduator to decide which transition (if any) to apply.
|
|
6
|
+
* `completeTask` is the terminal phase + dir move + invalidation emit.
|
|
7
|
+
* `readTaskAttestationState` is a read helper used by the Stop hook
|
|
8
|
+
* auto-graduator to decide whether to close a task whose attestation
|
|
9
|
+
* landed without an explicit close call.
|
|
13
10
|
*
|
|
14
11
|
* Tasks created by `cairn_task_create` start at `phase: running`.
|
|
15
|
-
* The
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* The AI calls `completeTask` (via `cairn_task_complete`) with a
|
|
13
|
+
* summary — that summary is the attestation. The Stop hook
|
|
14
|
+
* auto-graduator is a fallback for the rare case where an opt-in
|
|
15
|
+
* reviewer subagent wrote `attestation.yaml` and ended its turn
|
|
16
|
+
* before the explicit close call.
|
|
19
17
|
*/
|
|
20
18
|
export type TaskOutcome = "succeeded" | "failed" | "aborted";
|
|
21
|
-
export type TaskTransitionPhase = "queued" | "tightening" | "running" | "sensor_check" | "ready_for_review" | "awaiting_attestation" | "reviewing" | "backprop";
|
|
22
19
|
export interface CompleteTaskArgs {
|
|
23
20
|
repoRoot: string;
|
|
24
21
|
taskId: string;
|
|
@@ -76,22 +73,58 @@ export interface CompleteTaskError {
|
|
|
76
73
|
* Stop hook) decide how to surface.
|
|
77
74
|
*/
|
|
78
75
|
export declare function completeTask(args: CompleteTaskArgs): CompleteTaskResult | CompleteTaskError;
|
|
79
|
-
export interface
|
|
76
|
+
export interface ReopenTaskArgs {
|
|
80
77
|
repoRoot: string;
|
|
81
78
|
taskId: string;
|
|
82
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Optional reason for the reopen — recorded in the journal entry so
|
|
81
|
+
* the next session sees why the task came back from `tasks/done/`.
|
|
82
|
+
*/
|
|
83
|
+
reason?: string;
|
|
84
|
+
/**
|
|
85
|
+
* What invoked the reopen — written into the invalidation event
|
|
86
|
+
* `source.tool` field. Defaults to `cairn_task_reopen`.
|
|
87
|
+
*/
|
|
88
|
+
source?: string;
|
|
89
|
+
}
|
|
90
|
+
export interface ReopenTaskResult {
|
|
91
|
+
ok: true;
|
|
92
|
+
taskId: string;
|
|
93
|
+
reopenedAt: string;
|
|
94
|
+
movedTo: string;
|
|
83
95
|
}
|
|
84
|
-
export
|
|
96
|
+
export interface ReopenTaskError {
|
|
97
|
+
ok: false;
|
|
98
|
+
code: "TASK_NOT_FOUND" | "NOT_IN_DONE" | "ACTIVE_DIR_COLLISION";
|
|
99
|
+
message: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Move a graduated task from `tasks/done/<id>/` back to
|
|
103
|
+
* `tasks/active/<id>/` and reset its phase to `running`. Inverse of
|
|
104
|
+
* `completeTask`.
|
|
105
|
+
*
|
|
106
|
+
* Bug-mine: operator hit a case where `cairn_task_complete` without
|
|
107
|
+
* `task_id` graduated the wrong task (a parallel-session task picked
|
|
108
|
+
* via mtime-based active-task fallback). There was no recovery tool —
|
|
109
|
+
* operator was told to `mv` the directory manually.
|
|
110
|
+
*
|
|
111
|
+
* Side-effect: renames any pre-existing `attestation.yaml` to
|
|
112
|
+
* `attestation.<completedAt>.yaml` so the Stop-hook auto-graduator
|
|
113
|
+
* doesn't immediately re-close the task on the next tick. The history
|
|
114
|
+
* stays on disk for audit; the live state is clean.
|
|
115
|
+
*/
|
|
116
|
+
export declare function reopenTask(args: ReopenTaskArgs): ReopenTaskResult | ReopenTaskError;
|
|
85
117
|
export interface TaskAttestationState {
|
|
86
118
|
rootAttestation: boolean;
|
|
87
119
|
subagentAttestations: number;
|
|
88
|
-
needsReview: boolean;
|
|
89
120
|
phase: string | null;
|
|
90
121
|
}
|
|
91
122
|
/**
|
|
92
|
-
* Read the attestation
|
|
93
|
-
*
|
|
94
|
-
*
|
|
123
|
+
* Read the attestation state for an active task. Used by the Stop
|
|
124
|
+
* hook auto-graduator to decide whether to close a task whose work
|
|
125
|
+
* landed without an explicit `cairn_task_complete` call (rare —
|
|
126
|
+
* happens when an opt-in reviewer subagent wrote attestation.yaml
|
|
127
|
+
* but the surrounding session ended before the close call).
|
|
95
128
|
*/
|
|
96
129
|
export declare function readTaskAttestationState(repoRoot: string, taskId: string): TaskAttestationState | null;
|
|
97
130
|
export interface JournalEntry {
|
|
@@ -123,6 +156,16 @@ export interface AppendJournalArgs {
|
|
|
123
156
|
* inside the Stop hook).
|
|
124
157
|
*/
|
|
125
158
|
export declare function appendTaskJournal(args: AppendJournalArgs): boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Read the session-affinity stamps off a task's `status.yaml`. Returns
|
|
161
|
+
* nulls for tasks created before the affinity stamping was wired in
|
|
162
|
+
* (pre-0.13.x adoptions). Stall scan uses this to decide whether to
|
|
163
|
+
* surface a 30m-idle task to the current session.
|
|
164
|
+
*/
|
|
165
|
+
export declare function readTaskSessionAffinity(repoRoot: string, taskId: string): {
|
|
166
|
+
createdBySession: string | null;
|
|
167
|
+
lastJournalSession: string | null;
|
|
168
|
+
};
|
|
126
169
|
export declare function readTaskJournal(repoRoot: string, taskId: string, scope?: "active" | "done"): JournalEntry[];
|
|
127
170
|
/**
|
|
128
171
|
* Look up the single active task that should be the implicit target
|
package/dist/tasks/lifecycle.js
CHANGED
|
@@ -3,19 +3,17 @@
|
|
|
3
3
|
* phase transitions and the only path that moves a task directory from
|
|
4
4
|
* `tasks/active/` to `tasks/done/`.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* Plus a read helper `readTaskAttestationState` used by the Stop hook
|
|
12
|
-
* auto-graduator to decide which transition (if any) to apply.
|
|
6
|
+
* `completeTask` is the terminal phase + dir move + invalidation emit.
|
|
7
|
+
* `readTaskAttestationState` is a read helper used by the Stop hook
|
|
8
|
+
* auto-graduator to decide whether to close a task whose attestation
|
|
9
|
+
* landed without an explicit close call.
|
|
13
10
|
*
|
|
14
11
|
* Tasks created by `cairn_task_create` start at `phase: running`.
|
|
15
|
-
* The
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* The AI calls `completeTask` (via `cairn_task_complete`) with a
|
|
13
|
+
* summary — that summary is the attestation. The Stop hook
|
|
14
|
+
* auto-graduator is a fallback for the rare case where an opt-in
|
|
15
|
+
* reviewer subagent wrote `attestation.yaml` and ended its turn
|
|
16
|
+
* before the explicit close call.
|
|
19
17
|
*/
|
|
20
18
|
import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, utimesSync, writeFileSync, } from "node:fs";
|
|
21
19
|
import { join } from "node:path";
|
|
@@ -106,22 +104,102 @@ export function completeTask(args) {
|
|
|
106
104
|
phase_ready_to_exit: phaseReadyToExit,
|
|
107
105
|
};
|
|
108
106
|
}
|
|
109
|
-
|
|
107
|
+
/**
|
|
108
|
+
* Move a graduated task from `tasks/done/<id>/` back to
|
|
109
|
+
* `tasks/active/<id>/` and reset its phase to `running`. Inverse of
|
|
110
|
+
* `completeTask`.
|
|
111
|
+
*
|
|
112
|
+
* Bug-mine: operator hit a case where `cairn_task_complete` without
|
|
113
|
+
* `task_id` graduated the wrong task (a parallel-session task picked
|
|
114
|
+
* via mtime-based active-task fallback). There was no recovery tool —
|
|
115
|
+
* operator was told to `mv` the directory manually.
|
|
116
|
+
*
|
|
117
|
+
* Side-effect: renames any pre-existing `attestation.yaml` to
|
|
118
|
+
* `attestation.<completedAt>.yaml` so the Stop-hook auto-graduator
|
|
119
|
+
* doesn't immediately re-close the task on the next tick. The history
|
|
120
|
+
* stays on disk for audit; the live state is clean.
|
|
121
|
+
*/
|
|
122
|
+
export function reopenTask(args) {
|
|
110
123
|
const activeDir = join(args.repoRoot, ".cairn", "tasks", "active", args.taskId);
|
|
111
|
-
|
|
112
|
-
|
|
124
|
+
const doneDir = join(args.repoRoot, ".cairn", "tasks", "done", args.taskId);
|
|
125
|
+
if (!existsSync(doneDir)) {
|
|
126
|
+
if (existsSync(activeDir)) {
|
|
127
|
+
return {
|
|
128
|
+
ok: false,
|
|
129
|
+
code: "NOT_IN_DONE",
|
|
130
|
+
message: `Task ${args.taskId} is already active`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
ok: false,
|
|
135
|
+
code: "TASK_NOT_FOUND",
|
|
136
|
+
message: `No completed task ${args.taskId}`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
if (existsSync(activeDir)) {
|
|
140
|
+
return {
|
|
141
|
+
ok: false,
|
|
142
|
+
code: "ACTIVE_DIR_COLLISION",
|
|
143
|
+
message: `tasks/active/${args.taskId} already exists; refusing to overwrite. Investigate stale state.`,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
// Move the directory back. Renaming the attestation is best-effort —
|
|
147
|
+
// a missing attestation is fine (e.g. autonomous-flow graduation),
|
|
148
|
+
// a rename failure would just leave the auto-graduator to re-close
|
|
149
|
+
// the task, which is acceptable behaviour for an interrupted reopen.
|
|
150
|
+
renameSync(doneDir, activeDir);
|
|
113
151
|
const statusPath = join(activeDir, "status.yaml");
|
|
114
|
-
if (!existsSync(statusPath))
|
|
115
|
-
return false;
|
|
116
152
|
const status = readStatusYaml(statusPath);
|
|
117
|
-
status.
|
|
153
|
+
const completedAt = typeof status.completed_at === "string" ? status.completed_at : null;
|
|
154
|
+
status.phase = "running";
|
|
155
|
+
delete status.completed_at;
|
|
156
|
+
delete status.outcome_summary;
|
|
118
157
|
writeFileSync(statusPath, stringifyYaml(status), "utf8");
|
|
119
|
-
|
|
158
|
+
const attestationPath = join(activeDir, "attestation.yaml");
|
|
159
|
+
if (existsSync(attestationPath)) {
|
|
160
|
+
const stamp = (completedAt ?? new Date().toISOString()).replace(/[:.]/g, "-");
|
|
161
|
+
try {
|
|
162
|
+
renameSync(attestationPath, join(activeDir, `attestation.${stamp}.yaml`));
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
/* best-effort */
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const reopenedAt = new Date().toISOString();
|
|
169
|
+
try {
|
|
170
|
+
appendTaskJournal({
|
|
171
|
+
repoRoot: args.repoRoot,
|
|
172
|
+
taskId: args.taskId,
|
|
173
|
+
sessionId: null,
|
|
174
|
+
summary: `Reopened from tasks/done/${args.reason !== undefined ? ` — ${args.reason}` : ""}`,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
/* best-effort */
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
writeInvalidationEvent(args.repoRoot, {
|
|
182
|
+
kind: "task-reopened",
|
|
183
|
+
refs: [{ kind: "task", id: args.taskId }],
|
|
184
|
+
source: { session_id: null, tool: args.source ?? "cairn_task_reopen" },
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
/* best-effort */
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
ok: true,
|
|
192
|
+
taskId: args.taskId,
|
|
193
|
+
reopenedAt,
|
|
194
|
+
movedTo: `.cairn/tasks/active/${args.taskId}/`,
|
|
195
|
+
};
|
|
120
196
|
}
|
|
121
197
|
/**
|
|
122
|
-
* Read the attestation
|
|
123
|
-
*
|
|
124
|
-
*
|
|
198
|
+
* Read the attestation state for an active task. Used by the Stop
|
|
199
|
+
* hook auto-graduator to decide whether to close a task whose work
|
|
200
|
+
* landed without an explicit `cairn_task_complete` call (rare —
|
|
201
|
+
* happens when an opt-in reviewer subagent wrote attestation.yaml
|
|
202
|
+
* but the surrounding session ended before the close call).
|
|
125
203
|
*/
|
|
126
204
|
export function readTaskAttestationState(repoRoot, taskId) {
|
|
127
205
|
const taskDir = join(repoRoot, ".cairn", "tasks", "active", taskId);
|
|
@@ -146,12 +224,10 @@ export function readTaskAttestationState(repoRoot, taskId) {
|
|
|
146
224
|
}
|
|
147
225
|
}
|
|
148
226
|
}
|
|
149
|
-
const needsReview = readNeedsReview(join(taskDir, "spec.tightened.md"));
|
|
150
227
|
const phase = readPhase(join(taskDir, "status.yaml"));
|
|
151
228
|
return {
|
|
152
229
|
rootAttestation,
|
|
153
230
|
subagentAttestations,
|
|
154
|
-
needsReview,
|
|
155
231
|
phase,
|
|
156
232
|
};
|
|
157
233
|
}
|
|
@@ -190,8 +266,30 @@ export function appendTaskJournal(args) {
|
|
|
190
266
|
// mtime on status.yaml) sees a journal-only turn as live activity.
|
|
191
267
|
// Without this, journaling without a status edit causes the 30-min
|
|
192
268
|
// idle clock to fire mid-active-work (bug-mine report #2).
|
|
269
|
+
//
|
|
270
|
+
// Also stamp `last_journal_session` so the stall scan can tell
|
|
271
|
+
// which session is currently working the task. Two concurrent CC
|
|
272
|
+
// sessions on the same checkout (bug-mine: an operator running
|
|
273
|
+
// both windows simultaneously sharing one `.cairn/`) previously
|
|
274
|
+
// saw each other's tasks as stalled because nothing distinguished
|
|
275
|
+
// "owned by another session" from "abandoned."
|
|
193
276
|
const statusPath = join(taskDir, "status.yaml");
|
|
194
277
|
if (existsSync(statusPath)) {
|
|
278
|
+
if (args.sessionId !== null && args.sessionId !== "") {
|
|
279
|
+
try {
|
|
280
|
+
const status = readStatusYaml(statusPath);
|
|
281
|
+
const prev = typeof status["last_journal_session"] === "string"
|
|
282
|
+
? status["last_journal_session"]
|
|
283
|
+
: null;
|
|
284
|
+
if (prev !== args.sessionId) {
|
|
285
|
+
status["last_journal_session"] = args.sessionId;
|
|
286
|
+
writeFileSync(statusPath, stringifyYaml(status), "utf8");
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// Best-effort — mtime bump below still happens.
|
|
291
|
+
}
|
|
292
|
+
}
|
|
195
293
|
const now = new Date();
|
|
196
294
|
try {
|
|
197
295
|
utimesSync(statusPath, now, now);
|
|
@@ -202,6 +300,32 @@ export function appendTaskJournal(args) {
|
|
|
202
300
|
}
|
|
203
301
|
return true;
|
|
204
302
|
}
|
|
303
|
+
/**
|
|
304
|
+
* Read the session-affinity stamps off a task's `status.yaml`. Returns
|
|
305
|
+
* nulls for tasks created before the affinity stamping was wired in
|
|
306
|
+
* (pre-0.13.x adoptions). Stall scan uses this to decide whether to
|
|
307
|
+
* surface a 30m-idle task to the current session.
|
|
308
|
+
*/
|
|
309
|
+
export function readTaskSessionAffinity(repoRoot, taskId) {
|
|
310
|
+
const statusPath = join(repoRoot, ".cairn", "tasks", "active", taskId, "status.yaml");
|
|
311
|
+
if (!existsSync(statusPath)) {
|
|
312
|
+
return { createdBySession: null, lastJournalSession: null };
|
|
313
|
+
}
|
|
314
|
+
try {
|
|
315
|
+
const status = readStatusYaml(statusPath);
|
|
316
|
+
return {
|
|
317
|
+
createdBySession: typeof status["created_by_session"] === "string"
|
|
318
|
+
? status["created_by_session"]
|
|
319
|
+
: null,
|
|
320
|
+
lastJournalSession: typeof status["last_journal_session"] === "string"
|
|
321
|
+
? status["last_journal_session"]
|
|
322
|
+
: null,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
return { createdBySession: null, lastJournalSession: null };
|
|
327
|
+
}
|
|
328
|
+
}
|
|
205
329
|
export function readTaskJournal(repoRoot, taskId, scope = "active") {
|
|
206
330
|
const taskDir = join(repoRoot, ".cairn", "tasks", scope, taskId);
|
|
207
331
|
const path = join(taskDir, "journal.jsonl");
|
|
@@ -302,25 +426,6 @@ function readStatusYaml(statusPath) {
|
|
|
302
426
|
}
|
|
303
427
|
return {};
|
|
304
428
|
}
|
|
305
|
-
function readNeedsReview(specPath) {
|
|
306
|
-
if (!existsSync(specPath))
|
|
307
|
-
return true;
|
|
308
|
-
let raw;
|
|
309
|
-
try {
|
|
310
|
-
raw = readFileSync(specPath, "utf8");
|
|
311
|
-
}
|
|
312
|
-
catch {
|
|
313
|
-
return true;
|
|
314
|
-
}
|
|
315
|
-
const fmMatch = raw.match(/^---\r?\n([\s\S]*?)\n---/);
|
|
316
|
-
if (!fmMatch)
|
|
317
|
-
return true;
|
|
318
|
-
const fm = fmMatch[1] ?? "";
|
|
319
|
-
const m = fm.match(/^needs_review:\s*(true|false)/m);
|
|
320
|
-
if (m && m[1] === "false")
|
|
321
|
-
return false;
|
|
322
|
-
return true;
|
|
323
|
-
}
|
|
324
429
|
function readPhase(statusPath) {
|
|
325
430
|
if (!existsSync(statusPath))
|
|
326
431
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tasks/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tasks/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isaacriehm/cairn-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Cairn core — state + context layer. Curated `.cairn/ground/` (decisions, §INV invariants, canonical-map, brand, quality-grades), MCP server, init wizard, hook runners, sensors, GC drift sweep.",
|
|
5
5
|
"author": "Isaac Riehm",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"simple-git": "^3.36.0",
|
|
40
40
|
"yaml": "^2.8.4",
|
|
41
41
|
"zod": "^4.4.3",
|
|
42
|
-
"@isaacriehm/cairn-state": "0.
|
|
42
|
+
"@isaacriehm/cairn-state": "0.14.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/cli-progress": "^3.11.6",
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { runDrain } from "../../drain/index.js";
|
|
2
|
-
import { alignDrainInput } from "../schemas.js";
|
|
3
|
-
async function handler(ctx, input) {
|
|
4
|
-
const args = {
|
|
5
|
-
repoRoot: ctx.repoRoot,
|
|
6
|
-
sessionId: ctx.sessionId ?? null,
|
|
7
|
-
};
|
|
8
|
-
if (input.max_haiku_calls !== undefined)
|
|
9
|
-
args.maxHaikuCalls = input.max_haiku_calls;
|
|
10
|
-
if (input.dry_run !== undefined)
|
|
11
|
-
args.dryRun = input.dry_run;
|
|
12
|
-
const result = await runDrain(args);
|
|
13
|
-
return result;
|
|
14
|
-
}
|
|
15
|
-
export const alignDrainTool = {
|
|
16
|
-
name: "cairn_align_drain",
|
|
17
|
-
description: "Layer C SessionStart drain (plan §4.3). Reads .cairn/staleness/layer-a-deferred.jsonl + " +
|
|
18
|
-
"pre-commit-deferred.jsonl, re-checks each block against the current source, applies " +
|
|
19
|
-
"verdict (cite / drop / alignment-pending) using the Haiku dedup judge for ambiguous " +
|
|
20
|
-
"candidates, and truncates the deferred logs. Capped at max_haiku_calls (default 30). " +
|
|
21
|
-
"Returns counts: cited, pending, dropped, deferred, haiku calls. Idempotent. dry_run " +
|
|
22
|
-
"classifies without applying side effects.",
|
|
23
|
-
inputSchema: alignDrainInput,
|
|
24
|
-
handler,
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=align-drain.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"align-drain.js","sourceRoot":"","sources":["../../../src/mcp/tools/align-drain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQhD,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,IAAI,GAAmC;QAC3C,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;KACjC,CAAC;IACF,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;QAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC;IACpF,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,0FAA0F;QAC1F,sFAAsF;QACtF,sFAAsF;QACtF,uFAAuF;QACvF,sFAAsF;QACtF,2CAA2C;IAC7C,WAAW,EAAE,eAAe;IAC5B,OAAO;CACR,CAAC"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, renameSync, statSync } from "node:fs";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { writeInvalidationEvent } from "../../events/index.js";
|
|
4
|
-
import { recordDriftEvent } from "@isaacriehm/cairn-state";
|
|
5
|
-
import { withWriteLock } from "../../lock.js";
|
|
6
|
-
import { requireBootstrap } from "../bootstrap-guard.js";
|
|
7
|
-
import { mcpError } from "../errors.js";
|
|
8
|
-
import { isArchiveDenied, relPosix, safeJoin } from "../path-allowlist.js";
|
|
9
|
-
import { archiveInput } from "../schemas.js";
|
|
10
|
-
async function handler(ctx, input) {
|
|
11
|
-
const block = requireBootstrap(ctx.repoRoot);
|
|
12
|
-
if (block !== null)
|
|
13
|
-
return block;
|
|
14
|
-
const abs = safeJoin(ctx.repoRoot, input.path);
|
|
15
|
-
if (typeof abs !== "string")
|
|
16
|
-
return abs;
|
|
17
|
-
const rel = relPosix(ctx.repoRoot, abs);
|
|
18
|
-
if (isArchiveDenied(rel)) {
|
|
19
|
-
return mcpError("NOT_ALLOWED", `Path "${rel}" is in the archive-deny list (sacred ground: AGENTS.md, .claude/**, decisions/, brand/).`);
|
|
20
|
-
}
|
|
21
|
-
if (rel.startsWith(".archive/")) {
|
|
22
|
-
return { ok: true, idempotent: true, path: rel, note: "Already in .archive/" };
|
|
23
|
-
}
|
|
24
|
-
if (!existsSync(abs)) {
|
|
25
|
-
return mcpError("FILE_NOT_FOUND", `No file at ${rel}`);
|
|
26
|
-
}
|
|
27
|
-
if (!statSync(abs).isFile()) {
|
|
28
|
-
return mcpError("NOT_ALLOWED", `Path is not a file: ${rel}`);
|
|
29
|
-
}
|
|
30
|
-
const today = new Date().toISOString().slice(0, 10);
|
|
31
|
-
const bucket = input.archive_dir ?? today;
|
|
32
|
-
const target = join(ctx.repoRoot, ".archive", bucket, rel);
|
|
33
|
-
return withWriteLock(ctx.repoRoot, () => {
|
|
34
|
-
mkdirSync(dirname(target), { recursive: true });
|
|
35
|
-
renameSync(abs, target);
|
|
36
|
-
recordDriftEvent(ctx.repoRoot, {
|
|
37
|
-
ts: new Date().toISOString(),
|
|
38
|
-
kind: "orphan_path",
|
|
39
|
-
path: rel,
|
|
40
|
-
detail: `archived: ${input.reason}`,
|
|
41
|
-
severity: "soft",
|
|
42
|
-
});
|
|
43
|
-
try {
|
|
44
|
-
const refs = [{ kind: "path", id: rel }];
|
|
45
|
-
const decMatch = rel.match(/^\.cairn\/ground\/decisions\/(?:_inbox\/)?(DEC-[0-9a-f]{7,})/);
|
|
46
|
-
if (decMatch)
|
|
47
|
-
refs.unshift({ kind: "decision", id: decMatch[1] });
|
|
48
|
-
writeInvalidationEvent(ctx.repoRoot, {
|
|
49
|
-
kind: "path_archived",
|
|
50
|
-
refs,
|
|
51
|
-
path: rel,
|
|
52
|
-
source: { session_id: ctx.sessionId ?? null, tool: "cairn_archive" },
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Event emission must never roll back the rename.
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
ok: true,
|
|
60
|
-
archived_from: rel,
|
|
61
|
-
archived_to: relPosix(ctx.repoRoot, target),
|
|
62
|
-
reason: input.reason,
|
|
63
|
-
};
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
export const archiveTool = {
|
|
67
|
-
name: "cairn_archive",
|
|
68
|
-
description: "Move a canonical-zone file to .archive/<archive_dir or today>/<original_path>. Idempotent. Records a staleness/log.jsonl event. Refuses sacred paths (AGENTS.md, .claude/**, decisions/, brand/).",
|
|
69
|
-
inputSchema: archiveInput,
|
|
70
|
-
handler,
|
|
71
|
-
};
|
|
72
|
-
//# sourceMappingURL=archive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/mcp/tools/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `cairn_attention_restore` MCP tool.
|
|
3
|
-
*
|
|
4
|
-
* Move a previously rejected or accepted DEC back into `_inbox/` as a
|
|
5
|
-
* draft so the operator can re-evaluate via the normal
|
|
6
|
-
* `cairn_resolve_attention` flow. See `attention/restore.ts` for the
|
|
7
|
-
* exact semantics around source-cite preservation.
|
|
8
|
-
*/
|
|
9
|
-
import type { ToolDef } from "./types.js";
|
|
10
|
-
interface RestoreInput {
|
|
11
|
-
decId: string;
|
|
12
|
-
}
|
|
13
|
-
export declare const attentionRestoreTool: ToolDef<RestoreInput>;
|
|
14
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `cairn_attention_restore` MCP tool.
|
|
3
|
-
*
|
|
4
|
-
* Move a previously rejected or accepted DEC back into `_inbox/` as a
|
|
5
|
-
* draft so the operator can re-evaluate via the normal
|
|
6
|
-
* `cairn_resolve_attention` flow. See `attention/restore.ts` for the
|
|
7
|
-
* exact semantics around source-cite preservation.
|
|
8
|
-
*/
|
|
9
|
-
import { z } from "zod";
|
|
10
|
-
import { restoreDec } from "../../attention/index.js";
|
|
11
|
-
const inputShape = {
|
|
12
|
-
decId: z.string().regex(/^DEC-[0-9a-f]{7,}$/),
|
|
13
|
-
};
|
|
14
|
-
export const attentionRestoreTool = {
|
|
15
|
-
name: "cairn_attention_restore",
|
|
16
|
-
description: "Move a previously rejected or accepted DEC back to draft state in `_inbox/<id>.draft.md` so the operator can re-evaluate via cairn_resolve_attention. Rejected DECs round-trip cleanly. Accepted DECs lose their canonical entry + ledger row but the inline `// §DEC-NNNN` source cite stays — re-accepting is idempotent (handled by the already-stripped check). Returns the prior state (`rejected` | `accepted` | `draft` | `not-found`) and the new draft path.",
|
|
17
|
-
inputSchema: inputShape,
|
|
18
|
-
handler: async (ctx, input) => {
|
|
19
|
-
return await restoreDec({ repoRoot: ctx.repoRoot, decId: input.decId });
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=attention-restore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attention-restore.js","sourceRoot":"","sources":["../../../src/mcp/tools/attention-restore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAItD,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC;CAC9C,CAAC;AAMF,MAAM,CAAC,MAAM,oBAAoB,GAA0B;IACzD,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,ucAAuc;IACzc,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,GAAe,EAAE,KAAmB,EAAE,EAAE;QACtD,OAAO,MAAM,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { decisionsDir, matchAnyGlob, parseFrontmatter } from "@isaacriehm/cairn-state";
|
|
4
|
-
import { DecisionFrontmatter } from "@isaacriehm/cairn-state";
|
|
5
|
-
import { decisionsForSymbolInput } from "../schemas.js";
|
|
6
|
-
async function handler(ctx, input) {
|
|
7
|
-
const dir = decisionsDir(ctx.repoRoot);
|
|
8
|
-
if (!existsSync(dir))
|
|
9
|
-
return [];
|
|
10
|
-
const out = [];
|
|
11
|
-
for (const entry of readdirSync(dir, { withFileTypes: true, encoding: "utf8" })) {
|
|
12
|
-
if (!entry.isFile() || !entry.name.endsWith(".md"))
|
|
13
|
-
continue;
|
|
14
|
-
const abs = join(dir, entry.name);
|
|
15
|
-
const raw = readFileSync(abs, "utf8");
|
|
16
|
-
const parsed = parseFrontmatter(raw);
|
|
17
|
-
const fm = DecisionFrontmatter.safeParse(parsed.frontmatter);
|
|
18
|
-
if (!fm.success)
|
|
19
|
-
continue;
|
|
20
|
-
if (fm.data.status !== "accepted")
|
|
21
|
-
continue;
|
|
22
|
-
const scope = fm.data.scope_globs ?? [];
|
|
23
|
-
if (!scope.some((g) => matchAnyGlob(input.file, [g])))
|
|
24
|
-
continue;
|
|
25
|
-
if (!parsed.body.includes(input.symbol))
|
|
26
|
-
continue;
|
|
27
|
-
out.push({
|
|
28
|
-
id: fm.data.id,
|
|
29
|
-
title: fm.data.title,
|
|
30
|
-
status: fm.data.status,
|
|
31
|
-
...(fm.data.scope_globs !== undefined ? { scope_globs: fm.data.scope_globs } : {}),
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
return out;
|
|
35
|
-
}
|
|
36
|
-
export const decisionsForSymbolTool = {
|
|
37
|
-
name: "cairn_decisions_for_symbol",
|
|
38
|
-
description: "Decisions whose scope_globs cover `file` AND whose body explicitly mentions `symbol`. Smaller result than path-glob alone.",
|
|
39
|
-
inputSchema: decisionsForSymbolInput,
|
|
40
|
-
handler,
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=decisions-for-symbol.js.map
|