cohvu 2.14.0 → 2.16.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.
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  import { getActiveProject, getActiveTeam } from '../state.js';
4
- import { formatDate, daysUntil } from '../utils.js';
4
+ import { formatDate } from '../utils.js';
5
5
  export function BillingTab({ state, height }) {
6
6
  const project = getActiveProject(state);
7
7
  if (!project) {
@@ -14,35 +14,37 @@ export function BillingTab({ state, height }) {
14
14
  function Field({ label, children }) {
15
15
  return (_jsxs(Box, { children: [_jsx(Box, { width: 12, children: _jsxs(Text, { color: "gray", dimColor: true, children: [" ", label] }) }), children] }));
16
16
  }
17
+ function UsageBar({ used, limit }) {
18
+ const width = 20;
19
+ const ratio = Math.min(1, used / limit);
20
+ const filled = Math.round(ratio * width);
21
+ const empty = width - filled;
22
+ const color = ratio >= 1 ? 'yellow' : ratio >= 0.8 ? 'yellow' : 'green';
23
+ const overflow = Math.max(0, used - limit);
24
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Field, { label: "usage", children: [_jsx(Text, { color: color, children: '█'.repeat(filled) }), _jsx(Text, { color: "gray", dimColor: true, children: '░'.repeat(empty) }), _jsxs(Text, { color: "gray", children: [" ", formatOps(used), "/", formatOps(limit), " ops"] })] }), overflow > 0 && (_jsx(Field, { label: "overflow", children: _jsxs(Text, { color: "yellow", children: [formatOps(overflow), " ops"] }) }))] }));
25
+ }
26
+ function formatOps(n) {
27
+ if (n >= 1000)
28
+ return `${(n / 1000).toFixed(1).replace(/\.0$/, '')}k`;
29
+ return String(n);
30
+ }
17
31
  function IndividualBilling({ state }) {
18
32
  const sub = state.individualSubscription;
19
- const user = state.user;
20
- // Trial state
21
- if (user?.trial_ends_at) {
22
- const days = daysUntil(user.trial_ends_at);
23
- if (days > 0) {
24
- const trialColor = days > 3 ? 'gray' : days > 1 ? 'yellow' : 'red';
25
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "status", children: _jsx(Text, { color: trialColor, children: "trial" }) }), _jsxs(Field, { label: "ends", children: [_jsx(Text, { dimColor: true, children: formatDate(user.trial_ends_at) }), _jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsxs(Text, { color: trialColor, children: [days, " day", days !== 1 ? 's' : '', " left"] })] }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$19/month after trial" }) })] }));
26
- }
27
- // Trial ended
28
- if (!sub || sub.status !== 'active') {
29
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsxs(Text, { color: "red", children: [" trial ended ", formatDate(user.trial_ends_at)] }), _jsx(Text, { color: "gray", children: " subscribe to keep your agents connected" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$19/month" }) })] }));
30
- }
31
- }
32
- // No subscription
33
- if (!sub) {
34
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " locked" }), _jsx(Text, { color: "gray", children: " subscribe to keep your agents connected" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$19/month" }) })] }));
33
+ const usage = state.usage;
34
+ // Free tier — no subscription
35
+ if (!sub || (sub.status !== 'active' && sub.status !== 'past_due')) {
36
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "free \u00B7 250 ops/mo" }) }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit })] }));
35
37
  }
36
38
  // Payment failed
37
39
  if (sub.status === 'past_due') {
38
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " ! payment failed" }), _jsx(Text, { color: "gray", children: " update your payment method to continue" })] }));
40
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " ! payment failed" }), _jsx(Text, { color: "gray", children: " update your payment method to continue" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "pro \u00B7 $19/month" }) }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit })] }));
39
41
  }
40
42
  // Canceled
41
- if (sub.status === 'canceled' || sub.cancel_at_period_end) {
42
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " subscription canceled" }), sub.current_period_end && (_jsxs(Text, { color: "gray", children: [" your agents will stop working ", formatDate(sub.current_period_end)] })), _jsx(Box, { height: 1 }), sub.current_period_end && (_jsx(Field, { label: "ends", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] }));
43
+ if (sub.cancel_at_period_end) {
44
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "red", children: " subscription canceled" }), sub.current_period_end && (_jsxs(Text, { color: "gray", children: [" reverts to free tier ", formatDate(sub.current_period_end)] })), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "pro \u00B7 $19/month" }) }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit })] }));
43
45
  }
44
- // Active
45
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "status", children: _jsx(Text, { color: "green", children: "active" }) }), _jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "$19/month" }) }), sub.current_period_end && (_jsx(Field, { label: "renews", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] }));
46
+ // Active Pro
47
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "pro \u00B7 $19/month" }) }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit }), sub.current_period_end && (_jsx(Field, { label: "renews", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] }));
46
48
  }
47
49
  function TeamBilling({ state }) {
48
50
  const team = getActiveTeam(state);
@@ -50,29 +52,21 @@ function TeamBilling({ state }) {
50
52
  return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", children: " no team context" })] }));
51
53
  }
52
54
  const sub = team.subscription;
55
+ const usage = team.usage;
53
56
  const isAdmin = state.userRole === 'admin';
54
- // Team trial
55
- const teamData = state.teams.find(t => t.team_id === team?.team_id);
56
- if (!sub && teamData?.trial_ends_at) {
57
- const days = daysUntil(teamData.trial_ends_at);
58
- if (days > 0) {
59
- const trialColor = days > 3 ? 'gray' : days > 1 ? 'yellow' : 'red';
60
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), _jsx(Field, { label: "status", children: _jsx(Text, { color: trialColor, children: "trial" }) }), _jsxs(Field, { label: "ends", children: [_jsx(Text, { dimColor: true, children: formatDate(teamData.trial_ends_at) }), _jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsxs(Text, { color: trialColor, children: [days, " day", days !== 1 ? 's' : '', " left"] })] }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$34/seat/month after trial" }) })] }));
61
- }
62
- }
63
- // No subscription
64
- if (!sub) {
65
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " no subscription" }), _jsx(Text, { color: "gray", children: " subscribe to keep your agents connected" }), _jsx(Box, { height: 1 }), _jsx(Field, { label: "plan", children: _jsx(Text, { color: "gray", children: "$34/seat/month" }) })] })) : (_jsx(Field, { label: "status", children: _jsx(Text, { color: "red", children: "locked" }) }))] }));
57
+ // No subscription — free tier
58
+ if (!sub || (sub.status !== 'active' && sub.status !== 'past_due')) {
59
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), _jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "free \u00B7 250 ops/mo" }) }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit })] }));
66
60
  }
67
61
  // Payment failed
68
62
  if (sub.status === 'past_due') {
69
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " ! payment failed" }), _jsx(Text, { color: "gray", children: " update your payment method to continue" }), _jsx(Box, { height: 1 }), _jsxs(Field, { label: "seats", children: [_jsx(Text, { dimColor: true, children: String(sub.seat_count) }), _jsxs(Text, { color: "gray", children: [" ($", sub.seat_count * 34, "/month)"] })] })] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "red", children: "past due" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] }))] }));
63
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " ! payment failed" }), _jsx(Text, { color: "gray", children: " update your payment method to continue" }), _jsx(Box, { height: 1 }), _jsxs(Field, { label: "seats", children: [_jsx(Text, { dimColor: true, children: String(sub.seat_count) }), _jsxs(Text, { color: "gray", children: [" ($", sub.seat_count * 29, "/month)"] })] }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit })] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "red", children: "past due" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] }))] }));
70
64
  }
71
65
  // Canceled
72
- if (sub.status === 'canceled' || sub.cancel_at_period_end) {
73
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " subscription canceled" }), sub.current_period_end && (_jsxs(Text, { color: "gray", children: [" your agents will stop working ", formatDate(sub.current_period_end)] })), _jsx(Box, { height: 1 }), _jsxs(Field, { label: "seats", children: [_jsx(Text, { dimColor: true, children: String(sub.seat_count) }), _jsxs(Text, { color: "gray", children: [" ($", sub.seat_count * 34, "/month)"] })] }), sub.current_period_end && (_jsx(Field, { label: "ends", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "red", children: "canceled" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] }))] }));
66
+ if (sub.cancel_at_period_end) {
67
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), _jsx(Text, { color: "red", children: " subscription canceled" }), sub.current_period_end && (_jsxs(Text, { color: "gray", children: [" reverts to free tier ", formatDate(sub.current_period_end)] })), _jsx(Box, { height: 1 }), _jsxs(Field, { label: "seats", children: [_jsx(Text, { dimColor: true, children: String(sub.seat_count) }), _jsxs(Text, { color: "gray", children: [" ($", sub.seat_count * 29, "/month)"] })] }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit })] }));
74
68
  }
75
- // Active
76
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "green", children: "active" }) }), _jsxs(Field, { label: "seats", children: [_jsx(Text, { dimColor: true, children: String(sub.seat_count) }), _jsxs(Text, { color: "gray", children: [" ($", sub.seat_count * 34, "/month)"] })] }), sub.current_period_end && (_jsx(Field, { label: "renews", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "status", children: _jsx(Text, { color: "green", children: "active" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) })] }))] }));
69
+ // Active Team
70
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "team", children: _jsx(Text, { dimColor: true, children: team.name }) }), isAdmin ? (_jsxs(_Fragment, { children: [_jsx(Field, { label: "plan", children: _jsxs(Text, { dimColor: true, children: ["team \u00B7 $", sub.seat_count * 29, "/month"] }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit }), sub.current_period_end && (_jsx(Field, { label: "renews", children: _jsx(Text, { dimColor: true, children: formatDate(sub.current_period_end) }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(Field, { label: "plan", children: _jsx(Text, { dimColor: true, children: "team" }) }), _jsx(Field, { label: "seats", children: _jsx(Text, { dimColor: true, children: String(sub.seat_count) }) }), usage && _jsx(UsageBar, { used: usage.ops_used, limit: usage.ops_limit })] }))] }));
77
71
  }
78
72
  //# sourceMappingURL=BillingTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BillingTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/BillingTab.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BillingTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/BillingTab.tsx"],"names":[],"mappings":"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"}
@@ -1,31 +1,38 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
- import { getActiveProject } from '../state.js';
3
+ import { getActiveProject, getActiveTeam } from '../state.js';
4
4
  import { Divider } from '../components/Divider.js';
5
5
  import { timeAgo, formatDate, truncate } from '../utils.js';
6
- // The Keys tab is always visible — it's the single home for credential admin.
7
- // For users with no keys, an empty-state hint with "press n" gets them started.
8
- // Session keys are listed first (caller's CLI identities). Integration keys
9
- // for the active project follow, but only when the caller is admin on it
10
- // (the API itself enforces that — we just hide the section otherwise).
6
+ function isPaid(state) {
7
+ const project = getActiveProject(state);
8
+ if (!project)
9
+ return false;
10
+ if (project.owner.kind === 'team') {
11
+ const team = getActiveTeam(state);
12
+ const sub = team?.subscription;
13
+ return !!sub && (sub.status === 'active' || sub.status === 'past_due');
14
+ }
15
+ const sub = state.individualSubscription;
16
+ return !!sub && (sub.status === 'active' || sub.status === 'past_due');
17
+ }
11
18
  export function KeysTab({ state, height }) {
12
19
  const project = getActiveProject(state);
13
- const sessionKeys = state.apiKeys.filter(k => k.kind === 'session');
14
- const integrationKeys = state.apiKeys.filter(k => k.kind === 'integration');
15
20
  const isAdmin = state.userRole === 'admin';
16
- // Build a flat list with section dividers so navigation indices align with
17
- // the visual list: [...session, ...integration]
18
- const flatKeys = [...sessionKeys, ...integrationKeys];
19
- if (state.apiKeysLoading && flatKeys.length === 0) {
21
+ const paid = isPaid(state);
22
+ const keys = state.apiKeys;
23
+ if (state.apiKeysLoading && keys.length === 0) {
20
24
  return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", dimColor: true, children: " loading keys..." })] }));
21
25
  }
22
- if (flatKeys.length === 0) {
23
- return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", children: " no api keys yet" }), _jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", dimColor: true, children: " Session keys identify your CLI; integration keys give" }), _jsx(Text, { color: "gray", dimColor: true, children: " CI, dashboards, or non-human agents scoped access." }), _jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " n " }), _jsx(Text, { dimColor: true, children: "create new key" })] })] }));
26
+ if (!isAdmin) {
27
+ return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", dimColor: true, children: " only admins can manage keys" })] }));
28
+ }
29
+ if (!paid) {
30
+ return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", children: " keys require a paid plan" }), _jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", dimColor: true, children: " upgrade to create API keys for bots and automated systems." })] }));
31
+ }
32
+ if (keys.length === 0) {
33
+ return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", children: " no keys yet" }), _jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", dimColor: true, children: " keys give bots and automated systems scoped access" }), _jsx(Text, { color: "gray", dimColor: true, children: " to your projects with configurable permissions." }), _jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " n " }), _jsx(Text, { dimColor: true, children: "create new key" })] })] }));
24
34
  }
25
- return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), sessionKeys.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " session keys" }), _jsx(Box, { height: 1 }), sessionKeys.map((key, idx) => (_jsx(KeyRow, { keyData: key, selected: state.apiKeysSelected === idx, project: project }, key.id)))] })), integrationKeys.length > 0 && (_jsxs(_Fragment, { children: [sessionKeys.length > 0 && _jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " integration keys" }), project && _jsxs(Text, { color: "gray", dimColor: true, children: [" \u00B7 ", project.slug] })] }), _jsx(Box, { height: 1 }), integrationKeys.map((key, idx) => {
26
- const flatIdx = sessionKeys.length + idx;
27
- return (_jsx(KeyRow, { keyData: key, selected: state.apiKeysSelected === flatIdx, project: project }, key.id));
28
- })] })), _jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " n " }), _jsx(Text, { dimColor: true, children: "new key" })] }), flatKeys.length > 0 && (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " x " }), _jsx(Text, { dimColor: true, children: "revoke selected" })] })), !isAdmin && project && (_jsxs(_Fragment, { children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", dimColor: true, children: " only admins can manage integration keys" })] }))] }));
35
+ return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), keys.map((key, idx) => (_jsx(KeyRow, { keyData: key, selected: state.apiKeysSelected === idx, project: project }, key.id))), _jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " n " }), _jsx(Text, { dimColor: true, children: "new key" })] }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " x " }), _jsx(Text, { dimColor: true, children: "revoke selected" })] })] }));
29
36
  }
30
37
  function KeyRow({ keyData, selected, project, }) {
31
38
  const lastUsed = keyData.last_used_at ? timeAgo(keyData.last_used_at) : 'never';
@@ -33,7 +40,7 @@ function KeyRow({ keyData, selected, project, }) {
33
40
  const expires = keyData.expires_at
34
41
  ? new Date(keyData.expires_at) < new Date() ? 'expired' : `expires ${formatDate(keyData.expires_at)}`
35
42
  : null;
36
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { children: selected ? '> ' : ' ' }), _jsx(Text, { ...(selected ? {} : { color: 'gray' }), children: truncate(keyData.name, 30) }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", keyData.key_prefix, "\u2026"] })] }), _jsxs(Box, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { color: "gray", dimColor: true, children: ["created ", created] }), _jsxs(Text, { color: "gray", dimColor: true, children: [" \u00B7 last used ", lastUsed] }), expires && _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: expires === 'expired' ? 'red' : 'gray', dimColor: expires !== 'expired', children: expires })] })] }), keyData.kind === 'integration' && (_jsxs(Box, { children: [_jsx(Text, { children: " " }), keyData.scopes && keyData.scopes.length > 0 && (_jsx(Text, { color: "gray", dimColor: true, children: keyData.scopes.map(s => `${shortenProjectId(s.project_id, project)}:${s.role}`).join(', ') })), keyData.allowed_tools && (_jsxs(Text, { color: "gray", dimColor: true, children: [" \u00B7 tools: ", keyData.allowed_tools.join(', ')] })), keyData.default_agent_name && (_jsxs(Text, { color: "gray", dimColor: true, children: [" \u00B7 agent: ", keyData.default_agent_name] }))] }))] }));
43
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { children: selected ? '> ' : ' ' }), _jsx(Text, { ...(selected ? {} : { color: 'gray' }), children: truncate(keyData.name, 30) }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", keyData.key_prefix, "\u2026"] })] }), _jsxs(Box, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { color: "gray", dimColor: true, children: ["created ", created] }), _jsxs(Text, { color: "gray", dimColor: true, children: [" \u00B7 last used ", lastUsed] }), expires && _jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", dimColor: true, children: " \u00B7 " }), _jsx(Text, { color: expires === 'expired' ? 'red' : 'gray', dimColor: expires !== 'expired', children: expires })] })] }), keyData.scopes && keyData.scopes.length > 0 && (_jsxs(Box, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: "gray", dimColor: true, children: keyData.scopes.map(s => `${shortenProjectId(s.project_id, project)}:${s.role}`).join(', ') }), keyData.allowed_tools && (_jsxs(Text, { color: "gray", dimColor: true, children: [" \u00B7 tools: ", keyData.allowed_tools.join(', ')] })), keyData.default_agent_name && (_jsxs(Text, { color: "gray", dimColor: true, children: [" \u00B7 agent: ", keyData.default_agent_name] }))] }))] }));
37
44
  }
38
45
  function shortenProjectId(id, active) {
39
46
  if (active && active.project_id === id)
@@ -1 +1 @@
1
- {"version":3,"file":"KeysTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/KeysTab.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeysTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/KeysTab.tsx"],"names":[],"mappings":"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"}
@@ -12,10 +12,7 @@ export function ProjectTab({ state, height }) {
12
12
  }
13
13
  return (_jsxs(Box, { flexDirection: "column", height: height, overflowY: "hidden", children: [_jsx(Box, { height: 1 }), _jsx(Field, { label: "name", children: _jsx(Text, { dimColor: true, children: project.name }) }), _jsx(Field, { label: "slug", children: _jsx(Text, { color: "gray", children: project.slug }) }), project.owner.kind === 'team'
14
14
  ? _jsxs(Field, { label: "owner", children: [_jsx(Text, { color: "gray", children: "team: " }), _jsx(Text, { dimColor: true, children: project.owner.teamName })] })
15
- : _jsx(Field, { label: "owner", children: _jsx(Text, { color: "gray", children: "personal" }) }), project.created_at && (_jsx(Field, { label: "created", children: _jsx(Text, { color: "gray", children: formatDate(project.created_at) }) })), _jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), _jsx(Text, { color: "gray", dimColor: true, children: " linked projects" }), _jsx(Box, { height: 1 }), state.projectLinks.length === 0 ? (_jsx(Text, { color: "gray", dimColor: true, children: " none" })) : (state.projectLinks.map((link, i) => {
16
- const selected = state.projectLinkSelected === i;
17
- return (_jsxs(Box, { children: [_jsx(Text, { children: selected ? ' > ' : ' ' }), _jsx(Text, { ...(selected ? {} : { color: 'gray' }), children: link.slug }), _jsxs(Text, { color: "gray", dimColor: true, children: [" (", link.source, ")"] })] }, link.project_id));
18
- })), state.userRole === 'admin' && (_jsxs(_Fragment, { children: [_jsx(Box, { height: 1 }), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " L " }), _jsx(Text, { dimColor: true, children: "link to another project" })] }), state.projectLinks.some(l => l.source === 'explicit') && (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " U " }), _jsx(Text, { dimColor: true, children: "unlink selected (explicit only)" })] }))] })), _jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), state.userRole === 'admin' && (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " r " }), _jsx(Text, { dimColor: true, children: "rename project" })] })), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " n " }), _jsx(Text, { dimColor: true, children: "new project" })] }), state.projects.length > 1 && (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " w " }), _jsx(Text, { dimColor: true, children: "switch project" })] })), state.userRole === 'admin' && (_jsxs(_Fragment, { children: [_jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), renderDestructive(state)] }))] }));
15
+ : _jsx(Field, { label: "owner", children: _jsx(Text, { color: "gray", children: "personal" }) }), project.created_at && (_jsx(Field, { label: "created", children: _jsx(Text, { color: "gray", children: formatDate(project.created_at) }) })), _jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), state.userRole === 'admin' && (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " r " }), _jsx(Text, { dimColor: true, children: "rename project" })] })), _jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " n " }), _jsx(Text, { dimColor: true, children: "new project" })] }), state.projects.length > 1 && (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: " w " }), _jsx(Text, { dimColor: true, children: "switch project" })] })), state.userRole === 'admin' && (_jsxs(_Fragment, { children: [_jsx(Box, { height: 1 }), _jsx(Divider, {}), _jsx(Box, { height: 1 }), renderDestructive(state)] }))] }));
19
16
  }
20
17
  function Field({ label, children }) {
21
18
  return (_jsxs(Box, { children: [_jsx(Box, { width: 12, children: _jsxs(Text, { color: "gray", dimColor: true, children: [" ", label] }) }), children] }));
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/ProjectTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAwC;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oCAA2B,IACzC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,QAAQ,aAC5D,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,CAAC,IAAI,GAAQ,GAAQ,EAChE,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,OAAO,CAAC,IAAI,GAAQ,GAAQ,EACnE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;gBAC5B,CAAC,CAAC,MAAC,KAAK,IAAC,KAAK,EAAC,OAAO,aAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,EAAA,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAQ,IAAQ;gBAC7G,CAAC,CAAC,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,YAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,GAAQ,EAElE,OAAO,CAAC,UAAU,IAAI,CACrB,KAAC,KAAK,IAAC,KAAK,EAAC,SAAS,YAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAQ,GAAQ,CAC1F,EAGD,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,OAAO,KAAG,EACX,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,wCAAyB,EACpD,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACjC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,+BAAgB,CAC5C,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,KAAK,CAAC,CAAC;gBACjD,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,cAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAQ,EACzC,KAAC,IAAI,OAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,YAAG,IAAI,CAAC,IAAI,GAAQ,EACjE,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,0BAAK,IAAI,CAAC,MAAM,SAAS,KAH5C,IAAI,CAAC,UAAU,CAInB,CACP,CAAC;YACJ,CAAC,CAAC,CACH,EAEA,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,CAC7B,8BACE,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,8CAA+B,IAAM,EACtF,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,CACxD,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,sDAAuC,IAAM,CAChG,IACA,CACJ,EAGD,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,OAAO,KAAG,EACX,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,CAC7B,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,qCAAsB,IAAM,CAC/E,EACD,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,kCAAmB,IAAM,EAC1E,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,qCAAsB,IAAM,CAC/E,EAGA,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,CAC7B,8BACE,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,OAAO,KAAG,EACX,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,iBAAiB,CAAC,KAAK,CAAC,IACxB,CACJ,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAgD;IAC9E,OAAO,CACL,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YAAE,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,yBAAI,KAAK,IAAQ,GAAM,EACjE,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACxC,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,gBAAgB,CACpE,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC3G,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC;QAChD,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,OAAO,CACL,8BACE,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,qBAAY,EAChC,MAAC,IAAI,IAAC,QAAQ,gCAAW,WAAW,IAAQ,EAC5C,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,QAAQ,OAAG,QAAQ,yBAAqB,OAAO,IAAQ,IACzE,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,8BAAe,EAC5D,KAAC,IAAI,sBAAW,EAChB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,6BAAc,IACvD,IACL,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,CACL,8BACE,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,sBAAa,EAAA,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wCAA+B,IAAM,EAC1F,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,sBAAa,EAAA,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,+BAAsB,IAAM,IAChF,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ProjectTab.js","sourceRoot":"","sources":["../../../src/tui/tabs/ProjectTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAwC;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oCAA2B,IACzC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,QAAQ,aAC5D,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,CAAC,IAAI,GAAQ,GAAQ,EAChE,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,YAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,OAAO,CAAC,IAAI,GAAQ,GAAQ,EACnE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;gBAC5B,CAAC,CAAC,MAAC,KAAK,IAAC,KAAK,EAAC,OAAO,aAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,EAAA,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAQ,IAAQ;gBAC7G,CAAC,CAAC,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,YAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,GAAQ,EAElE,OAAO,CAAC,UAAU,IAAI,CACrB,KAAC,KAAK,IAAC,KAAK,EAAC,SAAS,YAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAQ,GAAQ,CAC1F,EAGD,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,OAAO,KAAG,EACX,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,CAC7B,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,qCAAsB,IAAM,CAC/E,EACD,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,kCAAmB,IAAM,EAC1E,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,qCAAsB,IAAM,CAC/E,EAGA,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,CAC7B,8BACE,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,KAAC,OAAO,KAAG,EACX,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EACjB,iBAAiB,CAAC,KAAK,CAAC,IACxB,CACJ,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAgD;IAC9E,OAAO,CACL,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YAAE,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,yBAAI,KAAK,IAAQ,GAAM,EACjE,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACxC,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,gBAAgB,CACpE,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC3G,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC;QAChD,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,OAAO,CACL,8BACE,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,qBAAY,EAChC,MAAC,IAAI,IAAC,QAAQ,gCAAW,WAAW,IAAQ,EAC5C,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,QAAQ,OAAG,QAAQ,yBAAqB,OAAO,IAAQ,IACzE,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,8BAAe,EAC5D,KAAC,IAAI,sBAAW,EAChB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAAA,KAAC,IAAI,IAAC,QAAQ,6BAAc,IACvD,IACL,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,CACL,8BACE,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,sBAAa,EAAA,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wCAA+B,IAAM,EAC1F,MAAC,GAAG,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,sBAAa,EAAA,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,+BAAsB,IAAM,IAChF,CACJ,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cohvu",
3
- "version": "2.14.0",
3
+ "version": "2.16.0",
4
4
  "description": "Cohvu — continuous memory for AI-native development",
5
5
  "bin": {
6
6
  "cohvu": "dist/index.js"