@tacuchi/agent-workflow-cli 24.0.0 → 25.0.1
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/adapters/postgres-readonly-tools.js +27 -12
- package/dist/adapters/postgres-readonly-tools.js.map +1 -1
- package/dist/application/checkpoint/markdown.js +85 -5
- package/dist/application/checkpoint/markdown.js.map +1 -1
- package/dist/application/checkpoint-service.js +7 -6
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/checkpoint-write-service.js +270 -16
- package/dist/application/checkpoint-write-service.js.map +1 -1
- package/dist/application/database-tool-catalog.js +2 -2
- package/dist/application/database-tool-catalog.js.map +1 -1
- package/dist/application/flow/advance.js +60 -10
- package/dist/application/flow/advance.js.map +1 -1
- package/dist/application/flow/internal-actions.js +1 -1
- package/dist/application/flow/internal-actions.js.map +1 -1
- package/dist/application/flow/submit.js +256 -9
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/lifecycle-target.js +16 -19
- package/dist/application/lifecycle-target.js.map +1 -1
- package/dist/application/markdown.js +6 -2
- package/dist/application/markdown.js.map +1 -1
- package/dist/application/parsers/spec-functional.js +220 -0
- package/dist/application/parsers/spec-functional.js.map +1 -0
- package/dist/application/parsers/spec-relation.js +142 -5
- package/dist/application/parsers/spec-relation.js.map +1 -1
- package/dist/application/paths-service.js +13 -0
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/plan-exec-decision-service.js +57 -4
- package/dist/application/plan-exec-decision-service.js.map +1 -1
- package/dist/application/reseal-service.js +300 -0
- package/dist/application/reseal-service.js.map +1 -0
- package/dist/application/workline-index-service.js +64 -6
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/cli/commands/checkpoint-write.js +24 -22
- package/dist/cli/commands/checkpoint-write.js.map +1 -1
- package/dist/cli/commands/index.js +5 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/mcp.js +12 -13
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/reseal.js +140 -0
- package/dist/cli/commands/reseal.js.map +1 -0
- package/dist/cli/commands/status.js +5 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/help-groups.js +6 -0
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/domain/database-tools.js +6 -2
- package/dist/domain/database-tools.js.map +1 -1
- package/dist/domain/effective-contract.js +10 -2
- package/dist/domain/effective-contract.js.map +1 -1
- package/dist/domain/flow/answer.js +4 -0
- package/dist/domain/flow/answer.js.map +1 -1
- package/dist/domain/flow/authority.js +99 -14
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/flow/directive.js +2 -0
- package/dist/domain/flow/directive.js.map +1 -1
- package/dist/domain/flow/run-state.js +42 -0
- package/dist/domain/flow/run-state.js.map +1 -1
- package/dist/domain/lineage.js +38 -11
- package/dist/domain/lineage.js.map +1 -1
- package/dist/ports/postgres-tools.js.map +1 -1
- package/package.json +1 -1
- package/skills/w/commands/plan-exec.md +1 -1
- package/skills/w/commands/spec-new.md +6 -5
- package/skills/w/context/MANIFEST.json +1 -1
- package/skills/w/harness/HARNESS.md +1 -1
- package/skills/w/hooks/README.md +13 -9
- package/skills/w/hooks/hooks.template.json +2 -2
- package/skills/w/loops/CHASSIS.md +1 -1
- package/skills/w/loops/plan-exec-loop/LOOP.md +7 -5
- package/skills/w/loops/plan-new-loop/LOOP.md +46 -41
- package/skills/w/loops/plan-refine-loop/LOOP.md +4 -4
- package/skills/w/loops/quick-loop/LOOP.md +12 -13
- package/skills/w/loops/spec-refine-loop/LOOP.md +7 -3
- package/skills/w/modules/COMPACTION.md +1 -1
- package/skills/w/modules/PLAN-INPUT.md +3 -3
- package/skills/w/modules/PROMPT-CONTINUITY.md +1 -1
|
@@ -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 {
|
|
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
|
-
*
|
|
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,
|
|
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:
|
|
88
|
-
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-write-service.js","sourceRoot":"","sources":["../../src/application/checkpoint-write-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAGL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAqB,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,wEAAwE;AACxE,6EAA6E;AAC7E,+BAA+B;AAE/B,iFAAiF;AACjF,MAAM,gBAAgB,GACpB,qFAAqF,CAAC;AA+CxF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAkB,EAClB,GAAY,EACZ,GAAY,EACZ,KAAmB,EACnB,UAAkC,EAAE;IAEpC,6EAA6E;IAC7E,6EAA6E;IAC7E,2CAA2C;IAC3C,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAEnD,IAAI,MAAM,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,gBAAgB;SACzB,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,kEAAkE;IAClE,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/B,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAEvF,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,eAAe,EAAE,MAAM;QACvB,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;QACvD,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;QAC5B,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;QAChC,mBAAmB,EAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC;KACvD,CAAC;AACJ,CAAC;AAmBD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAkB,EAClB,GAAY,EACZ,GAAY,EACZ,KAAmB,EACnB,UAA4B,EAAE;IAE9B,oEAAoE;IACpE,6EAA6E;IAC7E,sEAAsE;IACtE,0CAA0C;IAC1C,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,EAAE,EACF,KAAK,EACL,EAAE,GAAG,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,EACzC,WAAW,CACZ,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO;YACL,mBAAmB,EAAE,EAAE;YACvB,UAAU,EAAE,UAAU;YACtB,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACrF,OAAO,EAAE,mBAAmB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,EAAkB,EAClB,GAAY,EACZ,aAAqB,EACrB,OAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACnD,4EAA4E;IAC5E,qEAAqE;IACrE,IAAI,MAAM,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,gBAAgB;SACzB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9E,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,eAAe,EAAE,MAAM;YACvB,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,oBAAoB,CACjC,EAAkB,EAClB,MAAc,EACd,KAAc;IAEd,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,EAAkB,EAClB,KAAmB,EACnB,MAAqE;IAErE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACjF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,UAAU;QACtB,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"checkpoint-write-service.js","sourceRoot":"","sources":["../../src/application/checkpoint-write-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,7 +86,7 @@ export class DatabaseToolCatalog {
|
|
|
86
86
|
},
|
|
87
87
|
],
|
|
88
88
|
source_id: "default",
|
|
89
|
-
}));
|
|
89
|
+
}, result.warnings));
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
92
|
async searchObjects(call) {
|
|
@@ -109,7 +109,7 @@ export class DatabaseToolCatalog {
|
|
|
109
109
|
count: rows.length,
|
|
110
110
|
results: rows,
|
|
111
111
|
truncated: result.truncated || result.rows.length > call.input.limit,
|
|
112
|
-
}));
|
|
112
|
+
}, result.warnings));
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
async runDatabaseOperation(operation) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-tool-catalog.js","sourceRoot":"","sources":["../../src/application/database-tool-catalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"database-tool-catalog.js","sourceRoot":"","sources":["../../src/application/database-tool-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* registry — not this file — is where a new transition is added.
|
|
26
26
|
*/
|
|
27
27
|
import { touchesTheWorld } from "../../domain/capability/effects.js";
|
|
28
|
-
import { DOCS_BOUNDARY, actionOf, alternativesOf, effectsOf, internalActionOf, proposalContractOf, publishApprovalOf, } from "../../domain/flow/authority.js";
|
|
28
|
+
import { DOCS_BOUNDARY, FIX_PREVIEW_TRANSITION, actionOf, alternativesOf, effectsOf, internalActionOf, proposalContractOf, publishApprovalOf, } from "../../domain/flow/authority.js";
|
|
29
29
|
import { authorizeTransition, effectApprovalDigest, } from "../../domain/flow/authorization.js";
|
|
30
30
|
import { PAUSE_LABEL, STOP_LABEL, buildFlowDirective, skippedStepOf, stepOf, } from "../../domain/flow/directive.js";
|
|
31
31
|
import { bindAction, docsBoundaryBreach, skipReason, } from "../../domain/flow/rules.js";
|
|
@@ -428,6 +428,19 @@ function describeAllowance(flow) {
|
|
|
428
428
|
const allowed = DOCS_BOUNDARY[flow];
|
|
429
429
|
return allowed.length === 0 ? "ninguna carpeta de docs" : allowed.join(" y ");
|
|
430
430
|
}
|
|
431
|
+
/**
|
|
432
|
+
* What a handed-off run tells whoever is in it — and it is TWO steps, not one.
|
|
433
|
+
*
|
|
434
|
+
* A handoff is terminal for the walk, so `chassis.finalize` — the suffix row that
|
|
435
|
+
* closes the session — is never emitted after it, and the destination command
|
|
436
|
+
* alone would leave a live session on the board with no pointer to where the work
|
|
437
|
+
* went. The close is named first because that is the order doctrine promises: the
|
|
438
|
+
* pointer goes into the session's BACKLOG, the close persists the CHECKPOINT, and
|
|
439
|
+
* only then does the work continue at the destination.
|
|
440
|
+
*/
|
|
441
|
+
function handoffAction(session, command) {
|
|
442
|
+
return `anotá el puntero de escalación en el BACKLOG de la sesión y cerrala con 'aw session-close --code ${session}' —que persiste el CHECKPOINT—; después seguí con ${command}`;
|
|
443
|
+
}
|
|
431
444
|
export function resolveBoundary(state, journey) {
|
|
432
445
|
const stopped = journey[state.applied.length] ?? null;
|
|
433
446
|
const pending = journey.slice(state.applied.length).map((decision) => decision.id);
|
|
@@ -459,7 +472,7 @@ export function resolveBoundary(state, journey) {
|
|
|
459
472
|
error: {
|
|
460
473
|
code: "FLOW_HANDOFF",
|
|
461
474
|
message: `la corrida entregó '${state.handoff.destination}' desde '${state.selected_choice?.label ?? "la desviación"}' y no puede continuar hacia '${stopped.id}'`,
|
|
462
|
-
action: state.handoff.command,
|
|
475
|
+
action: handoffAction(state.session, state.handoff.command),
|
|
463
476
|
},
|
|
464
477
|
};
|
|
465
478
|
}
|
|
@@ -490,7 +503,7 @@ export function resolveBoundary(state, journey) {
|
|
|
490
503
|
request: kind === "semantic" ? boundaryRequest(stopped, state) : null,
|
|
491
504
|
action: kind === "execution" ? emitted.action : null,
|
|
492
505
|
proposal: subject === null ? null : previewOfState(state),
|
|
493
|
-
choices: choicesFor(kind, stopped, authorization),
|
|
506
|
+
choices: choicesFor(kind, stopped, authorization, state),
|
|
494
507
|
pending,
|
|
495
508
|
seal: boundarySeal(state, stopped),
|
|
496
509
|
error: blocked,
|
|
@@ -620,6 +633,10 @@ export function directiveFor(state, resolved, appliedNow, overrides = {}) {
|
|
|
620
633
|
choices: resolved.choices,
|
|
621
634
|
proposal: resolved.proposal,
|
|
622
635
|
decisionPreview: state.decision_preparation?.kind === "prepared" ? state.decision_preparation.preview : null,
|
|
636
|
+
// Only where it is the subject: the quick gate that approves the declared
|
|
637
|
+
// fix. That is what lets `Compactar` come back to that boundary and show the
|
|
638
|
+
// very thing the person is being asked to approve.
|
|
639
|
+
fixPreview: resolved.stopped?.id === "quick.fix-preview-approval" ? (state.fix_preview ?? null) : null,
|
|
623
640
|
authorizations: resolved.authorization?.covered ?? [],
|
|
624
641
|
// The cause of a block travels with the boundary that declares it: a
|
|
625
642
|
// `blocked` directive without its error is refused at construction.
|
|
@@ -670,10 +687,16 @@ export function boundaryRequest(decision, state) {
|
|
|
670
687
|
const decisionDraft = decision.id === "plan-exec.deviation-recognition"
|
|
671
688
|
? " Si la desviación puede resolverse registrando una decisión, incluí en 'decisions.decision' su question y draft completos ahora: el CLI preparará y mostrará el preview sellado antes de que una persona elija registrarlo."
|
|
672
689
|
: "";
|
|
690
|
+
// La misma pista que el borrador de decisión, y por el mismo motivo: la forma
|
|
691
|
+
// exacta se dice ANTES para que el primer intento la traiga. Acá pesa el doble,
|
|
692
|
+
// porque un preview inválido es un rechazo evaluado y gasta uno de los tres.
|
|
693
|
+
const fixPreview = decision.id === FIX_PREVIEW_TRANSITION
|
|
694
|
+
? " Devolvé en 'decisions.preview' un objeto con 'files' (las rutas que vas a tocar, lista que puede ir VACÍA si el entregable es un análisis), 'intent' (qué arregla y por qué) y 'diff' (la forma esperada del diff). Proporcional a la tarea: una línea para algo trivial; enfoque, archivos y riesgos para algo complejo."
|
|
695
|
+
: "";
|
|
673
696
|
return buildSemanticRequest({
|
|
674
697
|
operation: `flow.${decision.id}`,
|
|
675
698
|
inputs: boundaryInputs(state, decision),
|
|
676
|
-
contract: `${decision.title}. Devolvé un único objeto JSON con el 'input_digest' de esta frontera. ${taxonomy}${authoring}${decisionDraft} El CLI valida la respuesta antes de aplicar ninguna transición: una respuesta ausente, inválida, ambigua, fuera de alcance o vencida no cambia el estado ni produce efectos.`,
|
|
699
|
+
contract: `${decision.title}. Devolvé un único objeto JSON con el 'input_digest' de esta frontera. ${taxonomy}${authoring}${decisionDraft}${fixPreview} El CLI valida la respuesta antes de aplicar ninguna transición: una respuesta ausente, inválida, ambigua, fuera de alcance o vencida no cambia el estado ni produce efectos.`,
|
|
677
700
|
inventory: { flow: state.flow, applied: state.applied, signals: vocabulary },
|
|
678
701
|
allowedDestinations: proposes === null ? [] : [...proposes.destinations],
|
|
679
702
|
limits: proposes === null
|
|
@@ -725,8 +748,14 @@ export function flowControlChoices(stopping) {
|
|
|
725
748
|
* enumerate — and the engine emits them verbatim, which is what makes the
|
|
726
749
|
* directed journey equivalent to the one it replaces instead of merely similar.
|
|
727
750
|
* Whatever the row says, the flow control is appended.
|
|
751
|
+
*
|
|
752
|
+
* One consequence is not verbatim, and it cannot be: a row is written once and a
|
|
753
|
+
* standalone plan has no contract chain to add a note to, so the registry's own
|
|
754
|
+
* text would promise a durable note that nothing writes. The lineage is already
|
|
755
|
+
* sealed in the run's decision preparation, so the choice is made HERE, where the
|
|
756
|
+
* state is — never in the row, which cannot see it.
|
|
728
757
|
*/
|
|
729
|
-
function humanChoices(decision) {
|
|
758
|
+
function humanChoices(decision, state) {
|
|
730
759
|
const own = alternativesOf(decision);
|
|
731
760
|
const resolve = own === null
|
|
732
761
|
? [
|
|
@@ -737,9 +766,29 @@ function humanChoices(decision) {
|
|
|
737
766
|
outcome: { kind: "continue" },
|
|
738
767
|
},
|
|
739
768
|
]
|
|
740
|
-
: own.map((choice) => ({
|
|
769
|
+
: own.map((choice) => ({
|
|
770
|
+
...choice,
|
|
771
|
+
...(standaloneRegistration(decision, state, choice.outcome)
|
|
772
|
+
? { consequence: STANDALONE_REGISTRATION_CONSEQUENCE }
|
|
773
|
+
: {}),
|
|
774
|
+
}));
|
|
741
775
|
return [...resolve, ...flowControlChoices()];
|
|
742
776
|
}
|
|
777
|
+
/** What registering a decision really leaves behind when the plan is standalone. */
|
|
778
|
+
const STANDALONE_REGISTRATION_CONSEQUENCE = "no hay nota de contrato: la decisión queda en la traza de la corrida y la anotás en el DECISION.md de la sesión; la ejecución sigue desde su punto de reanudación";
|
|
779
|
+
/**
|
|
780
|
+
* Whether this alternative is the deviation gate's registration over a plan with
|
|
781
|
+
* no spec — the only case where the row's durable-note promise is false.
|
|
782
|
+
*
|
|
783
|
+
* A null preparation cannot take this exit at all (the submit refuses it with
|
|
784
|
+
* `FLOW_DECISION_PREVIEW_ABSENT`), so the standalone variant covers every case
|
|
785
|
+
* where registering can succeed without a note.
|
|
786
|
+
*/
|
|
787
|
+
function standaloneRegistration(decision, state, outcome) {
|
|
788
|
+
return (decision.id === "plan-exec.deviation-gate" &&
|
|
789
|
+
outcome.kind === "register-decision" &&
|
|
790
|
+
state.decision_preparation?.kind === "standalone");
|
|
791
|
+
}
|
|
743
792
|
/**
|
|
744
793
|
* An authorization boundary names the effect and what approving it costs.
|
|
745
794
|
*
|
|
@@ -759,11 +808,11 @@ function authorizationChoices(decision, authorization) {
|
|
|
759
808
|
...flowControlChoices(`no se ejerce ${missing} y el recorrido queda detenido acá, sin nada aplicado`),
|
|
760
809
|
];
|
|
761
810
|
}
|
|
762
|
-
function choicesFor(kind, stopped, unauthorized) {
|
|
811
|
+
function choicesFor(kind, stopped, unauthorized, state) {
|
|
763
812
|
if (kind === "authorization" && unauthorized !== null) {
|
|
764
813
|
return authorizationChoices(stopped, unauthorized);
|
|
765
814
|
}
|
|
766
|
-
return kind === "human" ? humanChoices(stopped) : [];
|
|
815
|
+
return kind === "human" ? humanChoices(stopped, state) : [];
|
|
767
816
|
}
|
|
768
817
|
/**
|
|
769
818
|
* What the END of a run says — including what it gave up on along the way.
|
|
@@ -782,8 +831,9 @@ function finalAction(state) {
|
|
|
782
831
|
return `el recorrido terminó dejando degradadas ${names}: nadie las resolvió y el estado declara la causa de cada una — ${DEGRADE_ACTION}`;
|
|
783
832
|
}
|
|
784
833
|
function nextActionFor(state, boundary, resolved) {
|
|
785
|
-
if (state.handoff !== null && state.handoff !== undefined)
|
|
786
|
-
return state.handoff.command;
|
|
834
|
+
if (state.handoff !== null && state.handoff !== undefined) {
|
|
835
|
+
return handoffAction(state.session, state.handoff.command);
|
|
836
|
+
}
|
|
787
837
|
const stopped = resolved.stopped;
|
|
788
838
|
if (stopped === null)
|
|
789
839
|
return finalAction(state);
|