@tacuchi/agent-workflow-cli 20.16.0 → 20.17.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/README.md +2 -2
- package/dist/application/branch-resolver.js +28 -0
- package/dist/application/branch-resolver.js.map +1 -1
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/git-flow-service.js +59 -40
- package/dist/application/git-flow-service.js.map +1 -1
- package/dist/application/parsers/project-block.js +23 -3
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/project-md-upsert-service.js +12 -5
- package/dist/application/project-md-upsert-service.js.map +1 -1
- package/dist/application/project-tab-data.js +37 -2
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/render/project-block.js +23 -1
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/workspace-init-service.js +5 -3
- package/dist/application/workspace-init-service.js.map +1 -1
- package/dist/cli/commands/git-flow.js +3 -3
- package/dist/cli/commands/git-flow.js.map +1 -1
- package/dist/cli/tui/app.js +21 -1
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/git-flow-actions.js +1 -0
- package/dist/cli/tui/components/git-flow-actions.js.map +1 -1
- package/dist/cli/tui/tabs/config-tab.js +88 -19
- package/dist/cli/tui/tabs/config-tab.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +10 -2
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -71,7 +71,7 @@ Running `agent-workflow` (or `aw`) with no arguments opens the tab-based TUI:
|
|
|
71
71
|
| **Project** | Workspace sources, branches and git-flow actions. |
|
|
72
72
|
| **MCP** | dbhub connections. **Install writes the host's user-scope config** (e.g. `~/.claude.json`, `~/.codex/config.toml`) — never the project `.mcp.json`; install once, use it in every project. `aw mcp setup` remains the workspace-capable CLI path (workspace by default; `--workspace <dir>` / `--global --force`). |
|
|
73
73
|
| **Skills** | Standalone third-party skills manager (skills.sh model): register from `owner/repo`, a git URL (`#ref` supported) or an absolute local path; install materializes a canonical copy in `~/.agents/skills/<name>` (the open-standard dir every non-Claude host scans) plus a symlink replica in `~/.claude/skills/<name>` (copy fallback where symlinks are unavailable). Seeded with the recommended external skills from the companion marketplace README — keep both lists in sync. |
|
|
74
|
-
| **Config** | Namespace
|
|
74
|
+
| **Config** | Namespace, host-targeting preferences, and the workspace branch defaults (written to the WORKSPACE block). |
|
|
75
75
|
|
|
76
76
|
## Multi-empresa via profile.json
|
|
77
77
|
|
|
@@ -102,7 +102,7 @@ Workspace artifacts live under `.<namespace>/`. Resolution order (first match wi
|
|
|
102
102
|
- `sessions` / `session-create --type <research|refine|exec|quick>` / `session-close` / `session-resume` / `session-artifacts` — internal session lifecycle (used by the loops).
|
|
103
103
|
- `checkpoint-read` / `checkpoint-write` — `CHECKPOINT.md` handling.
|
|
104
104
|
- `sources` / `check-branch` / `set-working-branch` / `set-qa-branch` — multi-source git-safety (per-source base / working / QA branches).
|
|
105
|
-
- `git-flow <sync|to-qa|to-prod> [--source|--all] [--target] [--dry-run]` — run the per-source branch flows (sync working ← base, promote to QA
|
|
105
|
+
- `git-flow <sync|to-dev|to-qa|to-prod> [--source|--all] [--target] [--dry-run]` — run the per-source branch flows (sync working ← base, promote to dev/QA/prod) with conflict-pause; `--all` processes every source and reports each one. Also surfaced as Project-tab actions.
|
|
106
106
|
- `release-data` — corpus reader backing the `export-*` skills.
|
|
107
107
|
- `self install-skill` / `self doctor` / `self update` / `mcp` — CLI maintenance.
|
|
108
108
|
|
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
/** Floor applied when the workspace declares no default for a role. */
|
|
2
|
+
export const BRANCH_ROLE_FALLBACKS = {
|
|
3
|
+
principal: "main",
|
|
4
|
+
desarrollo: "development",
|
|
5
|
+
qa: "qa",
|
|
6
|
+
};
|
|
7
|
+
/** Workspace defaults with the fallback floor applied. */
|
|
8
|
+
export function resolveDefaultBranches(defaults) {
|
|
9
|
+
return {
|
|
10
|
+
principal: defaults?.principal || BRANCH_ROLE_FALLBACKS.principal,
|
|
11
|
+
desarrollo: defaults?.desarrollo || BRANCH_ROLE_FALLBACKS.desarrollo,
|
|
12
|
+
qa: defaults?.qa || BRANCH_ROLE_FALLBACKS.qa,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resolve every branch role for a source: per-source value → workspace default
|
|
17
|
+
* → hardcoded fallback. Single chain shared by git-flow and the Project tab, so
|
|
18
|
+
* what the TUI shows is what the flows act on.
|
|
19
|
+
*/
|
|
20
|
+
export function resolveSourceBranches(source, block) {
|
|
21
|
+
const defaults = resolveDefaultBranches(block?.default_branches);
|
|
22
|
+
return {
|
|
23
|
+
prod: source.main_branch || defaults.principal,
|
|
24
|
+
work: block?.working_branches[source.alias] || defaults.desarrollo,
|
|
25
|
+
qa: block?.qa_branches[source.alias] || defaults.qa,
|
|
26
|
+
dev: defaults.desarrollo,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
1
29
|
/**
|
|
2
30
|
* Single shared resolver for the expected WORKING branch of a source.
|
|
3
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-resolver.js","sourceRoot":"","sources":["../../src/application/branch-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"branch-resolver.js","sourceRoot":"","sources":["../../src/application/branch-resolver.ts"],"names":[],"mappings":"AAMA,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAA8B;IAC9D,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,aAAa;IACzB,EAAE,EAAE,IAAI;CACT,CAAC;AAcF,0DAA0D;AAC1D,MAAM,UAAU,sBAAsB,CACpC,QAAqC;IAErC,OAAO;QACL,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,qBAAqB,CAAC,SAAS;QACjE,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,qBAAqB,CAAC,UAAU;QACpE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,qBAAqB,CAAC,EAAE;KAC7C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAqB,EACrB,KAA+F;IAE/F,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACjE,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS;QAC9C,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU;QAClE,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,EAAE;QACnD,GAAG,EAAE,QAAQ,CAAC,UAAU;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAqB,EACrB,eAAuC;IAEvC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAC9B,OAAiC,EACjC,QAAgB;IAEhB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-branch-service.js","sourceRoot":"","sources":["../../src/application/check-branch-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAsB,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"check-branch-service.js","sourceRoot":"","sources":["../../src/application/check-branch-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { resolveSourceBranches } from "./branch-resolver.js";
|
|
1
2
|
import { readWorkspaceBlock } from "./parsers/project-block.js";
|
|
2
|
-
const VALID_ACTIONS = new Set(["sync", "to-qa", "to-prod"]);
|
|
3
|
+
const VALID_ACTIONS = new Set(["sync", "to-dev", "to-qa", "to-prod"]);
|
|
3
4
|
export async function runGitFlow(fs, git, paths, input) {
|
|
4
5
|
if (!VALID_ACTIONS.has(input.action)) {
|
|
5
6
|
return errorResult(input.action, `Unknown action: ${input.action}`);
|
|
@@ -20,27 +21,40 @@ export async function runGitFlow(fs, git, paths, input) {
|
|
|
20
21
|
const results = [];
|
|
21
22
|
let overall = "ok";
|
|
22
23
|
for (const source of selected.sources) {
|
|
23
|
-
const branches =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const branches = resolveSourceBranches(source, block);
|
|
25
|
+
// Promoting work→dev when they are the same branch would merge a branch onto
|
|
26
|
+
// itself: report it as done instead of running redundant merges.
|
|
27
|
+
const noop = noopReason(input.action, branches, input.target);
|
|
28
|
+
if (noop !== null) {
|
|
29
|
+
results.push({
|
|
30
|
+
source: source.alias,
|
|
31
|
+
status: "ok",
|
|
32
|
+
steps: [{ step: input.action, status: "skipped", detail: noop }],
|
|
33
|
+
});
|
|
34
|
+
continue;
|
|
29
35
|
}
|
|
30
36
|
const ops = buildPlan(input.action, branches, input.target);
|
|
31
37
|
if (dryRun) {
|
|
32
38
|
results.push({ source: source.alias, status: "ok", steps: ops.map(toDryStep) });
|
|
33
39
|
continue;
|
|
34
40
|
}
|
|
35
|
-
|
|
41
|
+
// Any throw belongs to THIS source, never to the batch: the precondition
|
|
42
|
+
// probes (isMerging/isDirty) reject when the path is not a usable repo, and
|
|
43
|
+
// an uncaught one would strand every remaining source.
|
|
44
|
+
const sourceResult = await executePlan(git, source, ops).catch((err) => sourceError(source.alias, err instanceof Error ? err.message : String(err)));
|
|
36
45
|
results.push(sourceResult);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
// Continue-on-failure: one source failing must not strand the rest. Each
|
|
47
|
+
// source is independent (its own repo), so the batch reports every one and
|
|
48
|
+
// the overall status is the WORST case seen.
|
|
49
|
+
overall = worst(overall, sourceResult.status);
|
|
41
50
|
}
|
|
42
51
|
return { action: input.action, dry_run: dryRun, status: overall, results };
|
|
43
52
|
}
|
|
53
|
+
/** Severity order of the batch status: a later ok never masks an earlier failure. */
|
|
54
|
+
const STATUS_SEVERITY = { ok: 0, conflict: 1, error: 2 };
|
|
55
|
+
function worst(a, b) {
|
|
56
|
+
return STATUS_SEVERITY[b] > STATUS_SEVERITY[a] ? b : a;
|
|
57
|
+
}
|
|
44
58
|
// --- source selection ---------------------------------------------------------
|
|
45
59
|
function selectSources(sources, input) {
|
|
46
60
|
if (input.all === true) {
|
|
@@ -55,27 +69,23 @@ function selectSources(sources, input) {
|
|
|
55
69
|
}
|
|
56
70
|
return { sources: [match] };
|
|
57
71
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (!branches.work) {
|
|
69
|
-
return "No working branch declared for this source (Status → Ramas de trabajo actuales)";
|
|
70
|
-
}
|
|
71
|
-
// --target overrides the qa destination, so a declared qa branch isn't required then.
|
|
72
|
-
if (action === "to-qa" && !branches.qa && !target) {
|
|
73
|
-
return "No QA branch declared for this source (Status → Ramas QA actuales). Pass --target to override.";
|
|
74
|
-
}
|
|
75
|
-
return null;
|
|
72
|
+
/**
|
|
73
|
+
* Why this action has nothing to do for this source, or null when it does.
|
|
74
|
+
* Only `to-dev` can degenerate: work and dev share the `desarrollo` default, so
|
|
75
|
+
* a source that declares no working branch resolves both roles to it.
|
|
76
|
+
*/
|
|
77
|
+
function noopReason(action, branches, target) {
|
|
78
|
+
if (action !== "to-dev")
|
|
79
|
+
return null;
|
|
80
|
+
const dest = target ?? branches.dev;
|
|
81
|
+
return dest === branches.work ? `nada que enviar: work ya es ${dest}` : null;
|
|
76
82
|
}
|
|
77
83
|
// --- plan construction --------------------------------------------------------
|
|
78
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Build the ordered op list for an action. Every role is already resolved
|
|
86
|
+
* (per-source value → workspace default → fallback), so no branch can be
|
|
87
|
+
* missing here — that is why no validation step precedes this.
|
|
88
|
+
*/
|
|
79
89
|
function buildPlan(action, branches, target) {
|
|
80
90
|
const prod = branches.prod;
|
|
81
91
|
const work = branches.work;
|
|
@@ -98,15 +108,27 @@ function buildPlan(action, branches, target) {
|
|
|
98
108
|
{ kind: "push", branch: dest, label: `push ${dest}` },
|
|
99
109
|
];
|
|
100
110
|
}
|
|
111
|
+
if (action === "to-dev") {
|
|
112
|
+
return promotePlan(prod, work, target ?? branches.dev, "dev", branches.dev);
|
|
113
|
+
}
|
|
101
114
|
// to-qa
|
|
102
|
-
|
|
115
|
+
return promotePlan(prod, work, target ?? branches.qa, "qa", branches.qa);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* sync, then land prod and work onto a promotion branch and push it. Shared by
|
|
119
|
+
* to-dev and to-qa — they differ only in which role names the destination.
|
|
120
|
+
* `roleName` keeps the step labels role-shaped ("merge work→qa") while a
|
|
121
|
+
* `--target` override shows the literal branch instead.
|
|
122
|
+
*/
|
|
123
|
+
function promotePlan(prod, work, dest, roleName, roleBranch) {
|
|
124
|
+
const label = dest === roleBranch ? roleName : dest;
|
|
103
125
|
return [
|
|
104
126
|
...syncPlan(prod, work),
|
|
105
|
-
{ kind: "checkout", branch:
|
|
106
|
-
{ kind: "pull", label: `pull ${
|
|
107
|
-
{ kind: "merge", from: prod, onto:
|
|
108
|
-
{ kind: "merge", from: work, onto:
|
|
109
|
-
{ kind: "push", branch:
|
|
127
|
+
{ kind: "checkout", branch: dest, label: `checkout ${dest}` },
|
|
128
|
+
{ kind: "pull", label: `pull ${dest}` },
|
|
129
|
+
{ kind: "merge", from: prod, onto: dest, label: `merge prod→${label}` },
|
|
130
|
+
{ kind: "merge", from: work, onto: dest, label: `merge work→${label}` },
|
|
131
|
+
{ kind: "push", branch: dest, label: `push ${dest}` },
|
|
110
132
|
];
|
|
111
133
|
}
|
|
112
134
|
/** sync sequence onto a work-role branch (overridable by `--target`). */
|
|
@@ -119,9 +141,6 @@ function syncPlan(prod, workDest) {
|
|
|
119
141
|
{ kind: "merge", from: prod, onto: workDest, label: "merge prod→work" },
|
|
120
142
|
];
|
|
121
143
|
}
|
|
122
|
-
function qaLabel(resolved, declared) {
|
|
123
|
-
return resolved === declared ? "qa" : resolved;
|
|
124
|
-
}
|
|
125
144
|
// --- execution ----------------------------------------------------------------
|
|
126
145
|
async function executePlan(git, source, ops) {
|
|
127
146
|
const repo = source.path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-flow-service.js","sourceRoot":"","sources":["../../src/application/git-flow-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"git-flow-service.js","sourceRoot":"","sources":["../../src/application/git-flow-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,7 @@ function parseWithMarkers(text, markers) {
|
|
|
55
55
|
proyecto: stripLegacyModeLine(proyectoText),
|
|
56
56
|
fuentes,
|
|
57
57
|
stack,
|
|
58
|
+
default_branches: status.defaultBranches,
|
|
58
59
|
working_branches: status.workingBranches,
|
|
59
60
|
qa_branches: status.qaBranches,
|
|
60
61
|
last_activity: status.lastActivity,
|
|
@@ -89,7 +90,8 @@ function parseFuentesTable(text) {
|
|
|
89
90
|
fuentes.push({
|
|
90
91
|
alias,
|
|
91
92
|
path,
|
|
92
|
-
|
|
93
|
+
// Empty cell = undeclared: the workspace default applies at resolution time.
|
|
94
|
+
main_branch: mainBranch !== undefined && mainBranch.length > 0 ? mainBranch : null,
|
|
93
95
|
});
|
|
94
96
|
}
|
|
95
97
|
return fuentes;
|
|
@@ -108,7 +110,9 @@ function parseStackList(text) {
|
|
|
108
110
|
}
|
|
109
111
|
return stack;
|
|
110
112
|
}
|
|
113
|
+
const DEFAULT_BRANCH_KEYS = new Set(["principal", "desarrollo", "qa"]);
|
|
111
114
|
function parseStatusBlock(text) {
|
|
115
|
+
const defaultBranches = {};
|
|
112
116
|
const workingBranches = {};
|
|
113
117
|
const qaBranches = {};
|
|
114
118
|
let lastActivity = null;
|
|
@@ -126,16 +130,21 @@ function parseStatusBlock(text) {
|
|
|
126
130
|
if (!stripped.startsWith("- "))
|
|
127
131
|
continue;
|
|
128
132
|
const entry = stripped.slice(2).trim();
|
|
129
|
-
if (section === "
|
|
133
|
+
if (section === "defaults") {
|
|
134
|
+
addDefaultBranch(defaultBranches, entry);
|
|
135
|
+
}
|
|
136
|
+
else if (section === "working") {
|
|
130
137
|
addWorkingBranch(workingBranches, entry);
|
|
131
138
|
}
|
|
132
139
|
else if (section === "qa") {
|
|
133
140
|
addWorkingBranch(qaBranches, entry);
|
|
134
141
|
}
|
|
135
142
|
}
|
|
136
|
-
return { workingBranches, qaBranches, lastActivity };
|
|
143
|
+
return { defaultBranches, workingBranches, qaBranches, lastActivity };
|
|
137
144
|
}
|
|
138
145
|
function transitionSection(stripped) {
|
|
146
|
+
if (stripped.startsWith("- Ramas por defecto:"))
|
|
147
|
+
return { handled: true, next: "defaults" };
|
|
139
148
|
if (stripped.startsWith("- Ramas de trabajo actuales:"))
|
|
140
149
|
return { handled: true, next: "working" };
|
|
141
150
|
if (stripped.startsWith("- Ramas QA actuales:"))
|
|
@@ -153,6 +162,17 @@ function transitionSection(stripped) {
|
|
|
153
162
|
}
|
|
154
163
|
return { handled: false, next: "none" };
|
|
155
164
|
}
|
|
165
|
+
/** `principal: main` → `{ principal: "main" }`. Unknown roles are ignored. */
|
|
166
|
+
function addDefaultBranch(out, entry) {
|
|
167
|
+
const colon = entry.indexOf(":");
|
|
168
|
+
if (colon <= 0)
|
|
169
|
+
return;
|
|
170
|
+
const role = entry.slice(0, colon).trim().toLowerCase();
|
|
171
|
+
const branch = entry.slice(colon + 1).trim();
|
|
172
|
+
if (!branch || !DEFAULT_BRANCH_KEYS.has(role))
|
|
173
|
+
return;
|
|
174
|
+
out[role] = branch;
|
|
175
|
+
}
|
|
156
176
|
function addWorkingBranch(out, entry) {
|
|
157
177
|
const colon = entry.indexOf(":");
|
|
158
178
|
if (colon <= 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-block.js","sourceRoot":"","sources":["../../../src/application/parsers/project-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAkB,EAClB,GAAW,EACX,OAA4B,EAC5B,SAAiD,GAAG,EAAE,CAAC,IAAI;IAE3D,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAE,SAAS;QACvC,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"project-block.js","sourceRoot":"","sources":["../../../src/application/parsers/project-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,10 @@ async function buildRenderInput(fs, cwd, input, existing) {
|
|
|
27
27
|
const stack = existing?.stack && Object.keys(existing.stack).length > 0
|
|
28
28
|
? existing.stack
|
|
29
29
|
: await detectStackFromSources(fs, input.fuentes ?? [], cwd);
|
|
30
|
+
const defaultBranches = {
|
|
31
|
+
...(existing?.default_branches ?? {}),
|
|
32
|
+
...(input.defaultBranches ?? {}),
|
|
33
|
+
};
|
|
30
34
|
const workingBranches = {
|
|
31
35
|
...(existing?.working_branches ?? {}),
|
|
32
36
|
...(input.workingBranches ?? {}),
|
|
@@ -39,7 +43,7 @@ async function buildRenderInput(fs, cwd, input, existing) {
|
|
|
39
43
|
delete workingBranches[alias];
|
|
40
44
|
delete qaBranches[alias];
|
|
41
45
|
}
|
|
42
|
-
return { proyecto, fuentes, stack, workingBranches, qaBranches };
|
|
46
|
+
return { proyecto, fuentes, stack, defaultBranches, workingBranches, qaBranches };
|
|
43
47
|
}
|
|
44
48
|
/**
|
|
45
49
|
* Detect the stack from the SOURCE paths, not the workspace folder. In the hub
|
|
@@ -60,14 +64,17 @@ async function detectStackFromSources(fs, fuentes, cwdFallback) {
|
|
|
60
64
|
}
|
|
61
65
|
/**
|
|
62
66
|
* Merge CLI-declared fuentes over existing ones (alias-keyed, last wins). Fills
|
|
63
|
-
* `main_branch`
|
|
64
|
-
*
|
|
65
|
-
* the
|
|
67
|
+
* `main_branch` from the per-fuente value, then `input.mainBranch`.
|
|
68
|
+
*
|
|
69
|
+
* With NEITHER the cell is left empty (null) on purpose: an undeclared base now
|
|
70
|
+
* means "resolve me through the workspace `principal` default". Stamping a
|
|
71
|
+
* literal here would make that default unreachable — and silently override what
|
|
72
|
+
* the user set in [Config].
|
|
66
73
|
*/
|
|
67
74
|
function mergeFuentes(existing, input) {
|
|
68
75
|
if (!input.fuentes || input.fuentes.length === 0)
|
|
69
76
|
return existing;
|
|
70
|
-
const defaultRama = input.mainBranch ??
|
|
77
|
+
const defaultRama = input.mainBranch ?? null;
|
|
71
78
|
const byAlias = new Map();
|
|
72
79
|
// replaceFuentes: the declared set is authoritative; existing ones are not preserved.
|
|
73
80
|
if (!input.replaceFuentes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-md-upsert-service.js","sourceRoot":"","sources":["../../src/application/project-md-upsert-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"project-md-upsert-service.js","sourceRoot":"","sources":["../../src/application/project-md-upsert-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// host. No project/hub distinction: a workspace simply has 1+ sources.
|
|
5
5
|
// Purely read-only: no side effects on disk or on the remote.
|
|
6
6
|
import { basename } from "node:path";
|
|
7
|
+
import { resolveSourceBranches } from "./branch-resolver.js";
|
|
7
8
|
import { readWorkspaceBlock } from "./parsers/project-block.js";
|
|
8
9
|
import { ProcessRegistryService } from "./process-registry-service.js";
|
|
9
10
|
import { detectLaunchDescriptor } from "./source-launch-scripts-service.js";
|
|
@@ -23,7 +24,10 @@ export async function buildProjectTabData(deps) {
|
|
|
23
24
|
const workspaceName = block?.proyecto || basename(cwd);
|
|
24
25
|
// Primary repo: the first declared source (if any), else the cwd.
|
|
25
26
|
const primaryRepoPath = block && block.fuentes.length > 0 ? (block.fuentes[0]?.path ?? cwd) : cwd;
|
|
26
|
-
const
|
|
27
|
+
const primarySource = block?.fuentes[0];
|
|
28
|
+
const primaryMainBranch = primarySource
|
|
29
|
+
? resolveSourceBranches(primarySource, block).prod
|
|
30
|
+
: "main";
|
|
27
31
|
// The GIT tile must show the working branch DEFINED in the workspace for the
|
|
28
32
|
// primary source, not whatever branch the repo has checked out (could be any).
|
|
29
33
|
const definedWorkingBranch = resolveDefinedWorkingBranch(block);
|
|
@@ -38,11 +42,14 @@ export async function buildProjectTabData(deps) {
|
|
|
38
42
|
const branch = await safeRun(`branch:${f.alias}`, () => git.currentBranch(repoPath), warnings, undefined);
|
|
39
43
|
const changed = await safeRun(`dirty:${f.alias}`, () => git.changedFiles(repoPath), warnings, []);
|
|
40
44
|
const launchable = await safeRun(`launchable:${f.alias}`, () => readLaunchable(fs, paths.cwdLaunchDir(), f.alias, f.path), warnings, false);
|
|
45
|
+
const roles = resolveSourceBranches(f, block);
|
|
46
|
+
const commitCount = await safeRun(`commits:${f.alias}`, () => countOwnCommits(proc, repoPath, branch ?? null, roles.prod), warnings, null);
|
|
41
47
|
sources.push({
|
|
42
48
|
alias: f.alias,
|
|
43
49
|
path: f.path,
|
|
44
50
|
branch: branch ?? null,
|
|
45
|
-
mainBranch:
|
|
51
|
+
mainBranch: roles.prod,
|
|
52
|
+
commitCount,
|
|
46
53
|
dirty: changed.length > 0,
|
|
47
54
|
changedFiles: changed.length,
|
|
48
55
|
launchable,
|
|
@@ -136,6 +143,34 @@ async function buildGitData(git, proc, repoPath, mainBranch, workBranch) {
|
|
|
136
143
|
untracked,
|
|
137
144
|
};
|
|
138
145
|
}
|
|
146
|
+
/** What `git rev-parse --abbrev-ref HEAD` prints when HEAD is not on a branch. */
|
|
147
|
+
const DETACHED_HEAD = "HEAD";
|
|
148
|
+
/**
|
|
149
|
+
* Count the commits the branch itself carries: `<base>..<branch>` with merges
|
|
150
|
+
* excluded, so neither the history inherited from the base nor a later merge of
|
|
151
|
+
* the base back into the branch is counted.
|
|
152
|
+
*
|
|
153
|
+
* Local refs only (no fetch): tries `<main>` and falls back to `origin/<main>`.
|
|
154
|
+
* A non-zero exit is the ordinary "that base ref does not exist here" case, so
|
|
155
|
+
* it resolves to `null` silently — warning per source would be noise on any
|
|
156
|
+
* fresh clone. Only a thrown error reaches the caller's `safeRun`.
|
|
157
|
+
*/
|
|
158
|
+
async function countOwnCommits(proc, repoPath, branch, mainBranch) {
|
|
159
|
+
// `rev-parse --abbrev-ref HEAD` prints the literal "HEAD" (exit 0) when
|
|
160
|
+
// detached, so that is the detachment sentinel — not a null. Without this the
|
|
161
|
+
// range `<base>..HEAD` counts happily and reports a partial number mid-rebase.
|
|
162
|
+
if (branch === null || branch === DETACHED_HEAD || branch === mainBranch)
|
|
163
|
+
return null;
|
|
164
|
+
for (const base of [mainBranch, `origin/${mainBranch}`]) {
|
|
165
|
+
const res = await runProc(proc, "git", ["rev-list", "--count", "--no-merges", `${base}..${branch}`], repoPath);
|
|
166
|
+
if (!res.ok)
|
|
167
|
+
continue;
|
|
168
|
+
const count = Number.parseInt(res.stdout.trim(), 10);
|
|
169
|
+
if (Number.isFinite(count))
|
|
170
|
+
return count;
|
|
171
|
+
}
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
139
174
|
// ---------- utils ----------
|
|
140
175
|
async function safeRun(label, fn, warnings, fallback) {
|
|
141
176
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tab-data.js","sourceRoot":"","sources":["../../src/application/project-tab-data.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,6EAA6E;AAC7E,uEAAuE;AACvE,8DAA8D;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKrC,OAAO,EAA2B,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,OAAO,EAAsB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"project-tab-data.js","sourceRoot":"","sources":["../../src/application/project-tab-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,11 @@ export function renderProjectBlock(input) {
|
|
|
8
8
|
? input.proyecto.trim()
|
|
9
9
|
: "_Describe el proyecto aquí: qué es y por qué existe._";
|
|
10
10
|
const statusLines = [];
|
|
11
|
+
// Defaults go FIRST: an older parser ignores an unknown `- ` line only while no
|
|
12
|
+
// branch section is open — after one, it would swallow them as branch entries.
|
|
13
|
+
const defaults = formatDefaultBranches(input.defaultBranches);
|
|
14
|
+
if (defaults !== null)
|
|
15
|
+
statusLines.push(defaults);
|
|
11
16
|
const wb = formatWorkingBranches(input.workingBranches);
|
|
12
17
|
if (wb !== null)
|
|
13
18
|
statusLines.push(wb);
|
|
@@ -41,6 +46,7 @@ export function blockFromParsed(parsed, overrides = {}) {
|
|
|
41
46
|
proyecto: overrides.proyecto ?? parsed.proyecto,
|
|
42
47
|
fuentes: overrides.fuentes ?? parsed.fuentes,
|
|
43
48
|
stack: overrides.stack ?? parsed.stack,
|
|
49
|
+
defaultBranches: overrides.defaultBranches ?? parsed.default_branches,
|
|
44
50
|
workingBranches: overrides.workingBranches ?? parsed.working_branches,
|
|
45
51
|
qaBranches: overrides.qaBranches ?? parsed.qa_branches,
|
|
46
52
|
};
|
|
@@ -64,7 +70,9 @@ function formatFuentesTable(fuentes) {
|
|
|
64
70
|
for (const f of fuentes) {
|
|
65
71
|
const alias = f.alias;
|
|
66
72
|
const path = f.path;
|
|
67
|
-
|
|
73
|
+
// Undeclared base branch → empty cell (round-trips back to null; the
|
|
74
|
+
// workspace default `principal` is what resolves it, not a literal here).
|
|
75
|
+
const main = f.main_branch ?? "";
|
|
68
76
|
lines.push(`| ${alias} | ${path} | ${main} |`);
|
|
69
77
|
}
|
|
70
78
|
return lines.join("\n");
|
|
@@ -90,6 +98,20 @@ function formatStackList(stack) {
|
|
|
90
98
|
}
|
|
91
99
|
return lines.join("\n");
|
|
92
100
|
}
|
|
101
|
+
const DEFAULT_BRANCH_ROLES = ["principal", "desarrollo", "qa"];
|
|
102
|
+
function formatDefaultBranches(defaults) {
|
|
103
|
+
if (!defaults)
|
|
104
|
+
return null;
|
|
105
|
+
const lines = [];
|
|
106
|
+
for (const role of DEFAULT_BRANCH_ROLES) {
|
|
107
|
+
const branch = defaults[role];
|
|
108
|
+
if (branch)
|
|
109
|
+
lines.push(` - ${role}: ${branch}`);
|
|
110
|
+
}
|
|
111
|
+
if (lines.length === 0)
|
|
112
|
+
return null;
|
|
113
|
+
return ["- Ramas por defecto:", ...lines].join("\n");
|
|
114
|
+
}
|
|
93
115
|
function formatWorkingBranches(branches) {
|
|
94
116
|
if (!branches || Object.keys(branches).length === 0)
|
|
95
117
|
return null;
|