cohvu 2.10.0 → 2.10.2

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.
@@ -1,26 +1,51 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text, Spacer, useStdout } from 'ink';
3
3
  import { getActiveProject, getActiveTeam } from '../state.js';
4
4
  import { daysUntil } from '../utils.js';
5
+ function truncStr(s, max) {
6
+ if (max <= 0)
7
+ return '';
8
+ if (s.length <= max)
9
+ return s;
10
+ return s.slice(0, max - 1) + '\u2026';
11
+ }
5
12
  export function Header({ state }) {
6
13
  const { stdout } = useStdout();
14
+ const cols = stdout.columns;
7
15
  const project = getActiveProject(state);
8
16
  const team = getActiveTeam(state);
9
17
  const projectLabel = project
10
18
  ? team ? `${team.name} / ${project.name}` : project.name
11
19
  : 'no project';
12
- return (_jsxs(Box, { width: stdout.columns, children: [_jsx(Text, { color: "gray", children: "cohvu" }), _jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { dimColor: true, children: projectLabel }), renderStatus(state), state.projects.length >= 2 && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsxs(Text, { color: "gray", children: [state.projects.length, " projects"] })] })), _jsx(Spacer, {}), _jsx(Text, { color: "gray", children: state.user?.email ?? '' })] }));
20
+ // Build left parts to measure
21
+ const statusText = getStatusText(state);
22
+ const projectsText = state.projects.length >= 2 ? `${state.projects.length} projects` : '';
23
+ const email = state.user?.email ?? '';
24
+ // "cohvu · " = 10 chars base
25
+ let leftLen = 10 + projectLabel.length;
26
+ if (statusText)
27
+ leftLen += 5 + statusText.length; // " · " + status
28
+ if (projectsText)
29
+ leftLen += 5 + projectsText.length;
30
+ // Truncate project label if left side alone exceeds width
31
+ const maxProjectLen = Math.max(8, cols - 20 - (statusText ? statusText.length + 5 : 0));
32
+ const displayProject = truncStr(projectLabel, maxProjectLen);
33
+ // Only show email if there's room (at least 10 chars for it)
34
+ const leftUsed = 10 + displayProject.length + (statusText ? 5 + statusText.length : 0) + (projectsText ? 5 + projectsText.length : 0);
35
+ const emailSpace = cols - leftUsed - 2;
36
+ const displayEmail = emailSpace >= 10 ? truncStr(email, emailSpace) : '';
37
+ return (_jsxs(Box, { width: cols, children: [_jsx(Text, { color: "gray", children: "cohvu" }), _jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { dimColor: true, children: displayProject }), renderStatus(state), projectsText ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "gray", children: projectsText })] })) : null, _jsx(Spacer, {}), displayEmail ? _jsx(Text, { color: "gray", children: displayEmail }) : null] }));
13
38
  }
14
- function renderStatus(state) {
39
+ function getStatusText(state) {
15
40
  if (state.paused)
16
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "yellow", children: "paused" })] });
41
+ return 'paused';
17
42
  if (state.offline)
18
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "offline" })] });
43
+ return 'offline';
19
44
  if (!state.sseConnected && state.activeProjectId)
20
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "gray", dimColor: true, children: "reconnecting" })] });
45
+ return 'reconnecting';
21
46
  const project = getActiveProject(state);
22
47
  if (!project)
23
- return null;
48
+ return '';
24
49
  if (project.owner.kind === 'team') {
25
50
  const team = getActiveTeam(state);
26
51
  const sub = team?.subscription;
@@ -28,40 +53,52 @@ function renderStatus(state) {
28
53
  const teamData = state.teams.find(t => t.team_id === team?.team_id);
29
54
  if (teamData?.trial_ends_at) {
30
55
  const days = daysUntil(teamData.trial_ends_at);
31
- if (days > 0) {
32
- const label = days === 1 ? '1 day left' : `${days} days left`;
33
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsxs(Text, { color: "yellow", dimColor: true, children: ["trial \u00B7 ", label] })] });
34
- }
56
+ if (days > 0)
57
+ return `trial · ${days === 1 ? '1 day left' : `${days} days left`}`;
35
58
  }
36
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "locked" })] });
59
+ return 'locked';
37
60
  }
38
61
  if (sub.status === 'active')
39
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "green", children: "active" })] });
62
+ return 'active';
40
63
  if (sub.status === 'past_due')
41
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "past due" })] });
64
+ return 'past due';
42
65
  if (sub.status === 'canceled' || sub.cancel_at_period_end)
43
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "canceled" })] });
44
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "locked" })] });
66
+ return 'canceled';
67
+ return 'locked';
45
68
  }
46
- // Personal project
47
69
  const user = state.user;
48
70
  if (user?.trial_ends_at) {
49
71
  const days = daysUntil(user.trial_ends_at);
50
- if (days > 0) {
51
- const label = days === 1 ? '1 day left' : `${days} days left`;
52
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsxs(Text, { color: "yellow", dimColor: true, children: ["trial \u00B7 ", label] })] });
53
- }
54
- if (!state.individualSubscription || state.individualSubscription.status !== 'active') {
55
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "trial ended" })] });
56
- }
72
+ if (days > 0)
73
+ return `trial · ${days === 1 ? '1 day left' : `${days} days left`}`;
74
+ if (!state.individualSubscription || state.individualSubscription.status !== 'active')
75
+ return 'trial ended';
57
76
  }
58
77
  const sub = state.individualSubscription;
59
78
  if (sub?.status === 'active')
60
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "green", children: "active" })] });
79
+ return 'active';
61
80
  if (sub?.status === 'past_due')
62
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "past due" })] });
81
+ return 'past due';
63
82
  if (sub?.status === 'canceled' || sub?.cancel_at_period_end)
64
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "canceled" })] });
65
- return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: "red", children: "locked" })] });
83
+ return 'canceled';
84
+ return 'locked';
85
+ }
86
+ function renderStatus(state) {
87
+ const text = getStatusText(state);
88
+ if (!text)
89
+ return null;
90
+ let color = 'red';
91
+ let dim = false;
92
+ if (text === 'active')
93
+ color = 'green';
94
+ else if (text === 'paused' || text.startsWith('trial')) {
95
+ color = 'yellow';
96
+ dim = true;
97
+ }
98
+ else if (text === 'reconnecting') {
99
+ color = 'gray';
100
+ dim = true;
101
+ }
102
+ return _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: color, dimColor: dim, children: text })] });
66
103
  }
67
104
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "cohvu",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Cohvu — continuous memory for AI-native development",
5
5
  "bin": {
6
6
  "cohvu": "dist/index.js"
7
7
  },
8
8
  "scripts": {
9
9
  "build": "tsc",
10
- "typecheck": "tsc --noEmit"
10
+ "typecheck": "tsc --noEmit",
11
+ "postinstall": "echo '\n cohvu installed. run cohvu to sign in and set up your tools.\n after that, your agents use cohvu automatically.\n'"
11
12
  },
12
13
  "engines": {
13
14
  "node": ">=20.0.0"