@tacuchi/agent-workflow-cli 24.0.0 → 25.0.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 (66) hide show
  1. package/dist/application/checkpoint/markdown.js +85 -5
  2. package/dist/application/checkpoint/markdown.js.map +1 -1
  3. package/dist/application/checkpoint-service.js +7 -6
  4. package/dist/application/checkpoint-service.js.map +1 -1
  5. package/dist/application/checkpoint-write-service.js +270 -16
  6. package/dist/application/checkpoint-write-service.js.map +1 -1
  7. package/dist/application/flow/advance.js +60 -10
  8. package/dist/application/flow/advance.js.map +1 -1
  9. package/dist/application/flow/internal-actions.js +1 -1
  10. package/dist/application/flow/internal-actions.js.map +1 -1
  11. package/dist/application/flow/submit.js +256 -9
  12. package/dist/application/flow/submit.js.map +1 -1
  13. package/dist/application/lifecycle-target.js +16 -19
  14. package/dist/application/lifecycle-target.js.map +1 -1
  15. package/dist/application/markdown.js +6 -2
  16. package/dist/application/markdown.js.map +1 -1
  17. package/dist/application/parsers/spec-functional.js +220 -0
  18. package/dist/application/parsers/spec-functional.js.map +1 -0
  19. package/dist/application/parsers/spec-relation.js +142 -5
  20. package/dist/application/parsers/spec-relation.js.map +1 -1
  21. package/dist/application/paths-service.js +13 -0
  22. package/dist/application/paths-service.js.map +1 -1
  23. package/dist/application/plan-exec-decision-service.js +57 -4
  24. package/dist/application/plan-exec-decision-service.js.map +1 -1
  25. package/dist/application/reseal-service.js +300 -0
  26. package/dist/application/reseal-service.js.map +1 -0
  27. package/dist/application/workline-index-service.js +64 -6
  28. package/dist/application/workline-index-service.js.map +1 -1
  29. package/dist/cli/commands/checkpoint-write.js +24 -22
  30. package/dist/cli/commands/checkpoint-write.js.map +1 -1
  31. package/dist/cli/commands/index.js +5 -0
  32. package/dist/cli/commands/index.js.map +1 -1
  33. package/dist/cli/commands/reseal.js +140 -0
  34. package/dist/cli/commands/reseal.js.map +1 -0
  35. package/dist/cli/commands/status.js +5 -1
  36. package/dist/cli/commands/status.js.map +1 -1
  37. package/dist/cli/help-groups.js +6 -0
  38. package/dist/cli/help-groups.js.map +1 -1
  39. package/dist/domain/effective-contract.js +10 -2
  40. package/dist/domain/effective-contract.js.map +1 -1
  41. package/dist/domain/flow/answer.js +4 -0
  42. package/dist/domain/flow/answer.js.map +1 -1
  43. package/dist/domain/flow/authority.js +99 -14
  44. package/dist/domain/flow/authority.js.map +1 -1
  45. package/dist/domain/flow/directive.js +2 -0
  46. package/dist/domain/flow/directive.js.map +1 -1
  47. package/dist/domain/flow/run-state.js +42 -0
  48. package/dist/domain/flow/run-state.js.map +1 -1
  49. package/dist/domain/lineage.js +38 -11
  50. package/dist/domain/lineage.js.map +1 -1
  51. package/package.json +1 -1
  52. package/skills/w/commands/plan-exec.md +1 -1
  53. package/skills/w/commands/spec-new.md +6 -5
  54. package/skills/w/context/MANIFEST.json +1 -1
  55. package/skills/w/harness/HARNESS.md +1 -1
  56. package/skills/w/hooks/README.md +13 -9
  57. package/skills/w/hooks/hooks.template.json +2 -2
  58. package/skills/w/loops/CHASSIS.md +1 -1
  59. package/skills/w/loops/plan-exec-loop/LOOP.md +7 -5
  60. package/skills/w/loops/plan-new-loop/LOOP.md +46 -41
  61. package/skills/w/loops/plan-refine-loop/LOOP.md +4 -4
  62. package/skills/w/loops/quick-loop/LOOP.md +12 -13
  63. package/skills/w/loops/spec-refine-loop/LOOP.md +7 -3
  64. package/skills/w/modules/COMPACTION.md +1 -1
  65. package/skills/w/modules/PLAN-INPUT.md +3 -3
  66. package/skills/w/modules/PROMPT-CONTINUITY.md +1 -1
@@ -13,7 +13,7 @@ import { CONTEXTUAL_LIMIT, WORKSPACE_UNIT, } from "./files-touched.js";
13
13
  * A digest is the one thing filling the template in cannot reproduce: it holds
14
14
  * only while the file is still exactly what the CLI wrote.
15
15
  */
16
- const SEAL_RE = /<!-- written by agent-workflow\.checkpoint at [^\n]* · template sha256=([0-9a-f]{64}) -->\n?$/;
16
+ const SEAL_RE = /<!-- written by agent-workflow\.checkpoint at ([^\n]*?) · template sha256=([0-9a-f]{64}) -->\n?$/;
17
17
  export function formatCheckpointMd(state) {
18
18
  const lines = [];
19
19
  appendHeader(lines, state);
@@ -24,11 +24,12 @@ export function formatCheckpointMd(state) {
24
24
  // Body first, seal second: the seal states a fact ABOUT the body, so it can
25
25
  // never be part of what it measures.
26
26
  const body = `${lines.join("\n")}\n\n`;
27
- return `${body}<!-- written by agent-workflow.checkpoint at ${state.timestamp} · template sha256=${digestOf(body)} -->\n`;
27
+ return `${body}${sealFor(state.timestamp, body)}`;
28
28
  }
29
29
  /**
30
- * True only when `text` is byte for byte what `formatCheckpointMd` produced —
31
- * an untouched template that can be regenerated without losing anything.
30
+ * True only when `text` is byte for byte what the CLI itself wrote — its own
31
+ * template, plus whatever the CLI later folded into the sealed body (see
32
+ * {@link appendSealedBlock}) — so regenerating it loses nothing of anybody's.
32
33
  *
33
34
  * An UNSEALED file (written before this seal existed) is not pristine either.
34
35
  * The asymmetry is deliberate: keeping a stale template by mistake costs one
@@ -37,11 +38,90 @@ export function formatCheckpointMd(state) {
37
38
  */
38
39
  export function isPristineCheckpoint(text) {
39
40
  const match = text.match(SEAL_RE);
40
- const sealed = match?.[1];
41
+ const sealed = match?.[2];
41
42
  if (sealed === undefined || match?.index === undefined)
42
43
  return false;
43
44
  return digestOf(text.slice(0, match.index)) === sealed;
44
45
  }
46
+ /**
47
+ * Add `block` to a checkpoint without lying about who wrote the file.
48
+ *
49
+ * A checkpoint still byte for byte the CLI's own sealed output gets the block
50
+ * INSIDE the body and a seal recomputed over it, so the file keeps being
51
+ * demonstrably the CLI's and {@link isPristineCheckpoint} keeps answering the
52
+ * question it exists to answer: "is there anybody's prose in here?". Appending
53
+ * PAST the seal instead was what turned the CLI's own template into "content to
54
+ * preserve" — from the first adopted refuge on, every later lifecycle run
55
+ * preserved a file nobody had written, so the checkpoint froze for the rest of
56
+ * the session's life and the only way forward, `--force`, dropped the adopted
57
+ * text along with the template.
58
+ *
59
+ * Anything else — filled in, hand-edited, written before the seal existed — is
60
+ * appended to plainly. Re-sealing there would claim the CLI wrote somebody's
61
+ * prose and hand the next run permission to regenerate over it.
62
+ *
63
+ * `block` is body-shaped: it starts with its own heading and ends with a blank
64
+ * line, which is the invariant the sealed body keeps.
65
+ */
66
+ export function appendSealedBlock(text, block) {
67
+ const match = text.match(SEAL_RE);
68
+ const timestamp = match?.[1];
69
+ const sealed = match?.[2];
70
+ if (timestamp === undefined || sealed === undefined || match?.index === undefined) {
71
+ return plainAppend(text, block);
72
+ }
73
+ const body = text.slice(0, match.index);
74
+ if (digestOf(body) !== sealed)
75
+ return plainAppend(text, block);
76
+ const grown = `${body}${block}`;
77
+ return `${grown}${sealFor(timestamp, grown)}`;
78
+ }
79
+ /**
80
+ * The `heading` sections a checkpoint already carries, each as a `block` that
81
+ * {@link appendSealedBlock} accepts back.
82
+ *
83
+ * Regeneration replaces the template, and a section the CLI folded in (an
84
+ * adopted refuge) is not part of any template: without carrying it across, a
85
+ * regeneration — the ordinary one over a pristine file, or a `--force` — would
86
+ * drop state that was parked precisely so it would NOT be lost, and the refuge
87
+ * file it came from is already gone from disk.
88
+ */
89
+ export function blocksUnder(text, heading) {
90
+ const blocks = [];
91
+ let current = null;
92
+ for (const line of text.replace(SEAL_RE, "").split("\n")) {
93
+ if (line === heading || line.startsWith(`${heading} `)) {
94
+ if (current !== null)
95
+ blocks.push(closeBlock(current));
96
+ current = [line];
97
+ continue;
98
+ }
99
+ if (current === null)
100
+ continue;
101
+ // Any other heading ends it: a block owns its own lines and nothing else's.
102
+ if (line.startsWith("#")) {
103
+ blocks.push(closeBlock(current));
104
+ current = null;
105
+ continue;
106
+ }
107
+ current.push(line);
108
+ }
109
+ if (current !== null)
110
+ blocks.push(closeBlock(current));
111
+ return blocks;
112
+ }
113
+ function closeBlock(lines) {
114
+ return `${lines.join("\n").trimEnd()}\n\n`;
115
+ }
116
+ function plainAppend(text, block) {
117
+ const tail = block.replace(/\n+$/, "\n");
118
+ if (text.length === 0)
119
+ return tail;
120
+ return `${text.endsWith("\n") ? text : `${text}\n`}\n${tail}`;
121
+ }
122
+ function sealFor(timestamp, body) {
123
+ return `<!-- written by agent-workflow.checkpoint at ${timestamp} · template sha256=${digestOf(body)} -->\n`;
124
+ }
45
125
  function digestOf(body) {
46
126
  return createHash("sha256").update(body, "utf8").digest("hex");
47
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/application/checkpoint/markdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/application/checkpoint/markdown.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { join } from "node:path";
2
2
  import { compareCorrelatives } from "../domain/correlative.js";
3
- import { resolveLifecycleTarget, unresolvedDetail, } from "./lifecycle-target.js";
3
+ import { findRefugeForContext } from "./checkpoint-write-service.js";
4
+ import { resolveLifecycleTarget } from "./lifecycle-target.js";
4
5
  import { parseMdSection, parseMdSectionBilingual, parseMdValue } from "./markdown.js";
5
6
  import { listExistingArtifacts } from "./session-artifacts.js";
6
7
  import { CLOSED_MARKER, listSessionFolders, resolveSessionTarget, sessionNumericCode, sessionReadRequest, } from "./session-resolver.js";
@@ -235,7 +236,7 @@ export async function runResumeSummary(fs, paths, options = {}) {
235
236
  }, "read-only");
236
237
  const summary = target.outcome === "resolved"
237
238
  ? await summarizeResolved(fs, activeFolders, target.session)
238
- : degradedSummary(activeFolders, target);
239
+ : await degradedSummary(fs, paths, activeFolders, target, options.contextId);
239
240
  if (options.includeRecentClosed === true) {
240
241
  summary.recent_closed_with_artifacts = await findRecentClosedWithArtifacts(fs, paths, activeFolders, options.recentDays ?? DEFAULT_RECENT_DAYS);
241
242
  }
@@ -272,8 +273,7 @@ async function summarizeResolved(fs, activeFolders, session) {
272
273
  }
273
274
  return summary;
274
275
  }
275
- function degradedSummary(activeFolders, target) {
276
- const detail = unresolvedDetail(target);
276
+ async function degradedSummary(fs, paths, activeFolders, target, contextId) {
277
277
  return {
278
278
  active_sessions: activeFolders,
279
279
  primary_session: null,
@@ -285,8 +285,9 @@ function degradedSummary(activeFolders, target) {
285
285
  // resolving the target IS the pending action.
286
286
  needs_ai_action: activeFolders.length > 0,
287
287
  continuity: "degraded",
288
- candidates: detail.candidates,
289
- action: detail.action,
288
+ candidates: target.candidates,
289
+ action: target.action,
290
+ refuge: await findRefugeForContext(fs, paths, contextId),
290
291
  };
291
292
  }
292
293
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint-service.js","sourceRoot":"","sources":["../../src/application/checkpoint-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkpoint-service.js","sourceRoot":"","sources":["../../src/application/checkpoint-service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,14 @@
1
1
  import { join } from "node:path";
2
2
  import { findActiveSessions } from "./checkpoint-service.js";
3
3
  import { totalInScope } from "./checkpoint/files-touched.js";
4
- import { formatCheckpointMd, isPristineCheckpoint } from "./checkpoint/markdown.js";
4
+ import { appendSealedBlock, blocksUnder, formatCheckpointMd, isPristineCheckpoint, } from "./checkpoint/markdown.js";
5
5
  import { extractSessionState } from "./checkpoint/state-reader.js";
6
- import { resolveLifecycleTarget, unresolvedDetail, } from "./lifecycle-target.js";
6
+ import { localMinuteIso } from "./dates.js";
7
+ import { resolveLifecycleTarget, } from "./lifecycle-target.js";
8
+ import { parseMdValue } from "./markdown.js";
7
9
  import { resolveWorkspaceRoot } from "./paths-service.js";
10
+ import { relpath } from "./paths.js";
11
+ import { hashContextId } from "./session-binding-service.js";
8
12
  import { writeSessionNarrative } from "./session-narrative.js";
9
13
  // This module deliberately owns NO placeholder marker of its own. `_[AI:` used
10
14
  // to be declared here as well as in `checkpoint-service.ts`, with incompatible
@@ -27,18 +31,26 @@ export async function runCheckpointWrite(fs, env, git, paths, options = {}) {
27
31
  // the association to land on the same one.
28
32
  const target = await resolveLifecycleTarget(fs, paths, options, "bind");
29
33
  if (target.outcome !== "resolved")
30
- return unresolved(fs, paths, target);
34
+ return unresolved(fs, paths, target, options);
31
35
  const session = target.session;
32
36
  const cpPath = join(session.path, "CHECKPOINT.md");
33
37
  if (await hasContentToPreserve(fs, cpPath, options.force === true)) {
38
+ // Adoption runs even here: preservation protects written prose from being
39
+ // REGENERATED, and folding a refuge in only appends to it.
40
+ const adopted = await adoptRefuge(fs, paths, session, adoptionScope(options));
34
41
  return {
35
42
  session: session.folder,
36
43
  checkpoint_path: cpPath,
37
44
  skipped: true,
38
45
  preserved: true,
39
46
  reason: PRESERVED_REASON,
47
+ ...adoptedField(adopted.adopted),
40
48
  };
41
49
  }
50
+ // Read BEFORE the write that replaces it: an adopted refuge is not part of any
51
+ // template, so regenerating without carrying it across would drop the state
52
+ // the refuge existed to save (its file on disk is long gone).
53
+ const carried = await carriedAdoptions(fs, cpPath);
42
54
  // The workspace root rather than the raw cwd. Today the two coincide by
43
55
  // construction — session resolution already refuses to run from a
44
56
  // subdirectory, so nothing reaches here with a deeper cwd — and what actually
@@ -48,13 +60,16 @@ export async function runCheckpointWrite(fs, env, git, paths, options = {}) {
48
60
  // widen to the parent repository along with it.
49
61
  const workspaceRoot = await resolveWorkspaceRoot(fs, env, paths);
50
62
  const state = await extractSessionState(fs, git, workspaceRoot, session.path);
51
- const md = formatCheckpointMd(state);
63
+ const md = withCarried(formatCheckpointMd(state), carried);
52
64
  await fs.mkdirp(session.path);
53
65
  await fs.writeText(cpPath, md);
54
66
  // The CHECKPOINT is where progress lives, so writing one is exactly when the
55
67
  // session's entry point stops being current. Refreshed here and never on a
56
68
  // read, which is what keeps a `status` or a `resume` from rewriting history.
57
69
  await writeSessionNarrative(fs, paths, { folder: session.folder, path: session.path });
70
+ // Last, never first: a refuge is folded into the checkpoint this run just
71
+ // produced, so the file it appends to is already there.
72
+ const adopted = await adoptRefuge(fs, paths, session, adoptionScope(options));
58
73
  return {
59
74
  session: session.folder,
60
75
  checkpoint_path: cpPath,
@@ -63,33 +78,40 @@ export async function runCheckpointWrite(fs, env, git, paths, options = {}) {
63
78
  tasks_open: state.tasks.open,
64
79
  tasks_closed: state.tasks.closed,
65
80
  files_touched_count: totalInScope(state.files_touched),
81
+ ...adoptedField(adopted.adopted),
66
82
  };
67
83
  }
68
84
  /**
69
85
  * SessionEnd. It used to iterate EVERY active session, so closing one host
70
86
  * conversation wrote checkpoints over lines belonging to others. It now
71
- * checkpoints the resolved target and nothing else; with no sufficient
72
- * identity it writes nothing at all. The host is exiting, so there is nobody
73
- * left to answer a selection prompt: this surface always degrades, never blocks.
87
+ * checkpoints the resolved target and nothing else; with no sufficient identity
88
+ * it writes no session line at all and parks a refuge instead.
74
89
  */
75
90
  export async function runAutoCompactOnClose(fs, env, git, paths, options = {}) {
76
91
  // Does NOT bind: the host is exiting, so there is no later turn the
77
92
  // association could serve, and establishing one is a locked write that fails
78
93
  // the whole resolution when it cannot be taken — which would cost the
79
94
  // checkpoint this surface exists to save.
80
- const target = await resolveLifecycleTarget(fs, paths, { ...options, canPauseCompaction: false }, "read-only");
95
+ const target = await resolveLifecycleTarget(fs, paths, options, "read-only");
81
96
  if (target.outcome !== "resolved") {
82
- const detail = unresolvedDetail(target);
83
97
  return {
84
98
  checkpoints_written: [],
85
99
  continuity: "degraded",
86
100
  primary_session: null,
87
- candidates: detail.candidates,
88
- action: detail.action,
101
+ candidates: target.candidates,
102
+ action: target.action,
103
+ refuge_path: await parkRefuge(fs, paths, target, options.contextId),
89
104
  };
90
105
  }
91
106
  const workspaceRoot = await resolveWorkspaceRoot(fs, env, paths);
92
107
  const entry = await writeCheckpointForTarget(fs, git, workspaceRoot, target.session);
108
+ // Only over a checkpoint that exists: `writeCheckpointForTarget` reports its
109
+ // own failure instead of throwing, and appending a refuge to a file that was
110
+ // never written would file the parked state under a session line nobody wrote.
111
+ if (entry.error === undefined) {
112
+ const adopted = await adoptRefuge(fs, paths, target.session, adoptionScope(options));
113
+ return { checkpoints_written: [{ ...entry, ...adoptedField(adopted.adopted) }] };
114
+ }
93
115
  return { checkpoints_written: [entry] };
94
116
  }
95
117
  async function writeCheckpointForTarget(fs, git, workspaceRoot, session) {
@@ -106,8 +128,9 @@ async function writeCheckpointForTarget(fs, git, workspaceRoot, session) {
106
128
  };
107
129
  }
108
130
  try {
131
+ const carried = await carriedAdoptions(fs, cpPath);
109
132
  const state = await extractSessionState(fs, git, workspaceRoot, session.path);
110
- const md = formatCheckpointMd(state);
133
+ const md = withCarried(formatCheckpointMd(state), carried);
111
134
  await fs.mkdirp(session.path);
112
135
  await fs.writeText(cpPath, md);
113
136
  return {
@@ -138,10 +161,23 @@ async function hasContentToPreserve(fs, cpPath, force) {
138
161
  return false;
139
162
  return !isPristineCheckpoint(await fs.readText(cpPath));
140
163
  }
141
- async function unresolved(fs, paths, target) {
142
- if (target.outcome === "blocked") {
143
- return { blocked: true, selection_required: true, sessionError: target.error };
144
- }
164
+ /**
165
+ * The refuge sections an existing CHECKPOINT already carries.
166
+ *
167
+ * Read before every regeneration and written back after it (see
168
+ * {@link withCarried}). "Preserve" protects somebody's prose; carrying protects
169
+ * the CLI's own folded-in state, which preservation deliberately does NOT cover
170
+ * because a checkpoint the CLI wrote must stay regenerable.
171
+ */
172
+ async function carriedAdoptions(fs, cpPath) {
173
+ if (!(await fs.exists(cpPath)))
174
+ return [];
175
+ return blocksUnder(await fs.readText(cpPath), ADOPTED_HEADING);
176
+ }
177
+ function withCarried(md, carried) {
178
+ return carried.reduce((text, block) => appendSealedBlock(text, block), md);
179
+ }
180
+ async function unresolved(fs, paths, target, options) {
145
181
  const actives = await findActiveSessions(fs, paths);
146
182
  return {
147
183
  skipped: true,
@@ -151,6 +187,224 @@ async function unresolved(fs, paths, target) {
151
187
  active_sessions: actives.map((a) => a.folder),
152
188
  candidates: target.candidates,
153
189
  action: target.action,
190
+ refuge_path: await parkRefuge(fs, paths, target, options.contextId),
154
191
  };
155
192
  }
193
+ // ── the refuge: state a lifecycle surface saves when no session resolves ─────
194
+ //
195
+ // This exists because the PreCompact hook stopped being allowed to block (see
196
+ // `resolveLifecycleTarget`). Losing the protective pause without replacing it
197
+ // would mean the compaction that follows an unresolved target takes the run's
198
+ // context away and leaves nothing behind. So the reason, the candidates and the
199
+ // way out are written to a file OUTSIDE any session — nothing has to be guessed
200
+ // to place it — and the first invocation that does resolve the session folds it
201
+ // into that session's CHECKPOINT.
202
+ /** `- Fecha:` / `- Conversación:` — the two lines adoption reads back. */
203
+ const REFUGE_DATE_KEY = "Fecha";
204
+ const REFUGE_CONVERSATION_KEY = "Conversación";
205
+ /** The heading an adopted refuge lands under, inside the CHECKPOINT's sealed body. */
206
+ const ADOPTED_HEADING = "## Refugio adoptado";
207
+ /**
208
+ * What `- Conversación:` says — and what the file is called — when the host gave
209
+ * no conversation id.
210
+ *
211
+ * Such a refuge cannot be matched to anybody, so only an explicit `--code`
212
+ * adopts it: a person naming the session IS the missing identity. The name
213
+ * carries no instant on purpose: stamping it would make every compaction of
214
+ * every id-less invocation pile up another file in a directory nothing sweeps,
215
+ * where the digest case leaves exactly one. One file, latest reason, same rule.
216
+ */
217
+ const REFUGE_NO_CONVERSATION = "desconocida";
218
+ /**
219
+ * The conversation is named by the SHA-256 of its id, never by the id.
220
+ *
221
+ * Same rule as the bindings registry (`hashContextId`): the host's opaque
222
+ * conversation id never reaches disk in the clear. It also makes the file name
223
+ * safe by construction — 64 hex characters cannot escape a directory — and
224
+ * stable, so a conversation that compacts five times leaves ONE refuge with its
225
+ * latest reason instead of five.
226
+ */
227
+ const REFUGE_DIGEST_PREFIX = "sha256:";
228
+ /** Where the parked state goes, and its workspace-relative path for the caller. */
229
+ export async function writeRefugeCheckpoint(fs, paths, input) {
230
+ const now = input.now ?? new Date();
231
+ const digest = input.contextId !== undefined ? hashContextId(input.contextId) : null;
232
+ const dir = paths.cwdSessionsRefugeDir();
233
+ const path = join(dir, `${digest ?? REFUGE_NO_CONVERSATION}.md`);
234
+ await fs.mkdirp(dir);
235
+ await fs.writeText(path, refugeBody(input, now, digest));
236
+ return relpath(path, paths.workspaceDir());
237
+ }
238
+ /**
239
+ * A refuge, but ONLY when somebody could adopt it later.
240
+ *
241
+ * With no candidate at all — a workspace between runs, which is the ordinary
242
+ * state — the parked file would name no session anybody could resolve it to,
243
+ * and every compaction of every session-less conversation would leave one
244
+ * behind. The notice on stderr is the whole answer there.
245
+ */
246
+ async function parkRefuge(fs, paths, target, contextId) {
247
+ if (target.candidates.length === 0)
248
+ return null;
249
+ return writeRefugeCheckpoint(fs, paths, {
250
+ reason: target.reason,
251
+ action: target.action,
252
+ candidates: target.candidates,
253
+ ...(contextId !== undefined ? { contextId } : {}),
254
+ });
255
+ }
256
+ /**
257
+ * Fold every refuge that belongs to this conversation into the session's
258
+ * CHECKPOINT, and remove it.
259
+ *
260
+ * Adding a section is what makes this safe next to the preservation guard: that
261
+ * guard refuses to REGENERATE a written checkpoint, and folding text in takes
262
+ * nothing away from one. It goes in through {@link appendSealedBlock} rather
263
+ * than by appending past the seal, so a checkpoint that was still the CLI's own
264
+ * output stays that way — otherwise the first adoption would freeze the file
265
+ * forever behind "there is content to preserve". Removing the refuge afterwards
266
+ * is not tidying: it is what keeps the next invocation from adopting the same
267
+ * text again — but ONLY once the block is demonstrably in the file, because two
268
+ * concurrent hooks read the same `existing` and the loser's append is not in
269
+ * what finally lands. Removing on the strength of its own write would delete the
270
+ * parked state from both places it existed in. A refuge left on disk costs one
271
+ * more adoption attempt; a refuge deleted for nothing is irrecoverable.
272
+ */
273
+ export async function adoptRefuge(fs, paths, session, scope = {}) {
274
+ const wanted = digestOfContext(scope.contextId);
275
+ const cpPath = join(session.path, "CHECKPOINT.md");
276
+ const adopted = [];
277
+ // Nothing that happens in here may throw out of a lifecycle surface: a
278
+ // non-zero exit is how a host HOLDS its compaction, and holding it was the
279
+ // irrecoverable trap these surfaces stopped being allowed to set. A failure
280
+ // reports "nothing adopted" and leaves the refuge for the next invocation.
281
+ try {
282
+ for (const refuge of await listRefugeCheckpoints(fs, paths)) {
283
+ if (!adoptable(refuge, wanted, scope.explicitCode === true))
284
+ continue;
285
+ const block = adoptedBlock(refuge);
286
+ // The block as it reads BACK: the plain-append path collapses the trailing
287
+ // blank line, so only the text up to its last character is what both
288
+ // append paths leave verbatim in the file.
289
+ const folded = block.trimEnd();
290
+ const existing = (await fs.exists(cpPath)) ? await fs.readText(cpPath) : "";
291
+ // Already in there — an earlier run adopted it and could not remove the
292
+ // file, or the run this one raced got there first. The state is safe, so
293
+ // the refuge is spent and appending again would only duplicate it.
294
+ if (existing.includes(folded)) {
295
+ await discardRefuge(fs, refuge.path);
296
+ continue;
297
+ }
298
+ await fs.mkdirp(session.path);
299
+ await fs.writeText(cpPath, appendSealedBlock(existing, block));
300
+ if (!(await fs.readText(cpPath)).includes(folded))
301
+ continue;
302
+ await discardRefuge(fs, refuge.path);
303
+ adopted.push(refuge.relative);
304
+ }
305
+ }
306
+ catch {
307
+ // Deliberately silent: the caller's contract is the checkpoint it already
308
+ // wrote, and `refuge_adopted` is simply absent.
309
+ }
310
+ return { adopted };
311
+ }
312
+ /**
313
+ * Drop a refuge whose text is in the CHECKPOINT.
314
+ *
315
+ * Cleanup, not the adoption itself: the state is already saved, so a removal
316
+ * that fails must not cost the run. The next invocation finds the file again,
317
+ * recognises its own block and retries the removal.
318
+ */
319
+ async function discardRefuge(fs, path) {
320
+ try {
321
+ await fs.remove(path);
322
+ }
323
+ catch {
324
+ // Left on disk on purpose. It is re-read, not re-adopted.
325
+ }
326
+ }
327
+ /**
328
+ * The refuge waiting for this conversation, for a surface that only reports.
329
+ *
330
+ * Symmetric with {@link parkRefuge} on purpose: an invocation with no
331
+ * conversation id parks an ANONYMOUS refuge, so that is exactly the one it must
332
+ * be told about. Cutting off at "no id, no answer" made the one invocation
333
+ * shape that can create such a refuge the only one unable to report it — and in
334
+ * the single channel the model reads, `refuge: null` does not say "I don't
335
+ * know", it says there is none.
336
+ */
337
+ export async function findRefugeForContext(fs, paths, contextId) {
338
+ const wanted = digestOfContext(contextId);
339
+ const refuges = await listRefugeCheckpoints(fs, paths);
340
+ const found = refuges.find((refuge) => refuge.conversation === wanted);
341
+ return found !== undefined ? { path: found.relative, date: found.date } : null;
342
+ }
343
+ export async function listRefugeCheckpoints(fs, paths) {
344
+ const dir = paths.cwdSessionsRefugeDir();
345
+ if (!(await fs.exists(dir)))
346
+ return [];
347
+ const refuges = [];
348
+ for (const entry of await fs.list(dir)) {
349
+ if (entry.type !== "file" || !entry.name.endsWith(".md"))
350
+ continue;
351
+ const body = await fs.readText(entry.path);
352
+ const conversation = parseMdValue(body, REFUGE_CONVERSATION_KEY);
353
+ refuges.push({
354
+ path: entry.path,
355
+ relative: relpath(entry.path, paths.workspaceDir()),
356
+ date: parseMdValue(body, REFUGE_DATE_KEY) ?? "sin fecha",
357
+ conversation: conversation?.startsWith(REFUGE_DIGEST_PREFIX) ? conversation : null,
358
+ body,
359
+ });
360
+ }
361
+ // Deterministic order, so an adoption of several refuges reads the same way twice.
362
+ return refuges.sort((a, b) => a.path.localeCompare(b.path));
363
+ }
364
+ /** Whose refuge this is: the conversation's own, or anybody's under an explicit `--code`. */
365
+ function adoptable(refuge, wanted, explicitCode) {
366
+ if (refuge.conversation === null)
367
+ return explicitCode;
368
+ return refuge.conversation === wanted;
369
+ }
370
+ function digestOfContext(contextId) {
371
+ return contextId !== undefined && contextId.trim().length > 0
372
+ ? `${REFUGE_DIGEST_PREFIX}${hashContextId(contextId)}`
373
+ : null;
374
+ }
375
+ function adoptionScope(options) {
376
+ return {
377
+ ...(options.contextId !== undefined ? { contextId: options.contextId } : {}),
378
+ explicitCode: (options.code?.trim().length ?? 0) > 0,
379
+ };
380
+ }
381
+ function adoptedBlock(refuge) {
382
+ // The refuge's own H1 would land as a second title inside the CHECKPOINT, and
383
+ // the heading below already says where the text came from. Everything else
384
+ // goes in verbatim: an adoption that summarised would be an adoption that loses.
385
+ const body = refuge.body.replace(/^#[^\n]*\n/, "").trim();
386
+ return `${ADOPTED_HEADING} (${refuge.date})\n\n${body}\n\n`;
387
+ }
388
+ function refugeBody(input, now, digest) {
389
+ const candidates = input.candidates.map((c) => `${c.folder} (${c.state})`).join(" · ");
390
+ return `${[
391
+ "# CHECKPOINT de refugio",
392
+ "",
393
+ "> Lo escribió un hook de ciclo de vida (PreCompact o SessionEnd): la",
394
+ "> compactación —o el cierre— siguió adelante, pero no se pudo resolver a qué",
395
+ "> sesión pertenece esta conversación, así que su estado queda acá en vez de",
396
+ "> perderse. Se adopta en el CHECKPOINT.md de la sesión en cuanto alguien la",
397
+ "> resuelva (`aw checkpoint-write --code <NNN>`).",
398
+ "",
399
+ `- ${REFUGE_DATE_KEY}: ${localMinuteIso(now)}`,
400
+ `- ${REFUGE_CONVERSATION_KEY}: ${digest !== null ? `${REFUGE_DIGEST_PREFIX}${digest}` : REFUGE_NO_CONVERSATION}`,
401
+ `- Motivo: ${input.reason}`,
402
+ `- Candidatas: ${candidates.length > 0 ? candidates : "ninguna"}`,
403
+ `- Acción: ${input.action}`,
404
+ ].join("\n")}\n`;
405
+ }
406
+ /** Present only when something was actually adopted — an empty list says nothing. */
407
+ function adoptedField(adopted) {
408
+ return adopted.length > 0 ? { refuge_adopted: adopted } : {};
409
+ }
156
410
  //# sourceMappingURL=checkpoint-write-service.js.map