@tacuchi/agent-workflow-cli 8.0.0 → 9.1.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/dist/application/self/install-skill.d.ts +2 -0
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +75 -3
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/uninstall.d.ts.map +1 -1
- package/dist/application/self/uninstall.js +37 -1
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/cli/main.js +0 -0
- package/dist/cli/tui/app.d.ts.map +1 -1
- package/dist/cli/tui/app.js +149 -72
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/activity-feed.d.ts +16 -0
- package/dist/cli/tui/components/activity-feed.d.ts.map +1 -0
- package/dist/cli/tui/components/activity-feed.js +35 -0
- package/dist/cli/tui/components/activity-feed.js.map +1 -0
- package/dist/cli/tui/components/command-palette.d.ts +1 -1
- package/dist/cli/tui/components/command-palette.d.ts.map +1 -1
- package/dist/cli/tui/components/command-palette.js +5 -5
- package/dist/cli/tui/components/command-palette.js.map +1 -1
- package/dist/cli/tui/components/confirm-banner.d.ts +10 -0
- package/dist/cli/tui/components/confirm-banner.d.ts.map +1 -0
- package/dist/cli/tui/components/confirm-banner.js +11 -0
- package/dist/cli/tui/components/confirm-banner.js.map +1 -0
- package/dist/cli/tui/components/detail-panel.d.ts +34 -0
- package/dist/cli/tui/components/detail-panel.d.ts.map +1 -0
- package/dist/cli/tui/components/detail-panel.js +83 -0
- package/dist/cli/tui/components/detail-panel.js.map +1 -0
- package/dist/cli/tui/components/family-card.d.ts +5 -1
- package/dist/cli/tui/components/family-card.d.ts.map +1 -1
- package/dist/cli/tui/components/family-card.js +35 -4
- package/dist/cli/tui/components/family-card.js.map +1 -1
- package/dist/cli/tui/components/home-footer.d.ts +6 -0
- package/dist/cli/tui/components/home-footer.d.ts.map +1 -0
- package/dist/cli/tui/components/home-footer.js +22 -0
- package/dist/cli/tui/components/home-footer.js.map +1 -0
- package/dist/cli/tui/components/home-header.d.ts +9 -0
- package/dist/cli/tui/components/home-header.d.ts.map +1 -0
- package/dist/cli/tui/components/home-header.js +9 -0
- package/dist/cli/tui/components/home-header.js.map +1 -0
- package/dist/cli/tui/components/inline-wizard.d.ts +19 -0
- package/dist/cli/tui/components/inline-wizard.d.ts.map +1 -0
- package/dist/cli/tui/components/inline-wizard.js +16 -0
- package/dist/cli/tui/components/inline-wizard.js.map +1 -0
- package/dist/cli/tui/components/list-row.d.ts +11 -3
- package/dist/cli/tui/components/list-row.d.ts.map +1 -1
- package/dist/cli/tui/components/list-row.js +71 -13
- package/dist/cli/tui/components/list-row.js.map +1 -1
- package/dist/cli/tui/components/page-head.d.ts +8 -16
- package/dist/cli/tui/components/page-head.d.ts.map +1 -1
- package/dist/cli/tui/components/page-head.js +21 -14
- package/dist/cli/tui/components/page-head.js.map +1 -1
- package/dist/cli/tui/components/phase-card.d.ts +2 -1
- package/dist/cli/tui/components/phase-card.d.ts.map +1 -1
- package/dist/cli/tui/components/phase-card.js +9 -4
- package/dist/cli/tui/components/phase-card.js.map +1 -1
- package/dist/cli/tui/components/quick-actions.d.ts +9 -0
- package/dist/cli/tui/components/quick-actions.d.ts.map +1 -0
- package/dist/cli/tui/components/quick-actions.js +9 -0
- package/dist/cli/tui/components/quick-actions.js.map +1 -0
- package/dist/cli/tui/components/section-head.d.ts +10 -0
- package/dist/cli/tui/components/section-head.d.ts.map +1 -0
- package/dist/cli/tui/components/section-head.js +8 -0
- package/dist/cli/tui/components/section-head.js.map +1 -0
- package/dist/cli/tui/components/sidebar.d.ts +27 -0
- package/dist/cli/tui/components/sidebar.d.ts.map +1 -0
- package/dist/cli/tui/components/sidebar.js +37 -0
- package/dist/cli/tui/components/sidebar.js.map +1 -0
- package/dist/cli/tui/components/stat-tile.d.ts +4 -2
- package/dist/cli/tui/components/stat-tile.d.ts.map +1 -1
- package/dist/cli/tui/components/stat-tile.js +9 -8
- package/dist/cli/tui/components/stat-tile.js.map +1 -1
- package/dist/cli/tui/components/tabs-config.d.ts +18 -0
- package/dist/cli/tui/components/tabs-config.d.ts.map +1 -0
- package/dist/cli/tui/components/tabs-config.js +7 -0
- package/dist/cli/tui/components/tabs-config.js.map +1 -0
- package/dist/cli/tui/components/toast-stack.d.ts +3 -3
- package/dist/cli/tui/components/toast-stack.js +3 -3
- package/dist/cli/tui/data/activity.d.ts +21 -0
- package/dist/cli/tui/data/activity.d.ts.map +1 -0
- package/dist/cli/tui/data/activity.js +83 -0
- package/dist/cli/tui/data/activity.js.map +1 -0
- package/dist/cli/tui/tabs/mcp-tab.d.ts +3 -11
- package/dist/cli/tui/tabs/mcp-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +112 -85
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.d.ts +0 -11
- package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +38 -78
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.d.ts +1 -21
- package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +65 -85
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/dist/cli/tui/tabs/status-tab.d.ts +4 -1
- package/dist/cli/tui/tabs/status-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/status-tab.js +50 -11
- package/dist/cli/tui/tabs/status-tab.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.d.ts +3 -1
- package/dist/cli/tui/tabs/workflow-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +31 -15
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/dist/cli/tui/theme.d.ts +75 -55
- package/dist/cli/tui/theme.d.ts.map +1 -1
- package/dist/cli/tui/theme.js +75 -50
- package/dist/cli/tui/theme.js.map +1 -1
- package/dist/domain/harnesses.d.ts.map +1 -1
- package/dist/domain/harnesses.js +6 -1
- package/dist/domain/harnesses.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/orchestration.d.ts +0 -5
- package/dist/cli/commands/orchestration.d.ts.map +0 -1
- package/dist/cli/commands/orchestration.js +0 -84
- package/dist/cli/commands/orchestration.js.map +0 -1
- package/dist/cli/commands/wave2-extras.d.ts +0 -7
- package/dist/cli/commands/wave2-extras.d.ts.map +0 -1
- package/dist/cli/commands/wave2-extras.js +0 -87
- package/dist/cli/commands/wave2-extras.js.map +0 -1
- package/dist/cli/commands/wave2-final.d.ts +0 -8
- package/dist/cli/commands/wave2-final.d.ts.map +0 -1
- package/dist/cli/commands/wave2-final.js +0 -134
- package/dist/cli/commands/wave2-final.js.map +0 -1
- package/dist/cli/commands/wave4d-simple.d.ts +0 -6
- package/dist/cli/commands/wave4d-simple.d.ts.map +0 -1
- package/dist/cli/commands/wave4d-simple.js +0 -138
- package/dist/cli/commands/wave4d-simple.js.map +0 -1
- package/dist/cli/tui/components/action-modal.d.ts +0 -33
- package/dist/cli/tui/components/action-modal.d.ts.map +0 -1
- package/dist/cli/tui/components/action-modal.js +0 -41
- package/dist/cli/tui/components/action-modal.js.map +0 -1
- package/dist/cli/tui/components/confirm-modal.d.ts +0 -12
- package/dist/cli/tui/components/confirm-modal.d.ts.map +0 -1
- package/dist/cli/tui/components/confirm-modal.js +0 -18
- package/dist/cli/tui/components/confirm-modal.js.map +0 -1
- package/dist/cli/tui/components/connections-grid.d.ts +0 -8
- package/dist/cli/tui/components/connections-grid.d.ts.map +0 -1
- package/dist/cli/tui/components/connections-grid.js +0 -55
- package/dist/cli/tui/components/connections-grid.js.map +0 -1
- package/dist/cli/tui/components/connections-table.d.ts +0 -5
- package/dist/cli/tui/components/connections-table.d.ts.map +0 -1
- package/dist/cli/tui/components/connections-table.js +0 -11
- package/dist/cli/tui/components/connections-table.js.map +0 -1
- package/dist/cli/tui/components/footer.d.ts +0 -4
- package/dist/cli/tui/components/footer.d.ts.map +0 -1
- package/dist/cli/tui/components/footer.js +0 -6
- package/dist/cli/tui/components/footer.js.map +0 -1
- package/dist/cli/tui/components/frame-box.d.ts +0 -10
- package/dist/cli/tui/components/frame-box.d.ts.map +0 -1
- package/dist/cli/tui/components/frame-box.js +0 -9
- package/dist/cli/tui/components/frame-box.js.map +0 -1
- package/dist/cli/tui/components/header.d.ts +0 -14
- package/dist/cli/tui/components/header.d.ts.map +0 -1
- package/dist/cli/tui/components/header.js +0 -21
- package/dist/cli/tui/components/header.js.map +0 -1
- package/dist/cli/tui/components/host-chip.d.ts +0 -28
- package/dist/cli/tui/components/host-chip.d.ts.map +0 -1
- package/dist/cli/tui/components/host-chip.js +0 -35
- package/dist/cli/tui/components/host-chip.js.map +0 -1
- package/dist/cli/tui/components/keymap-bar.d.ts +0 -17
- package/dist/cli/tui/components/keymap-bar.d.ts.map +0 -1
- package/dist/cli/tui/components/keymap-bar.js +0 -13
- package/dist/cli/tui/components/keymap-bar.js.map +0 -1
- package/dist/cli/tui/components/pill.d.ts +0 -16
- package/dist/cli/tui/components/pill.d.ts.map +0 -1
- package/dist/cli/tui/components/pill.js +0 -24
- package/dist/cli/tui/components/pill.js.map +0 -1
- package/dist/cli/tui/components/sectioned-menu.d.ts +0 -24
- package/dist/cli/tui/components/sectioned-menu.d.ts.map +0 -1
- package/dist/cli/tui/components/sectioned-menu.js +0 -72
- package/dist/cli/tui/components/sectioned-menu.js.map +0 -1
- package/dist/cli/tui/components/tab-bar.d.ts +0 -23
- package/dist/cli/tui/components/tab-bar.d.ts.map +0 -1
- package/dist/cli/tui/components/tab-bar.js +0 -17
- package/dist/cli/tui/components/tab-bar.js.map +0 -1
- package/dist/cli/tui/screens/main-menu.d.ts +0 -8
- package/dist/cli/tui/screens/main-menu.d.ts.map +0 -1
- package/dist/cli/tui/screens/main-menu.js +0 -24
- package/dist/cli/tui/screens/main-menu.js.map +0 -1
- package/dist/cli/tui/screens/mcp-done.d.ts +0 -10
- package/dist/cli/tui/screens/mcp-done.d.ts.map +0 -1
- package/dist/cli/tui/screens/mcp-done.js +0 -24
- package/dist/cli/tui/screens/mcp-done.js.map +0 -1
- package/dist/cli/tui/screens/mcp-wizard.d.ts +0 -10
- package/dist/cli/tui/screens/mcp-wizard.d.ts.map +0 -1
- package/dist/cli/tui/screens/mcp-wizard.js +0 -97
- package/dist/cli/tui/screens/mcp-wizard.js.map +0 -1
|
@@ -1,15 +1,34 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text, useInput } from "ink";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput, useStdout } from "ink";
|
|
3
3
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
4
|
import { selfMcpConfig, } from "../../../application/self/mcp-config.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { ActivityFeed } from "../components/activity-feed.js";
|
|
6
|
+
import { ConfirmBanner } from "../components/confirm-banner.js";
|
|
7
|
+
import { DetailPanel } from "../components/detail-panel.js";
|
|
8
8
|
import { InputPrompt } from "../components/input-prompt.js";
|
|
9
9
|
import { ListRow } from "../components/list-row.js";
|
|
10
10
|
import { PageHead } from "../components/page-head.js";
|
|
11
|
+
import { QuickActions } from "../components/quick-actions.js";
|
|
12
|
+
import { SectionHead } from "../components/section-head.js";
|
|
11
13
|
import { useInputLock } from "../input-lock.js";
|
|
12
14
|
import { colors, icons } from "../theme.js";
|
|
15
|
+
/**
|
|
16
|
+
* Calcula el ancho disponible para un row de la lista, considerando si el
|
|
17
|
+
* detail panel está abierto.
|
|
18
|
+
*
|
|
19
|
+
* Overhead horizontal (sin sidebar — v9.1.0 palette-home):
|
|
20
|
+
* - ScreenFrame border (2) + paddingX (4) = 6
|
|
21
|
+
* - Main paddingX (2)
|
|
22
|
+
* - List paddingRight (2)
|
|
23
|
+
* - Detail panel + separator (39) cuando está abierto
|
|
24
|
+
* - Safety margin (2)
|
|
25
|
+
*/
|
|
26
|
+
function computeRowWidth(termCols, detailOpen) {
|
|
27
|
+
const cols = termCols ?? 100;
|
|
28
|
+
const baseOverhead = 12; // 6 + 2 + 2 + 2
|
|
29
|
+
const detailOverhead = detailOpen ? 39 : 0;
|
|
30
|
+
return Math.max(16, cols - baseOverhead - detailOverhead);
|
|
31
|
+
}
|
|
13
32
|
function buildArgs(action, values = {}) {
|
|
14
33
|
return {
|
|
15
34
|
rest: ["mcp", action],
|
|
@@ -19,25 +38,16 @@ function buildArgs(action, values = {}) {
|
|
|
19
38
|
valuesMulti: new Map(),
|
|
20
39
|
};
|
|
21
40
|
}
|
|
22
|
-
|
|
23
|
-
* McpTab — listado MCP single-column + ActionModal overlay + Add wizard inline.
|
|
24
|
-
*
|
|
25
|
-
* Layout match con handoff (variant-palette.jsx MCPTab):
|
|
26
|
-
* PageHead con `+ add connection` action button → FrameBox "connections" accent
|
|
27
|
-
* con ListRow por conexión → ActionModal overlay al ⏎ (Test / Edit / Remove).
|
|
28
|
-
*
|
|
29
|
-
* Add/Edit wizard inline tras `a` shortcut o acción Edit. ConfirmModal para
|
|
30
|
-
* remove. Busy label durante ops.
|
|
31
|
-
*/
|
|
32
|
-
export function McpTab({ ctx, isActive, onToast }) {
|
|
41
|
+
export function McpTab({ ctx, isActive, onToast, recentEvents }) {
|
|
33
42
|
const [connections, setConnections] = useState([]);
|
|
34
43
|
const [cursor, setCursor] = useState(0);
|
|
35
44
|
const [actionCursor, setActionCursor] = useState(0);
|
|
36
45
|
const [mode, setMode] = useState({ kind: "list" });
|
|
37
46
|
const startedRef = useRef(false);
|
|
38
47
|
const { lock, unlock } = useInputLock();
|
|
48
|
+
const { stdout } = useStdout();
|
|
39
49
|
useEffect(() => {
|
|
40
|
-
if (mode.kind === "list" || mode.kind === "
|
|
50
|
+
if (mode.kind === "list" || mode.kind === "detail")
|
|
41
51
|
unlock();
|
|
42
52
|
else
|
|
43
53
|
lock();
|
|
@@ -77,19 +87,31 @@ export function McpTab({ ctx, isActive, onToast }) {
|
|
|
77
87
|
return false;
|
|
78
88
|
}
|
|
79
89
|
}, [ctx, onToast]);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Sincroniza el MCP entry de la connection en los 3 hosts (Claude/Codex/Warp).
|
|
92
|
+
* Esto es lo que "activa" la connection — sin install en hosts, los skills no
|
|
93
|
+
* la pueden consumir. Reemplaza el viejo "doctor" (que solo reportaba drift).
|
|
94
|
+
*/
|
|
95
|
+
const runSyncToHosts = useCallback(async (name) => {
|
|
96
|
+
const hosts = ["claude", "codex", "warp"];
|
|
97
|
+
let allOk = true;
|
|
98
|
+
for (const host of hosts) {
|
|
99
|
+
const ok = await runRawAction(`install-${host}`, name, `syncing ${name} → ${host}…`);
|
|
100
|
+
if (!ok)
|
|
101
|
+
allOk = false;
|
|
102
|
+
}
|
|
103
|
+
if (allOk) {
|
|
104
|
+
onToast?.({ tone: "ok", title: `Synced ${name}`, body: "claude · codex · warp" });
|
|
105
|
+
}
|
|
84
106
|
await refresh();
|
|
85
107
|
setMode({ kind: "list" });
|
|
86
108
|
}, [runRawAction, refresh, onToast]);
|
|
87
|
-
const
|
|
109
|
+
const triggerAction = useCallback((id) => {
|
|
88
110
|
if (!current)
|
|
89
111
|
return;
|
|
90
112
|
switch (id) {
|
|
91
113
|
case "test":
|
|
92
|
-
void
|
|
114
|
+
void runSyncToHosts(current.nombre);
|
|
93
115
|
return;
|
|
94
116
|
case "edit":
|
|
95
117
|
setMode({
|
|
@@ -102,32 +124,20 @@ export function McpTab({ ctx, isActive, onToast }) {
|
|
|
102
124
|
setMode({ kind: "confirm-delete", name: current.nombre });
|
|
103
125
|
return;
|
|
104
126
|
}
|
|
105
|
-
}, [current,
|
|
106
|
-
//
|
|
107
|
-
const
|
|
127
|
+
}, [current, runSyncToHosts]);
|
|
128
|
+
// Detail panel actions (Sync/Edit/Remove).
|
|
129
|
+
const detailActions = current
|
|
108
130
|
? [
|
|
131
|
+
{ name: "Sync to hosts", description: "Install to Claude/Codex/Warp." },
|
|
132
|
+
{ name: "Edit connection", description: "Alias / host / DSN." },
|
|
109
133
|
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
label: "Test connection",
|
|
113
|
-
desc: `Open a socket to ${current.server_name} and run \`SELECT 1\``,
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
id: "edit",
|
|
117
|
-
icon: icons.edit,
|
|
118
|
-
label: "Edit connection",
|
|
119
|
-
desc: "Modify alias, host or database in profile.json",
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
id: "remove",
|
|
123
|
-
icon: icons.cross,
|
|
124
|
-
label: "Remove connection",
|
|
125
|
-
desc: `Delete from \`mcp_databases[]\` and unexport ${current.dsn_var}`,
|
|
134
|
+
name: "Remove connection",
|
|
135
|
+
description: "Delete entry + DSN export.",
|
|
126
136
|
danger: true,
|
|
127
137
|
},
|
|
128
138
|
]
|
|
129
139
|
: [];
|
|
130
|
-
// input — list mode
|
|
140
|
+
// input — list mode (↑↓ navega · ⏎ abre detail · 'a' add wizard)
|
|
131
141
|
useInput((input, key) => {
|
|
132
142
|
if (!isActive || mode.kind !== "list")
|
|
133
143
|
return;
|
|
@@ -137,29 +147,27 @@ export function McpTab({ ctx, isActive, onToast }) {
|
|
|
137
147
|
}
|
|
138
148
|
if (key.upArrow) {
|
|
139
149
|
setCursor((c) => Math.max(0, c - 1));
|
|
140
|
-
setActionCursor(0);
|
|
141
150
|
return;
|
|
142
151
|
}
|
|
143
152
|
if (key.downArrow) {
|
|
144
153
|
setCursor((c) => (connections.length === 0 ? 0 : Math.min(connections.length - 1, c + 1)));
|
|
145
|
-
setActionCursor(0);
|
|
146
154
|
return;
|
|
147
155
|
}
|
|
148
156
|
if (key.return && current) {
|
|
149
157
|
setActionCursor(0);
|
|
150
|
-
setMode({ kind: "
|
|
158
|
+
setMode({ kind: "detail" });
|
|
151
159
|
}
|
|
152
160
|
}, { isActive });
|
|
153
|
-
// input —
|
|
161
|
+
// input — detail mode (↑↓ navega actions · ⏎ ejecuta focused · Esc cierra)
|
|
154
162
|
useInput((_input, key) => {
|
|
155
|
-
if (!isActive || mode.kind !== "
|
|
163
|
+
if (!isActive || mode.kind !== "detail" || !current)
|
|
156
164
|
return;
|
|
157
165
|
if (key.upArrow) {
|
|
158
166
|
setActionCursor((c) => Math.max(0, c - 1));
|
|
159
167
|
return;
|
|
160
168
|
}
|
|
161
169
|
if (key.downArrow) {
|
|
162
|
-
setActionCursor((c) => Math.min(
|
|
170
|
+
setActionCursor((c) => Math.min(detailActions.length - 1, c + 1));
|
|
163
171
|
return;
|
|
164
172
|
}
|
|
165
173
|
if (key.escape) {
|
|
@@ -167,12 +175,21 @@ export function McpTab({ ctx, isActive, onToast }) {
|
|
|
167
175
|
return;
|
|
168
176
|
}
|
|
169
177
|
if (key.return) {
|
|
170
|
-
const
|
|
171
|
-
if (
|
|
172
|
-
|
|
178
|
+
const action = detailActions[actionCursor];
|
|
179
|
+
if (!action)
|
|
180
|
+
return;
|
|
181
|
+
if (action.danger) {
|
|
182
|
+
triggerAction("remove");
|
|
183
|
+
}
|
|
184
|
+
else if (action.name.startsWith("Edit")) {
|
|
185
|
+
triggerAction("edit");
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
triggerAction("test");
|
|
189
|
+
}
|
|
173
190
|
}
|
|
174
191
|
}, { isActive });
|
|
175
|
-
// input — confirm-delete
|
|
192
|
+
// input — confirm-delete (y confirma · n/esc vuelve al detail)
|
|
176
193
|
useInput((input, key) => {
|
|
177
194
|
if (!isActive || mode.kind !== "confirm-delete")
|
|
178
195
|
return;
|
|
@@ -185,7 +202,7 @@ export function McpTab({ ctx, isActive, onToast }) {
|
|
|
185
202
|
});
|
|
186
203
|
}
|
|
187
204
|
else if (key.escape || input === "n" || input === "N") {
|
|
188
|
-
setMode({ kind: "
|
|
205
|
+
setMode({ kind: "detail" });
|
|
189
206
|
}
|
|
190
207
|
}, { isActive });
|
|
191
208
|
// input — esc en wizard
|
|
@@ -197,37 +214,42 @@ export function McpTab({ ctx, isActive, onToast }) {
|
|
|
197
214
|
setMode({ kind: "list" });
|
|
198
215
|
}
|
|
199
216
|
}, { isActive });
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
217
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PageHead, { title: "MCP", count: { label: `${connections.length} databases · profile.json`, tone: "accent" }, action: _jsx(Text, { color: colors.mute, children: "aliases match mcp_databases[] \u00B7 consumed by skills" }) }), _jsxs(Box, { flexDirection: "row", children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingRight: 2, children: [_jsx(SectionHead, { label: "Connections", count: connections.length, rightAction: mode.kind === "wizard-name" || mode.kind === "wizard-dsn"
|
|
218
|
+
? "esc cancel"
|
|
219
|
+
: mode.kind === "detail" || mode.kind === "confirm-delete"
|
|
220
|
+
? "esc to close detail"
|
|
221
|
+
: "⏎ for actions · a · + add" }), connections.length === 0 && mode.kind === "list" ? (_jsxs(Box, { marginLeft: 2, marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.dim, children: "No MCP connections yet." }), _jsxs(Text, { color: colors.dim, children: ["Register a DSN to let skills query your DB. Press", " ", _jsx(Text, { color: colors.accent, bold: true, children: "a" }), " ", "to start."] })] })) : (_jsx(Box, { marginTop: 0, flexDirection: "column", children: connections.map((c, i) => (_jsx(ListRow, { icon: icons.diamond, iconActive: true, title: c.nombre, subtitle: `${c.dsn_var} · ${c.server_name}`, state: { label: "registered", tone: "ok" }, chevron: true, active: i === cursor, dimmed: mode.kind === "wizard-name" || mode.kind === "wizard-dsn", widthHint: computeRowWidth(stdout?.columns, mode.kind === "detail" ||
|
|
222
|
+
mode.kind === "confirm-delete" ||
|
|
223
|
+
mode.kind === "wizard-name" ||
|
|
224
|
+
mode.kind === "wizard-dsn") }, c.nombre))) })), mode.kind === "wizard-name" ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(SectionHead, { label: mode.editingName
|
|
225
|
+
? `Edit connection · ${mode.editingName}`
|
|
226
|
+
: "Register new connection", hint: "Step 1 of 2 \u00B7 Alias", rightAction: "\u23CE next \u00B7 esc cancel" }), _jsx(Box, { marginLeft: 2, marginTop: 0, children: _jsx(InputPrompt, { message: "alias (slug-kebab):", onSubmit: (value) => {
|
|
227
|
+
const trimmed = value.trim() || mode.editingName || "";
|
|
228
|
+
if (!trimmed) {
|
|
229
|
+
onToast?.({ tone: "err", title: "Empty alias" });
|
|
230
|
+
setMode({ kind: "list" });
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
setMode({
|
|
234
|
+
kind: "wizard-dsn",
|
|
235
|
+
name: trimmed,
|
|
236
|
+
...(mode.editingName ? { editingExisting: mode.editingName } : {}),
|
|
237
|
+
});
|
|
238
|
+
}, isActive: isActive }) })] })) : null, mode.kind === "wizard-dsn" ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(SectionHead, { label: `Register new connection · ${mode.name}`, hint: "Step 2 of 2 \u00B7 DSN env var", rightAction: "\u23CE register \u00B7 esc cancel" }), _jsx(Box, { marginLeft: 2, marginTop: 0, children: _jsx(InputPrompt, { message: "DSN env var (UPPER_SNAKE_CASE):", onSubmit: (value) => {
|
|
239
|
+
const dsnVar = value.trim();
|
|
240
|
+
if (!dsnVar) {
|
|
241
|
+
onToast?.({ tone: "err", title: "Empty DSN var" });
|
|
242
|
+
setMode({ kind: "list" });
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
void registerConnection(mode.name, dsnVar);
|
|
246
|
+
}, isActive: isActive }) })] })) : null, mode.kind === "list" ? (_jsxs(_Fragment, { children: [_jsx(SectionHead, { label: "Recent", count: recentEvents?.length ?? 0, marginTop: 1 }), _jsx(Box, { marginLeft: 2, children: _jsx(ActivityFeed, { events: recentEvents ?? [], cap: 4, emptyHint: " (no recent MCP calls yet)" }) })] })) : null, mode.kind === "busy" ? (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: colors.warn, children: [icons.spinner, " ", mode.label] }) })) : null] }), current && (mode.kind === "detail" || mode.kind === "confirm-delete") ? (_jsxs(Box, { flexDirection: "column", borderLeft: false, children: [_jsx(Text, { color: colors.borderFaint, children: "│" }), _jsx(DetailPanel, { header: {
|
|
247
|
+
name: current.nombre,
|
|
248
|
+
meta: `${current.server_name} · ${current.dsn_var}\nlast test: —`,
|
|
249
|
+
}, statePill: { label: "registered", tone: "ok" }, actions: detailActions, focusedAction: actionCursor, banner: mode.kind === "confirm-delete" ? (_jsx(ConfirmBanner, { title: `× Remove ${mode.name}?`, body: `This deletes the entry from profile.json and unexports ${current.dsn_var}. Not reversible.` })) : null })] })) : mode.kind === "wizard-name" || mode.kind === "wizard-dsn" ? (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.borderFaint, children: "│" }), _jsxs(Box, { flexDirection: "column", width: 38, paddingLeft: 1, children: [_jsx(Box, { children: _jsx(Text, { color: colors.accent, bold: true, children: "+ New connection" }) }), _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: "2-step wizard \u00B7 profile.json" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.mute, children: "STEPS" }), _jsx(WizardStep, { index: 1, label: "Alias", active: mode.kind === "wizard-name", completed: mode.kind === "wizard-dsn", value: mode.kind === "wizard-dsn" ? mode.name : undefined }), _jsx(WizardStep, { index: 2, label: "DSN env var", active: mode.kind === "wizard-dsn", completed: false })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.borderFaint, children: "─".repeat(36) }), _jsx(Text, { color: colors.faint, children: "\u23CE next \u00B7 esc cancel" })] })] })] })) : null] }), _jsx(Box, { marginTop: 1, children: _jsx(QuickActions, { actions: [
|
|
250
|
+
{ key: "a", label: "add connection" },
|
|
251
|
+
{ key: "^K", label: "palette" },
|
|
252
|
+
] }) })] }));
|
|
231
253
|
async function registerConnection(name, dsnVar) {
|
|
232
254
|
setMode({ kind: "busy", label: `registering ${name}…` });
|
|
233
255
|
try {
|
|
@@ -248,4 +270,9 @@ export function McpTab({ ctx, isActive, onToast }) {
|
|
|
248
270
|
}
|
|
249
271
|
}
|
|
250
272
|
}
|
|
273
|
+
function WizardStep({ index, label, active, completed, value, hint, }) {
|
|
274
|
+
const glyph = completed ? icons.check : active ? "→" : " ";
|
|
275
|
+
const color = completed ? colors.ok : active ? colors.accent : colors.dim;
|
|
276
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: active ? colors.accent : colors.faint, children: active ? icons.focusBar : " " }), _jsxs(Text, { color: color, bold: active, children: [glyph, " ", index, ". ", label] })] }), value ? (_jsx(Box, { marginLeft: 3, children: _jsx(Text, { color: colors.ok, children: value }) })) : null, hint ? (_jsx(Box, { marginLeft: 3, children: _jsx(Text, { color: colors.dim, children: hint }) })) : null] }));
|
|
277
|
+
}
|
|
251
278
|
//# sourceMappingURL=mcp-tab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tab.js","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/mcp-tab.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-tab.js","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/mcp-tab.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,18 +2,7 @@ import type { CliContext } from "../../types.js";
|
|
|
2
2
|
export interface ProjectTabProps {
|
|
3
3
|
ctx: CliContext;
|
|
4
4
|
isActive: boolean;
|
|
5
|
-
/** Callback opcional para emitir toasts del tab */
|
|
6
5
|
onRunAction?: (id: string, payload?: Record<string, unknown>) => void;
|
|
7
6
|
}
|
|
8
|
-
/**
|
|
9
|
-
* ProjectTab — vista agregada del workspace.
|
|
10
|
-
*
|
|
11
|
-
* Dos estados:
|
|
12
|
-
* - **No inicializado** (sin bloque AW-PROJECT en CLAUDE.md/AGENTS.md) →
|
|
13
|
-
* landing con instrucciones para `project-init` o `hub-init` + info detectada
|
|
14
|
-
* (cwd, git).
|
|
15
|
-
* - **Inicializado** → stat strip + git workspace + sesiones + pendientes +
|
|
16
|
-
* actividad. En hub mode, también lista de sources con dirty status.
|
|
17
|
-
*/
|
|
18
7
|
export declare function ProjectTab({ ctx, isActive, onRunAction }: ProjectTabProps): import("react/jsx-runtime").JSX.Element;
|
|
19
8
|
//# sourceMappingURL=project-tab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tab.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/project-tab.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-tab.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/project-tab.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQjD,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,26 +1,16 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text, useInput } from "ink";
|
|
3
|
-
import { useCallback, useEffect,
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
4
|
import { buildProjectTabData, } from "../../../application/project-tab-data.js";
|
|
5
|
-
import {
|
|
5
|
+
import { ActivityFeed } from "../components/activity-feed.js";
|
|
6
6
|
import { PageHead } from "../components/page-head.js";
|
|
7
|
-
import {
|
|
7
|
+
import { QuickActions } from "../components/quick-actions.js";
|
|
8
|
+
import { SectionHead } from "../components/section-head.js";
|
|
8
9
|
import { StatTile } from "../components/stat-tile.js";
|
|
9
10
|
import { colors, icons } from "../theme.js";
|
|
10
|
-
/**
|
|
11
|
-
* ProjectTab — vista agregada del workspace.
|
|
12
|
-
*
|
|
13
|
-
* Dos estados:
|
|
14
|
-
* - **No inicializado** (sin bloque AW-PROJECT en CLAUDE.md/AGENTS.md) →
|
|
15
|
-
* landing con instrucciones para `project-init` o `hub-init` + info detectada
|
|
16
|
-
* (cwd, git).
|
|
17
|
-
* - **Inicializado** → stat strip + git workspace + sesiones + pendientes +
|
|
18
|
-
* actividad. En hub mode, también lista de sources con dirty status.
|
|
19
|
-
*/
|
|
20
11
|
export function ProjectTab({ ctx, isActive, onRunAction }) {
|
|
21
12
|
const [data, setData] = useState(null);
|
|
22
13
|
const [loading, setLoading] = useState(true);
|
|
23
|
-
const [pendingFilter, setPendingFilter] = useState("all");
|
|
24
14
|
const startedRef = useRef(false);
|
|
25
15
|
useEffect(() => {
|
|
26
16
|
if (startedRef.current)
|
|
@@ -78,23 +68,21 @@ export function ProjectTab({ ctx, isActive, onRunAction }) {
|
|
|
78
68
|
if (candidate)
|
|
79
69
|
onRunAction?.("git:checkout", { name: candidate.name });
|
|
80
70
|
}
|
|
71
|
+
if (input === "s")
|
|
72
|
+
onRunAction?.("session:start");
|
|
73
|
+
if (input === "r") {
|
|
74
|
+
const active = data.sessions.find((s) => s.state === "active");
|
|
75
|
+
if (active)
|
|
76
|
+
onRunAction?.("session:resume", { code: active.code });
|
|
77
|
+
}
|
|
81
78
|
}, { isActive: isActive && !!data });
|
|
82
|
-
const filteredPending = useMemo(() => {
|
|
83
|
-
if (!data)
|
|
84
|
-
return [];
|
|
85
|
-
if (pendingFilter === "all")
|
|
86
|
-
return data.pending;
|
|
87
|
-
if (pendingFilter === "high")
|
|
88
|
-
return data.pending.filter((p) => p.prio === "high");
|
|
89
|
-
return data.pending.filter((p) => p.sessionCode === pendingFilter);
|
|
90
|
-
}, [data, pendingFilter]);
|
|
91
79
|
if (loading || !data) {
|
|
92
|
-
return (_jsx(Box, { children: _jsxs(Text, { color: colors.
|
|
80
|
+
return (_jsx(Box, { children: _jsxs(Text, { color: colors.dim, children: [icons.spinner, " loading\u2026"] }) }));
|
|
93
81
|
}
|
|
94
82
|
if (!data.initialized) {
|
|
95
83
|
return _jsx(NotInitialized, { data: data, cursor: landingCursor });
|
|
96
84
|
}
|
|
97
|
-
return
|
|
85
|
+
return _jsx(Initialized, { ctx: ctx, data: data });
|
|
98
86
|
}
|
|
99
87
|
const LANDING_OPTIONS = [
|
|
100
88
|
{
|
|
@@ -111,32 +99,37 @@ const LANDING_OPTIONS = [
|
|
|
111
99
|
},
|
|
112
100
|
];
|
|
113
101
|
function NotInitialized({ data, cursor }) {
|
|
114
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PageHead, { title: "Project", count: { label: "not initialized", tone: "warn" },
|
|
102
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PageHead, { title: "Project", count: { label: "not initialized", tone: "warn" }, action: _jsx(Text, { color: colors.mute, children: "AW-PROJECT not found in CLAUDE.md / AGENTS.md" }) }), _jsx(SectionHead, { label: "Choose initialization", marginTop: 0 }), _jsxs(Box, { marginLeft: 2, marginTop: 0, flexDirection: "column", children: [LANDING_OPTIONS.map((opt, i) => (_jsx(LandingRow, { option: opt, active: i === cursor }, opt.actionId))), _jsx(Text, { color: colors.dim, children: "\u2191\u2193 navigate \u00B7 \u23CE apply" })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: colors.faint, children: [icons.pin, " ", data.workspacePath] }), data.git ? (_jsxs(Box, { children: [_jsxs(Text, { color: colors.faint, children: [icons.branch, " ", data.git.branch, " (base ", data.git.base, ")"] }), data.git.dirty > 0 ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { color: colors.warn, children: [data.git.dirty, " uncommitted"] })] })) : null] })) : (_jsx(Text, { color: colors.faint, children: "(not a git repo)" }))] })] }));
|
|
115
103
|
}
|
|
116
104
|
function LandingRow({ option, active }) {
|
|
117
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: active ? colors.accent : colors.
|
|
105
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: active ? colors.accent : colors.faint, children: active ? icons.focusBar : " " }), _jsx(Text, { children: " " }), _jsx(Text, { color: active ? colors.accent : colors.bright, bold: active, children: option.title })] }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", children: [_jsx(Text, { color: colors.dim, children: option.desc }), _jsx(Text, { color: active ? colors.accent : colors.info, children: option.cli })] })] }));
|
|
118
106
|
}
|
|
119
107
|
// ===== Inicializado — vista completa =====
|
|
120
|
-
function Initialized({ ctx, data
|
|
121
|
-
const
|
|
108
|
+
function Initialized({ ctx, data }) {
|
|
109
|
+
const totalActiveSessions = data.sessions.filter((s) => s.state === "active").length;
|
|
110
|
+
const totalSessions = data.sessions.length;
|
|
122
111
|
const totalPending = data.pending.length;
|
|
123
112
|
const highPending = data.pending.filter((p) => p.prio === "high").length;
|
|
113
|
+
const medPending = data.pending.filter((p) => p.prio === "med").length;
|
|
114
|
+
const lowPending = data.pending.filter((p) => p.prio === "low").length;
|
|
124
115
|
const dirty = data.git?.dirty ?? 0;
|
|
125
116
|
const namespace = ctx.namespace.namespace;
|
|
126
|
-
const desc = `.${namespace} ·
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
117
|
+
const desc = `.${namespace} · workspace mode auto-detected`;
|
|
118
|
+
const events = data.activity.slice(0, 7).map((a, i) => ({
|
|
119
|
+
id: `${a.whenIso}-${i}`,
|
|
120
|
+
when: a.whenRel,
|
|
121
|
+
dotColor: a.type === "commit" ? "info" : a.type === "session" ? "accent" : "purple",
|
|
122
|
+
text: a.text,
|
|
123
|
+
metaTone: "dim",
|
|
124
|
+
}));
|
|
125
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PageHead, { title: `Project · ${data.workspaceMode === "hub" ? "hub" : "single-repo"} · ${data.workspaceName}`, action: _jsx(Text, { color: colors.mute, children: desc }) }), _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: "sessions", value: `${totalActiveSessions} active`, sub: `${totalSessions} total`, tone: totalActiveSessions > 0 ? "accent" : "dim" }), _jsx(StatTile, { label: "pending", value: `${totalPending} tasks`, sub: `${highPending} high · ${medPending} med · ${lowPending} low`, tone: highPending > 0 ? "warn" : "dim" })] }), _jsx(Text, { color: colors.borderFaint, children: "─".repeat(60) }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingRight: 2, children: [_jsx(SectionHead, { label: "Active sessions", count: totalActiveSessions, rightAction: "\u23CE resume" }), totalActiveSessions === 0 ? (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: colors.faint, children: "(none)" }) })) : (_jsx(Box, { marginLeft: 0, flexDirection: "column", children: data.sessions
|
|
126
|
+
.filter((s) => s.state === "active")
|
|
127
|
+
.slice(0, 6)
|
|
128
|
+
.map((s) => (_jsxs(Box, { children: [_jsx(Text, { color: colors.accent, children: icons.focusBar }), _jsxs(Text, { color: colors.accent, children: [" ", icons.expandCollapsed, " "] }), _jsxs(Text, { color: colors.bright, children: ["session", s.code] }), _jsx(Text, { color: colors.dim, children: " \u00B7 " }), _jsx(Text, { color: colors.dim, children: s.name }), _jsx(Text, { color: colors.dim, children: " \u00B7 phase " }), _jsx(Text, { color: colors.accent, children: s.phase }), _jsx(Text, { children: " " }), _jsxs(Text, { color: colors.purple, children: ["[", s.flow, "]"] })] }, s.code))) }))] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingLeft: 2, children: [_jsx(SectionHead, { label: "Pending", count: totalPending, hint: `${highPending} high · ${medPending} med · ${lowPending} low` }), totalPending === 0 ? (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: colors.faint, children: "(no pending)" }) })) : (_jsxs(Box, { marginLeft: 0, flexDirection: "column", children: [data.pending.slice(0, 7).map((p) => (_jsx(PendingRow, { item: p }, `${p.sessionCode}-${p.text}`))), totalPending > 7 ? (_jsxs(Text, { color: colors.faint, children: ["\u2026+", totalPending - 7, " more"] })) : null] }))] })] }), _jsx(SectionHead, { label: "Recent activity", count: events.length, marginTop: 1 }), _jsx(Box, { marginLeft: 2, children: _jsx(ActivityFeed, { events: events, cap: 7, emptyHint: " (no recent activity yet)" }) }), _jsx(Box, { marginTop: 1, children: _jsx(QuickActions, { actions: [
|
|
129
|
+
{ key: "s", label: "start session" },
|
|
130
|
+
{ key: "^K", label: "palette" },
|
|
131
|
+
] }) })] }));
|
|
138
132
|
}
|
|
139
|
-
// ===== sub-components =====
|
|
140
133
|
function statGitSub(data) {
|
|
141
134
|
if (!data.git)
|
|
142
135
|
return "—";
|
|
@@ -147,43 +140,10 @@ function statGitSub(data) {
|
|
|
147
140
|
parts.push(`↓${data.git.behind}`);
|
|
148
141
|
if (parts.length === 0)
|
|
149
142
|
return `in sync with ${data.git.base}`;
|
|
150
|
-
return parts.join(" / ")
|
|
151
|
-
}
|
|
152
|
-
function GitWorkspace({ data }) {
|
|
153
|
-
if (!data.git)
|
|
154
|
-
return null;
|
|
155
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: colors.fgBright, children: data.git.branch }), _jsx(Text, { color: colors.fgFaint, children: " \u2190 " }), _jsx(Text, { color: colors.fgSubtle, children: data.git.base }), data.git.ahead > 0 ? (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.info, children: ["\u2191", data.git.ahead] }) })) : null, data.git.behind > 0 ? (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: colors.warning, children: ["\u2193", data.git.behind] }) })) : null] }), data.git.lastCommit ? (_jsxs(Box, { children: [_jsx(Text, { color: colors.info, children: data.git.lastCommit.sha }), _jsx(Text, { children: " " }), _jsx(Text, { color: colors.fgBright, children: data.git.lastCommit.title }), _jsx(Text, { color: colors.fgFaint, children: " \u00B7 " }), _jsx(Text, { color: colors.fgMoreSubtle, children: data.git.lastCommit.author })] })) : null] }));
|
|
156
|
-
}
|
|
157
|
-
function SourceRow({ source }) {
|
|
158
|
-
return (_jsxs(Box, { children: [_jsx(Text, { color: colors.fgFaint, children: "\u00B7" }), _jsx(Text, { children: " " }), _jsx(Text, { color: colors.fgBright, children: source.alias }), _jsx(Text, { color: colors.fgFaint, children: " \u00B7 " }), _jsx(Text, { color: colors.fgSubtle, children: source.branch ?? "(detached)" }), source.dirty ? (_jsx(Box, { marginLeft: 1, children: _jsx(Pill, { tone: "warn", children: `${source.changedFiles} uncommitted` }) })) : null] }));
|
|
159
|
-
}
|
|
160
|
-
function buildPendingFilters(items) {
|
|
161
|
-
const seen = new Set();
|
|
162
|
-
const opts = [
|
|
163
|
-
{ id: "all", label: "all" },
|
|
164
|
-
{ id: "high", label: "high" },
|
|
165
|
-
];
|
|
166
|
-
for (const it of items) {
|
|
167
|
-
if (!seen.has(it.sessionCode)) {
|
|
168
|
-
seen.add(it.sessionCode);
|
|
169
|
-
opts.push({ id: it.sessionCode, label: `s${it.sessionCode}` });
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
return opts;
|
|
173
|
-
}
|
|
174
|
-
function PendingFilters({ current, options, }) {
|
|
175
|
-
return (_jsx(Box, { children: options.map((o, idx) => (_jsx(Box, { marginLeft: idx === 0 ? 0 : 2, children: _jsx(Text, { color: current === o.id ? colors.accent : colors.fgFaint, ...(current === o.id ? { bold: true } : {}), children: o.label }) }, o.id))) }));
|
|
143
|
+
return `${parts.join(" / ")} · base ${data.git.base}`;
|
|
176
144
|
}
|
|
177
145
|
function PendingRow({ item }) {
|
|
178
|
-
const prioColor = item.prio === "high" ? colors.
|
|
179
|
-
return (_jsxs(Box, { children: [_jsx(Text, { color: prioColor, children: "\
|
|
180
|
-
}
|
|
181
|
-
function ActivityRow({ entry }) {
|
|
182
|
-
const typeColor = entry.type === "commit"
|
|
183
|
-
? colors.info
|
|
184
|
-
: entry.type === "session"
|
|
185
|
-
? colors.accent
|
|
186
|
-
: colors.fgSubtle;
|
|
187
|
-
return (_jsxs(Box, { children: [_jsx(Text, { color: typeColor, children: entry.type }), _jsx(Text, { color: colors.fgFaint, children: " \u00B7 " }), _jsx(Text, { color: colors.fgBright, children: entry.text }), _jsx(Text, { color: colors.fgFaint, children: " \u00B7 " }), _jsx(Text, { color: colors.fgMoreSubtle, children: entry.whenRel })] }));
|
|
146
|
+
const prioColor = item.prio === "high" ? colors.err : item.prio === "med" ? colors.warn : colors.mute;
|
|
147
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: prioColor, children: "\u25CF " }), _jsx(Text, { color: colors.text, children: item.text }), _jsx(Box, { flexGrow: 1 }), _jsx(Text, { color: colors.dim, children: item.sessionLabel })] }));
|
|
188
148
|
}
|
|
189
149
|
//# sourceMappingURL=project-tab.js.map
|