@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.
Files changed (148) hide show
  1. package/CHANGELOG.md +4368 -0
  2. package/README.md +1 -1
  3. package/dist/adapters/git-cli.js +74 -6
  4. package/dist/adapters/git-cli.js.map +1 -1
  5. package/dist/adapters/node-file-system.js +39 -2
  6. package/dist/adapters/node-file-system.js.map +1 -1
  7. package/dist/application/branch-resolver.js +34 -1
  8. package/dist/application/branch-resolver.js.map +1 -1
  9. package/dist/application/checkpoint-write-service.js +161 -39
  10. package/dist/application/checkpoint-write-service.js.map +1 -1
  11. package/dist/application/dates.js +12 -0
  12. package/dist/application/dates.js.map +1 -1
  13. package/dist/application/fix-git-service.js +83 -13
  14. package/dist/application/fix-git-service.js.map +1 -1
  15. package/dist/application/flow/advance.js +24 -3
  16. package/dist/application/flow/advance.js.map +1 -1
  17. package/dist/application/flow/annul-service.js +159 -0
  18. package/dist/application/flow/annul-service.js.map +1 -0
  19. package/dist/application/flow/flow-service.js +212 -49
  20. package/dist/application/flow/flow-service.js.map +1 -1
  21. package/dist/application/flow/internal-actions.js +23 -3
  22. package/dist/application/flow/internal-actions.js.map +1 -1
  23. package/dist/application/flow/internal-drive.js +51 -19
  24. package/dist/application/flow/internal-drive.js.map +1 -1
  25. package/dist/application/flow/run-projection.js +21 -5
  26. package/dist/application/flow/run-projection.js.map +1 -1
  27. package/dist/application/flow/run-state-service.js +108 -35
  28. package/dist/application/flow/run-state-service.js.map +1 -1
  29. package/dist/application/flow/submit.js +63 -144
  30. package/dist/application/flow/submit.js.map +1 -1
  31. package/dist/application/git-flow-service.js +325 -72
  32. package/dist/application/git-flow-service.js.map +1 -1
  33. package/dist/application/hook-sql-mutation-guard.js +155 -27
  34. package/dist/application/hook-sql-mutation-guard.js.map +1 -1
  35. package/dist/application/host-memory/claude-code.js +65 -0
  36. package/dist/application/host-memory/claude-code.js.map +1 -0
  37. package/dist/application/host-memory/codex.js +225 -0
  38. package/dist/application/host-memory/codex.js.map +1 -0
  39. package/dist/application/host-memory/destination.js +52 -0
  40. package/dist/application/host-memory/destination.js.map +1 -0
  41. package/dist/application/host-memory/reader.js +9 -0
  42. package/dist/application/host-memory/reader.js.map +1 -0
  43. package/dist/application/host-memory/report.js +136 -0
  44. package/dist/application/host-memory/report.js.map +1 -0
  45. package/dist/application/lifecycle-target.js +3 -1
  46. package/dist/application/lifecycle-target.js.map +1 -1
  47. package/dist/application/local-proposal.js +13 -3
  48. package/dist/application/local-proposal.js.map +1 -1
  49. package/dist/application/logging/log-events.js +22 -0
  50. package/dist/application/logging/log-events.js.map +1 -1
  51. package/dist/application/parsers/spec-relation.js +20 -7
  52. package/dist/application/parsers/spec-relation.js.map +1 -1
  53. package/dist/application/persist-service.js +45 -1
  54. package/dist/application/persist-service.js.map +1 -1
  55. package/dist/application/plan-exec-batch-service.js +47 -2
  56. package/dist/application/plan-exec-batch-service.js.map +1 -1
  57. package/dist/application/plan-lineage-seal.js +93 -0
  58. package/dist/application/plan-lineage-seal.js.map +1 -0
  59. package/dist/application/plan-lint-service.js +153 -0
  60. package/dist/application/plan-lint-service.js.map +1 -0
  61. package/dist/application/prod-consent.js +75 -0
  62. package/dist/application/prod-consent.js.map +1 -0
  63. package/dist/application/reseal-service.js +9 -3
  64. package/dist/application/reseal-service.js.map +1 -1
  65. package/dist/application/self/install-skill.js +5 -1
  66. package/dist/application/self/install-skill.js.map +1 -1
  67. package/dist/application/self/update-self.js +204 -8
  68. package/dist/application/self/update-self.js.map +1 -1
  69. package/dist/application/session-create-service.js +49 -0
  70. package/dist/application/session-create-service.js.map +1 -1
  71. package/dist/application/session-custody-recorder.js +4 -0
  72. package/dist/application/session-custody-recorder.js.map +1 -1
  73. package/dist/application/session-narrative.js +27 -0
  74. package/dist/application/session-narrative.js.map +1 -1
  75. package/dist/application/session-resolver.js +28 -9
  76. package/dist/application/session-resolver.js.map +1 -1
  77. package/dist/application/source-boundary-policy.js +168 -34
  78. package/dist/application/source-boundary-policy.js.map +1 -1
  79. package/dist/application/working-branch-service.js +68 -0
  80. package/dist/application/working-branch-service.js.map +1 -0
  81. package/dist/application/workline-graph.js +7 -2
  82. package/dist/application/workline-graph.js.map +1 -1
  83. package/dist/cli/commands/checkpoint-write.js +18 -8
  84. package/dist/cli/commands/checkpoint-write.js.map +1 -1
  85. package/dist/cli/commands/fix-git.js +45 -6
  86. package/dist/cli/commands/fix-git.js.map +1 -1
  87. package/dist/cli/commands/flow.js +50 -5
  88. package/dist/cli/commands/flow.js.map +1 -1
  89. package/dist/cli/commands/git-flow.js +103 -29
  90. package/dist/cli/commands/git-flow.js.map +1 -1
  91. package/dist/cli/commands/host-memory.js +33 -0
  92. package/dist/cli/commands/host-memory.js.map +1 -0
  93. package/dist/cli/commands/index.js +6 -0
  94. package/dist/cli/commands/index.js.map +1 -1
  95. package/dist/cli/commands/persist.js +5 -0
  96. package/dist/cli/commands/persist.js.map +1 -1
  97. package/dist/cli/commands/plan.js +50 -0
  98. package/dist/cli/commands/plan.js.map +1 -0
  99. package/dist/cli/commands/resume-summary.js +4 -2
  100. package/dist/cli/commands/resume-summary.js.map +1 -1
  101. package/dist/cli/commands/set-branch.js +40 -6
  102. package/dist/cli/commands/set-branch.js.map +1 -1
  103. package/dist/cli/help-groups.js +6 -0
  104. package/dist/cli/help-groups.js.map +1 -1
  105. package/dist/cli/main.js +6 -2
  106. package/dist/cli/main.js.map +1 -1
  107. package/dist/cli/parser.js +20 -1
  108. package/dist/cli/parser.js.map +1 -1
  109. package/dist/cli/tui/components/git-flow-actions.js +65 -20
  110. package/dist/cli/tui/components/git-flow-actions.js.map +1 -1
  111. package/dist/cli/tui/tabs/project-tab.js +101 -12
  112. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  113. package/dist/domain/changelog-contract.js +172 -0
  114. package/dist/domain/changelog-contract.js.map +1 -0
  115. package/dist/domain/database-tools.js +1 -189
  116. package/dist/domain/database-tools.js.map +1 -1
  117. package/dist/domain/flow/answer.js +3 -0
  118. package/dist/domain/flow/answer.js.map +1 -1
  119. package/dist/domain/flow/authority.js +12 -0
  120. package/dist/domain/flow/authority.js.map +1 -1
  121. package/dist/domain/flow/journey-baseline.js +131 -0
  122. package/dist/domain/flow/journey-baseline.js.map +1 -0
  123. package/dist/domain/flow/run-state.js +257 -62
  124. package/dist/domain/flow/run-state.js.map +1 -1
  125. package/dist/domain/host-memory/model.js +2 -0
  126. package/dist/domain/host-memory/model.js.map +1 -0
  127. package/dist/domain/host-memory/provenance.js +43 -0
  128. package/dist/domain/host-memory/provenance.js.map +1 -0
  129. package/dist/domain/host-memory/topic.js +26 -0
  130. package/dist/domain/host-memory/topic.js.map +1 -0
  131. package/dist/domain/lineage.js +11 -3
  132. package/dist/domain/lineage.js.map +1 -1
  133. package/dist/domain/proposal.js +7 -0
  134. package/dist/domain/proposal.js.map +1 -1
  135. package/dist/domain/session/custody.js.map +1 -1
  136. package/dist/domain/sql-lexer.js +227 -0
  137. package/dist/domain/sql-lexer.js.map +1 -0
  138. package/package.json +2 -2
  139. package/skills/w/SKILL.md +9 -9
  140. package/skills/w/commands/README.md +2 -1
  141. package/skills/w/commands/recall.md +39 -0
  142. package/skills/w/context/MANIFEST.json +4 -0
  143. package/skills/w/harness/HARNESS.md +9 -5
  144. package/skills/w/hooks/README.md +27 -16
  145. package/skills/w/loops/CHASSIS.md +16 -12
  146. package/skills/w/loops/CODE-POLICIES.md +11 -6
  147. package/skills/w/loops/plan-exec-loop/LOOP.md +9 -9
  148. 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
- if (!VALID_ACTIONS.has(input.action)) {
7
- return errorResult(input.action, `Unknown action: ${input.action}`);
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 source of selected.sources) {
26
- const branches = resolveSourceBranches(source, block);
27
- // Promoting work→dev when they are the same branch would merge a branch onto
28
- // itself: report it as done instead of running redundant merges.
29
- const noop = noopReason(input.action, branches, input.target);
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
- if (!input.source) {
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 match = sources.find((s) => s.alias === input.source);
76
- if (!match) {
77
- return { error: `Unknown source: ${input.source}` };
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: [match] };
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
- { kind: "pull", label: `pull ${dest}` },
138
- { kind: "merge", from: prod, onto: dest, label: `merge prod→${label}` },
139
- { kind: "merge", from: work, onto: dest, label: `merge work→${label}` },
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
- { kind: "pull-branch", branch: workDest, label: `pull ${workDest}` },
283
+ refreshOp(workDest, prod, workDest, true),
147
284
  { kind: "checkout", branch: prod, label: `checkout ${prod}` },
148
- { kind: "pull", label: `pull ${prod}` },
285
+ refreshOp(prod, prod, workDest, false),
149
286
  { kind: "checkout", branch: workDest, label: `checkout ${workDest}` },
150
- { kind: "merge", from: prod, onto: workDest, label: "merge prod→work" },
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 sourceError(source.alias, "Repository has an in-progress merge — resolve and commit it, then re-run.");
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 conflict;
304
+ let outcome;
168
305
  try {
169
- conflict = await runOp(git, repo, op);
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
- if (conflict) {
182
- steps.push({ step: op.label, status: "conflict", detail: `paused on ${conflict.onto}` });
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: source.alias,
330
+ source: alias,
185
331
  status: "conflict",
186
332
  steps,
187
- paused_at: conflict.onto,
188
- conflicted_files: conflict.files,
333
+ paused_at: outcome.onto,
334
+ merge_origin: outcome.from,
335
+ conflicted_files: outcome.files,
189
336
  };
190
- }
191
- steps.push({ step: op.label, status: "ok" });
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
- return { source: source.alias, status: "ok", steps };
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. Returns conflict info when a merge conflicts, else null. */
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 "pull-branch":
202
- await git.checkout(repo, op.branch);
203
- await git.pull(repo);
204
- return null;
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 null;
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 null;
214
- case "merge": {
215
- const result = await git.merge(repo, op.from);
216
- if (!result.ok) {
217
- const files = result.conflicted.length > 0 ? result.conflicted : await git.conflictedFiles(repo);
218
- return { onto: op.onto, files };
219
- }
220
- return null;
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 toDryStep(op) {
226
- return { step: op.label, status: "skipped", detail: "dry-run" };
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":"AAEA,OAAO,EAA0B,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAsB,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAiEpF,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,KAAmB;IAEnB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,mBAAmB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,gDAAgD,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEtD,6EAA6E;QAC7E,iEAAiE;QACjE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aACjE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAChF,SAAS;QACX,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,iEAAiE;QACjE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5C,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,yEAAyE;QACzE,4EAA4E;QAC5E,uDAAuD;QACvD,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACrE,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAC5E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,yEAAyE;QACzE,2EAA2E;QAC3E,6CAA6C;QAC7C,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC7E,CAAC;AAED,qFAAqF;AACrF,MAAM,eAAe,GAA4C,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAElG,SAAS,KAAK,CAAC,CAA0B,EAAE,CAA0B;IACnE,OAAO,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,iFAAiF;AAEjF,SAAS,aAAa,CACpB,OAAwB,EACxB,KAAmB;IAEnB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,mBAAmB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CACjB,MAAqB,EACrB,QAA2B,EAC3B,MAA0B;IAE1B,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC;IACpC,OAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,iFAAiF;AAEjF;;;;GAIG;AACH,SAAS,SAAS,CAChB,MAAqB,EACrB,QAA2B,EAC3B,MAA0B;IAE1B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE3B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC;QAC5B,0EAA0E;QAC1E,mFAAmF;QACnF,OAAO;YACL,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YACvB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE,EAAE;YAC7D;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,cAAc,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;aACrD;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE;SACtD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,QAAQ;IACR,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAClB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,QAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,OAAO;QACL,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QACvB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE,EAAE;QAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE;QACvC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,KAAK,EAAE,EAAE;QACvE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,KAAK,EAAE,EAAE;QACvE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE;KACtD,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAS,QAAQ,CAAC,IAAY,EAAE,QAAgB;IAC9C,OAAO;QACL,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,QAAQ,EAAE,EAAE;QACpE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE,EAAE;QAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE;QACvC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,QAAQ,EAAE,EAAE;QACrE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE;KACxE,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,WAAW,CACxB,GAAY,EACZ,MAAqB,EACrB,GAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,IAAI,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,WAAW,CAChB,MAAM,CAAC,KAAK,EACZ,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,WAAW,CAChB,MAAM,CAAC,KAAK,EACZ,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,QAAkD,CAAC;QACvD,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,OAAO,EAAE,EAAE,CAAC,CAAC;YAChF,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO;gBACf,KAAK;gBACL,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,YAAY,OAAO,EAAE;aACxC,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzF,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,MAAM,EAAE,UAAU;gBAClB,KAAK;gBACL,SAAS,EAAE,QAAQ,CAAC,IAAI;gBACxB,gBAAgB,EAAE,QAAQ,CAAC,KAAK;aACjC,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,OAAe;IACjD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACvE,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,KAAK,CAClB,GAAY,EACZ,IAAY,EACZ,EAAa;IAEb,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,aAAa;YAChB,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,KAAK,UAAU;YACb,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,KAAK,GACT,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACrF,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS,CAAC,EAAa;IAC9B,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,OAAe;IAClD,OAAO;QACL,MAAM,EAAE,MAAuB;QAC/B,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,OAAO;KACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"git-flow-service.js","sourceRoot":"","sources":["../../src/application/git-flow-service.ts"],"names":[],"mappings":"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"}