@tacuchi/agent-workflow-cli 25.6.1 → 25.7.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/CHANGELOG.md +4368 -0
- package/README.md +1 -1
- package/dist/adapters/git-cli.js +74 -6
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/adapters/node-file-system.js +39 -2
- package/dist/adapters/node-file-system.js.map +1 -1
- package/dist/application/branch-resolver.js +34 -1
- package/dist/application/branch-resolver.js.map +1 -1
- package/dist/application/checkpoint-write-service.js +161 -39
- package/dist/application/checkpoint-write-service.js.map +1 -1
- package/dist/application/dates.js +12 -0
- package/dist/application/dates.js.map +1 -1
- package/dist/application/fix-git-service.js +83 -13
- package/dist/application/fix-git-service.js.map +1 -1
- package/dist/application/flow/advance.js +24 -3
- package/dist/application/flow/advance.js.map +1 -1
- package/dist/application/flow/annul-service.js +159 -0
- package/dist/application/flow/annul-service.js.map +1 -0
- package/dist/application/flow/flow-service.js +212 -49
- package/dist/application/flow/flow-service.js.map +1 -1
- package/dist/application/flow/internal-actions.js +23 -3
- package/dist/application/flow/internal-actions.js.map +1 -1
- package/dist/application/flow/internal-drive.js +51 -19
- package/dist/application/flow/internal-drive.js.map +1 -1
- package/dist/application/flow/run-projection.js +21 -5
- package/dist/application/flow/run-projection.js.map +1 -1
- package/dist/application/flow/run-state-service.js +108 -35
- package/dist/application/flow/run-state-service.js.map +1 -1
- package/dist/application/flow/submit.js +63 -144
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/git-flow-service.js +325 -72
- package/dist/application/git-flow-service.js.map +1 -1
- package/dist/application/hook-sql-mutation-guard.js +155 -27
- package/dist/application/hook-sql-mutation-guard.js.map +1 -1
- package/dist/application/host-memory/claude-code.js +65 -0
- package/dist/application/host-memory/claude-code.js.map +1 -0
- package/dist/application/host-memory/codex.js +225 -0
- package/dist/application/host-memory/codex.js.map +1 -0
- package/dist/application/host-memory/destination.js +52 -0
- package/dist/application/host-memory/destination.js.map +1 -0
- package/dist/application/host-memory/reader.js +9 -0
- package/dist/application/host-memory/reader.js.map +1 -0
- package/dist/application/host-memory/report.js +136 -0
- package/dist/application/host-memory/report.js.map +1 -0
- package/dist/application/lifecycle-target.js +3 -1
- package/dist/application/lifecycle-target.js.map +1 -1
- package/dist/application/local-proposal.js +13 -3
- package/dist/application/local-proposal.js.map +1 -1
- package/dist/application/logging/log-events.js +22 -0
- package/dist/application/logging/log-events.js.map +1 -1
- package/dist/application/parsers/spec-relation.js +20 -7
- package/dist/application/parsers/spec-relation.js.map +1 -1
- package/dist/application/persist-service.js +45 -1
- package/dist/application/persist-service.js.map +1 -1
- package/dist/application/plan-exec-batch-service.js +47 -2
- package/dist/application/plan-exec-batch-service.js.map +1 -1
- package/dist/application/plan-lineage-seal.js +93 -0
- package/dist/application/plan-lineage-seal.js.map +1 -0
- package/dist/application/plan-lint-service.js +153 -0
- package/dist/application/plan-lint-service.js.map +1 -0
- package/dist/application/prod-consent.js +75 -0
- package/dist/application/prod-consent.js.map +1 -0
- package/dist/application/reseal-service.js +9 -3
- package/dist/application/reseal-service.js.map +1 -1
- package/dist/application/self/install-skill.js +5 -1
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/update-self.js +204 -8
- package/dist/application/self/update-self.js.map +1 -1
- package/dist/application/session-create-service.js +49 -0
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-custody-recorder.js +4 -0
- package/dist/application/session-custody-recorder.js.map +1 -1
- package/dist/application/session-narrative.js +27 -0
- package/dist/application/session-narrative.js.map +1 -1
- package/dist/application/session-resolver.js +28 -9
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/source-boundary-policy.js +168 -34
- package/dist/application/source-boundary-policy.js.map +1 -1
- package/dist/application/working-branch-service.js +68 -0
- package/dist/application/working-branch-service.js.map +1 -0
- package/dist/application/workline-graph.js +7 -2
- package/dist/application/workline-graph.js.map +1 -1
- package/dist/cli/commands/checkpoint-write.js +18 -8
- package/dist/cli/commands/checkpoint-write.js.map +1 -1
- package/dist/cli/commands/fix-git.js +45 -6
- package/dist/cli/commands/fix-git.js.map +1 -1
- package/dist/cli/commands/flow.js +50 -5
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/git-flow.js +103 -29
- package/dist/cli/commands/git-flow.js.map +1 -1
- package/dist/cli/commands/host-memory.js +33 -0
- package/dist/cli/commands/host-memory.js.map +1 -0
- package/dist/cli/commands/index.js +6 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/persist.js +5 -0
- package/dist/cli/commands/persist.js.map +1 -1
- package/dist/cli/commands/plan.js +50 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/resume-summary.js +4 -2
- package/dist/cli/commands/resume-summary.js.map +1 -1
- package/dist/cli/commands/set-branch.js +40 -6
- package/dist/cli/commands/set-branch.js.map +1 -1
- package/dist/cli/help-groups.js +6 -0
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/main.js +2 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui/components/git-flow-actions.js +65 -20
- package/dist/cli/tui/components/git-flow-actions.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +101 -12
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/domain/changelog-contract.js +172 -0
- package/dist/domain/changelog-contract.js.map +1 -0
- package/dist/domain/database-tools.js +1 -189
- package/dist/domain/database-tools.js.map +1 -1
- package/dist/domain/flow/answer.js +3 -0
- package/dist/domain/flow/answer.js.map +1 -1
- package/dist/domain/flow/authority.js +12 -0
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/flow/journey-baseline.js +131 -0
- package/dist/domain/flow/journey-baseline.js.map +1 -0
- package/dist/domain/flow/run-state.js +257 -62
- package/dist/domain/flow/run-state.js.map +1 -1
- package/dist/domain/host-memory/model.js +2 -0
- package/dist/domain/host-memory/model.js.map +1 -0
- package/dist/domain/host-memory/provenance.js +43 -0
- package/dist/domain/host-memory/provenance.js.map +1 -0
- package/dist/domain/host-memory/topic.js +26 -0
- package/dist/domain/host-memory/topic.js.map +1 -0
- package/dist/domain/lineage.js +11 -3
- package/dist/domain/lineage.js.map +1 -1
- package/dist/domain/proposal.js +7 -0
- package/dist/domain/proposal.js.map +1 -1
- package/dist/domain/session/custody.js.map +1 -1
- package/dist/domain/sql-lexer.js +227 -0
- package/dist/domain/sql-lexer.js.map +1 -0
- package/package.json +2 -2
- package/skills/w/SKILL.md +9 -9
- package/skills/w/commands/README.md +2 -1
- package/skills/w/commands/recall.md +39 -0
- package/skills/w/context/MANIFEST.json +4 -0
- package/skills/w/harness/HARNESS.md +9 -5
- package/skills/w/hooks/README.md +27 -16
- package/skills/w/loops/CHASSIS.md +16 -12
- package/skills/w/loops/CODE-POLICIES.md +11 -6
- package/skills/w/loops/plan-exec-loop/LOOP.md +9 -9
- package/skills/w/modules/COMPACTION.md +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { isPlainBranchName } from "./branch-resolver.js";
|
|
2
|
+
/**
|
|
3
|
+
* Why a branch with no upstream would still pull something, or null.
|
|
4
|
+
*
|
|
5
|
+
* A clone made with `--single-branch` (or `--depth`) fetches through a refspec
|
|
6
|
+
* with no wildcard, and a bare `git pull` on a branch without upstream merges
|
|
7
|
+
* that refspec — PROD, in the usual case. "No upstream" only protects a clone
|
|
8
|
+
* that fetches every branch, so any other refuses instead of creating.
|
|
9
|
+
*/
|
|
10
|
+
async function narrowFetch(git, repo) {
|
|
11
|
+
const refspecs = await git.originFetchRefspecs(repo);
|
|
12
|
+
if (refspecs.some((spec) => spec.includes("*")))
|
|
13
|
+
return null;
|
|
14
|
+
const shown = refspecs.length > 0 ? refspecs.join(", ") : "ninguno";
|
|
15
|
+
return `el clon no trae todas las ramas de origin (remote.origin.fetch: ${shown}): una rama sin upstream mezclaría esa rama con un git pull sin argumentos; agregá +refs/heads/*:refs/remotes/origin/* a remote.origin.fetch y reintentá`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve `branch` in the source's repo before anybody registers it.
|
|
19
|
+
*
|
|
20
|
+
* A missing branch is created from `origin/<PROD>` just fetched — the team's
|
|
21
|
+
* recipe (RC-14) — and with NO upstream: a branch created tracking PROD is one a
|
|
22
|
+
* bare `git push` publishes to PROD and a bare `git pull` merges PROD into. A
|
|
23
|
+
* branch that exists only in `origin` tracks its homonym, which touches no PROD.
|
|
24
|
+
*/
|
|
25
|
+
export async function ensureWorkingBranch(git, source, branch, prod) {
|
|
26
|
+
if (!isPlainBranchName(branch)) {
|
|
27
|
+
return { ok: false, branch, reason: `${branch} no es un nombre de rama simple` };
|
|
28
|
+
}
|
|
29
|
+
const repo = source.path;
|
|
30
|
+
try {
|
|
31
|
+
const local = await git.localBranches(repo);
|
|
32
|
+
if (local.includes(branch))
|
|
33
|
+
return { ok: true, outcome: "existing", branch };
|
|
34
|
+
// On a case-insensitive filesystem `Feature/X` and `feature/x` are one ref
|
|
35
|
+
// file: answering `existing` would register a name that is not the branch,
|
|
36
|
+
// and creating the other would leave twins that overwrite each other.
|
|
37
|
+
const twin = local.find((name) => name.toLowerCase() === branch.toLowerCase());
|
|
38
|
+
if (twin !== undefined) {
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
branch,
|
|
42
|
+
reason: `ya existe ${twin}, que difiere de ${branch} sólo en mayúsculas`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const narrow = await narrowFetch(git, repo);
|
|
46
|
+
if (narrow !== null)
|
|
47
|
+
return { ok: false, branch, reason: narrow };
|
|
48
|
+
if (await git.remoteHasBranch(repo, branch)) {
|
|
49
|
+
await git.fetchBranch(repo, branch);
|
|
50
|
+
await git.createBranch(repo, branch, `refs/remotes/origin/${branch}`, { track: true });
|
|
51
|
+
return { ok: true, outcome: "tracked", branch, start_point: `origin/${branch}` };
|
|
52
|
+
}
|
|
53
|
+
if (!(await git.remoteHasBranch(repo, prod))) {
|
|
54
|
+
return {
|
|
55
|
+
ok: false,
|
|
56
|
+
branch,
|
|
57
|
+
reason: `origin no tiene la rama de PROD ${prod}: no hay desde dónde crear ${branch}`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
await git.fetchBranch(repo, prod);
|
|
61
|
+
await git.createBranch(repo, branch, `refs/remotes/origin/${prod}`, { track: false });
|
|
62
|
+
return { ok: true, outcome: "created", branch, start_point: `origin/${prod}` };
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return { ok: false, branch, reason: err instanceof Error ? err.message : String(err) };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=working-branch-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-branch-service.js","sourceRoot":"","sources":["../../src/application/working-branch-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAczD;;;;;;;GAOG;AACH,KAAK,UAAU,WAAW,CAAC,GAAY,EAAE,IAAY;IACnD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,OAAO,mEAAmE,KAAK,0JAA0J,CAAC;AAC5O,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAY,EACZ,MAAqB,EACrB,MAAc,EACd,IAAY;IAEZ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iCAAiC,EAAE,CAAC;IACnF,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM;gBACN,MAAM,EAAE,aAAa,IAAI,oBAAoB,MAAM,qBAAqB;aACzE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClE,IAAI,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,uBAAuB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM;gBACN,MAAM,EAAE,mCAAmC,IAAI,8BAA8B,MAAM,EAAE;aACtF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,uBAAuB,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACzF,CAAC;AACH,CAAC"}
|
|
@@ -188,10 +188,15 @@ function custodyGap(read) {
|
|
|
188
188
|
*/
|
|
189
189
|
async function completionOf(deps, session, read, canon) {
|
|
190
190
|
const run = await readRun(deps.fs, locateRun(deps.paths, session.folder));
|
|
191
|
-
|
|
191
|
+
// A started run says it by its own recorded end: no boundary left standing.
|
|
192
|
+
// A run seeded at session creation looks the same before its first advance and
|
|
193
|
+
// carries no evidence either way, so for it the artifact decides — exactly as
|
|
194
|
+
// for a session with no run at all.
|
|
195
|
+
if (run.ok && run.state.applied.length > 0) {
|
|
192
196
|
return run.state.boundary === null ? "converged" : "incomplete";
|
|
197
|
+
}
|
|
193
198
|
if (read.status !== "present")
|
|
194
|
-
return "unknown";
|
|
199
|
+
return run.ok ? "incomplete" : "unknown";
|
|
195
200
|
return (await artifactConverged(deps, read.custody, canon)) ? "converged" : "incomplete";
|
|
196
201
|
}
|
|
197
202
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workline-graph.js","sourceRoot":"","sources":["../../src/application/workline-graph.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workline-graph.js","sourceRoot":"","sources":["../../src/application/workline-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,10 +24,12 @@ async function lifecycleOptions(args, ctx) {
|
|
|
24
24
|
}
|
|
25
25
|
export const checkpointWriteCommand = {
|
|
26
26
|
name: "checkpoint-write",
|
|
27
|
-
describe: "Write CHECKPOINT.md for the
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
27
|
+
describe: "Write CHECKPOINT.md for the session named by --code, or the conversation's associated " +
|
|
28
|
+
"one; never the sole active session on its own. PreCompact hook target: it NEVER " +
|
|
29
|
+
"holds a compaction back. With no resolvable session it exits 0 and, when a session " +
|
|
30
|
+
"is active, parks a refuge checkpoint naming the active ones. An existing CHECKPOINT " +
|
|
31
|
+
"with content is preserved; --force overwrites it. " +
|
|
32
|
+
"Usage: aw checkpoint-write --code <NNN> [--force].",
|
|
31
33
|
async execute(args, ctx) {
|
|
32
34
|
const base = await lifecycleOptions(args, ctx);
|
|
33
35
|
if ("failure" in base)
|
|
@@ -42,22 +44,30 @@ export const checkpointWriteCommand = {
|
|
|
42
44
|
// The host shows a person only stderr here (the stdout envelope stays
|
|
43
45
|
// machine-facing), so what degraded and where the state went goes there.
|
|
44
46
|
if ("continuity" in data)
|
|
45
|
-
writeStderr(degradedNotice(data));
|
|
47
|
+
writeStderr(degradedNotice("la compactación", data));
|
|
46
48
|
return { ok: true, data, exitCode: 0 };
|
|
47
49
|
},
|
|
48
50
|
};
|
|
49
|
-
function degradedNotice(data) {
|
|
51
|
+
function degradedNotice(event, data) {
|
|
50
52
|
const refuge = data.refuge_path !== null ? ` — refugio: ${data.refuge_path}` : "";
|
|
51
|
-
return
|
|
53
|
+
return `${event} continúa sin checkpoint: ${data.reason}${refuge}\n`;
|
|
52
54
|
}
|
|
53
55
|
export const autoCompactOnCloseCommand = {
|
|
54
56
|
name: "auto-compact-on-close",
|
|
55
|
-
describe: "SessionEnd hook target — checkpoint the
|
|
57
|
+
describe: "SessionEnd hook target — checkpoint the session named by --code or associated with the " +
|
|
58
|
+
"conversation, and only that one; unresolved, it parks a refuge and says so on stderr.",
|
|
56
59
|
async execute(args, ctx) {
|
|
57
60
|
const base = await lifecycleOptions(args, ctx);
|
|
58
61
|
if ("failure" in base)
|
|
59
62
|
return base.failure;
|
|
60
63
|
const data = await runAutoCompactOnClose(ctx.fs, ctx.env, ctx.git, ctx.paths, base);
|
|
64
|
+
// Same channel as PreCompact: stderr is what the host shows a person.
|
|
65
|
+
if (data.continuity === "degraded") {
|
|
66
|
+
writeStderr(degradedNotice("el cierre", {
|
|
67
|
+
reason: data.reason ?? "",
|
|
68
|
+
refuge_path: data.refuge_path ?? null,
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
61
71
|
return { ok: true, data, exitCode: 0 };
|
|
62
72
|
},
|
|
63
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-write.js","sourceRoot":"","sources":["../../../src/cli/commands/checkpoint-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGjD;;;;;;;;;;GAUG;AACH,KAAK,UAAU,gBAAgB,CAC7B,IAAgB,EAChB,GAAe;IAEf,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,aAAa,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAe;IAChD,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EACN,
|
|
1
|
+
{"version":3,"file":"checkpoint-write.js","sourceRoot":"","sources":["../../../src/cli/commands/checkpoint-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { findOwningSource, resolveSourceBranches } from "../../application/branch-resolver.js";
|
|
2
|
+
import { applyFixGit, commitFixGit, prepareFixGit, rolesBasisText, validateFixGit, } from "../../application/fix-git-service.js";
|
|
2
3
|
import { runMergeState } from "../../application/merge-state-service.js";
|
|
4
|
+
import { readWorkspaceBlock } from "../../application/parsers/project-block.js";
|
|
3
5
|
import { readRequiredStdin } from "../context-id.js";
|
|
4
6
|
import { flagValue } from "../parser.js";
|
|
5
7
|
import { fail, failSemantic } from "../render.js";
|
|
@@ -17,9 +19,12 @@ export const fixGitCommand = {
|
|
|
17
19
|
if (target === null) {
|
|
18
20
|
return fail("REPO_NOT_FOUND", "no se pudo resolver el repositorio: pasá --source <alias> o --path <ruta>");
|
|
19
21
|
}
|
|
22
|
+
const roles = await rolesOf(ctx, target);
|
|
23
|
+
if ("failure" in roles)
|
|
24
|
+
return failSemantic(roles.failure);
|
|
20
25
|
if (stage === "commit")
|
|
21
|
-
return await runCommit(args, ctx, target.path);
|
|
22
|
-
const prepared = await prepareFixGit(ctx.git, target.path, target.alias);
|
|
26
|
+
return await runCommit(args, ctx, target.path, roles);
|
|
27
|
+
const prepared = await prepareFixGit(ctx.git, target.path, target.alias, roles);
|
|
23
28
|
if (!prepared.ok)
|
|
24
29
|
return failSemantic(prepared.failure);
|
|
25
30
|
if (stage === "prepare") {
|
|
@@ -69,8 +74,11 @@ function renderPrepare(context, request, detail) {
|
|
|
69
74
|
const lines = [
|
|
70
75
|
`fix-git · ${context.conflicts.length} conflicto(s) en ${context.alias ?? context.repo}`,
|
|
71
76
|
` Merge ${context.merge_origin ?? "?"} → ${context.current_branch ?? "?"}`,
|
|
72
|
-
"",
|
|
73
77
|
];
|
|
78
|
+
if (context.roles !== undefined && context.roles.owner === null) {
|
|
79
|
+
lines.push(` Roles ${rolesBasisText(context.roles)}`);
|
|
80
|
+
}
|
|
81
|
+
lines.push("");
|
|
74
82
|
for (const conflict of context.conflicts) {
|
|
75
83
|
const kind = conflict.binary ? " · BINARIO (resolución manual)" : "";
|
|
76
84
|
lines.push(` ${conflict.path} (${conflict.bytes} B)${kind}`);
|
|
@@ -79,7 +87,7 @@ function renderPrepare(context, request, detail) {
|
|
|
79
87
|
lines.push("", ` Request ${request.metrics.request_bytes} B`, "", request.contract);
|
|
80
88
|
return `${lines.join("\n")}\n`;
|
|
81
89
|
}
|
|
82
|
-
async function runCommit(args, ctx, repo) {
|
|
90
|
+
async function runCommit(args, ctx, repo, roles) {
|
|
83
91
|
const message = args.values.get("message");
|
|
84
92
|
if (message === undefined || message.trim().length === 0) {
|
|
85
93
|
return fail("ARGS_INVALID", "commit exige --message <mensaje>");
|
|
@@ -89,11 +97,42 @@ async function runCommit(args, ctx, repo) {
|
|
|
89
97
|
if (!args.flags.has("--confirm")) {
|
|
90
98
|
return fail("CONFIRMATION_REQUIRED", "cerrar el merge es una acción separada: repetí con --confirm si el mensaje es el correcto");
|
|
91
99
|
}
|
|
92
|
-
const result = await commitFixGit(ctx.git, repo, message);
|
|
100
|
+
const result = await commitFixGit(ctx.git, repo, message, roles);
|
|
93
101
|
if (!result.ok)
|
|
94
102
|
return failSemantic(result.failure);
|
|
95
103
|
return { ok: true, data: { stage: "commit", ...result.value }, exitCode: 0 };
|
|
96
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* The branch roles of the source that owns the repo — by alias, by its
|
|
107
|
+
* declared path, or by the `aw/*` unit it sits in — so `--source`, `--path`,
|
|
108
|
+
* the cwd and a worktree all get the same PR-04 guard. With no owner, the
|
|
109
|
+
* workspace defaults: the same chain `resolveSourceBranches` applies elsewhere.
|
|
110
|
+
*/
|
|
111
|
+
async function rolesOf(ctx, target) {
|
|
112
|
+
const block = await readWorkspaceBlock(ctx.fs, ctx.paths.workspaceDir(), ctx.paths.blockMarkers());
|
|
113
|
+
const sources = block?.fuentes ?? [];
|
|
114
|
+
const unitsRoot = await ctx.fs.realPath(ctx.paths.userUnitsDir()).catch(() => undefined);
|
|
115
|
+
const repo = await ctx.fs.realPath(target.path).catch(() => target.path);
|
|
116
|
+
const owner = sources.find((s) => s.alias === target.alias) ??
|
|
117
|
+
findOwningSource(sources, repo, unitsRoot) ??
|
|
118
|
+
findOwningSource(sources, target.path, unitsRoot);
|
|
119
|
+
// An `aw/*` unit is a checkout of some source, but from inside it — no flags,
|
|
120
|
+
// its own root — no WORKSPACE block says which one, nor its branch roles: the
|
|
121
|
+
// unit's key is a one-way hash of the workspace path. Guessing the CLI floor
|
|
122
|
+
// there would let development through under a name it does not have.
|
|
123
|
+
if (owner === null && unitsRoot !== undefined && repo.startsWith(`${unitsRoot}/`)) {
|
|
124
|
+
return {
|
|
125
|
+
failure: {
|
|
126
|
+
code: "FIX_GIT_ROLES_UNKNOWN",
|
|
127
|
+
message: `no se pudieron leer los roles de rama de '${target.path}': es una unidad aw/* y no hay bloque WORKSPACE que la declare`,
|
|
128
|
+
action: "invocá fix-git desde el workspace con --source <alias> o --path <unidad>",
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const roles = resolveSourceBranches(owner ?? { alias: "", path: target.path, main_branch: "" }, block);
|
|
133
|
+
const basis = owner !== null ? "source" : block !== null ? "workspace-defaults" : "cli-floor";
|
|
134
|
+
return { ...roles, owner: owner?.alias ?? null, basis };
|
|
135
|
+
}
|
|
97
136
|
async function resolveRepo(args, ctx) {
|
|
98
137
|
// `source` and `path` are MULTI_VALUE_FLAGS: they route to `valuesMulti`,
|
|
99
138
|
// so `values.get()` silently returns undefined. `flagValue` reads both.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-git.js","sourceRoot":"","sources":["../../../src/cli/commands/fix-git.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"fix-git.js","sourceRoot":"","sources":["../../../src/cli/commands/fix-git.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { WORKLINE_FLOWS } from "../../application/capability/compose.js";
|
|
2
2
|
import { isHarnessId } from "../../application/dev-only-services.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { applyAnnulment, prepareAnnulment, } from "../../application/flow/annul-service.js";
|
|
4
|
+
import { advanceFlow, recoverFlowBoundary, restartFlow, } from "../../application/flow/flow-service.js";
|
|
5
|
+
import { internalActionExecutor, } from "../../application/flow/internal-actions.js";
|
|
5
6
|
import { proveFlowBoundary, } from "../../application/flow/prove.js";
|
|
6
7
|
import { submitFlow } from "../../application/flow/submit.js";
|
|
7
8
|
import { renderDirectiveHuman } from "../../domain/flow/directive.js";
|
|
8
9
|
import { readContextId, readRequiredStdin } from "../context-id.js";
|
|
9
10
|
import { sessionCodeFlag } from "../parser.js";
|
|
10
11
|
import { fail, failSemantic, failSessionResolution } from "../render.js";
|
|
11
|
-
const VERBS = ["advance", "submit", "recover", "prove"];
|
|
12
|
+
const VERBS = ["advance", "submit", "recover", "prove", "restart", "annul"];
|
|
12
13
|
/**
|
|
13
14
|
* The answer envelope, published where an executor can read it WITHOUT running a
|
|
14
15
|
* journey.
|
|
@@ -113,7 +114,7 @@ function readFlowArgs(args, ctx) {
|
|
|
113
114
|
}
|
|
114
115
|
const verb = args.rest[0];
|
|
115
116
|
if (verb === undefined || !VERBS.includes(verb)) {
|
|
116
|
-
return refuse(`uso: aw flow ${VERBS.join(" | ")} --session <código> [--flow <flow> --adopt] [--approval <digest>] [--transition <id>] [--source <alias>] [--artifact <ruta>]`);
|
|
117
|
+
return refuse(`uso: aw flow ${VERBS.join(" | ")} --session <código> [--flow <flow> --adopt] [--approval <digest>] [--transition <id>] [--source <alias>] [--artifact <ruta>] [--from <lote>]`);
|
|
117
118
|
}
|
|
118
119
|
const flow = args.values.get("flow");
|
|
119
120
|
if (flow !== undefined && !WORKLINE_FLOWS.includes(flow)) {
|
|
@@ -135,7 +136,7 @@ function readFlowArgs(args, ctx) {
|
|
|
135
136
|
}
|
|
136
137
|
export const flowCommand = {
|
|
137
138
|
name: "flow",
|
|
138
|
-
describe: `Avanza un recorrido de Workline hasta su primera frontera no determinista y devuelve su directiva. Verbos: ${VERBS.join(" | ")}. La respuesta de submit entra por stdin como JSON y la aprobación de efecto viaja aparte en --approval. recover le devuelve los intentos a la frontera agotada vigente conservando todo lo aplicado, y se niega si esa frontera ya ejerció efectos. Usage: aw flow advance --session <código> [--flow <flow> --adopt] · aw flow recover --session <código> [--transition <id>] · aw flow prove --session <código> [--source <alias>] [--artifact <ruta>].
|
|
139
|
+
describe: `Avanza un recorrido de Workline hasta su primera frontera no determinista y devuelve su directiva. Verbos: ${VERBS.join(" | ")}. La respuesta de submit entra por stdin como JSON y la aprobación de efecto viaja aparte en --approval. recover le devuelve los intentos a la frontera agotada vigente conservando todo lo aplicado, y se niega si esa frontera ya ejerció efectos. restart saca de cualquier estado trabado —frontera agotada con efectos, registro ilegible o sellado mal, anterior a la v11, contador de intentos ilegible o revertido—: archiva el registro y su contador en un archivo con fecha y sello dentro de la sesión, re-adopta el mismo flow (del registro, de la custodia o de --flow) y lo deja en la traza; nunca hace falta tocar .flow-run.json a mano. annul reabre un lote mal acreditado y los posteriores: sin --approval muestra las fases y tareas que reabre y el digest que lo aprueba, sin escribir nada; con ese digest las deja pendientes y abiertas en el plan, retira su sello done si lo tenía, re-adopta la corrida para que las vuelva a inferir y lo deja en la traza; git no se toca. Usage: aw flow advance --session <código> [--flow <flow> --adopt] · aw flow recover --session <código> [--transition <id>] · aw flow prove --session <código> [--source <alias>] [--artifact <ruta>] · aw flow restart --session <código> [--flow <flow>] · aw flow annul --session <código> --from <lote> [--approval <digest>].
|
|
139
140
|
|
|
140
141
|
${ENVELOPE}
|
|
141
142
|
|
|
@@ -183,6 +184,10 @@ ${CHECKOUT}`,
|
|
|
183
184
|
git: ctx.git,
|
|
184
185
|
runtime: ctx.runtime,
|
|
185
186
|
});
|
|
187
|
+
if (verb === "annul")
|
|
188
|
+
return annulVerb(args, ctx, session, executor);
|
|
189
|
+
if (verb === "restart")
|
|
190
|
+
return restartVerb(ctx, session, flow, executor);
|
|
186
191
|
if (verb === "submit") {
|
|
187
192
|
const approval = args.values.get("approval");
|
|
188
193
|
return project(await submitFlow(ctx.fs, ctx.paths, {
|
|
@@ -208,6 +213,8 @@ ${CHECKOUT}`,
|
|
|
208
213
|
const data = result.data;
|
|
209
214
|
if ("proof" in data)
|
|
210
215
|
return `${renderProofHuman(data)}\n`;
|
|
216
|
+
if ("batches" in data)
|
|
217
|
+
return `${renderAnnulHuman(data)}\n`;
|
|
211
218
|
return `${renderDirectiveHuman(data, context.detail)}\n`;
|
|
212
219
|
},
|
|
213
220
|
};
|
|
@@ -229,6 +236,44 @@ function renderProofHuman(receipt) {
|
|
|
229
236
|
JSON.stringify(receipt.proof, null, 2),
|
|
230
237
|
].join("\n");
|
|
231
238
|
}
|
|
239
|
+
/** Archive the stuck run and re-adopt its flow; `--flow` only when nothing records it. */
|
|
240
|
+
async function restartVerb(ctx, session, flow, executor) {
|
|
241
|
+
return project(await restartFlow(ctx.fs, ctx.paths, {
|
|
242
|
+
...session,
|
|
243
|
+
...(flow !== undefined ? { flow } : {}),
|
|
244
|
+
executor,
|
|
245
|
+
git: ctx.git,
|
|
246
|
+
}));
|
|
247
|
+
}
|
|
248
|
+
/** Preview without `--approval`; apply with the digest that preview showed. */
|
|
249
|
+
async function annulVerb(args, ctx, session, executor) {
|
|
250
|
+
const from = args.values.get("from");
|
|
251
|
+
if (from === undefined) {
|
|
252
|
+
return fail("ARGS_INVALID", "uso: aw flow annul --session <código> --from <lote> [--approval <digest>]");
|
|
253
|
+
}
|
|
254
|
+
const approval = args.values.get("approval");
|
|
255
|
+
const annul = { ...session, from, env: ctx.env, executor, git: ctx.git };
|
|
256
|
+
if (approval === undefined)
|
|
257
|
+
return projectAnnul(await prepareAnnulment(ctx.fs, ctx.paths, annul));
|
|
258
|
+
return project(await applyAnnulment(ctx.fs, ctx.paths, { ...annul, approval }));
|
|
259
|
+
}
|
|
260
|
+
/** An annulment preview, read by a person: what reopens, then how to approve it. */
|
|
261
|
+
function renderAnnulHuman(preview) {
|
|
262
|
+
return [
|
|
263
|
+
`anular en ${preview.plan}: ${preview.batches.map((batch) => batch.id).join(", ")}`,
|
|
264
|
+
...preview.batches.map((batch) => ` ${batch.id}: ${batch.phases.map((phase) => `F${phase}`).join(", ")} vuelven a pendiente · reabre ${batch.tasks.join(", ")}`),
|
|
265
|
+
...(preview.unseals_done ? [" el plan pierde su sello done"] : []),
|
|
266
|
+
"no se escribió nada y git no se toca",
|
|
267
|
+
`para aplicarlo: ${preview.next}`,
|
|
268
|
+
].join("\n");
|
|
269
|
+
}
|
|
270
|
+
function projectAnnul(result) {
|
|
271
|
+
if (result.ok)
|
|
272
|
+
return { ok: true, data: result.preview, exitCode: 0 };
|
|
273
|
+
if ("session" in result)
|
|
274
|
+
return failSessionResolution(result.session);
|
|
275
|
+
return failSemantic(result.failure);
|
|
276
|
+
}
|
|
232
277
|
function projectProof(result) {
|
|
233
278
|
if (result.ok)
|
|
234
279
|
return { ok: true, data: result.receipt, exitCode: 0 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../src/cli/commands/flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAEL,WAAW,EACX,mBAAmB,
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../src/cli/commands/flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,109 @@
|
|
|
1
1
|
import { runGitFlow, } from "../../application/git-flow-service.js";
|
|
2
|
+
import { formatGitFlowSourceLine } from "../../application/logging/log-events.js";
|
|
3
|
+
import { attributeCliInvocation, grantProdConsent } from "../../application/prod-consent.js";
|
|
2
4
|
import { flagValue } from "../parser.js";
|
|
3
5
|
import { fail } from "../render.js";
|
|
4
6
|
const ACTIONS = new Set(["sync", "to-dev", "to-qa", "to-prod"]);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return fail("INVALID_INPUT", "Usage: aw git-flow <sync|to-dev|to-qa|to-prod> [--source <alias>] [--all] [--target <branch>] [--dry-run]");
|
|
13
|
-
}
|
|
14
|
-
const source = flagValue(args, "source");
|
|
15
|
-
const target = flagValue(args, "target");
|
|
16
|
-
const input = { action: action };
|
|
17
|
-
if (source !== undefined)
|
|
18
|
-
input.source = source;
|
|
19
|
-
if (target !== undefined)
|
|
20
|
-
input.target = target;
|
|
21
|
-
if (args.flags.has("--all"))
|
|
22
|
-
input.all = true;
|
|
23
|
-
if (args.flags.has("--dry-run"))
|
|
24
|
-
input.dryRun = true;
|
|
25
|
-
const data = await runGitFlow(ctx.fs, ctx.git, ctx.paths, input);
|
|
26
|
-
if (data.status === "error") {
|
|
27
|
-
return fail("GIT_FLOW_ERROR", data.error ?? "git-flow failed", data);
|
|
28
|
-
}
|
|
29
|
-
// A conflict is a paused-but-expected outcome: exitCode 2 (like check-branch
|
|
30
|
-
// strict) so callers/loops can detect "needs resolution" distinct from error.
|
|
31
|
-
const exit = data.status === "conflict" ? 2 : 0;
|
|
32
|
-
return { ok: true, data, exitCode: exit };
|
|
33
|
-
},
|
|
7
|
+
const NEEDS_PERSON = "publicar en PROD lo hace la persona: desde el TUI (`aw`) o desde su propia terminal";
|
|
8
|
+
const DECLINED = "publicación en PROD no confirmada: ninguna rama cambió";
|
|
9
|
+
// "No" by default and no `--yes`: unlike `aw self update`, the one thing that
|
|
10
|
+
// may publish in PROD is the person answering yes to the preview.
|
|
11
|
+
const defaultConfirm = async (message) => {
|
|
12
|
+
const { confirm } = await import("@inquirer/prompts");
|
|
13
|
+
return confirm({ message, default: false });
|
|
34
14
|
};
|
|
15
|
+
export function createGitFlowCommand(confirm = defaultConfirm) {
|
|
16
|
+
return {
|
|
17
|
+
name: "git-flow",
|
|
18
|
+
describe: "Run a per-source git flow. Usage: aw git-flow <sync|to-dev|to-qa|to-prod> " +
|
|
19
|
+
"[--source <alias>]... [--all] [--target <branch>] [--dry-run]. " +
|
|
20
|
+
"Publishing in PROD asks the person in an interactive terminal.",
|
|
21
|
+
async execute(args, ctx) {
|
|
22
|
+
const action = args.rest[0];
|
|
23
|
+
if (!action || !ACTIONS.has(action)) {
|
|
24
|
+
return fail("INVALID_INPUT", "Usage: aw git-flow <sync|to-dev|to-qa|to-prod> [--source <alias>]... [--all] [--target <branch>] [--dry-run]");
|
|
25
|
+
}
|
|
26
|
+
const input = inputFrom(action, args);
|
|
27
|
+
let data = await runGitFlow(ctx.fs, ctx.git, ctx.paths, input);
|
|
28
|
+
if (data.consent_required !== undefined) {
|
|
29
|
+
const consented = await askThePerson(data, ctx, confirm);
|
|
30
|
+
if ("refusal" in consented)
|
|
31
|
+
return consented.refusal;
|
|
32
|
+
data = await runGitFlow(ctx.fs, ctx.git, ctx.paths, {
|
|
33
|
+
...input,
|
|
34
|
+
consent: consented.consent,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
await logFailedSources(data, ctx);
|
|
38
|
+
return outcome(data);
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export const gitFlowCommand = createGitFlowCommand();
|
|
43
|
+
function inputFrom(action, args) {
|
|
44
|
+
const input = { action };
|
|
45
|
+
const sources = args.valuesMulti.get("source") ?? [];
|
|
46
|
+
if (sources.length > 0)
|
|
47
|
+
input.sources = sources;
|
|
48
|
+
const target = flagValue(args, "target");
|
|
49
|
+
if (target !== undefined)
|
|
50
|
+
input.target = target;
|
|
51
|
+
if (args.flags.has("--all"))
|
|
52
|
+
input.all = true;
|
|
53
|
+
if (args.flags.has("--dry-run"))
|
|
54
|
+
input.dryRun = true;
|
|
55
|
+
return input;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The preview goes first, and only an attributable invocation is asked. No
|
|
59
|
+
* flag stands in for the answer: the consent is built from the yes itself.
|
|
60
|
+
*/
|
|
61
|
+
async function askThePerson(preview, ctx, confirm) {
|
|
62
|
+
const sources = preview.consent_required?.sources ?? [];
|
|
63
|
+
const planDigest = preview.consent_required?.plan ?? "";
|
|
64
|
+
const attribution = attributeCliInvocation(ctx.env, ctx.process.hasTty());
|
|
65
|
+
const plan = renderPreview(preview);
|
|
66
|
+
if (!attribution.person) {
|
|
67
|
+
return {
|
|
68
|
+
refusal: fail("GIT_FLOW_NEEDS_PERSON", `${NEEDS_PERSON} (${attribution.reason}).\n${plan}`, preview),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
let yes;
|
|
72
|
+
try {
|
|
73
|
+
yes = await confirm(`${plan}\n\n¿Publicar en PROD ${sources.join(", ")}?`);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Inquirer rejects on Ctrl-C/Esc: a closed prompt is a no.
|
|
77
|
+
yes = false;
|
|
78
|
+
}
|
|
79
|
+
const consent = yes ? grantProdConsent(attribution, sources, planDigest) : null;
|
|
80
|
+
return consent === null
|
|
81
|
+
? { refusal: fail("GIT_FLOW_PROD_DECLINED", DECLINED, preview) }
|
|
82
|
+
: { consent };
|
|
83
|
+
}
|
|
84
|
+
/** One line per source: the steps that would run, with the real branch names. */
|
|
85
|
+
export function renderPreview(preview) {
|
|
86
|
+
const lines = preview.results.map((r) => r.status === "error"
|
|
87
|
+
? `${r.source}: ${r.error ?? "error"}`
|
|
88
|
+
: `${r.source}: ${r.steps.map((s) => s.preview ?? s.step).join(" → ")}`);
|
|
89
|
+
return ["Se publicará en la rama de PROD de cada fuente listada:", ...lines].join("\n");
|
|
90
|
+
}
|
|
91
|
+
/** The daily log gets the source, the step and git's stderr of every source that did not finish. */
|
|
92
|
+
async function logFailedSources(data, ctx) {
|
|
93
|
+
for (const result of data.results) {
|
|
94
|
+
if (result.status === "ok")
|
|
95
|
+
continue;
|
|
96
|
+
const level = result.status === "conflict" ? "warn" : "error";
|
|
97
|
+
await ctx.logger?.log(level, formatGitFlowSourceLine(data.action, result));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function outcome(data) {
|
|
101
|
+
if (data.status === "error") {
|
|
102
|
+
return fail("GIT_FLOW_ERROR", data.error ?? "git-flow failed", data);
|
|
103
|
+
}
|
|
104
|
+
// A conflict is a paused-but-expected outcome: exitCode 2 (like check-branch
|
|
105
|
+
// strict) so callers/loops can detect "needs resolution" distinct from error.
|
|
106
|
+
const exit = data.status === "conflict" ? 2 : 0;
|
|
107
|
+
return { ok: true, data, exitCode: exit };
|
|
108
|
+
}
|
|
35
109
|
//# sourceMappingURL=git-flow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-flow.js","sourceRoot":"","sources":["../../../src/cli/commands/git-flow.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"git-flow.js","sourceRoot":"","sources":["../../../src/cli/commands/git-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,GACX,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE7F,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,MAAM,OAAO,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAErF,MAAM,YAAY,GAChB,qFAAqF,CAAC;AACxF,MAAM,QAAQ,GAAG,wDAAwD,CAAC;AAI1E,8EAA8E;AAC9E,kEAAkE;AAClE,MAAM,cAAc,GAAc,KAAK,EAAE,OAAO,EAAE,EAAE;IAClD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,UAAqB,cAAc;IACtE,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EACN,4EAA4E;YAC5E,iEAAiE;YACjE,gEAAgE;QAClE,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CACT,eAAe,EACf,8GAA8G,CAC/G,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,MAAuB,EAAE,IAAI,CAAC,CAAC;YACvD,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;gBACzD,IAAI,SAAS,IAAI,SAAS;oBAAE,OAAO,SAAS,CAAC,OAAO,CAAC;gBACrD,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE;oBAClD,GAAG,KAAK;oBACR,OAAO,EAAE,SAAS,CAAC,OAAO;iBAC3B,CAAC,CAAC;YACL,CAAC;YACD,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAe,oBAAoB,EAAE,CAAC;AAEjE,SAAS,SAAS,CAAC,MAAqB,EAAE,IAAgB;IACxD,MAAM,KAAK,GAAiB,EAAE,MAAM,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAChD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CACzB,OAAsB,EACtB,GAAe,EACf,OAAkB;IAIlB,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,OAAO,IAAI,EAAE,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,IAAI,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,IAAI,CACX,uBAAuB,EACvB,GAAG,YAAY,KAAK,WAAW,CAAC,MAAM,OAAO,IAAI,EAAE,EACnD,OAAO,CACR;SACF,CAAC;IACJ,CAAC;IACD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;QAC3D,GAAG,GAAG,KAAK,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,OAAO,OAAO,KAAK,IAAI;QACrB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;QAChE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;AAClB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,MAAM,KAAK,OAAO;QAClB,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,IAAI,OAAO,EAAE;QACtC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC1E,CAAC;IACF,OAAO,CAAC,yDAAyD,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,oGAAoG;AACpG,KAAK,UAAU,gBAAgB,CAAC,IAAmB,EAAE,GAAe;IAClE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAmB;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,IAAI,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,IAAI,GAAU,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC"}
|