@tacuchi/agent-workflow-cli 12.9.0 → 12.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/adapters/node-process.d.ts +4 -1
  2. package/dist/adapters/node-process.d.ts.map +1 -1
  3. package/dist/adapters/node-process.js +65 -0
  4. package/dist/adapters/node-process.js.map +1 -1
  5. package/dist/application/paths-service.d.ts +4 -0
  6. package/dist/application/paths-service.d.ts.map +1 -1
  7. package/dist/application/paths-service.js +8 -0
  8. package/dist/application/paths-service.js.map +1 -1
  9. package/dist/application/process-registry-service.d.ts +53 -0
  10. package/dist/application/process-registry-service.d.ts.map +1 -0
  11. package/dist/application/process-registry-service.js +95 -0
  12. package/dist/application/process-registry-service.js.map +1 -0
  13. package/dist/application/project-tab-data.d.ts +5 -0
  14. package/dist/application/project-tab-data.d.ts.map +1 -1
  15. package/dist/application/project-tab-data.js +20 -0
  16. package/dist/application/project-tab-data.js.map +1 -1
  17. package/dist/application/source-launch-scripts-service.d.ts +63 -0
  18. package/dist/application/source-launch-scripts-service.d.ts.map +1 -0
  19. package/dist/application/source-launch-scripts-service.js +302 -0
  20. package/dist/application/source-launch-scripts-service.js.map +1 -0
  21. package/dist/application/source-launch-service.d.ts +52 -0
  22. package/dist/application/source-launch-service.d.ts.map +1 -0
  23. package/dist/application/source-launch-service.js +116 -0
  24. package/dist/application/source-launch-service.js.map +1 -0
  25. package/dist/application/workspace-init-service.d.ts +3 -0
  26. package/dist/application/workspace-init-service.d.ts.map +1 -1
  27. package/dist/application/workspace-init-service.js +40 -4
  28. package/dist/application/workspace-init-service.js.map +1 -1
  29. package/dist/cli/tui/components/process-list.d.ts +15 -0
  30. package/dist/cli/tui/components/process-list.d.ts.map +1 -0
  31. package/dist/cli/tui/components/process-list.js +37 -0
  32. package/dist/cli/tui/components/process-list.js.map +1 -0
  33. package/dist/cli/tui/components/source-launch-form.d.ts +19 -0
  34. package/dist/cli/tui/components/source-launch-form.d.ts.map +1 -0
  35. package/dist/cli/tui/components/source-launch-form.js +68 -0
  36. package/dist/cli/tui/components/source-launch-form.js.map +1 -0
  37. package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
  38. package/dist/cli/tui/tabs/project-tab.js +188 -16
  39. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/ports/process.d.ts +22 -0
  44. package/dist/ports/process.d.ts.map +1 -1
  45. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-init-service.js","sourceRoot":"","sources":["../../src/application/workspace-init-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-init-service.js","sourceRoot":"","sources":["../../src/application/workspace-init-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ProcessRecord } from "../../../application/process-registry-service.js";
2
+ export interface ProcessListProps {
3
+ processes: ProcessRecord[];
4
+ /** Index of the focused process row (only meaningful when `focused`). */
5
+ cursor: number;
6
+ /** Whether the process region currently has navigation focus. */
7
+ focused: boolean;
8
+ widthHint: number;
9
+ }
10
+ /**
11
+ * "Procesos en segundo plano" — the launched detached processes for the
12
+ * workspace sources, with their reconciled state. Navigable in process mode.
13
+ */
14
+ export declare function ProcessList({ processes, cursor, focused, widthHint }: ProcessListProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=process-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-list.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/process-list.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,kDAAkD,CAAC;AAKpG,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CA+BtF"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { colors, icons } from "../theme.js";
4
+ import { ListRow } from "./list-row.js";
5
+ import { SectionHead } from "./section-head.js";
6
+ const STATE_TONE = {
7
+ running: "ok",
8
+ stopped: "warn",
9
+ exited: "dim",
10
+ };
11
+ const STATE_LABEL = {
12
+ running: "running",
13
+ stopped: "stopped",
14
+ exited: "exited",
15
+ };
16
+ /** Clock portion (HH:MM) of an ISO timestamp; "?" when unparseable. */
17
+ function startedClock(iso) {
18
+ const m = /T(\d{2}:\d{2})/.exec(iso);
19
+ return m?.[1] ?? "?";
20
+ }
21
+ /**
22
+ * "Procesos en segundo plano" — the launched detached processes for the
23
+ * workspace sources, with their reconciled state. Navigable in process mode.
24
+ */
25
+ export function ProcessList({ processes, cursor, focused, widthHint }) {
26
+ const rightAction = processes.length > 0
27
+ ? focused
28
+ ? "↑↓ select · x stop · r relaunch · o log · esc"
29
+ : "p manage"
30
+ : undefined;
31
+ return (_jsxs(_Fragment, { children: [_jsx(SectionHead, { label: "Procesos en segundo plano", count: processes.length, marginTop: 1, ...(rightAction ? { rightAction } : {}) }), _jsx(Box, { marginLeft: 2, flexDirection: "column", children: processes.length === 0 ? (_jsx(Text, { color: colors.faint, children: "(sin procesos \u2014 lanz\u00E1 un source con \u23CE \u2192 Lanzar en local)" })) : (processes.map((p, i) => (_jsx(ProcessRow, { record: p, active: focused && i === cursor, widthHint: widthHint }, p.id)))) })] }));
32
+ }
33
+ function ProcessRow({ record, active, widthHint, }) {
34
+ const profile = record.profile ?? "default";
35
+ return (_jsx(ListRow, { icon: icons.diamond, title: `${record.sourceAlias} · ${profile}`, subtitle: `PID ${record.pid} · desde ${startedClock(record.startedAt)}`, meta: [{ label: STATE_LABEL[record.state], tone: STATE_TONE[record.state] }], state: { label: record.command, tone: "dim" }, active: active, widthHint: widthHint }));
36
+ }
37
+ //# sourceMappingURL=process-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-list.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/process-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAWhD,MAAM,UAAU,GAAgD;IAC9D,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,MAAM,WAAW,GAAiC;IAChD,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,uEAAuE;AACvE,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAoB;IACrF,MAAM,WAAW,GACf,SAAS,CAAC,MAAM,GAAG,CAAC;QAClB,CAAC,CAAC,OAAO;YACP,CAAC,CAAC,+CAA+C;YACjD,CAAC,CAAC,UAAU;QACd,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,CACL,8BACE,KAAC,WAAW,IACV,KAAK,EAAC,2BAA2B,EACjC,KAAK,EAAE,SAAS,CAAC,MAAM,EACvB,SAAS,EAAE,CAAC,KACR,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACxC,EACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACvC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,6FAAiE,CAC3F,CAAC,CAAC,CAAC,CACF,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,KAAC,UAAU,IAET,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,MAAM,EAC/B,SAAS,EAAE,SAAS,IAHf,CAAC,CAAC,EAAE,CAIT,CACH,CAAC,CACH,GACG,IACL,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,MAAM,EACN,MAAM,EACN,SAAS,GAKV;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;IAC5C,OAAO,CACL,KAAC,OAAO,IACN,IAAI,EAAE,KAAK,CAAC,OAAO,EACnB,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,MAAM,OAAO,EAAE,EAC3C,QAAQ,EAAE,OAAO,MAAM,CAAC,GAAG,YAAY,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EACvE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAC5E,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAC7C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { LaunchDescriptor } from "../../../application/source-launch-scripts-service.js";
2
+ export interface LaunchFormValue {
3
+ profile: string | null;
4
+ values: Record<string, string>;
5
+ }
6
+ export interface SourceLaunchFormProps {
7
+ descriptor: LaunchDescriptor;
8
+ isActive?: boolean;
9
+ onSubmit: (value: LaunchFormValue) => void;
10
+ onCancel: () => void;
11
+ }
12
+ /**
13
+ * Form to launch a source: pick a profile (if the descriptor declares any), then
14
+ * enter each parameter (prefilled with its default; secrets are tagged and not
15
+ * prefilled). Sources without profiles/params never reach here — the caller
16
+ * launches them directly.
17
+ */
18
+ export declare function SourceLaunchForm({ descriptor, isActive, onSubmit, onCancel, }: SourceLaunchFormProps): import("react/jsx-runtime").JSX.Element | null;
19
+ //# sourceMappingURL=source-launch-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-launch-form.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/source-launch-form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uDAAuD,CAAC;AAK9F,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAcD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAe,EACf,QAAQ,EACR,QAAQ,GACT,EAAE,qBAAqB,kDAuFvB"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from "ink";
3
+ import { useState } from "react";
4
+ import { colors, icons } from "../theme.js";
5
+ import { InputPrompt } from "./input-prompt.js";
6
+ import { SectionHead } from "./section-head.js";
7
+ /** "(sin perfil)" sentinel + the descriptor profiles. */
8
+ function profileOptions(desc) {
9
+ return [
10
+ { label: "(sin perfil)", value: null },
11
+ ...desc.profiles.map((p) => ({ label: p, value: p })),
12
+ ];
13
+ }
14
+ /**
15
+ * Form to launch a source: pick a profile (if the descriptor declares any), then
16
+ * enter each parameter (prefilled with its default; secrets are tagged and not
17
+ * prefilled). Sources without profiles/params never reach here — the caller
18
+ * launches them directly.
19
+ */
20
+ export function SourceLaunchForm({ descriptor, isActive = true, onSubmit, onCancel, }) {
21
+ const options = profileOptions(descriptor);
22
+ const hasProfiles = descriptor.profiles.length > 0;
23
+ const [step, setStep] = useState(hasProfiles ? { kind: "profile" } : { kind: "param", profile: null, index: 0, values: {} });
24
+ const [profileCursor, setProfileCursor] = useState(0);
25
+ // Esc cancels from the profile step (param steps cancel via their own esc below).
26
+ useInput((_input, key) => {
27
+ if (!isActive)
28
+ return;
29
+ if (step.kind === "profile") {
30
+ if (key.escape)
31
+ return onCancel();
32
+ if (key.upArrow)
33
+ return setProfileCursor((c) => Math.max(0, c - 1));
34
+ if (key.downArrow)
35
+ return setProfileCursor((c) => Math.min(options.length - 1, c + 1));
36
+ if (key.return) {
37
+ const profile = options[profileCursor]?.value ?? null;
38
+ advance(profile, 0, {});
39
+ }
40
+ }
41
+ else if (key.escape) {
42
+ onCancel();
43
+ }
44
+ }, { isActive });
45
+ function advance(profile, index, values) {
46
+ if (index >= descriptor.params.length) {
47
+ onSubmit({ profile, values });
48
+ return;
49
+ }
50
+ setStep({ kind: "param", profile, index, values });
51
+ }
52
+ if (step.kind === "profile") {
53
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SectionHead, { label: `Lanzar ${descriptor.source} · perfil`, marginTop: 0 }), _jsx(Box, { marginLeft: 2, marginTop: 1, flexDirection: "column", children: options.map((o, i) => (_jsxs(Text, { color: i === profileCursor ? colors.accent : colors.dim, children: [i === profileCursor ? icons.arrow : " ", " ", o.label] }, o.label))) }), _jsx(Box, { marginTop: 1, marginLeft: 2, children: _jsx(Text, { color: colors.faint, children: "\u2191\u2193 perfil \u00B7 \u23CE continuar \u00B7 esc cancelar" }) })] }));
54
+ }
55
+ // Param step.
56
+ const param = descriptor.params[step.index];
57
+ if (!param) {
58
+ // No params left (defensive) — submit.
59
+ onSubmit({ profile: step.profile, values: step.values });
60
+ return null;
61
+ }
62
+ const tag = param.secret ? " (secreto — no se guarda)" : "";
63
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SectionHead, { label: `Lanzar ${descriptor.source}${step.profile ? ` · ${step.profile}` : ""}`, marginTop: 0 }), _jsxs(Box, { marginLeft: 2, marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: colors.faint, children: ["par\u00E1metro ", step.index + 1, "/", descriptor.params.length] }), _jsx(InputPrompt, { message: `${param.name}${tag}`, ...(param.secret ? {} : { defaultValue: param.default }), isActive: isActive, onSubmit: (value) => {
64
+ const next = { ...step.values, [param.name]: value };
65
+ advance(step.profile, step.index + 1, next);
66
+ } }, param.name), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.faint, children: "\u23CE siguiente \u00B7 esc cancelar" }) })] })] }));
67
+ }
68
+ //# sourceMappingURL=source-launch-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-launch-form.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/source-launch-form.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkBhD,yDAAyD;AACzD,SAAS,cAAc,CAAC,IAAsB;IAC5C,OAAO;QACL,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;QACtC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAQ,GAAG,IAAI,EACf,QAAQ,EACR,QAAQ,GACc;IACtB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAC9B,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAC3F,CAAC;IACF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtD,kFAAkF;IAClF,QAAQ,CACN,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACd,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,QAAQ,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,GAAG,CAAC,SAAS;gBAAE,OAAO,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;gBACtD,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACtB,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CACb,CAAC;IAEF,SAAS,OAAO,CAAC,OAAsB,EAAE,KAAa,EAAE,MAA8B;QACpF,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,WAAW,IAAC,KAAK,EAAE,UAAU,UAAU,CAAC,MAAM,WAAW,EAAE,SAAS,EAAE,CAAC,GAAI,EAC5E,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACrB,MAAC,IAAI,IAAe,KAAK,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,aACxE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAG,CAAC,CAAC,KAAK,KADzC,CAAC,CAAC,KAAK,CAEX,CACR,CAAC,GACE,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,YAC9B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,gFAA+C,GACpE,IACF,CACP,CAAC;IACJ,CAAC;IAED,cAAc;IACd,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,uCAAuC;QACvC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,WAAW,IACV,KAAK,EAAE,UAAU,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/E,SAAS,EAAE,CAAC,GACZ,EACF,MAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACtD,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,gCACZ,IAAI,CAAC,KAAK,GAAG,CAAC,OAAG,UAAU,CAAC,MAAM,CAAC,MAAM,IAC/C,EACP,KAAC,WAAW,IAEV,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,KAC1B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EACzD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;4BACrD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC9C,CAAC,IAPI,KAAK,CAAC,IAAI,CAQf,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,qDAAmC,GACxD,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-tab.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/project-tab.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAiBjD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACvE;AAED,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,eAAe,2CAkFzE"}
1
+ {"version":3,"file":"project-tab.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/project-tab.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAmBjD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACvE;AAED,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,eAAe,2CAkFzE"}
@@ -4,12 +4,15 @@ import { Box, Text, useInput, useStdout } from "ink";
4
4
  import { useCallback, useEffect, useMemo, useState } from "react";
5
5
  import { runGitFlow, } from "../../../application/git-flow-service.js";
6
6
  import { buildProjectTabData, } from "../../../application/project-tab-data.js";
7
+ import { findCollision, launchSource, readDescriptor, relaunchProcess, stopProcess, tailLog, } from "../../../application/source-launch-service.js";
7
8
  import { DetailPanel, } from "../components/detail-panel.js";
8
9
  import { FlowResultView } from "../components/git-flow-actions.js";
9
10
  import { ListRow } from "../components/list-row.js";
10
11
  import { PageHead } from "../components/page-head.js";
12
+ import { ProcessList } from "../components/process-list.js";
11
13
  import { QuickActions } from "../components/quick-actions.js";
12
14
  import { SectionHead } from "../components/section-head.js";
15
+ import { SourceLaunchForm } from "../components/source-launch-form.js";
13
16
  import { StatTile } from "../components/stat-tile.js";
14
17
  import { WorkspaceInitForm } from "../components/workspace-init-form.js";
15
18
  import { useInputLock } from "../input-lock.js";
@@ -126,6 +129,8 @@ const FLOW_ACTIONS = [
126
129
  { id: "to-qa", name: "Enviar a QA", description: "sync + prod/work→qa + push" },
127
130
  { id: "to-prod", name: "Enviar a PROD", description: "sync + work→prod + push" },
128
131
  ];
132
+ /** First per-source detail action: launch the app locally. */
133
+ const LAUNCH_ACTION = { id: "launch", name: "Lanzar en local" };
129
134
  /**
130
135
  * Indentación (marginLeft) del contenedor de rows de SOURCES. Se pasa como `indent`
131
136
  * a {@link rowWidth} para que el ancho del row descuente ese marginLeft — si no, el
@@ -152,7 +157,79 @@ function Initialized({ ctx, data, isActive, onRunAction, onReload }) {
152
157
  const hasSources = totalSources > 0;
153
158
  const [cursor, setCursor] = useState(0);
154
159
  const [actionCursor, setActionCursor] = useState(0);
160
+ const [processCursor, setProcessCursor] = useState(0);
155
161
  const [mode, setMode] = useState({ kind: "list" });
162
+ const processes = data.processes;
163
+ const runningCount = useMemo(() => processes.filter((p) => p.state === "running").length, [processes]);
164
+ // Deps for the source-launch service. `baseEnv` = the real process env so the
165
+ // child inherits PATH etc.; params/profile are layered on at resolve time.
166
+ const launchDeps = useMemo(() => ({
167
+ fs: ctx.fs,
168
+ proc: ctx.process,
169
+ paths: ctx.paths,
170
+ baseEnv: Object.fromEntries(Object.entries(process.env).filter((e) => e[1] !== undefined)),
171
+ }), [ctx]);
172
+ // Launch a source: collision-check first, then spawn detached + register.
173
+ const doLaunch = useCallback(async (req) => {
174
+ const existing = findCollision(processes, req.alias, req.profile);
175
+ if (existing)
176
+ return setMode({ kind: "collision", req, existing });
177
+ setMode({ kind: "busy", label: `Lanzando ${req.alias}…` });
178
+ const res = await launchSource(launchDeps, req);
179
+ setMode(res.ok
180
+ ? {
181
+ kind: "notice",
182
+ tone: "ok",
183
+ lines: [`Lanzado ${req.alias} (PID ${res.record.pid})`, res.record.logPath],
184
+ }
185
+ : { kind: "notice", tone: "err", lines: [res.message] });
186
+ await onReload?.();
187
+ }, [processes, launchDeps, onReload]);
188
+ // Entry from the "Lanzar en local" detail action: open the form if the
189
+ // descriptor has profiles/params, otherwise launch directly.
190
+ const beginLaunch = useCallback(async (alias) => {
191
+ const descriptor = await readDescriptor(ctx.fs, ctx.paths.workspaceDir(), alias);
192
+ if (!descriptor || !descriptor.command) {
193
+ return setMode({
194
+ kind: "notice",
195
+ tone: "err",
196
+ lines: [
197
+ `Sin descriptor de arranque para ${alias}.`,
198
+ "Generá scripts con /w:workspace-init.",
199
+ ],
200
+ });
201
+ }
202
+ if (descriptor.profiles.length === 0 && descriptor.params.length === 0) {
203
+ return void doLaunch({ alias, profile: null, values: {} });
204
+ }
205
+ setMode({ kind: "launch-form", alias, descriptor });
206
+ }, [ctx, doLaunch]);
207
+ const doStop = useCallback(async (record) => {
208
+ setMode({ kind: "busy", label: `Deteniendo ${record.sourceAlias}…` });
209
+ await stopProcess(launchDeps, record);
210
+ setMode({ kind: "list" });
211
+ await onReload?.();
212
+ }, [launchDeps, onReload]);
213
+ const doRelaunch = useCallback(async (record) => {
214
+ setMode({ kind: "busy", label: `Re-lanzando ${record.sourceAlias}…` });
215
+ const res = await relaunchProcess(launchDeps, record);
216
+ setMode(res.ok
217
+ ? {
218
+ kind: "notice",
219
+ tone: "ok",
220
+ lines: [`Re-lanzado ${record.sourceAlias} (PID ${res.record.pid})`],
221
+ }
222
+ : { kind: "notice", tone: "err", lines: [res.message] });
223
+ await onReload?.();
224
+ }, [launchDeps, onReload]);
225
+ const doViewLog = useCallback(async (record) => {
226
+ const lines = await tailLog(ctx.fs, record.logPath, 20);
227
+ setMode({
228
+ kind: "log",
229
+ record,
230
+ lines: lines.length > 0 ? lines : ["(log vacío o no encontrado)", record.logPath],
231
+ });
232
+ }, [ctx.fs]);
156
233
  // El detail panel (y el flujo en curso) bloquean las teclas globales; la lista
157
234
  // base las deja pasar.
158
235
  useEffect(() => {
@@ -168,6 +245,12 @@ function Initialized({ ctx, data, isActive, onRunAction, onReload }) {
168
245
  const currentSource = isAllTarget
169
246
  ? null
170
247
  : (data.sources.find((s) => s.alias === currentTarget) ?? null);
248
+ // Detail-panel actions for the current target: a per-source "Lanzar en local"
249
+ // (only for real sources) followed by the git-flow actions.
250
+ const detailItems = useMemo(() => [
251
+ ...(currentSource ? [{ kind: "launch" }] : []),
252
+ ...FLOW_ACTIONS.map((a) => ({ kind: "flow", action: a.id })),
253
+ ], [currentSource]);
171
254
  const runFlow = useCallback(async (action) => {
172
255
  const target = targets[cursor] ?? ALL_SOURCES;
173
256
  const isAll = target === ALL_SOURCES;
@@ -192,12 +275,16 @@ function Initialized({ ctx, data, isActive, onRunAction, onReload }) {
192
275
  });
193
276
  }
194
277
  }, [cursor, ctx, targets]);
195
- // Atajos de la lista de sources (↑↓ navega · ⏎ abre panel · s/g/c acciones).
278
+ // Atajos de la lista de sources (↑↓ navega · ⏎ abre panel · p procesos · s/g/c acciones).
196
279
  const handleListKey = useCallback((input, key) => {
197
280
  if (input === "s")
198
281
  return void onRunAction?.("session:start");
199
282
  if (input === "g")
200
283
  return void onRunAction?.("git:status");
284
+ if (input === "p" && processes.length > 0) {
285
+ setProcessCursor(0);
286
+ return setMode({ kind: "process" });
287
+ }
201
288
  if (input === "c" && data.branches.length > 1) {
202
289
  const candidate = data.branches.find((b) => !b.current);
203
290
  if (candidate)
@@ -214,30 +301,89 @@ function Initialized({ ctx, data, isActive, onRunAction, onReload }) {
214
301
  setActionCursor(0);
215
302
  setMode({ kind: "detail" });
216
303
  }
217
- }, [data.branches, hasSources, onRunAction, targets.length]);
304
+ }, [data.branches, hasSources, onRunAction, targets.length, processes.length]);
218
305
  // Acciones del panel lateral (↑↓ navega · ⏎ ejecuta · esc cierra).
219
306
  const handleDetailKey = useCallback((key) => {
220
307
  if (key.upArrow)
221
308
  return setActionCursor((c) => Math.max(0, c - 1));
222
309
  if (key.downArrow)
223
- return setActionCursor((c) => Math.min(FLOW_ACTIONS.length - 1, c + 1));
310
+ return setActionCursor((c) => Math.min(detailItems.length - 1, c + 1));
224
311
  if (key.escape)
225
312
  return setMode({ kind: "list" });
226
313
  if (key.return) {
227
- const action = FLOW_ACTIONS[actionCursor];
228
- if (action)
229
- void runFlow(action.id);
314
+ const item = detailItems[actionCursor];
315
+ if (!item)
316
+ return;
317
+ if (item.kind === "launch") {
318
+ if (currentSource?.launchable)
319
+ return void beginLaunch(currentSource.alias);
320
+ return setMode({
321
+ kind: "notice",
322
+ tone: "err",
323
+ lines: [
324
+ `${currentSource?.alias ?? "source"}: sin descriptor de arranque.`,
325
+ "Generá scripts con /w:workspace-init.",
326
+ ],
327
+ });
328
+ }
329
+ void runFlow(item.action);
230
330
  }
231
- }, [actionCursor, runFlow]);
331
+ }, [actionCursor, detailItems, currentSource, runFlow, beginLaunch]);
332
+ // Modo "process": navega la sección de procesos en segundo plano (x stop · r relaunch · o log).
333
+ const handleProcessKey = useCallback((input, key) => {
334
+ if (key.escape)
335
+ return setMode({ kind: "list" });
336
+ if (key.upArrow)
337
+ return setProcessCursor((c) => Math.max(0, c - 1));
338
+ if (key.downArrow)
339
+ return setProcessCursor((c) => Math.min(processes.length - 1, c + 1));
340
+ const record = processes[processCursor];
341
+ if (!record)
342
+ return;
343
+ if (input === "x")
344
+ return void doStop(record);
345
+ if (input === "r")
346
+ return void doRelaunch(record);
347
+ if (input === "o")
348
+ return void doViewLog(record);
349
+ }, [processes, processCursor, doStop, doRelaunch, doViewLog]);
350
+ // Colisión: detiene el proceso existente y lanza el pedido (con sus valores).
351
+ const confirmRelaunch = useCallback(async (req, existing) => {
352
+ setMode({ kind: "busy", label: `Re-lanzando ${req.alias}…` });
353
+ await stopProcess(launchDeps, existing);
354
+ const res = await launchSource(launchDeps, req);
355
+ setMode(res.ok
356
+ ? {
357
+ kind: "notice",
358
+ tone: "ok",
359
+ lines: [`Re-lanzado ${req.alias} (PID ${res.record.pid})`],
360
+ }
361
+ : { kind: "notice", tone: "err", lines: [res.message] });
362
+ await onReload?.();
363
+ }, [launchDeps, onReload]);
232
364
  // input — delega a cada handler según el modo activo.
233
365
  useInput((input, key) => {
234
366
  if (!isActive)
235
367
  return;
236
368
  if (mode.kind === "list")
237
- handleListKey(input, key);
238
- else if (mode.kind === "detail")
239
- handleDetailKey(key);
240
- else if (mode.kind === "result") {
369
+ return handleListKey(input, key);
370
+ if (mode.kind === "detail")
371
+ return handleDetailKey(key);
372
+ if (mode.kind === "process")
373
+ return handleProcessKey(input, key);
374
+ if (mode.kind === "collision") {
375
+ if (key.escape)
376
+ setMode({ kind: "list" });
377
+ else if (input === "r")
378
+ void confirmRelaunch(mode.req, mode.existing);
379
+ return;
380
+ }
381
+ if (mode.kind === "notice" || mode.kind === "log") {
382
+ if (key.escape || key.return)
383
+ setMode({ kind: "list" });
384
+ return;
385
+ }
386
+ if (mode.kind === "result") {
241
387
  // ⏎/r re-ejecuta (= resume on conflict) · esc vuelve a la lista.
242
388
  if (key.escape) {
243
389
  setMode({ kind: "list" });
@@ -253,11 +399,37 @@ function Initialized({ ctx, data, isActive, onRunAction, onReload }) {
253
399
  if (mode.kind === "result") {
254
400
  return _jsx(FlowResultView, { action: mode.action, result: mode.result });
255
401
  }
256
- const detailActions = FLOW_ACTIONS.map((a) => ({
257
- name: a.name,
258
- description: a.description,
259
- }));
260
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PageHead, { title: `Workspace · ${shortName}`, action: _jsx(Text, { color: colors.faint, children: wsPath }) }), description ? (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: description }) })) : null, _jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(StatTile, { label: "git", value: data.git?.branch ?? "—", sub: statGitSub(data), accent: true }), _jsx(StatTile, { label: "working tree", value: `${dirty} dirty`, sub: `${data.git?.staged ?? 0} staged · ${data.git?.untracked ?? 0} untracked`, tone: dirty > 0 ? "warn" : "dim" }), _jsx(StatTile, { label: "sources", value: `${totalSources}`, sub: `${dirtySources} dirty`, tone: totalSources > 0 ? "accent" : "dim" }), _jsx(StatTile, { label: "working branches", value: `${workingEntries.length}`, sub: workingEntries.length > 0 ? "declared" : "none", tone: workingEntries.length > 0 ? "accent" : "dim" })] }), _jsxs(Box, { flexDirection: "row", children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingRight: 2, children: [hasSources ? (_jsxs(_Fragment, { children: [_jsx(SectionHead, { label: "Sources", count: totalSources, marginTop: 0, rightAction: detailOpen ? "esc to close detail" : "↑↓ select · ⏎ actions" }), _jsxs(Box, { marginLeft: SOURCES_ROWS_INDENT, flexDirection: "column", children: [data.sources.map((s, i) => (_jsx(SourceRow, { source: s, active: i === cursor, widthHint: rowWidth(stdout?.columns, detailOpen, SOURCES_ROWS_INDENT) }, s.alias))), _jsx(ListRow, { icon: icons.diamond, title: "all sources", subtitle: `aplica a las ${totalSources} fuentes`, chevron: true, active: cursor === targets.length - 1, widthHint: rowWidth(stdout?.columns, detailOpen, SOURCES_ROWS_INDENT) })] })] })) : null, _jsx(BranchList, { label: "Ramas de trabajo actuales", entries: workingEntries, emptyHint: "(no working branches declared)" }), qaEntries.length > 0 ? (_jsx(BranchList, { label: "Ramas QA actuales", entries: qaEntries })) : null] }), detailOpen ? (_jsx(SourceActionsPanel, { isAll: isAllTarget, name: isAllTarget ? "all sources" : currentTarget, source: currentSource, totalSources: totalSources, actions: detailActions, focusedAction: actionCursor })) : null] }), _jsx(Box, { marginTop: 1, children: _jsx(QuickActions, { actions: [{ key: "s", label: "start session" }] }) })] }));
402
+ if (mode.kind === "launch-form") {
403
+ return (_jsx(SourceLaunchForm, { descriptor: mode.descriptor, isActive: isActive, onCancel: () => setMode({ kind: "list" }), onSubmit: (v) => void doLaunch({ alias: mode.alias, profile: v.profile, values: v.values }) }));
404
+ }
405
+ if (mode.kind === "busy") {
406
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SectionHead, { label: "Procesos", hint: mode.label }), _jsx(Box, { marginLeft: 2, marginTop: 1, children: _jsxs(Text, { color: colors.warn, children: [icons.spinner, " ", mode.label] }) })] }));
407
+ }
408
+ if (mode.kind === "collision") {
409
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SectionHead, { label: "Ya en ejecuci\u00F3n", marginTop: 0 }), _jsxs(Box, { marginLeft: 2, marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: colors.warn, children: ["Ya corre ", mode.existing.sourceAlias, mode.existing.profile ? ` · ${mode.existing.profile}` : "", " (PID ", mode.existing.pid, ")."] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.faint, children: "r re-lanzar (detiene el actual + lanza de nuevo) \u00B7 esc cancelar" }) })] })] }));
410
+ }
411
+ if (mode.kind === "notice") {
412
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SectionHead, { label: mode.tone === "ok" ? "Listo" : "Atención", marginTop: 0 }), _jsxs(Box, { marginLeft: 2, marginTop: 1, flexDirection: "column", children: [mode.lines.map((l, i) => (_jsx(Text, { color: mode.tone === "ok" ? colors.ok : colors.warn, children: l }, `${i}-${l}`))), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.faint, children: "\u23CE/esc volver" }) })] })] }));
413
+ }
414
+ if (mode.kind === "log") {
415
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SectionHead, { label: `Log · ${mode.record.sourceAlias}${mode.record.profile ? ` · ${mode.record.profile}` : ""}`, hint: mode.record.logPath, marginTop: 0 }), _jsxs(Box, { marginLeft: 2, marginTop: 1, flexDirection: "column", children: [mode.lines.map((l, i) => (_jsx(Text, { color: colors.dim, children: l }, `${i}-${l.slice(0, 8)}`))), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.faint, children: "\u23CE/esc volver" }) })] })] }));
416
+ }
417
+ const detailActions = detailItems.map((it) => {
418
+ if (it.kind === "launch") {
419
+ return currentSource?.launchable
420
+ ? { name: LAUNCH_ACTION.name, description: "spawn detached" }
421
+ : { name: LAUNCH_ACTION.name, description: "sin descriptor — /w:workspace-init" };
422
+ }
423
+ const fa = FLOW_ACTIONS.find((a) => a.id === it.action);
424
+ return { name: fa?.name ?? it.action, description: fa?.description ?? "" };
425
+ });
426
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PageHead, { title: `Workspace · ${shortName}`, action: _jsx(Text, { color: colors.faint, children: wsPath }) }), description ? (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: description }) })) : null, _jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(StatTile, { label: "git", value: data.git?.branch ?? "—", sub: statGitSub(data), accent: true }), _jsx(StatTile, { label: "working tree", value: `${dirty} dirty`, sub: `${data.git?.staged ?? 0} staged · ${data.git?.untracked ?? 0} untracked`, tone: dirty > 0 ? "warn" : "dim" }), _jsx(StatTile, { label: "sources", value: `${totalSources}`, sub: `${dirtySources} dirty`, tone: totalSources > 0 ? "accent" : "dim" }), _jsx(StatTile, { label: "working branches", value: `${workingEntries.length}`, sub: workingEntries.length > 0 ? "declared" : "none", tone: workingEntries.length > 0 ? "accent" : "dim" }), _jsx(StatTile, { label: "procesos", value: `${runningCount}`, sub: processes.length > runningCount
427
+ ? `${processes.length - runningCount} inactivos`
428
+ : "running", tone: runningCount > 0 ? "accent" : "dim" })] }), _jsxs(Box, { flexDirection: "row", children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingRight: 2, children: [hasSources ? (_jsxs(_Fragment, { children: [_jsx(SectionHead, { label: "Sources", count: totalSources, marginTop: 0, rightAction: detailOpen ? "esc to close detail" : "↑↓ select · ⏎ actions" }), _jsxs(Box, { marginLeft: SOURCES_ROWS_INDENT, flexDirection: "column", children: [data.sources.map((s, i) => (_jsx(SourceRow, { source: s, active: i === cursor, widthHint: rowWidth(stdout?.columns, detailOpen, SOURCES_ROWS_INDENT) }, s.alias))), _jsx(ListRow, { icon: icons.diamond, title: "all sources", subtitle: `aplica a las ${totalSources} fuentes`, chevron: true, active: cursor === targets.length - 1, widthHint: rowWidth(stdout?.columns, detailOpen, SOURCES_ROWS_INDENT) })] })] })) : null, _jsx(BranchList, { label: "Ramas de trabajo actuales", entries: workingEntries, emptyHint: "(no working branches declared)" }), qaEntries.length > 0 ? (_jsx(BranchList, { label: "Ramas QA actuales", entries: qaEntries })) : null, _jsx(ProcessList, { processes: processes, cursor: processCursor, focused: mode.kind === "process", widthHint: rowWidth(stdout?.columns, detailOpen, SOURCES_ROWS_INDENT) })] }), detailOpen ? (_jsx(SourceActionsPanel, { isAll: isAllTarget, name: isAllTarget ? "all sources" : currentTarget, source: currentSource, totalSources: totalSources, actions: detailActions, focusedAction: actionCursor })) : null] }), _jsx(Box, { marginTop: 1, children: _jsx(QuickActions, { actions: [
429
+ { key: "⏎", label: "source actions" },
430
+ ...(processes.length > 0 ? [{ key: "p", label: "manage processes" }] : []),
431
+ { key: "s", label: "start session" },
432
+ ] }) })] }));
261
433
  }
262
434
  function SourceRow({ source, active, widthHint, }) {
263
435
  const status = source.dirty ? `${source.changedFiles} dirty` : "in sync";