@tacuchi/agent-workflow-cli 25.6.0 → 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 +6 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.js +20 -1
- package/dist/cli/parser.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
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { resolveSourceBranches } from "./branch-resolver.js";
|
|
1
|
+
import { isPlainBranchName, isWorkingBranch, resolveSourceBranches, } from "./branch-resolver.js";
|
|
2
2
|
import { readWorkspaceBlock } from "./parsers/project-block.js";
|
|
3
|
+
import { spendProdConsent } from "./prod-consent.js";
|
|
4
|
+
import { semanticDigest } from "./semantic-operation/protocol.js";
|
|
3
5
|
import { ensureWorklineMaterialized } from "./workspace-materialization-service.js";
|
|
6
|
+
export const PROD_CONSENT_REQUIRED = "publicar en PROD exige la confirmación de la persona";
|
|
7
|
+
export const ALL_REJECTED_FOR_PROD = "--all no vale para publicar en PROD: nombrá cada fuente con --source, repetido";
|
|
8
|
+
/** How many foreign commits a refusal names before summarizing the rest. */
|
|
9
|
+
const FOREIGN_COMMITS_SHOWN = 5;
|
|
4
10
|
const VALID_ACTIONS = new Set(["sync", "to-dev", "to-qa", "to-prod"]);
|
|
5
11
|
export async function runGitFlow(fs, git, paths, input) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (input.all === true && input.target !== undefined) {
|
|
10
|
-
return errorResult(input.action, "Use --target with a single --source, not --all");
|
|
11
|
-
}
|
|
12
|
+
const invalid = invalidInput(input);
|
|
13
|
+
if (invalid !== null)
|
|
14
|
+
return errorResult(input.action, invalid);
|
|
12
15
|
const block = await readWorkspaceBlock(fs, paths.workspaceDir(), paths.blockMarkers());
|
|
13
16
|
const sources = block?.fuentes ?? [];
|
|
14
17
|
if (sources.length === 0) {
|
|
@@ -19,25 +22,18 @@ export async function runGitFlow(fs, git, paths, input) {
|
|
|
19
22
|
return errorResult(input.action, selected.error);
|
|
20
23
|
}
|
|
21
24
|
const dryRun = input.dryRun === true;
|
|
25
|
+
const entries = selected.sources.map((source) => planSource(source, resolveSourceBranches(source, block), input));
|
|
26
|
+
const gated = dryRun ? null : prodPublicationGate(input, entries);
|
|
27
|
+
if (gated !== null)
|
|
28
|
+
return gated;
|
|
22
29
|
const results = [];
|
|
23
30
|
let overall = "ok";
|
|
24
31
|
let materialized = false;
|
|
25
|
-
for (const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (noop !== null) {
|
|
31
|
-
results.push({
|
|
32
|
-
source: source.alias,
|
|
33
|
-
status: "ok",
|
|
34
|
-
steps: [{ step: input.action, status: "skipped", detail: noop }],
|
|
35
|
-
});
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
const ops = buildPlan(input.action, branches, input.target);
|
|
39
|
-
if (dryRun) {
|
|
40
|
-
results.push({ source: source.alias, status: "ok", steps: ops.map(toDryStep) });
|
|
32
|
+
for (const entry of entries) {
|
|
33
|
+
if (entry.ops === null || dryRun) {
|
|
34
|
+
const result = entry.ops === null ? entry.result : dryResult(entry.source.alias, entry.ops);
|
|
35
|
+
results.push(result);
|
|
36
|
+
overall = worst(overall, result.status);
|
|
41
37
|
continue;
|
|
42
38
|
}
|
|
43
39
|
// Git is a mutation too, even though it goes through the Git port rather
|
|
@@ -50,7 +46,7 @@ export async function runGitFlow(fs, git, paths, input) {
|
|
|
50
46
|
// Any throw belongs to THIS source, never to the batch: the precondition
|
|
51
47
|
// probes (isMerging/isDirty) reject when the path is not a usable repo, and
|
|
52
48
|
// an uncaught one would strand every remaining source.
|
|
53
|
-
const sourceResult = await executePlan(git, source, ops).catch((err) => sourceError(source.alias, err instanceof Error ? err.message : String(err)));
|
|
49
|
+
const sourceResult = await executePlan(git, entry.source, entry.ops).catch((err) => sourceError(entry.source.alias, err instanceof Error ? err.message : String(err)));
|
|
54
50
|
results.push(sourceResult);
|
|
55
51
|
// Continue-on-failure: one source failing must not strand the rest. Each
|
|
56
52
|
// source is independent (its own repo), so the batch reports every one and
|
|
@@ -59,6 +55,114 @@ export async function runGitFlow(fs, git, paths, input) {
|
|
|
59
55
|
}
|
|
60
56
|
return { action: input.action, dry_run: dryRun, status: overall, results };
|
|
61
57
|
}
|
|
58
|
+
function invalidInput(input) {
|
|
59
|
+
if (!VALID_ACTIONS.has(input.action))
|
|
60
|
+
return `Unknown action: ${input.action}`;
|
|
61
|
+
if (input.all === true && input.target !== undefined) {
|
|
62
|
+
return "Use --target with a single --source, not --all";
|
|
63
|
+
}
|
|
64
|
+
if (new Set(input.sources ?? []).size > 1 && input.target !== undefined) {
|
|
65
|
+
return "Use --target with a single --source";
|
|
66
|
+
}
|
|
67
|
+
if (input.target !== undefined && !isPlainBranchName(input.target)) {
|
|
68
|
+
return `--target ${input.target} no es un nombre de rama simple: nombrá la rama tal cual, sin refs/, heads/ ni @{…}`;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A plan that pushes to a source's PROD branch runs only with the person's
|
|
74
|
+
* consent for exactly those sources. Enforced here, in the service, so no caller
|
|
75
|
+
* — the CLI, the TUI or one written later — publishes without it.
|
|
76
|
+
*/
|
|
77
|
+
function prodPublicationGate(input, entries) {
|
|
78
|
+
const prodSources = entries.filter((e) => e.publishesProd).map((e) => e.source.alias);
|
|
79
|
+
if (prodSources.length === 0)
|
|
80
|
+
return null;
|
|
81
|
+
if (input.all === true)
|
|
82
|
+
return errorResult(input.action, ALL_REJECTED_FOR_PROD);
|
|
83
|
+
const plan = planDigest(entries);
|
|
84
|
+
if (spendProdConsent(input.consent, prodSources, plan))
|
|
85
|
+
return null;
|
|
86
|
+
return consentPreview(input.action, entries, prodSources, plan);
|
|
87
|
+
}
|
|
88
|
+
/** What the person is shown and what runs are the same thing only if this matches. */
|
|
89
|
+
function planDigest(entries) {
|
|
90
|
+
return semanticDigest(entries.map((e) => ({
|
|
91
|
+
source: e.source.alias,
|
|
92
|
+
path: e.source.path,
|
|
93
|
+
ops: e.ops,
|
|
94
|
+
result: e.ops === null ? e.result : undefined,
|
|
95
|
+
})));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Plan every source before touching any: whether the call publishes in PROD is
|
|
99
|
+
* a fact about the whole plan, and consent is asked for it before the first step.
|
|
100
|
+
*/
|
|
101
|
+
function planSource(source, branches, input) {
|
|
102
|
+
// Promoting work→dev when they are the same branch would merge a branch onto
|
|
103
|
+
// itself: report it as done instead of running redundant merges.
|
|
104
|
+
const noop = noopReason(input.action, branches, input.target);
|
|
105
|
+
if (noop !== null) {
|
|
106
|
+
const steps = [{ step: input.action, status: "skipped", detail: noop }];
|
|
107
|
+
return {
|
|
108
|
+
source,
|
|
109
|
+
ops: null,
|
|
110
|
+
result: { source: source.alias, status: "ok", steps },
|
|
111
|
+
publishesProd: false,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const lookalike = prodLookalike(input.target, branches.prod);
|
|
115
|
+
if (lookalike !== null) {
|
|
116
|
+
return {
|
|
117
|
+
source,
|
|
118
|
+
ops: null,
|
|
119
|
+
result: sourceError(source.alias, lookalike),
|
|
120
|
+
publishesProd: false,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
const ops = buildPlan(input.action, branches, input.target);
|
|
124
|
+
const forbidden = devIntoWorkingBranch(ops, branches);
|
|
125
|
+
if (forbidden !== null) {
|
|
126
|
+
return {
|
|
127
|
+
source,
|
|
128
|
+
ops: null,
|
|
129
|
+
result: sourceError(source.alias, forbidden),
|
|
130
|
+
publishesProd: false,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const publishesProd = ops.some((op) => op.kind === "push" && op.branch === branches.prod);
|
|
134
|
+
return { source, ops, publishesProd };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A `--target` that differs from PROD only in case: on a case-insensitive
|
|
138
|
+
* filesystem it is PROD's own ref file, while the publication check compares
|
|
139
|
+
* names exactly. Refused rather than guessed either way.
|
|
140
|
+
*/
|
|
141
|
+
function prodLookalike(target, prod) {
|
|
142
|
+
if (target === undefined || target === prod)
|
|
143
|
+
return null;
|
|
144
|
+
return target.toLowerCase() === prod.toLowerCase()
|
|
145
|
+
? `--target ${target} difiere de la rama de PROD ${prod} sólo en mayúsculas: nombrala tal cual`
|
|
146
|
+
: null;
|
|
147
|
+
}
|
|
148
|
+
/** What would run, per source, with the real branches — and nothing ran. */
|
|
149
|
+
function consentPreview(action, entries, prodSources, plan) {
|
|
150
|
+
const results = entries.map((entry) => entry.ops === null
|
|
151
|
+
? entry.result
|
|
152
|
+
: {
|
|
153
|
+
source: entry.source.alias,
|
|
154
|
+
status: "ok",
|
|
155
|
+
steps: entry.ops.map((op) => previewStep(op, "vista previa")),
|
|
156
|
+
});
|
|
157
|
+
return {
|
|
158
|
+
action,
|
|
159
|
+
dry_run: false,
|
|
160
|
+
status: "error",
|
|
161
|
+
results,
|
|
162
|
+
error: PROD_CONSENT_REQUIRED,
|
|
163
|
+
consent_required: { sources: prodSources, plan },
|
|
164
|
+
};
|
|
165
|
+
}
|
|
62
166
|
/** Severity order of the batch status: a later ok never masks an earlier failure. */
|
|
63
167
|
const STATUS_SEVERITY = { ok: 0, conflict: 1, error: 2 };
|
|
64
168
|
function worst(a, b) {
|
|
@@ -69,14 +173,18 @@ function selectSources(sources, input) {
|
|
|
69
173
|
if (input.all === true) {
|
|
70
174
|
return { sources };
|
|
71
175
|
}
|
|
72
|
-
|
|
176
|
+
const named = [...new Set(input.sources ?? (input.source ? [input.source] : []))];
|
|
177
|
+
if (named.length === 0) {
|
|
73
178
|
return { error: "Specify --source <alias> or --all" };
|
|
74
179
|
}
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
180
|
+
const selected = [];
|
|
181
|
+
for (const alias of named) {
|
|
182
|
+
const match = sources.find((s) => s.alias === alias);
|
|
183
|
+
if (!match)
|
|
184
|
+
return { error: `Unknown source: ${alias}` };
|
|
185
|
+
selected.push(match);
|
|
78
186
|
}
|
|
79
|
-
return { sources:
|
|
187
|
+
return { sources: selected };
|
|
80
188
|
}
|
|
81
189
|
/**
|
|
82
190
|
* Why this action has nothing to do for this source, or null when it does.
|
|
@@ -108,12 +216,7 @@ function buildPlan(action, branches, target) {
|
|
|
108
216
|
return [
|
|
109
217
|
...syncPlan(prod, work),
|
|
110
218
|
{ kind: "checkout", branch: dest, label: `checkout ${dest}` },
|
|
111
|
-
{
|
|
112
|
-
kind: "merge",
|
|
113
|
-
from: work,
|
|
114
|
-
onto: dest,
|
|
115
|
-
label: `merge work→${dest === prod ? "prod" : dest}`,
|
|
116
|
-
},
|
|
219
|
+
landOp(work, dest, prod, `merge work→${dest === prod ? "prod" : dest}`),
|
|
117
220
|
{ kind: "push", branch: dest, label: `push ${dest}` },
|
|
118
221
|
];
|
|
119
222
|
}
|
|
@@ -123,6 +226,40 @@ function buildPlan(action, branches, target) {
|
|
|
123
226
|
// to-qa
|
|
124
227
|
return promotePlan(prod, work, target ?? branches.qa, "qa", branches.qa);
|
|
125
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* PR-04: development never flows into a working branch. Checked on the plan,
|
|
231
|
+
* before git is touched, so no subcommand and no `--target` can build that merge
|
|
232
|
+
* — the case that reaches it is a source whose working branch fell back to the
|
|
233
|
+
* development default, promoted onto a feature or `aw/*` branch.
|
|
234
|
+
*/
|
|
235
|
+
function devIntoWorkingBranch(ops, branches) {
|
|
236
|
+
const dev = new Set([branches.dev, `origin/${branches.dev}`]);
|
|
237
|
+
for (const op of ops) {
|
|
238
|
+
// A workspace whose development default IS the PROD branch still syncs PROD
|
|
239
|
+
// into its working branches: that merge is PROD's, whatever the name says.
|
|
240
|
+
if (op.kind !== "merge" || op.from === branches.prod)
|
|
241
|
+
continue;
|
|
242
|
+
if (dev.has(op.from) && isWorkingBranch(op.onto, branches)) {
|
|
243
|
+
return `PR-04: el plan mezclaría la rama de desarrollo ${op.from} en la rama de trabajo ${op.onto}; git-flow no trae desarrollo a una rama de trabajo`;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
/** Update a branch from origin: PROD only by fast-forward, the rest by its homonym. */
|
|
249
|
+
function refreshOp(branch, prod, work, checkout) {
|
|
250
|
+
return branch === prod
|
|
251
|
+
? { kind: "refresh-prod", branch, work, checkout, label: `pull ${branch}` }
|
|
252
|
+
: { kind: "refresh", branch, checkout, label: `pull ${branch}` };
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Land `from` on `onto`. Onto PROD it is a fast-forward: after `merge prod→work`
|
|
256
|
+
* the working branch already contains PROD, and a merge commit there would be
|
|
257
|
+
* a commit of no working branch — one `merge.ff=false` in the person's config
|
|
258
|
+
* and a failed push could never be resumed.
|
|
259
|
+
*/
|
|
260
|
+
function landOp(from, onto, prod, label) {
|
|
261
|
+
return { kind: "merge", from, onto, fastForward: onto === prod, label };
|
|
262
|
+
}
|
|
126
263
|
/**
|
|
127
264
|
* sync, then land prod and work onto a promotion branch and push it. Shared by
|
|
128
265
|
* to-dev and to-qa — they differ only in which role names the destination.
|
|
@@ -134,20 +271,20 @@ function promotePlan(prod, work, dest, roleName, roleBranch) {
|
|
|
134
271
|
return [
|
|
135
272
|
...syncPlan(prod, work),
|
|
136
273
|
{ kind: "checkout", branch: dest, label: `checkout ${dest}` },
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
274
|
+
refreshOp(dest, prod, work, false),
|
|
275
|
+
landOp(prod, dest, prod, `merge prod→${label}`),
|
|
276
|
+
landOp(work, dest, prod, `merge work→${label}`),
|
|
140
277
|
{ kind: "push", branch: dest, label: `push ${dest}` },
|
|
141
278
|
];
|
|
142
279
|
}
|
|
143
280
|
/** sync sequence onto a work-role branch (overridable by `--target`). */
|
|
144
281
|
function syncPlan(prod, workDest) {
|
|
145
282
|
return [
|
|
146
|
-
|
|
283
|
+
refreshOp(workDest, prod, workDest, true),
|
|
147
284
|
{ kind: "checkout", branch: prod, label: `checkout ${prod}` },
|
|
148
|
-
|
|
285
|
+
refreshOp(prod, prod, workDest, false),
|
|
149
286
|
{ kind: "checkout", branch: workDest, label: `checkout ${workDest}` },
|
|
150
|
-
|
|
287
|
+
landOp(prod, workDest, prod, "merge prod→work"),
|
|
151
288
|
];
|
|
152
289
|
}
|
|
153
290
|
// --- execution ----------------------------------------------------------------
|
|
@@ -157,16 +294,16 @@ async function executePlan(git, source, ops) {
|
|
|
157
294
|
// refuse to run over it (re-running after resolve+commit is the resume path,
|
|
158
295
|
// by which point MERGE_HEAD is cleared). A dirty tree would break `checkout`.
|
|
159
296
|
if (await git.isMerging(repo)) {
|
|
160
|
-
return
|
|
297
|
+
return pendingMerge(git, source.alias, repo);
|
|
161
298
|
}
|
|
162
299
|
if (await git.isDirty(repo)) {
|
|
163
300
|
return sourceError(source.alias, "Working tree has uncommitted changes — commit or stash before running git-flow.");
|
|
164
301
|
}
|
|
165
302
|
const steps = [];
|
|
166
303
|
for (const op of ops) {
|
|
167
|
-
let
|
|
304
|
+
let outcome;
|
|
168
305
|
try {
|
|
169
|
-
|
|
306
|
+
outcome = await runOp(git, repo, op);
|
|
170
307
|
}
|
|
171
308
|
catch (err) {
|
|
172
309
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -178,52 +315,168 @@ async function executePlan(git, source, ops) {
|
|
|
178
315
|
error: `${op.label} failed: ${message}`,
|
|
179
316
|
};
|
|
180
317
|
}
|
|
181
|
-
|
|
182
|
-
|
|
318
|
+
const stopped = recordOutcome(source.alias, steps, op, outcome);
|
|
319
|
+
if (stopped !== null)
|
|
320
|
+
return stopped;
|
|
321
|
+
}
|
|
322
|
+
return { source: source.alias, status: "ok", steps };
|
|
323
|
+
}
|
|
324
|
+
/** Append the op's step; a conflict or a refusal ends the source and is returned. */
|
|
325
|
+
function recordOutcome(alias, steps, op, outcome) {
|
|
326
|
+
switch (outcome.kind) {
|
|
327
|
+
case "conflict":
|
|
328
|
+
steps.push({ step: op.label, status: "conflict", detail: `paused on ${outcome.onto}` });
|
|
183
329
|
return {
|
|
184
|
-
source:
|
|
330
|
+
source: alias,
|
|
185
331
|
status: "conflict",
|
|
186
332
|
steps,
|
|
187
|
-
paused_at:
|
|
188
|
-
|
|
333
|
+
paused_at: outcome.onto,
|
|
334
|
+
merge_origin: outcome.from,
|
|
335
|
+
conflicted_files: outcome.files,
|
|
189
336
|
};
|
|
190
|
-
|
|
191
|
-
|
|
337
|
+
case "refused":
|
|
338
|
+
steps.push({ step: op.label, status: "skipped", detail: outcome.reason });
|
|
339
|
+
return { source: alias, status: "error", steps, error: `${op.label}: ${outcome.reason}` };
|
|
340
|
+
case "skipped":
|
|
341
|
+
steps.push({ step: op.label, status: "skipped", detail: outcome.detail });
|
|
342
|
+
return null;
|
|
343
|
+
case "ok":
|
|
344
|
+
steps.push({
|
|
345
|
+
step: op.label,
|
|
346
|
+
status: "ok",
|
|
347
|
+
...(outcome.detail ? { detail: outcome.detail } : {}),
|
|
348
|
+
});
|
|
349
|
+
return null;
|
|
192
350
|
}
|
|
193
|
-
|
|
351
|
+
}
|
|
352
|
+
/** A merge left half-done by an earlier run, reported with where it sits and what brought it. */
|
|
353
|
+
async function pendingMerge(git, alias, repo) {
|
|
354
|
+
// `rev-parse --abbrev-ref` answers the literal "HEAD" when detached.
|
|
355
|
+
const branch = await git.currentBranch(repo);
|
|
356
|
+
const onto = branch === undefined || branch === "HEAD" ? "HEAD" : branch;
|
|
357
|
+
const from = (await git.mergeOrigin(repo)) ?? null;
|
|
358
|
+
const where = onto === "HEAD" ? "un HEAD desacoplado, sin rama que git sepa nombrar" : onto;
|
|
359
|
+
const brought = from ?? "una rama que git no sabe nombrar";
|
|
360
|
+
return {
|
|
361
|
+
source: alias,
|
|
362
|
+
status: "error",
|
|
363
|
+
steps: [],
|
|
364
|
+
paused_at: onto,
|
|
365
|
+
merge_origin: from,
|
|
366
|
+
error: `hay un merge a medias sobre ${where}, traído por ${brought}: resolvelo y commitealo, y volvé a correr`,
|
|
367
|
+
};
|
|
194
368
|
}
|
|
195
369
|
function sourceError(alias, message) {
|
|
196
370
|
return { source: alias, status: "error", steps: [], error: message };
|
|
197
371
|
}
|
|
198
|
-
/** Run one op.
|
|
372
|
+
/** Run one op. A git failure throws; a refusal or a conflict is an outcome. */
|
|
199
373
|
async function runOp(git, repo, op) {
|
|
200
374
|
switch (op.kind) {
|
|
201
|
-
case "
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
375
|
+
case "refresh":
|
|
376
|
+
return refreshBranch(git, repo, op.branch, op.checkout);
|
|
377
|
+
case "refresh-prod":
|
|
378
|
+
if (op.checkout)
|
|
379
|
+
await git.checkout(repo, op.branch);
|
|
380
|
+
return refreshProd(git, repo, op.branch, op.work);
|
|
205
381
|
case "checkout":
|
|
206
382
|
await git.checkout(repo, op.branch);
|
|
207
|
-
return
|
|
208
|
-
case "pull":
|
|
209
|
-
await git.pull(repo);
|
|
210
|
-
return null;
|
|
383
|
+
return { kind: "ok" };
|
|
211
384
|
case "push":
|
|
212
385
|
await git.push(repo, op.branch);
|
|
213
|
-
return
|
|
214
|
-
case "merge":
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
386
|
+
return { kind: "ok" };
|
|
387
|
+
case "merge":
|
|
388
|
+
if (!op.fastForward)
|
|
389
|
+
return mergeOnto(git, repo, op.from, op.onto);
|
|
390
|
+
await git.fastForward(repo, `refs/heads/${op.from}`);
|
|
391
|
+
return { kind: "ok" };
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
async function mergeOnto(git, repo, from, onto) {
|
|
395
|
+
const result = await git.merge(repo, from);
|
|
396
|
+
if (result.ok)
|
|
397
|
+
return { kind: "ok" };
|
|
398
|
+
const files = result.conflicted.length > 0 ? result.conflicted : await git.conflictedFiles(repo);
|
|
399
|
+
return { kind: "conflict", onto, from, files };
|
|
400
|
+
}
|
|
401
|
+
/** Bring only `origin/<branch>`; a branch origin does not have is skipped, not failed. */
|
|
402
|
+
async function refreshBranch(git, repo, branch, checkout) {
|
|
403
|
+
if (checkout)
|
|
404
|
+
await git.checkout(repo, branch);
|
|
405
|
+
if (!(await git.remoteHasBranch(repo, branch))) {
|
|
406
|
+
return { kind: "skipped", detail: `origin no tiene ${branch}: no hay homónima que traer` };
|
|
222
407
|
}
|
|
408
|
+
await git.fetchBranch(repo, branch);
|
|
409
|
+
return mergeOnto(git, repo, `origin/${branch}`, branch);
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Move the checked-out PROD branch only to its own remote, and only forward.
|
|
413
|
+
*
|
|
414
|
+
* Ahead is the one case that needs judging. A push that never reached origin
|
|
415
|
+
* leaves PROD ahead with commits of the working branch, and repeating the
|
|
416
|
+
* action must be able to finish it; anything else ahead — the octopus merge of
|
|
417
|
+
* GIT-01, a stray commit — is not ours to publish, so the source stops.
|
|
418
|
+
*/
|
|
419
|
+
async function refreshProd(git, repo, prod, work) {
|
|
420
|
+
const remote = `origin/${prod}`;
|
|
421
|
+
if (!(await git.remoteHasBranch(repo, prod))) {
|
|
422
|
+
return {
|
|
423
|
+
kind: "refused",
|
|
424
|
+
reason: `origin no tiene ${prod}: la rama de PROD no se toca sin su remoto`,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
await git.fetchBranch(repo, prod);
|
|
428
|
+
// Full ref names: a tag called like PROD would otherwise answer for the branch.
|
|
429
|
+
const local = `refs/heads/${prod}`;
|
|
430
|
+
const remoteRef = `refs/remotes/${remote}`;
|
|
431
|
+
const { ahead, behind } = await git.aheadBehind(repo, local, remoteRef);
|
|
432
|
+
if (ahead === 0) {
|
|
433
|
+
await git.fastForward(repo, remoteRef);
|
|
434
|
+
return { kind: "ok" };
|
|
435
|
+
}
|
|
436
|
+
if (behind > 0) {
|
|
437
|
+
return {
|
|
438
|
+
kind: "refused",
|
|
439
|
+
reason: `${prod} divergió de ${remote} (${ahead} commits propios y ${behind} del remoto): no se mueve`,
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
const foreign = await git.revList(repo, local, [remoteRef, `refs/heads/${work}`]);
|
|
443
|
+
if (foreign.length > 0) {
|
|
444
|
+
return {
|
|
445
|
+
kind: "refused",
|
|
446
|
+
reason: `${prod} está adelantada con commits que no son de ${work}: ${summarizeCommits(foreign)}`,
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
return {
|
|
450
|
+
kind: "ok",
|
|
451
|
+
detail: `${prod} va por delante de ${remote} sólo con commits de ${work} (${ahead}): se conservan`,
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
function summarizeCommits(shas) {
|
|
455
|
+
const shown = shas.slice(0, FOREIGN_COMMITS_SHOWN).map((sha) => sha.slice(0, 7));
|
|
456
|
+
const rest = shas.length - shown.length;
|
|
457
|
+
return rest > 0 ? `${shown.join(", ")} y ${rest} más` : shown.join(", ");
|
|
223
458
|
}
|
|
224
459
|
// --- helpers ------------------------------------------------------------------
|
|
225
|
-
function
|
|
226
|
-
return {
|
|
460
|
+
function dryResult(alias, ops) {
|
|
461
|
+
return { source: alias, status: "ok", steps: ops.map((op) => previewStep(op, "dry-run")) };
|
|
462
|
+
}
|
|
463
|
+
function previewStep(op, detail) {
|
|
464
|
+
return { step: op.label, status: "skipped", detail, preview: previewOf(op) };
|
|
465
|
+
}
|
|
466
|
+
/** No git is read to preview, so bringing a homonym is shown as conditional on it existing. */
|
|
467
|
+
function previewOf(op) {
|
|
468
|
+
switch (op.kind) {
|
|
469
|
+
case "refresh":
|
|
470
|
+
return `pull ${op.branch} (desde origin/${op.branch}, si existe)`;
|
|
471
|
+
case "refresh-prod":
|
|
472
|
+
return `pull ${op.branch} (sólo fast-forward hasta origin/${op.branch})`;
|
|
473
|
+
case "checkout":
|
|
474
|
+
return `checkout ${op.branch}`;
|
|
475
|
+
case "merge":
|
|
476
|
+
return `merge ${op.from}→${op.onto}`;
|
|
477
|
+
case "push":
|
|
478
|
+
return `push ${op.branch}`;
|
|
479
|
+
}
|
|
227
480
|
}
|
|
228
481
|
function errorResult(action, message) {
|
|
229
482
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-flow-service.js","sourceRoot":"","sources":["../../src/application/git-flow-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-flow-service.js","sourceRoot":"","sources":["../../src/application/git-flow-service.ts"],"names":[],"mappings":"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"}
|