@tacuchi/agent-workflow-cli 21.8.0 → 21.10.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/adapters/git-cli.js +217 -0
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/application/check-branch-service.js +48 -20
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/dev-only-services.js +53 -4
- package/dist/application/dev-only-services.js.map +1 -1
- package/dist/application/flow/advance.js +10 -3
- package/dist/application/flow/advance.js.map +1 -1
- package/dist/application/flow/flow-service.js +7 -0
- package/dist/application/flow/flow-service.js.map +1 -1
- package/dist/application/flow/internal-actions.js +74 -3
- package/dist/application/flow/internal-actions.js.map +1 -1
- package/dist/application/flow/internal-drive.js +1 -0
- package/dist/application/flow/internal-drive.js.map +1 -1
- package/dist/application/flow/run-projection.js +10 -4
- package/dist/application/flow/run-projection.js.map +1 -1
- package/dist/application/flow/submit.js +164 -15
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/history-table.js +37 -0
- package/dist/application/history-table.js.map +1 -1
- package/dist/application/hook-branch-check.js +17 -0
- package/dist/application/hook-branch-check.js.map +1 -1
- package/dist/application/local-proposal.js +37 -0
- package/dist/application/local-proposal.js.map +1 -1
- package/dist/application/resume-service.js +1 -0
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/retirement/apply.js +448 -0
- package/dist/application/retirement/apply.js.map +1 -0
- package/dist/application/retirement/attribution.js +395 -0
- package/dist/application/retirement/attribution.js.map +1 -0
- package/dist/application/retirement/graph.js +196 -0
- package/dist/application/retirement/graph.js.map +1 -0
- package/dist/application/retirement/history-events.js +158 -0
- package/dist/application/retirement/history-events.js.map +1 -0
- package/dist/application/retirement/journal.js +113 -0
- package/dist/application/retirement/journal.js.map +1 -0
- package/dist/application/retirement/prepare.js +233 -0
- package/dist/application/retirement/prepare.js.map +1 -0
- package/dist/application/retirement/preview.js +101 -0
- package/dist/application/retirement/preview.js.map +1 -0
- package/dist/application/retirement/resolve.js +356 -0
- package/dist/application/retirement/resolve.js.map +1 -0
- package/dist/application/session-close-service.js +108 -14
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.js +103 -12
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-custody-recorder.js +137 -0
- package/dist/application/session-custody-recorder.js.map +1 -0
- package/dist/application/session-custody-service.js +171 -0
- package/dist/application/session-custody-service.js.map +1 -0
- package/dist/application/session-resolver.js +21 -0
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/status-service.js +5 -0
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/workline-index-service.js +31 -0
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/application/worktree-service.js +247 -34
- package/dist/application/worktree-service.js.map +1 -1
- package/dist/cli/commands/check-branch.js +9 -5
- package/dist/cli/commands/check-branch.js.map +1 -1
- package/dist/cli/commands/dev-only.js +21 -2
- package/dist/cli/commands/dev-only.js.map +1 -1
- package/dist/cli/commands/flow.js +6 -2
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/index.js +6 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/retirement.js +137 -0
- package/dist/cli/commands/retirement.js.map +1 -0
- package/dist/cli/commands/session-close.js +12 -1
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/commands/session-create.js +4 -1
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/commands/sources.js +8 -4
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/worktree.js +14 -7
- package/dist/cli/commands/worktree.js.map +1 -1
- package/dist/cli/help-groups.js +4 -0
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/parser.js +26 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/domain/flow/answer.js +72 -4
- package/dist/domain/flow/answer.js.map +1 -1
- package/dist/domain/flow/authority.js +219 -47
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/flow/rules.js +8 -1
- package/dist/domain/flow/rules.js.map +1 -1
- package/dist/domain/flow/run-state.js +34 -1
- package/dist/domain/flow/run-state.js.map +1 -1
- package/dist/domain/reservation.js +33 -0
- package/dist/domain/reservation.js.map +1 -0
- package/dist/domain/retirement/proposal.js +83 -0
- package/dist/domain/retirement/proposal.js.map +1 -0
- package/dist/domain/retirement/selector.js +109 -0
- package/dist/domain/retirement/selector.js.map +1 -0
- package/dist/domain/session/custody.js +176 -0
- package/dist/domain/session/custody.js.map +1 -0
- package/dist/domain/workline-node.js +56 -0
- package/dist/domain/workline-node.js.map +1 -0
- package/package.json +1 -1
- package/skills/w/commands/discard.md +49 -0
- package/skills/w/commands/reset.md +50 -0
- package/skills/w/context/MANIFEST.json +147 -139
- package/skills/w/loops/CODE-POLICIES.md +9 -9
- package/skills/w/loops/plan-exec-loop/LOOP.md +23 -13
- package/skills/w/loops/plan-new-loop/LOOP.md +1 -1
- package/skills/w/modules/PLAN-INPUT.md +1 -1
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
+
import { checkSafeRelativePath } from "../domain/safe-path.js";
|
|
3
|
+
import { nodeFromDocPath } from "../domain/workline-node.js";
|
|
4
|
+
import { localDateIso } from "./dates.js";
|
|
5
|
+
import { maxHistoryNumber } from "./history-table.js";
|
|
2
6
|
import { withCwdLock } from "./lock-service.js";
|
|
3
7
|
import { canonicalArtifactPath } from "./session-artifacts.js";
|
|
4
8
|
import { bindContextToSession, readBindingRegistry } from "./session-binding-service.js";
|
|
9
|
+
import { baselineOf, birthCustody, custodyPath, writeCustody } from "./session-custody-service.js";
|
|
5
10
|
import { renderSessionMarkdown } from "./templates/session.js";
|
|
6
11
|
const VALID_TYPES = ["research", "refine", "exec", "quick"];
|
|
7
12
|
export async function runSessionCreate(fs, paths, input) {
|
|
@@ -9,7 +14,14 @@ export async function runSessionCreate(fs, paths, input) {
|
|
|
9
14
|
if ("error" in validated)
|
|
10
15
|
return validated;
|
|
11
16
|
const { type, name, objetivo } = validated;
|
|
12
|
-
|
|
17
|
+
// Baselines are read BEFORE the claim so the bytes sealed are the ones that
|
|
18
|
+
// existed before this session could touch anything, and a declared input that
|
|
19
|
+
// cannot be read fails the creation instead of producing a custody that
|
|
20
|
+
// pretends to know what it received.
|
|
21
|
+
const baselines = await readBaselines(fs, paths, input.inputs ?? []);
|
|
22
|
+
if ("error" in baselines)
|
|
23
|
+
return baselines;
|
|
24
|
+
const folderInfo = await claimSessionFolder(fs, paths, name, input.contextId, baselines.artifacts);
|
|
13
25
|
if ("error" in folderInfo)
|
|
14
26
|
return folderInfo;
|
|
15
27
|
const sessionPath = folderInfo.sessionPath;
|
|
@@ -28,11 +40,47 @@ export async function runSessionCreate(fs, paths, input) {
|
|
|
28
40
|
folder: folderInfo.folder,
|
|
29
41
|
path: sessionPath,
|
|
30
42
|
session_path: sessionFilePath,
|
|
43
|
+
custody_path: folderInfo.custodyPath,
|
|
44
|
+
inputs: baselines.artifacts.map((a) => a.path),
|
|
31
45
|
};
|
|
32
46
|
if (origin && origin.length > 0)
|
|
33
47
|
record.origin = origin;
|
|
34
48
|
return { sessionCreate: record };
|
|
35
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* The sealed previous state of every declared input, or the refusal.
|
|
52
|
+
*
|
|
53
|
+
* The path guard is the workspace's own (`checkSafeRelativePath`), the same one
|
|
54
|
+
* every other write boundary uses: a second, hand-rolled version of "is this
|
|
55
|
+
* relative" is how two boundaries end up disagreeing about which paths are
|
|
56
|
+
* allowed. A repeated input is collapsed rather than sealed twice — the baseline
|
|
57
|
+
* of a path is one fact.
|
|
58
|
+
*/
|
|
59
|
+
async function readBaselines(fs, paths, inputs) {
|
|
60
|
+
const artifacts = [];
|
|
61
|
+
const root = paths.workspaceDir();
|
|
62
|
+
for (const raw of inputs) {
|
|
63
|
+
const safe = checkSafeRelativePath(raw);
|
|
64
|
+
if (!safe.ok) {
|
|
65
|
+
return {
|
|
66
|
+
error: `--input '${raw}' tiene que ser una ruta relativa al workspace: ${safe.why}`,
|
|
67
|
+
code: "INVALID_INPUT",
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (artifacts.some((a) => a.path === safe.path))
|
|
71
|
+
continue;
|
|
72
|
+
try {
|
|
73
|
+
artifacts.push(await baselineOf(fs, root, safe.path));
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
return {
|
|
77
|
+
error: `no se pudo sellar el estado previo de '${safe.path}': ${err instanceof Error ? err.message : String(err)}`,
|
|
78
|
+
code: "CUSTODY_BASELINE_UNREADABLE",
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return { artifacts };
|
|
83
|
+
}
|
|
36
84
|
function validateInput(input) {
|
|
37
85
|
const type = input.type?.trim().toLowerCase();
|
|
38
86
|
if (!type) {
|
|
@@ -56,11 +104,17 @@ function validateInput(input) {
|
|
|
56
104
|
return { type: type, name, objetivo };
|
|
57
105
|
}
|
|
58
106
|
/**
|
|
59
|
-
* Claim number + folder + conversation association under ONE lock: two
|
|
107
|
+
* Claim number + folder + custody + conversation association under ONE lock: two
|
|
60
108
|
* concurrent creations must not read the same counter and race for the same
|
|
61
|
-
* `NNN`, and the new line must belong to its conversation
|
|
109
|
+
* `NNN`, and the new line must belong to its conversation — and hold its sealed
|
|
110
|
+
* baseline — the moment it exists.
|
|
111
|
+
*
|
|
112
|
+
* The custody is written INSIDE the critical section for the same reason the
|
|
113
|
+
* number is minted there: a session that becomes visible before its baseline is
|
|
114
|
+
* sealed is a session another process can start driving, and the first mutation
|
|
115
|
+
* would then land against a custody nobody had written yet.
|
|
62
116
|
*/
|
|
63
|
-
async function claimSessionFolder(fs, paths, name, contextId) {
|
|
117
|
+
async function claimSessionFolder(fs, paths, name, contextId, artifacts) {
|
|
64
118
|
const id = contextId?.trim() ?? "";
|
|
65
119
|
const result = await withCwdLock(fs, paths, async () => {
|
|
66
120
|
// Fail before creating anything when the registry cannot be read: a session
|
|
@@ -82,30 +136,67 @@ async function claimSessionFolder(fs, paths, name, contextId) {
|
|
|
82
136
|
// `NNN-` prefix is assigned here. A descriptor that already carries a leading
|
|
83
137
|
// `NNN-` is normalized away first so the prefix can't double up.
|
|
84
138
|
const descriptor = name.replace(/^\d{3}-/, "");
|
|
85
|
-
const number = await nextSessionNumber(fs, sessionsDir);
|
|
139
|
+
const number = await nextSessionNumber(fs, paths, sessionsDir);
|
|
86
140
|
const folder = `${number}-${descriptor}`;
|
|
87
141
|
const sessionPath = join(sessionsDir, folder);
|
|
88
142
|
if (await fs.exists(sessionPath)) {
|
|
89
143
|
return { ok: false, failure: { error: `Ya existe ${sessionPath}` } };
|
|
90
144
|
}
|
|
91
145
|
await fs.mkdirp(sessionPath);
|
|
146
|
+
await writeCustody(fs, sessionPath, birthCustody({
|
|
147
|
+
subject: { kind: "session", key: folder },
|
|
148
|
+
subjectPath: sessionPath,
|
|
149
|
+
parents: parentsOf(artifacts),
|
|
150
|
+
artifacts,
|
|
151
|
+
created: localDateIso(new Date()),
|
|
152
|
+
}));
|
|
92
153
|
if (id.length > 0)
|
|
93
154
|
await bindContextToSession(fs, paths, id, folder);
|
|
94
|
-
return {
|
|
155
|
+
return {
|
|
156
|
+
ok: true,
|
|
157
|
+
info: { folder, number, sessionPath, custodyPath: custodyPath(sessionPath) },
|
|
158
|
+
};
|
|
95
159
|
});
|
|
96
160
|
if ("error" in result)
|
|
97
161
|
return { error: result.error, code: "LOCK_BUSY" };
|
|
98
162
|
return result.ok ? result.info : result.failure;
|
|
99
163
|
}
|
|
100
164
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
165
|
+
* The typed parents a set of declared inputs implies.
|
|
166
|
+
*
|
|
167
|
+
* An input is the document the run works ON, so the document IS its parent — and
|
|
168
|
+
* the edge is provable, because the path was declared by the caller and its
|
|
169
|
+
* identity is fixed by the workspace layout. An input that names no spec or plan
|
|
170
|
+
* (a checkpoint, a loose file) contributes no parent rather than a guessed one.
|
|
171
|
+
*/
|
|
172
|
+
function parentsOf(artifacts) {
|
|
173
|
+
const parents = [];
|
|
174
|
+
for (const artifact of artifacts) {
|
|
175
|
+
const node = nodeFromDocPath(artifact.path);
|
|
176
|
+
if (node === null)
|
|
177
|
+
continue;
|
|
178
|
+
if (parents.some((p) => p.kind === node.kind && p.key === node.key))
|
|
179
|
+
continue;
|
|
180
|
+
parents.push(node);
|
|
181
|
+
}
|
|
182
|
+
return parents;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Next global session number: the maximum of what the sessions folder holds and
|
|
186
|
+
* what `HISTORY.md` remembers, plus one, zero-padded. Type-agnostic — one
|
|
187
|
+
* sequence for every session regardless of kind.
|
|
188
|
+
*
|
|
189
|
+
* HISTORY is read as well as the folder because a RETIRED session leaves no
|
|
190
|
+
* folder behind: scanning live directories alone would hand `119` to a new
|
|
191
|
+
* session after the old `119` was discarded, and the two would then share a row
|
|
192
|
+
* key, a unit branch and a `--code`. Numbering is monotonic even across
|
|
193
|
+
* deletions — an identity is spent once. Legacy `sessionNNN-…` folders carry no
|
|
194
|
+
* leading digit and are ignored by the folder half, while the history half still
|
|
195
|
+
* recognizes their rows.
|
|
105
196
|
*/
|
|
106
|
-
async function nextSessionNumber(fs, sessionsDir) {
|
|
197
|
+
async function nextSessionNumber(fs, paths, sessionsDir) {
|
|
107
198
|
const entries = await fs.list(sessionsDir);
|
|
108
|
-
let max =
|
|
199
|
+
let max = await maxHistoryNumber(fs, paths.cwdHistoryFile());
|
|
109
200
|
for (const entry of entries) {
|
|
110
201
|
const m = entry.name.match(/^(\d{3})/);
|
|
111
202
|
if (m?.[1])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-create-service.js","sourceRoot":"","sources":["../../src/application/session-create-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"session-create-service.js","sourceRoot":"","sources":["../../src/application/session-create-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recording into custody what an operation REALLY did.
|
|
3
|
+
*
|
|
4
|
+
* One module rather than a call scattered through each service, for a reason
|
|
5
|
+
* that outlives the code: everything here has to be an observation of a result,
|
|
6
|
+
* and keeping the observations together is what makes it checkable that none of
|
|
7
|
+
* them is a re-derivation. A recorder that read the repository to decide what to
|
|
8
|
+
* write would be a second opinion about the same facts — and the one that goes
|
|
9
|
+
* stale.
|
|
10
|
+
*
|
|
11
|
+
* Every function is a no-op on a session with NO custody. That is the legacy
|
|
12
|
+
* path and it is deliberate: a session born before custody existed keeps running
|
|
13
|
+
* exactly as it did, and it is `discard/reset prepare` — not these writes — that
|
|
14
|
+
* refuses to act without evidence.
|
|
15
|
+
*/
|
|
16
|
+
import { ABSENT_BASELINE, preservedBaseline } from "../domain/session/custody.js";
|
|
17
|
+
import { semanticDigest } from "./semantic-operation/protocol.js";
|
|
18
|
+
import { effectNow, extendCustody, withArtifacts, withEffect, withSourceBaseline, } from "./session-custody-service.js";
|
|
19
|
+
/** Where a session's custody lives, given the folder name the caller holds. */
|
|
20
|
+
function sessionPathOf(paths, sessionFolder) {
|
|
21
|
+
return `${paths.cwdSessionsDir()}/${sessionFolder}`;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A session took its isolation unit: seal how the source stood at that moment.
|
|
25
|
+
*
|
|
26
|
+
* The dirty state is recorded because it is the only way to later refuse to
|
|
27
|
+
* discard a change we did not make: whatever was already uncommitted here at
|
|
28
|
+
* baseline belongs to somebody else, and no diff taken afterwards can tell the
|
|
29
|
+
* two apart on its own.
|
|
30
|
+
*/
|
|
31
|
+
export async function recordUnitTaken(deps, sessionFolder, facts) {
|
|
32
|
+
const source = await readSourceBaseline(deps, facts);
|
|
33
|
+
return extendCustody(deps.fs, sessionPathOf(deps.paths, sessionFolder), (custody) => withEffect(withSourceBaseline(custody, source), {
|
|
34
|
+
...effectNow("unit_taken", {
|
|
35
|
+
alias: facts.alias,
|
|
36
|
+
after: source.baseline_head,
|
|
37
|
+
ref: `refs/heads/${facts.unitBranch}`,
|
|
38
|
+
}),
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
async function readSourceBaseline(deps, facts) {
|
|
42
|
+
const dirty = await safeChangedFiles(deps.git, facts.sourcePath);
|
|
43
|
+
return {
|
|
44
|
+
alias: facts.alias,
|
|
45
|
+
path: facts.sourcePath,
|
|
46
|
+
branch: (await safeBranch(deps.git, facts.sourcePath)) ?? facts.base,
|
|
47
|
+
baseline_head: await safeHead(deps.git, facts.unitPath, facts.sourcePath),
|
|
48
|
+
unit_branch: facts.unitBranch,
|
|
49
|
+
unit_path: facts.unitPath,
|
|
50
|
+
dirty_digest: semanticDigest([...dirty].sort()),
|
|
51
|
+
dirty_paths: [...dirty].sort(),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The unit's own HEAD when it can be read, the source's otherwise.
|
|
56
|
+
*
|
|
57
|
+
* The unit is the tree the session will commit into, so ITS tip is the point its
|
|
58
|
+
* commits start from. Falling back to the source covers the call that records
|
|
59
|
+
* the baseline before the tree is materialized — same branch, same commit.
|
|
60
|
+
*/
|
|
61
|
+
async function safeHead(git, unitPath, sourcePath) {
|
|
62
|
+
const fromUnit = await tryHead(git, unitPath);
|
|
63
|
+
return fromUnit ?? (await tryHead(git, sourcePath));
|
|
64
|
+
}
|
|
65
|
+
async function tryHead(git, path) {
|
|
66
|
+
try {
|
|
67
|
+
return await git.head(path);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async function safeBranch(git, path) {
|
|
74
|
+
try {
|
|
75
|
+
return await git.currentBranch(path);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function safeChangedFiles(git, path) {
|
|
82
|
+
try {
|
|
83
|
+
return await git.changedFiles(path);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** An integration landed: the merge commit it produced is the session's own. */
|
|
90
|
+
export async function recordIntegration(deps, sessionFolder, facts) {
|
|
91
|
+
const after = await tryHead(deps.git, facts.sourcePath);
|
|
92
|
+
return extendCustody(deps.fs, sessionPathOf(deps.paths, sessionFolder), (custody) => withEffect(custody, {
|
|
93
|
+
...effectNow("unit_integrated", {
|
|
94
|
+
alias: facts.alias,
|
|
95
|
+
before: facts.before,
|
|
96
|
+
after,
|
|
97
|
+
ref: `refs/heads/${facts.into}`,
|
|
98
|
+
}),
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
/** A typed commit reported its SHAs; they go in verbatim. */
|
|
102
|
+
export async function recordCommit(deps, sessionFolder, alias, receipt) {
|
|
103
|
+
return extendCustody(deps.fs, sessionPathOf(deps.paths, sessionFolder), (custody) => withEffect(custody, {
|
|
104
|
+
...effectNow("commit", {
|
|
105
|
+
alias,
|
|
106
|
+
before: receipt.before,
|
|
107
|
+
after: receipt.after,
|
|
108
|
+
parents: receipt.parents,
|
|
109
|
+
ref: receipt.branch === null ? null : `refs/heads/${receipt.branch}`,
|
|
110
|
+
}),
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A publication landed: each destination becomes an input or an output.
|
|
115
|
+
*
|
|
116
|
+
* The role comes from what was on disk before the write — the caller reads that
|
|
117
|
+
* and passes it — because after the write the two cases are indistinguishable,
|
|
118
|
+
* and getting them backwards is the difference between a reset that restores a
|
|
119
|
+
* document and one that deletes it.
|
|
120
|
+
*/
|
|
121
|
+
export async function recordPublication(deps, sessionFolder, published) {
|
|
122
|
+
if (published.length === 0)
|
|
123
|
+
return { status: "absent" };
|
|
124
|
+
const artifacts = published.map((entry) => ({
|
|
125
|
+
path: entry.path,
|
|
126
|
+
role: entry.previous === null ? "output" : "input",
|
|
127
|
+
before: entry.previous === null ? ABSENT_BASELINE : preservedBaseline(entry.previous),
|
|
128
|
+
}));
|
|
129
|
+
return extendCustody(deps.fs, sessionPathOf(deps.paths, sessionFolder), (custody) => withEffect(withArtifacts(custody, artifacts), {
|
|
130
|
+
...effectNow("artifact_published", { paths: artifacts.map((a) => a.path) }),
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
/** The run adopted a flow: which one, so the trail says what this session IS. */
|
|
134
|
+
export async function recordFlowAdoption(deps, sessionFolder, flow) {
|
|
135
|
+
return extendCustody(deps.fs, sessionPathOf(deps.paths, sessionFolder), (custody) => withEffect(custody, { ...effectNow("flow_adopted", { paths: [flow] }) }));
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=session-custody-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-custody-recorder.js","sourceRoot":"","sources":["../../src/application/session-custody-recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading and extending a session's custody — the only path that writes it.
|
|
3
|
+
*
|
|
4
|
+
* Every mutation here is an APPEND of something that really happened plus a
|
|
5
|
+
* re-seal, and never a recomputation of the record from the current state of the
|
|
6
|
+
* workspace. That distinction is the whole value of the file: a custody rebuilt
|
|
7
|
+
* from what exists now could only ever agree with what exists now, which is the
|
|
8
|
+
* one thing a baseline must not do.
|
|
9
|
+
*/
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { ABSENT_BASELINE, CUSTODY_FILE, preservedBaseline, sealCustody, } from "../domain/session/custody.js";
|
|
12
|
+
import { localDateIso } from "./dates.js";
|
|
13
|
+
export function custodyPath(sessionPath) {
|
|
14
|
+
return join(sessionPath, CUSTODY_FILE);
|
|
15
|
+
}
|
|
16
|
+
export async function readCustody(fs, sessionPath) {
|
|
17
|
+
const path = custodyPath(sessionPath);
|
|
18
|
+
if (!(await fs.exists(path)))
|
|
19
|
+
return { status: "absent" };
|
|
20
|
+
let raw;
|
|
21
|
+
try {
|
|
22
|
+
raw = await fs.readText(path);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
return { status: "unreadable", reason: `no se pudo leer ${CUSTODY_FILE}: ${message(err)}` };
|
|
26
|
+
}
|
|
27
|
+
let parsed;
|
|
28
|
+
try {
|
|
29
|
+
parsed = JSON.parse(raw);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
return { status: "unreadable", reason: `${CUSTODY_FILE} no es JSON válido: ${message(err)}` };
|
|
33
|
+
}
|
|
34
|
+
if (!isCustodyShape(parsed)) {
|
|
35
|
+
return { status: "unreadable", reason: `${CUSTODY_FILE} no tiene la forma de una custodia` };
|
|
36
|
+
}
|
|
37
|
+
return { status: "present", custody: parsed };
|
|
38
|
+
}
|
|
39
|
+
export async function writeCustody(fs, sessionPath, custody) {
|
|
40
|
+
await fs.writeText(custodyPath(sessionPath), `${JSON.stringify(custody, null, 2)}\n`);
|
|
41
|
+
}
|
|
42
|
+
export function birthCustody(input) {
|
|
43
|
+
return sealCustody({
|
|
44
|
+
subject: input.subject,
|
|
45
|
+
subjectPath: input.subjectPath,
|
|
46
|
+
parents: input.parents,
|
|
47
|
+
created: input.created,
|
|
48
|
+
artifacts: input.artifacts,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The baseline of one declared input, read from disk BEFORE the run touches it.
|
|
53
|
+
*
|
|
54
|
+
* A path that is not there yet is recorded as an explicit absence rather than
|
|
55
|
+
* skipped: `reset` has to be able to delete a file back out of existence, and it
|
|
56
|
+
* can only do that if somebody wrote down that it did not exist.
|
|
57
|
+
*/
|
|
58
|
+
export async function baselineOf(fs, workspaceRoot, relativePath) {
|
|
59
|
+
const absolute = join(workspaceRoot, relativePath);
|
|
60
|
+
if (!(await fs.exists(absolute))) {
|
|
61
|
+
return { path: relativePath, role: "input", before: ABSENT_BASELINE };
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
path: relativePath,
|
|
65
|
+
role: "input",
|
|
66
|
+
before: preservedBaseline(await fs.readText(absolute)),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export async function extendCustody(fs, sessionPath, extend) {
|
|
70
|
+
const read = await readCustody(fs, sessionPath);
|
|
71
|
+
if (read.status !== "present")
|
|
72
|
+
return read;
|
|
73
|
+
const next = extend(read.custody);
|
|
74
|
+
await writeCustody(fs, sessionPath, next);
|
|
75
|
+
return { status: "updated", custody: next };
|
|
76
|
+
}
|
|
77
|
+
/** Re-seal a record after appending to it: the digest always covers the whole. */
|
|
78
|
+
function reseal(custody, changes) {
|
|
79
|
+
return sealCustody({
|
|
80
|
+
subject: changes.subject ?? custody.subject,
|
|
81
|
+
subjectPath: changes.subject_path ?? custody.subject_path,
|
|
82
|
+
parents: changes.parents ?? custody.parents,
|
|
83
|
+
created: changes.created ?? custody.created,
|
|
84
|
+
artifacts: changes.artifacts ?? custody.artifacts,
|
|
85
|
+
sources: changes.sources ?? custody.sources,
|
|
86
|
+
effects: changes.effects ?? custody.effects,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Record a source as this session first found it, and never again.
|
|
91
|
+
*
|
|
92
|
+
* Idempotent by alias on purpose: `worktree ensure` is idempotent, and a second
|
|
93
|
+
* call re-reading HEAD would overwrite the baseline with a state the session
|
|
94
|
+
* itself produced — the exact way a baseline stops being one.
|
|
95
|
+
*/
|
|
96
|
+
export function withSourceBaseline(custody, source) {
|
|
97
|
+
const known = custody.sources.find((s) => s.alias === source.alias);
|
|
98
|
+
if (known !== undefined) {
|
|
99
|
+
// The unit is the one field a later call may legitimately fill: a session can
|
|
100
|
+
// record the source first and take its unit afterwards.
|
|
101
|
+
if (known.unit_branch !== null || source.unit_branch === null)
|
|
102
|
+
return custody;
|
|
103
|
+
const merged = {
|
|
104
|
+
...known,
|
|
105
|
+
unit_branch: source.unit_branch,
|
|
106
|
+
unit_path: source.unit_path,
|
|
107
|
+
};
|
|
108
|
+
return reseal(custody, {
|
|
109
|
+
sources: custody.sources.map((s) => (s.alias === source.alias ? merged : s)),
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return reseal(custody, { sources: [...custody.sources, source] });
|
|
113
|
+
}
|
|
114
|
+
export function withEffect(custody, effect) {
|
|
115
|
+
return reseal(custody, { effects: [...custody.effects, effect] });
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Record what a publication really wrote.
|
|
119
|
+
*
|
|
120
|
+
* The role is decided by what was on disk BEFORE the write, not by what the
|
|
121
|
+
* proposal called itself: an artifact that already existed is an input this
|
|
122
|
+
* session modified — a reset owes its previous bytes back — and one that did not
|
|
123
|
+
* is an output, which a reset simply removes. Re-publishing the same path never
|
|
124
|
+
* downgrades an input into an output, because the first baseline is the true one.
|
|
125
|
+
*/
|
|
126
|
+
export function withArtifacts(custody, artifacts) {
|
|
127
|
+
const merged = [...custody.artifacts];
|
|
128
|
+
for (const artifact of artifacts) {
|
|
129
|
+
if (merged.some((known) => known.path === artifact.path))
|
|
130
|
+
continue;
|
|
131
|
+
merged.push(artifact);
|
|
132
|
+
}
|
|
133
|
+
return merged.length === custody.artifacts.length
|
|
134
|
+
? custody
|
|
135
|
+
: reseal(custody, { artifacts: merged });
|
|
136
|
+
}
|
|
137
|
+
export function effectNow(kind, fields = {}, now = new Date()) {
|
|
138
|
+
return {
|
|
139
|
+
kind,
|
|
140
|
+
alias: fields.alias ?? null,
|
|
141
|
+
before: fields.before ?? null,
|
|
142
|
+
after: fields.after ?? null,
|
|
143
|
+
parents: fields.parents ?? [],
|
|
144
|
+
ref: fields.ref ?? null,
|
|
145
|
+
paths: fields.paths ?? [],
|
|
146
|
+
at: localDateIso(now),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function isCustodyShape(value) {
|
|
150
|
+
if (value === null || typeof value !== "object")
|
|
151
|
+
return false;
|
|
152
|
+
const candidate = value;
|
|
153
|
+
return (typeof candidate.version === "number" &&
|
|
154
|
+
typeof candidate.digest === "string" &&
|
|
155
|
+
typeof candidate.subject_path === "string" &&
|
|
156
|
+
isNode(candidate.subject) &&
|
|
157
|
+
Array.isArray(candidate.parents) &&
|
|
158
|
+
Array.isArray(candidate.artifacts) &&
|
|
159
|
+
Array.isArray(candidate.sources) &&
|
|
160
|
+
Array.isArray(candidate.effects));
|
|
161
|
+
}
|
|
162
|
+
function isNode(value) {
|
|
163
|
+
if (value === null || typeof value !== "object")
|
|
164
|
+
return false;
|
|
165
|
+
const node = value;
|
|
166
|
+
return typeof node.kind === "string" && typeof node.key === "string";
|
|
167
|
+
}
|
|
168
|
+
function message(err) {
|
|
169
|
+
return err instanceof Error ? err.message : String(err);
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=session-custody-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-custody-service.js","sourceRoot":"","sources":["../../src/application/session-custody-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,27 @@ export function sessionNumericCode(folder) {
|
|
|
87
87
|
const m = folder.match(/^(?:session)?(\d+)-/);
|
|
88
88
|
return m?.[1] ?? null;
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* The slug a session folder carries: `roles-ficha` for `067-roles-ficha-plan-new`.
|
|
92
|
+
*
|
|
93
|
+
* The folder is `NNN-<slug>-<flow>` by construction — that is the name
|
|
94
|
+
* `session-create` is told to use, and the loops spell it that way — so the slug
|
|
95
|
+
* is a fact the engine already holds rather than something a run has to narrate.
|
|
96
|
+
* The flow is passed in and matched as a SUFFIX instead of being guessed: a slug
|
|
97
|
+
* may itself end in a word a flow name starts with, and the flow the state knows
|
|
98
|
+
* is the only unambiguous place to cut.
|
|
99
|
+
*
|
|
100
|
+
* `null` for a folder that does not fit the shape, and null is the point of the
|
|
101
|
+
* return type: a slug this function had to invent would end up in a filename.
|
|
102
|
+
*/
|
|
103
|
+
export function sessionSlug(folder, flow) {
|
|
104
|
+
const rest = folder.match(/^(?:session)?\d+-(.+)$/)?.[1];
|
|
105
|
+
const suffix = `-${flow}`;
|
|
106
|
+
if (rest === undefined || !rest.endsWith(suffix))
|
|
107
|
+
return null;
|
|
108
|
+
const slug = rest.slice(0, -suffix.length);
|
|
109
|
+
return slug.length > 0 ? slug : null;
|
|
110
|
+
}
|
|
90
111
|
export async function resolveSessionTarget(fs, paths, request) {
|
|
91
112
|
const resolution = await walkPrecedence(fs, paths, request);
|
|
92
113
|
if (resolution.outcome !== "resolved" || request.bind !== true)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/application/session-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/application/session-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { projectRun } from "./flow/run-projection.js";
|
|
2
|
+
import { readEvents } from "./retirement/history-events.js";
|
|
2
3
|
import { buildWorklineIndex, } from "./workline-index-service.js";
|
|
3
4
|
/**
|
|
4
5
|
* Read-only whole-workspace status aggregator. Never throws on a reachable cwd:
|
|
@@ -7,6 +8,7 @@ import { buildWorklineIndex, } from "./workline-index-service.js";
|
|
|
7
8
|
*/
|
|
8
9
|
export async function runStatusCommand(fs, env, paths, input = {}) {
|
|
9
10
|
const index = await buildWorklineIndex(fs, env, paths, input);
|
|
11
|
+
const events = await readEvents(fs, paths);
|
|
10
12
|
const active = [];
|
|
11
13
|
const closed = [];
|
|
12
14
|
for (const session of index.sessions) {
|
|
@@ -29,6 +31,8 @@ export async function runStatusCommand(fs, env, paths, input = {}) {
|
|
|
29
31
|
plans: index.plans,
|
|
30
32
|
sessions: { active, closed },
|
|
31
33
|
discarded: index.discarded,
|
|
34
|
+
terminal_events: events,
|
|
35
|
+
pending_retirements: index.pending_retirements,
|
|
32
36
|
pipeline: index.pipeline,
|
|
33
37
|
designs: index.designs,
|
|
34
38
|
orphan_units: index.orphan_units,
|
|
@@ -39,6 +43,7 @@ export async function runStatusCommand(fs, env, paths, input = {}) {
|
|
|
39
43
|
sessions_active: active.length,
|
|
40
44
|
sessions_closed: closed.length,
|
|
41
45
|
discarded: index.discarded.length,
|
|
46
|
+
terminal_events: events.length,
|
|
42
47
|
pending: index.pipeline.length,
|
|
43
48
|
},
|
|
44
49
|
};
|