cohvu 0.6.2 → 1.0.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/api.d.ts +128 -0
- package/dist/api.js +221 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.js +2 -2
- package/dist/auth.js.map +1 -1
- package/dist/index.js +83 -825
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +1 -0
- package/dist/proxy.js +151 -0
- package/dist/proxy.js.map +1 -0
- package/dist/setup.js +1 -1
- package/dist/setup.js.map +1 -1
- package/dist/tui/ansi.d.ts +41 -0
- package/dist/tui/ansi.js +120 -0
- package/dist/tui/ansi.js.map +1 -0
- package/dist/tui/dashboard.d.ts +1 -0
- package/dist/tui/dashboard.js +1051 -0
- package/dist/tui/dashboard.js.map +1 -0
- package/dist/tui/keys.d.ts +31 -0
- package/dist/tui/keys.js +53 -0
- package/dist/tui/keys.js.map +1 -0
- package/dist/tui/platform-detect.d.ts +2 -0
- package/dist/tui/platform-detect.js +102 -0
- package/dist/tui/platform-detect.js.map +1 -0
- package/dist/tui/render.d.ts +5 -0
- package/dist/tui/render.js +139 -0
- package/dist/tui/render.js.map +1 -0
- package/dist/tui/state.d.ts +215 -0
- package/dist/tui/state.js +206 -0
- package/dist/tui/state.js.map +1 -0
- package/dist/tui/views/billing.d.ts +3 -0
- package/dist/tui/views/billing.js +127 -0
- package/dist/tui/views/billing.js.map +1 -0
- package/dist/tui/views/knowledge.d.ts +3 -0
- package/dist/tui/views/knowledge.js +195 -0
- package/dist/tui/views/knowledge.js.map +1 -0
- package/dist/tui/views/modals.d.ts +3 -0
- package/dist/tui/views/modals.js +192 -0
- package/dist/tui/views/modals.js.map +1 -0
- package/dist/tui/views/project.d.ts +3 -0
- package/dist/tui/views/project.js +76 -0
- package/dist/tui/views/project.js.map +1 -0
- package/dist/tui/views/team.d.ts +3 -0
- package/dist/tui/views/team.js +100 -0
- package/dist/tui/views/team.js.map +1 -0
- package/dist/tui/views/you.d.ts +3 -0
- package/dist/tui/views/you.js +74 -0
- package/dist/tui/views/you.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Knowledge tab — browse, search, forget modes.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.renderKnowledge = renderKnowledge;
|
|
5
|
+
exports.knowledgeFooter = knowledgeFooter;
|
|
6
|
+
const ansi_1 = require("../ansi");
|
|
7
|
+
function renderKnowledge(state, width, height) {
|
|
8
|
+
switch (state.knowledgeMode) {
|
|
9
|
+
case 'browse': return renderBrowse(state, width, height);
|
|
10
|
+
case 'search': return renderSearch(state, width, height);
|
|
11
|
+
case 'forget': return renderForget(state, width, height);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function renderBrowse(state, width, height) {
|
|
15
|
+
const lines = [''];
|
|
16
|
+
if (state.memories.length === 0 && !state.memoryLoading) {
|
|
17
|
+
return centerText(height, [
|
|
18
|
+
ansi_1.C.muted + 'your agents will start contributing automatically' + ansi_1.C.reset,
|
|
19
|
+
ansi_1.C.dim + 'open any agent and start working' + ansi_1.C.reset,
|
|
20
|
+
]);
|
|
21
|
+
}
|
|
22
|
+
const maxLines = height - 3; // blank line top + pagination line + blank bottom
|
|
23
|
+
const visible = state.memories.slice(state.memoryScroll, state.memoryScroll + maxLines);
|
|
24
|
+
let linesUsed = 0;
|
|
25
|
+
for (let i = 0; i < visible.length && linesUsed < maxLines; i++) {
|
|
26
|
+
const mem = visible[i];
|
|
27
|
+
const globalIdx = state.memoryScroll + i;
|
|
28
|
+
const isSelected = globalIdx === state.memorySelected;
|
|
29
|
+
const isLive = mem.id === state.liveDotId && Date.now() < state.liveDotExpiry;
|
|
30
|
+
const dot = isLive ? ansi_1.C.green + '\u00b7 ' + ansi_1.C.reset : ansi_1.C.dim + '\u00b7 ' + ansi_1.C.reset;
|
|
31
|
+
const ts = ansi_1.C.muted + (0, ansi_1.timeAgo)(mem.updated_at) + ansi_1.C.reset;
|
|
32
|
+
const bodyWidth = width - 12;
|
|
33
|
+
if (isSelected) {
|
|
34
|
+
const prefix = '> ' + dot;
|
|
35
|
+
lines.push(prefix + ansi_1.C.primary + (0, ansi_1.truncate)(mem.body, bodyWidth) + ansi_1.C.reset + rightPad(ts, width, prefix + (0, ansi_1.truncate)(mem.body, bodyWidth)));
|
|
36
|
+
linesUsed++;
|
|
37
|
+
// Expanded lines — only if room
|
|
38
|
+
const bodyLines = wrapText(mem.body, width - 6);
|
|
39
|
+
if (bodyLines.length > 1 && linesUsed < maxLines) {
|
|
40
|
+
lines.push(' ' + ansi_1.C.muted + (0, ansi_1.truncate)(bodyLines[1], width - 6) + ansi_1.C.reset);
|
|
41
|
+
linesUsed++;
|
|
42
|
+
}
|
|
43
|
+
if (bodyLines.length > 2 && linesUsed < maxLines) {
|
|
44
|
+
lines.push(' ' + ansi_1.C.muted + (0, ansi_1.truncate)(bodyLines[2], width - 6) + '\u2026' + ansi_1.C.reset);
|
|
45
|
+
linesUsed++;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const prefix = ' ' + dot;
|
|
50
|
+
lines.push(prefix + ansi_1.C.secondary + (0, ansi_1.truncate)(mem.body, bodyWidth) + ansi_1.C.reset + rightPad(ts, width, prefix + (0, ansi_1.truncate)(mem.body, bodyWidth)));
|
|
51
|
+
linesUsed++;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Pagination
|
|
55
|
+
lines.push('');
|
|
56
|
+
if (state.memories.length > 0) {
|
|
57
|
+
const start = state.memoryScroll + 1;
|
|
58
|
+
const end = Math.min(state.memoryScroll + maxLines, state.memories.length);
|
|
59
|
+
let pag = ' ' + ansi_1.C.muted + start + '\u2013' + end + ' of ' + state.memoryTotal + ansi_1.C.reset;
|
|
60
|
+
if (state.memoryHasMore) {
|
|
61
|
+
pag += ansi_1.C.dim + ' \u00b7 space for more' + ansi_1.C.reset;
|
|
62
|
+
}
|
|
63
|
+
lines.push(pag);
|
|
64
|
+
}
|
|
65
|
+
return lines;
|
|
66
|
+
}
|
|
67
|
+
function renderSearch(state, width, height) {
|
|
68
|
+
const lines = [''];
|
|
69
|
+
// Search input
|
|
70
|
+
lines.push(' ' + ansi_1.C.muted + '/ ' + ansi_1.C.reset + ansi_1.C.primary + state.searchQuery + '_' + ansi_1.C.reset);
|
|
71
|
+
lines.push('');
|
|
72
|
+
lines.push(' ' + (0, ansi_1.divider)(width - 4));
|
|
73
|
+
lines.push('');
|
|
74
|
+
if (state.searching) {
|
|
75
|
+
lines.push(' ' + ansi_1.C.dim + 'searching\u2026' + ansi_1.C.reset);
|
|
76
|
+
return lines;
|
|
77
|
+
}
|
|
78
|
+
const results = state.searchResults;
|
|
79
|
+
if (!results) {
|
|
80
|
+
return lines;
|
|
81
|
+
}
|
|
82
|
+
if (results.length === 0) {
|
|
83
|
+
lines.push(' ' + ansi_1.C.muted + 'no results' + ansi_1.C.reset);
|
|
84
|
+
return lines;
|
|
85
|
+
}
|
|
86
|
+
for (let i = 0; i < results.length; i++) {
|
|
87
|
+
const mem = results[i];
|
|
88
|
+
const isSelected = i === state.memorySelected;
|
|
89
|
+
const isLive = mem.id === state.liveDotId && Date.now() < state.liveDotExpiry;
|
|
90
|
+
const dot = isLive ? ansi_1.C.green + '\u00b7 ' + ansi_1.C.reset : ansi_1.C.dim + '\u00b7 ' + ansi_1.C.reset;
|
|
91
|
+
const ts = ansi_1.C.muted + (0, ansi_1.timeAgo)(mem.updated_at) + ansi_1.C.reset;
|
|
92
|
+
const bodyWidth = width - 12;
|
|
93
|
+
if (isSelected) {
|
|
94
|
+
const prefix = '> ' + dot;
|
|
95
|
+
lines.push(prefix + ansi_1.C.primary + (0, ansi_1.truncate)(mem.body, bodyWidth) + ansi_1.C.reset + rightPad(ts, width, prefix + (0, ansi_1.truncate)(mem.body, bodyWidth)));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
const prefix = ' ' + dot;
|
|
99
|
+
lines.push(prefix + ansi_1.C.secondary + (0, ansi_1.truncate)(mem.body, bodyWidth) + ansi_1.C.reset + rightPad(ts, width, prefix + (0, ansi_1.truncate)(mem.body, bodyWidth)));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
lines.push('');
|
|
103
|
+
lines.push(' ' + ansi_1.C.muted + results.length + ' result' + (results.length !== 1 ? 's' : '') + ansi_1.C.reset);
|
|
104
|
+
return lines;
|
|
105
|
+
}
|
|
106
|
+
function renderForget(state, width, height) {
|
|
107
|
+
// Use search results if they exist (entered forget from search mode)
|
|
108
|
+
const list = state.searchResults ?? state.memories;
|
|
109
|
+
const lines = [''];
|
|
110
|
+
lines.push(' ' + ansi_1.C.muted + 'select memories to remove \u00b7 space to toggle' + ansi_1.C.reset);
|
|
111
|
+
lines.push('');
|
|
112
|
+
const filtered = state.userRole === 'admin'
|
|
113
|
+
? list
|
|
114
|
+
: list.filter(m => m.contributed_by?.user_id === state.user?.id);
|
|
115
|
+
for (const mem of filtered) {
|
|
116
|
+
const selected = state.forgetSelected.has(mem.id);
|
|
117
|
+
if (selected) {
|
|
118
|
+
lines.push(' ' + ansi_1.C.red + '[x] ' + ansi_1.C.reset + ansi_1.C.secondary + (0, ansi_1.truncate)(mem.body, width - 8) + ansi_1.C.reset);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
lines.push(' ' + ansi_1.C.dim + '[ ] ' + ansi_1.C.reset + ansi_1.C.muted + (0, ansi_1.truncate)(mem.body, width - 8) + ansi_1.C.reset);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (filtered.length === 0 && state.userRole !== 'admin') {
|
|
125
|
+
lines.push(' ' + ansi_1.C.muted + 'you can only forget memories your agents contributed' + ansi_1.C.reset);
|
|
126
|
+
}
|
|
127
|
+
lines.push('');
|
|
128
|
+
const count = state.forgetSelected.size;
|
|
129
|
+
if (count > 0) {
|
|
130
|
+
lines.push(' ' + ansi_1.C.yellow + count + ' selected' + ansi_1.C.reset);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
lines.push(' ' + ansi_1.C.muted + '0 selected' + ansi_1.C.reset);
|
|
134
|
+
}
|
|
135
|
+
return lines;
|
|
136
|
+
}
|
|
137
|
+
function knowledgeFooter(state) {
|
|
138
|
+
switch (state.knowledgeMode) {
|
|
139
|
+
case 'browse':
|
|
140
|
+
if (state.memories.length === 0) {
|
|
141
|
+
return ansi_1.C.muted + 'tab switch tab q quit' + ansi_1.C.reset;
|
|
142
|
+
}
|
|
143
|
+
if (state.userRole === 'viewer') {
|
|
144
|
+
return ansi_1.C.muted + '/ search \u2191\u2193 navigate tab switch q quit' + ansi_1.C.reset;
|
|
145
|
+
}
|
|
146
|
+
if (state.userRole === 'admin') {
|
|
147
|
+
return ansi_1.C.muted + '/ search \u2325d forget D forget all \u2191\u2193 navigate q quit' + ansi_1.C.reset;
|
|
148
|
+
}
|
|
149
|
+
return ansi_1.C.muted + '/ search \u2325d forget \u2191\u2193 navigate q quit' + ansi_1.C.reset;
|
|
150
|
+
case 'search':
|
|
151
|
+
if (state.userRole === 'viewer') {
|
|
152
|
+
return ansi_1.C.muted + 'enter search esc cancel \u2191\u2193 navigate' + ansi_1.C.reset;
|
|
153
|
+
}
|
|
154
|
+
return ansi_1.C.muted + 'enter search esc cancel \u2325d forget \u2191\u2193 navigate' + ansi_1.C.reset;
|
|
155
|
+
case 'forget':
|
|
156
|
+
return ansi_1.C.muted + 'space toggle enter confirm esc cancel' + ansi_1.C.reset;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Helpers
|
|
160
|
+
function rightPad(ts, totalWidth, prefix) {
|
|
161
|
+
const prefixLen = (0, ansi_1.stripAnsi)(prefix).length;
|
|
162
|
+
const tsLen = (0, ansi_1.stripAnsi)(ts).length;
|
|
163
|
+
const gap = totalWidth - prefixLen - tsLen;
|
|
164
|
+
if (gap <= 0)
|
|
165
|
+
return '';
|
|
166
|
+
return ' '.repeat(gap) + ts;
|
|
167
|
+
}
|
|
168
|
+
function wrapText(text, maxWidth) {
|
|
169
|
+
const words = text.split(/\s+/);
|
|
170
|
+
const lines = [];
|
|
171
|
+
let current = '';
|
|
172
|
+
for (const word of words) {
|
|
173
|
+
if (current.length + word.length + 1 > maxWidth) {
|
|
174
|
+
if (current)
|
|
175
|
+
lines.push(current);
|
|
176
|
+
current = word;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
current = current ? current + ' ' + word : word;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (current)
|
|
183
|
+
lines.push(current);
|
|
184
|
+
return lines;
|
|
185
|
+
}
|
|
186
|
+
function centerText(height, textLines) {
|
|
187
|
+
const lines = [];
|
|
188
|
+
const padTop = Math.floor((height - textLines.length) / 2);
|
|
189
|
+
for (let i = 0; i < padTop; i++)
|
|
190
|
+
lines.push('');
|
|
191
|
+
for (const line of textLines)
|
|
192
|
+
lines.push(' ' + line);
|
|
193
|
+
return lines;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/tui/views/knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Modal overlays — replace content area, header/tabs/footer stay.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.renderModal = renderModal;
|
|
5
|
+
exports.modalFooter = modalFooter;
|
|
6
|
+
const ansi_1 = require("../ansi");
|
|
7
|
+
function renderModal(modal, width, height, state) {
|
|
8
|
+
const lines = [];
|
|
9
|
+
const pad = Math.floor(height / 4);
|
|
10
|
+
for (let i = 0; i < pad; i++)
|
|
11
|
+
lines.push('');
|
|
12
|
+
switch (modal.kind) {
|
|
13
|
+
case 'confirm-forget':
|
|
14
|
+
lines.push(' ' + ansi_1.C.muted + 'remove this memory?' + ansi_1.C.reset);
|
|
15
|
+
lines.push('');
|
|
16
|
+
lines.push(' ' + ansi_1.C.dim + '"' + ansi_1.C.muted + (0, ansi_1.truncate)(modal.preview, width - 6) + ansi_1.C.dim + '"' + ansi_1.C.reset);
|
|
17
|
+
lines.push('');
|
|
18
|
+
lines.push(' ' + ansi_1.C.secondary + 'remove? ' + ansi_1.C.reset + ansi_1.C.primary + '(y/n) _' + ansi_1.C.reset);
|
|
19
|
+
break;
|
|
20
|
+
case 'confirm-forget-all':
|
|
21
|
+
lines.push(' ' + ansi_1.C.red + 'remove all ' + ansi_1.C.reset + ansi_1.C.primary + String(modal.memoryCount) + ansi_1.C.reset +
|
|
22
|
+
ansi_1.C.red + ' memories from ' + ansi_1.C.reset + ansi_1.C.primary + modal.slug + ansi_1.C.reset + ansi_1.C.red + '?' + ansi_1.C.reset);
|
|
23
|
+
lines.push(' ' + ansi_1.C.muted + 'project, team, and billing remain intact.' + ansi_1.C.reset);
|
|
24
|
+
lines.push('');
|
|
25
|
+
lines.push(' ' + ansi_1.C.muted + 'type "' + ansi_1.C.reset + ansi_1.C.secondary + modal.slug + ansi_1.C.reset +
|
|
26
|
+
ansi_1.C.muted + '" to confirm \u203a ' + ansi_1.C.reset + ansi_1.C.primary + modal.input + '_' + ansi_1.C.reset);
|
|
27
|
+
break;
|
|
28
|
+
case 'confirm-delete':
|
|
29
|
+
lines.push(' ' + ansi_1.C.red + 'permanently delete ' + ansi_1.C.reset + ansi_1.C.primary + modal.slug + ansi_1.C.reset +
|
|
30
|
+
ansi_1.C.red + ' and all ' + ansi_1.C.reset + ansi_1.C.primary + String(modal.memoryCount) + ansi_1.C.reset + ansi_1.C.red + ' memories?' + ansi_1.C.reset);
|
|
31
|
+
lines.push(' ' + ansi_1.C.muted + 'subscription will be canceled at period end.' + ansi_1.C.reset);
|
|
32
|
+
lines.push('');
|
|
33
|
+
lines.push(' ' + ansi_1.C.muted + 'type "' + ansi_1.C.reset + ansi_1.C.secondary + modal.slug + ansi_1.C.reset +
|
|
34
|
+
ansi_1.C.muted + '" to confirm \u203a ' + ansi_1.C.reset + ansi_1.C.primary + modal.input + '_' + ansi_1.C.reset);
|
|
35
|
+
break;
|
|
36
|
+
case 'confirm-clear':
|
|
37
|
+
lines.push(' ' + ansi_1.C.red + 'remove all ' + ansi_1.C.reset + ansi_1.C.primary + String(modal.memoryCount) + ansi_1.C.reset +
|
|
38
|
+
ansi_1.C.red + ' memories from ' + ansi_1.C.reset + ansi_1.C.primary + modal.slug + ansi_1.C.reset + ansi_1.C.red + '?' + ansi_1.C.reset);
|
|
39
|
+
lines.push(' ' + ansi_1.C.muted + 'project, team, and billing remain intact.' + ansi_1.C.reset);
|
|
40
|
+
lines.push('');
|
|
41
|
+
lines.push(' ' + ansi_1.C.muted + 'type "' + ansi_1.C.reset + ansi_1.C.secondary + modal.slug + ansi_1.C.reset +
|
|
42
|
+
ansi_1.C.muted + '" to confirm \u203a ' + ansi_1.C.reset + ansi_1.C.primary + modal.input + '_' + ansi_1.C.reset);
|
|
43
|
+
break;
|
|
44
|
+
case 'confirm-remove-member': {
|
|
45
|
+
const projectName = state?.projects.find(p => p.project_id === state?.activeProjectId)?.slug ?? 'the project';
|
|
46
|
+
lines.push(' ' + ansi_1.C.muted + 'remove ' + ansi_1.C.reset + ansi_1.C.secondary + modal.email + ansi_1.C.reset +
|
|
47
|
+
ansi_1.C.muted + ' from ' + ansi_1.C.reset + ansi_1.C.secondary + projectName + ansi_1.C.reset + ansi_1.C.muted + '?' + ansi_1.C.reset);
|
|
48
|
+
lines.push('');
|
|
49
|
+
lines.push(' ' + ansi_1.C.secondary + 'remove? ' + ansi_1.C.reset + ansi_1.C.primary + '(y/n) _' + ansi_1.C.reset);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 'confirm-leave': {
|
|
53
|
+
const leaveProjectName = state?.projects.find(p => p.project_id === state?.activeProjectId)?.slug ?? 'this project';
|
|
54
|
+
lines.push(' ' + ansi_1.C.muted + 'leave ' + ansi_1.C.reset + ansi_1.C.secondary + leaveProjectName + ansi_1.C.reset + ansi_1.C.muted + '?' + ansi_1.C.reset);
|
|
55
|
+
lines.push(' ' + ansi_1.C.muted + 'you will lose access immediately.' + ansi_1.C.reset);
|
|
56
|
+
lines.push('');
|
|
57
|
+
lines.push(' ' + ansi_1.C.secondary + 'leave? ' + ansi_1.C.reset + ansi_1.C.primary + '(y/n) _' + ansi_1.C.reset);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case 'confirm-logout': {
|
|
61
|
+
const email = state?.user?.email ?? 'cohvu';
|
|
62
|
+
lines.push(' ' + ansi_1.C.muted + 'sign out of ' + ansi_1.C.reset + ansi_1.C.secondary + email + ansi_1.C.reset + ansi_1.C.muted + '?' + ansi_1.C.reset);
|
|
63
|
+
lines.push('');
|
|
64
|
+
lines.push(' ' + ansi_1.C.secondary + '(y/n) _' + ansi_1.C.reset);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case 'rename': {
|
|
68
|
+
const slug = modal.input
|
|
69
|
+
.toLowerCase()
|
|
70
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
71
|
+
.replace(/^-+|-+$/g, '');
|
|
72
|
+
lines.push(' ' + ansi_1.C.muted + 'rename project' + ansi_1.C.reset);
|
|
73
|
+
lines.push('');
|
|
74
|
+
lines.push(' ' + ansi_1.C.muted + 'new name \u203a ' + ansi_1.C.reset + ansi_1.C.primary + modal.input + '_' + ansi_1.C.reset);
|
|
75
|
+
lines.push(' ' + ansi_1.C.dim + 'slug ' + ansi_1.C.reset + ansi_1.C.muted + (slug || '(derived from name)') + ansi_1.C.reset);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case 'create-project': {
|
|
79
|
+
const slug = modal.input
|
|
80
|
+
.toLowerCase()
|
|
81
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
82
|
+
.replace(/^-+|-+$/g, '');
|
|
83
|
+
lines.push(' ' + ansi_1.C.muted + 'new project' + ansi_1.C.reset);
|
|
84
|
+
lines.push('');
|
|
85
|
+
lines.push(' ' + ansi_1.C.muted + 'name \u203a ' + ansi_1.C.reset + ansi_1.C.primary + (modal.input || '_') + ansi_1.C.reset);
|
|
86
|
+
lines.push(' ' + ansi_1.C.dim + 'slug ' + ansi_1.C.reset + ansi_1.C.muted + (slug || '(derived from name)') + ansi_1.C.reset);
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case 'switch-project': {
|
|
90
|
+
lines.push(' ' + ansi_1.C.muted + 'switch project' + ansi_1.C.reset);
|
|
91
|
+
lines.push('');
|
|
92
|
+
const projects = state?.projects ?? [];
|
|
93
|
+
const activeId = state?.activeProjectId;
|
|
94
|
+
for (let i = 0; i < projects.length; i++) {
|
|
95
|
+
const p = projects[i];
|
|
96
|
+
const isActive = p.project_id === activeId;
|
|
97
|
+
const isSelected = i === modal.selected;
|
|
98
|
+
const status = p.billing_status === 'active' ? ansi_1.C.green + 'active' + ansi_1.C.reset
|
|
99
|
+
: p.trial_ends_at ? ansi_1.C.yellow + 'trial' + ansi_1.C.reset
|
|
100
|
+
: '';
|
|
101
|
+
const projectRole = p.role ?? 'member';
|
|
102
|
+
if (isSelected) {
|
|
103
|
+
lines.push('> ' + (isActive ? ansi_1.C.green + '\u2713 ' + ansi_1.C.reset : ' ') +
|
|
104
|
+
ansi_1.C.primary + (0, ansi_1.padEnd)(p.slug, 18) + ansi_1.C.reset + ' ' +
|
|
105
|
+
(0, ansi_1.padEnd)(status ? status : '', 16) +
|
|
106
|
+
ansi_1.C.muted + projectRole + ansi_1.C.reset);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
lines.push(' ' + (isActive ? ansi_1.C.green + '\u2713 ' + ansi_1.C.reset : ' ') +
|
|
110
|
+
ansi_1.C.muted + (0, ansi_1.padEnd)(p.slug, 18) + ansi_1.C.reset + ' ' +
|
|
111
|
+
(0, ansi_1.padEnd)(status ? status : '', 16) +
|
|
112
|
+
ansi_1.C.muted + projectRole + ansi_1.C.reset);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
lines.push('');
|
|
116
|
+
lines.push(' ' + ansi_1.C.dim + ' + new project' + ansi_1.C.reset);
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case 'edit-role': {
|
|
120
|
+
const roles = ['admin', 'member', 'viewer'];
|
|
121
|
+
lines.push(' ' + ansi_1.C.muted + 'change role for ' + ansi_1.C.reset + ansi_1.C.secondary + modal.targetEmail + ansi_1.C.reset);
|
|
122
|
+
lines.push('');
|
|
123
|
+
for (let i = 0; i < roles.length; i++) {
|
|
124
|
+
if (i === modal.selected) {
|
|
125
|
+
lines.push('> ' + ansi_1.C.primary + roles[i] + ansi_1.C.reset);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
lines.push(' ' + ansi_1.C.muted + roles[i] + ansi_1.C.reset);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case 'initiate-consensus': {
|
|
134
|
+
lines.push(' ' + ansi_1.C.muted + modal.description + ' requires approval from all admins' + ansi_1.C.reset);
|
|
135
|
+
lines.push('');
|
|
136
|
+
const adminEmails = (state?.members ?? [])
|
|
137
|
+
.filter(m => m.role === 'admin')
|
|
138
|
+
.map(m => m.email ?? m.user_id)
|
|
139
|
+
.join(', ');
|
|
140
|
+
lines.push(' ' + ansi_1.C.muted + 'admins: ' + ansi_1.C.reset + ansi_1.C.secondary + adminEmails + ansi_1.C.reset);
|
|
141
|
+
lines.push('');
|
|
142
|
+
lines.push(' ' + ansi_1.C.muted + 'initiate? other admins will be notified. expires in 24 hours.' + ansi_1.C.reset);
|
|
143
|
+
lines.push('');
|
|
144
|
+
lines.push(' ' + ansi_1.C.secondary + '(y/n) _' + ansi_1.C.reset);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case 'approve-action': {
|
|
148
|
+
lines.push(' ' + ansi_1.C.secondary + modal.initiator + ansi_1.C.reset +
|
|
149
|
+
ansi_1.C.muted + ' wants to ' + ansi_1.C.reset + ansi_1.C.red + modal.description + ansi_1.C.reset);
|
|
150
|
+
lines.push('');
|
|
151
|
+
lines.push(' ' + ansi_1.C.muted + 'expires in ' + ansi_1.C.reset + ansi_1.C.muted + modal.expiresIn + ansi_1.C.reset);
|
|
152
|
+
lines.push('');
|
|
153
|
+
lines.push(' ' + ansi_1.C.secondary + 'approve? ' + ansi_1.C.reset + ansi_1.C.primary + '(y/n) _' + ansi_1.C.reset);
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case 'confirm-regen-link': {
|
|
157
|
+
lines.push(' ' + ansi_1.C.muted + 'regenerate ' + ansi_1.C.reset + ansi_1.C.secondary + modal.role + ansi_1.C.reset +
|
|
158
|
+
ansi_1.C.muted + ' link?' + ansi_1.C.reset);
|
|
159
|
+
lines.push(' ' + ansi_1.C.muted + 'old link stops working immediately.' + ansi_1.C.reset);
|
|
160
|
+
lines.push('');
|
|
161
|
+
lines.push(' ' + ansi_1.C.secondary + '(y/n) _' + ansi_1.C.reset);
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return lines;
|
|
166
|
+
}
|
|
167
|
+
function modalFooter(modal) {
|
|
168
|
+
switch (modal.kind) {
|
|
169
|
+
case 'confirm-forget':
|
|
170
|
+
case 'confirm-remove-member':
|
|
171
|
+
case 'confirm-leave':
|
|
172
|
+
case 'confirm-logout':
|
|
173
|
+
return ansi_1.C.muted + 'y confirm n cancel' + ansi_1.C.reset;
|
|
174
|
+
case 'confirm-forget-all':
|
|
175
|
+
case 'confirm-delete':
|
|
176
|
+
case 'confirm-clear':
|
|
177
|
+
case 'rename':
|
|
178
|
+
return ansi_1.C.muted + 'enter confirm esc cancel' + ansi_1.C.reset;
|
|
179
|
+
case 'create-project':
|
|
180
|
+
return ansi_1.C.muted + 'enter create esc cancel' + ansi_1.C.reset;
|
|
181
|
+
case 'switch-project':
|
|
182
|
+
return ansi_1.C.muted + '\u2191\u2193 navigate enter select esc cancel' + ansi_1.C.reset;
|
|
183
|
+
case 'edit-role':
|
|
184
|
+
return ansi_1.C.muted + '\u2191\u2193 navigate enter confirm esc cancel' + ansi_1.C.reset;
|
|
185
|
+
case 'initiate-consensus':
|
|
186
|
+
case 'confirm-regen-link':
|
|
187
|
+
return ansi_1.C.muted + 'y confirm n cancel' + ansi_1.C.reset;
|
|
188
|
+
case 'approve-action':
|
|
189
|
+
return ansi_1.C.muted + 'y approve n decline esc back' + ansi_1.C.reset;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=modals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modals.js","sourceRoot":"","sources":["../../../src/tui/views/modals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Project tab — info, rename, delete, clear, switch, new.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.renderProject = renderProject;
|
|
5
|
+
exports.projectFooter = projectFooter;
|
|
6
|
+
const ansi_1 = require("../ansi");
|
|
7
|
+
const state_1 = require("../state");
|
|
8
|
+
function renderProject(state, width, height) {
|
|
9
|
+
const lines = [''];
|
|
10
|
+
const project = (0, state_1.getActiveProject)(state);
|
|
11
|
+
if (!project) {
|
|
12
|
+
lines.push(' ' + ansi_1.C.muted + 'no active project' + ansi_1.C.reset);
|
|
13
|
+
return lines;
|
|
14
|
+
}
|
|
15
|
+
// Project info
|
|
16
|
+
lines.push(' ' + ansi_1.C.dim + (0, ansi_1.padEnd)('name', 10) + ansi_1.C.reset + ansi_1.C.secondary + project.name + ansi_1.C.reset);
|
|
17
|
+
lines.push(' ' + ansi_1.C.dim + (0, ansi_1.padEnd)('slug', 10) + ansi_1.C.reset + ansi_1.C.muted + project.slug + ansi_1.C.reset);
|
|
18
|
+
if (project.created_at) {
|
|
19
|
+
lines.push(' ' + ansi_1.C.dim + (0, ansi_1.padEnd)('created', 10) + ansi_1.C.reset + ansi_1.C.muted + (0, ansi_1.formatDate)(project.created_at) + ansi_1.C.reset);
|
|
20
|
+
}
|
|
21
|
+
// Actions
|
|
22
|
+
lines.push('');
|
|
23
|
+
lines.push((0, ansi_1.divider)(width));
|
|
24
|
+
lines.push('');
|
|
25
|
+
if (state.userRole === 'admin') {
|
|
26
|
+
lines.push(' ' + ansi_1.C.muted + 'r ' + ansi_1.C.secondary + 'rename project' + ansi_1.C.reset);
|
|
27
|
+
}
|
|
28
|
+
lines.push(' ' + ansi_1.C.muted + 'n ' + ansi_1.C.secondary + 'new project' + ansi_1.C.reset);
|
|
29
|
+
if (state.projects.length > 1) {
|
|
30
|
+
lines.push(' ' + ansi_1.C.muted + 'w ' + ansi_1.C.secondary + 'switch project' + ansi_1.C.reset);
|
|
31
|
+
}
|
|
32
|
+
// Destructive section (admin only)
|
|
33
|
+
if (state.userRole === 'admin') {
|
|
34
|
+
const pendingProjectApproval = state.pendingApprovals.find(a => a.action === 'delete_project' || a.action === 'clear_memories');
|
|
35
|
+
lines.push('');
|
|
36
|
+
lines.push((0, ansi_1.divider)(width));
|
|
37
|
+
lines.push('');
|
|
38
|
+
if (pendingProjectApproval) {
|
|
39
|
+
const actionLabel = pendingProjectApproval.action === 'delete_project' ? 'delete project' : 'clear memories';
|
|
40
|
+
const approved = pendingProjectApproval.approved_by.length;
|
|
41
|
+
const required = pendingProjectApproval.required_count;
|
|
42
|
+
const expires = (0, ansi_1.timeUntil)(pendingProjectApproval.expires_at);
|
|
43
|
+
lines.push(' ' + ansi_1.C.yellow + '! ' + ansi_1.C.reset + ansi_1.C.secondary + 'pending: ' + actionLabel + ansi_1.C.reset +
|
|
44
|
+
ansi_1.C.muted + ' ' + approved + '/' + required + ' approved expires ' + expires + ansi_1.C.reset);
|
|
45
|
+
lines.push(' ' + ansi_1.C.muted + 'a ' + ansi_1.C.secondary + 'approve' + ansi_1.C.reset +
|
|
46
|
+
' ' + ansi_1.C.muted + 'x ' + ansi_1.C.secondary + 'cancel' + ansi_1.C.reset);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
lines.push(' ' + ansi_1.C.red + 'c ' + ansi_1.C.reset + ansi_1.C.muted + 'clear all memories' + ansi_1.C.reset);
|
|
50
|
+
lines.push(' ' + ansi_1.C.red + 'd ' + ansi_1.C.reset + ansi_1.C.muted + 'delete project' + ansi_1.C.reset);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return lines;
|
|
54
|
+
}
|
|
55
|
+
function projectFooter(state) {
|
|
56
|
+
if (state.userRole === 'admin') {
|
|
57
|
+
const hasPending = state.pendingApprovals.some(a => a.action === 'delete_project' || a.action === 'clear_memories');
|
|
58
|
+
const parts = ['r rename', 'n new'];
|
|
59
|
+
if (state.projects.length > 1)
|
|
60
|
+
parts.push('w switch');
|
|
61
|
+
if (hasPending) {
|
|
62
|
+
parts.push('a approve', 'x cancel');
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
parts.push('c clear', 'd delete');
|
|
66
|
+
}
|
|
67
|
+
parts.push('q quit');
|
|
68
|
+
return ansi_1.C.muted + parts.join(' ') + ansi_1.C.reset;
|
|
69
|
+
}
|
|
70
|
+
const parts = ['n new'];
|
|
71
|
+
if (state.projects.length > 1)
|
|
72
|
+
parts.push('w switch');
|
|
73
|
+
parts.push('q quit');
|
|
74
|
+
return ansi_1.C.muted + parts.join(' ') + ansi_1.C.reset;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/tui/views/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Team tab — member list, invite links, activity.
|
|
3
|
+
// Unified cursor navigates member rows AND invite link rows (admin only).
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.renderTeam = renderTeam;
|
|
6
|
+
exports.teamFooter = teamFooter;
|
|
7
|
+
const ansi_1 = require("../ansi");
|
|
8
|
+
function renderTeam(state, width, _height) {
|
|
9
|
+
const lines = [''];
|
|
10
|
+
const userId = state.user?.id;
|
|
11
|
+
const isAdmin = state.userRole === 'admin';
|
|
12
|
+
const memberCount = state.members.length;
|
|
13
|
+
// Member list
|
|
14
|
+
for (let i = 0; i < memberCount; i++) {
|
|
15
|
+
const m = state.members[i];
|
|
16
|
+
const isYou = m.user_id === userId;
|
|
17
|
+
const email = m.email ?? m.name ?? m.user_id;
|
|
18
|
+
const memberRole = m.role ?? 'member';
|
|
19
|
+
let roleLabel = memberRole;
|
|
20
|
+
if (isYou)
|
|
21
|
+
roleLabel = memberRole + ' \u00b7 you';
|
|
22
|
+
const selected = isAdmin && state.teamSelected === i;
|
|
23
|
+
const prefix = selected ? '> ' : ' ';
|
|
24
|
+
const emailColor = isYou ? ansi_1.C.primary : (selected ? ansi_1.C.primary : ansi_1.C.secondary);
|
|
25
|
+
const activity = m.last_active_at
|
|
26
|
+
? ansi_1.C.dim + 'last active ' + ansi_1.C.reset + ansi_1.C.muted + (0, ansi_1.timeAgo)(m.last_active_at) + ansi_1.C.reset
|
|
27
|
+
: ansi_1.C.dim + 'never active' + ansi_1.C.reset;
|
|
28
|
+
lines.push(prefix + emailColor + (0, ansi_1.padEnd)(email, 38) + ansi_1.C.reset +
|
|
29
|
+
ansi_1.C.muted + (0, ansi_1.padEnd)(roleLabel, 16) + ansi_1.C.reset +
|
|
30
|
+
activity);
|
|
31
|
+
// Pending demotion inline status
|
|
32
|
+
const demoteApproval = state.pendingApprovals.find(a => a.action === 'demote_admin' && a.target_user_id === m.user_id);
|
|
33
|
+
if (demoteApproval) {
|
|
34
|
+
const approved = demoteApproval.approved_by.length;
|
|
35
|
+
const required = demoteApproval.required_count;
|
|
36
|
+
const expires = (0, ansi_1.timeUntil)(demoteApproval.expires_at);
|
|
37
|
+
lines.push(' ' + ansi_1.C.yellow + '! ' + ansi_1.C.reset + ansi_1.C.muted + 'pending demotion ' +
|
|
38
|
+
approved + '/' + required + ' approved expires ' + expires + ansi_1.C.reset);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Solo message
|
|
42
|
+
if (memberCount <= 1) {
|
|
43
|
+
lines.push('');
|
|
44
|
+
lines.push(' ' + ansi_1.C.dim + 'just you so far.' + ansi_1.C.reset);
|
|
45
|
+
}
|
|
46
|
+
// Inline error (shown below member list)
|
|
47
|
+
if (state.inlineError) {
|
|
48
|
+
lines.push('');
|
|
49
|
+
lines.push(' ' + ansi_1.C.red + state.inlineError + ansi_1.C.reset);
|
|
50
|
+
}
|
|
51
|
+
// Invite links section — admin only
|
|
52
|
+
if (isAdmin) {
|
|
53
|
+
lines.push('');
|
|
54
|
+
lines.push((0, ansi_1.divider)(width));
|
|
55
|
+
lines.push('');
|
|
56
|
+
// Section header with right-aligned hint
|
|
57
|
+
const headerLeft = ' ' + ansi_1.C.muted + 'invite links' + ansi_1.C.reset;
|
|
58
|
+
const headerHint = ansi_1.C.dim + '\u2191\u2193 select c copy r regen' + ansi_1.C.reset;
|
|
59
|
+
lines.push(headerLeft + (0, ansi_1.rightAlign)(headerHint, width, headerLeft));
|
|
60
|
+
const linkRoles = ['admin', 'member', 'viewer'];
|
|
61
|
+
for (let li = 0; li < linkRoles.length; li++) {
|
|
62
|
+
const role = linkRoles[li];
|
|
63
|
+
const link = state.inviteLinks.find(l => l.role === role);
|
|
64
|
+
if (link) {
|
|
65
|
+
const linkIdx = memberCount + li;
|
|
66
|
+
const selected = state.teamSelected === linkIdx;
|
|
67
|
+
const prefix = selected ? '> ' : ' ';
|
|
68
|
+
const urlColor = selected ? ansi_1.C.primary : ansi_1.C.secondary;
|
|
69
|
+
let row = prefix + ansi_1.C.dim + (0, ansi_1.padEnd)(role, 9) + ansi_1.C.reset +
|
|
70
|
+
urlColor + (0, ansi_1.truncate)(link.url, width - 12) + ansi_1.C.reset;
|
|
71
|
+
// "copied!" flash on the selected row
|
|
72
|
+
if (selected && state.copiedFeedback) {
|
|
73
|
+
row += ' ' + ansi_1.C.green + 'copied!' + ansi_1.C.reset;
|
|
74
|
+
}
|
|
75
|
+
lines.push(row);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return lines;
|
|
80
|
+
}
|
|
81
|
+
function teamFooter(state) {
|
|
82
|
+
if (state.userRole !== 'admin') {
|
|
83
|
+
return ansi_1.C.muted + 'x leave q quit' + ansi_1.C.reset;
|
|
84
|
+
}
|
|
85
|
+
const onLinkRow = state.teamSelected >= state.members.length;
|
|
86
|
+
if (onLinkRow) {
|
|
87
|
+
return ansi_1.C.muted + '\u2191\u2193 navigate c copy r regen q quit' + ansi_1.C.reset;
|
|
88
|
+
}
|
|
89
|
+
// On a member row
|
|
90
|
+
const hasPendingApproval = state.pendingApprovals.length > 0;
|
|
91
|
+
if (hasPendingApproval) {
|
|
92
|
+
return ansi_1.C.muted + '\u2191\u2193 navigate a approve x cancel e edit role q quit' + ansi_1.C.reset;
|
|
93
|
+
}
|
|
94
|
+
const others = state.members.filter(m => m.user_id !== state.user?.id);
|
|
95
|
+
if (others.length > 0) {
|
|
96
|
+
return ansi_1.C.muted + '\u2191\u2193 navigate e edit role x remove q quit' + ansi_1.C.reset;
|
|
97
|
+
}
|
|
98
|
+
return ansi_1.C.muted + '\u2191\u2193 navigate q quit' + ansi_1.C.reset;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=team.js.map
|