cohvu 1.0.22 → 2.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 +6 -1
- package/dist/api.js +58 -33
- package/dist/api.js.map +1 -1
- package/dist/auth.d.ts +3 -0
- package/dist/auth.js +26 -1
- package/dist/auth.js.map +1 -1
- package/dist/proxy.js +127 -275
- package/dist/proxy.js.map +1 -1
- package/dist/tui/dashboard.js +271 -127
- package/dist/tui/dashboard.js.map +1 -1
- package/dist/tui/render.js +21 -2
- package/dist/tui/render.js.map +1 -1
- package/dist/tui/state.d.ts +12 -0
- package/dist/tui/state.js +6 -0
- package/dist/tui/state.js.map +1 -1
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -73,6 +73,7 @@ export declare class ApiClient {
|
|
|
73
73
|
private baseUrl;
|
|
74
74
|
constructor(baseUrl?: string);
|
|
75
75
|
private headers;
|
|
76
|
+
private request;
|
|
76
77
|
private get;
|
|
77
78
|
private post;
|
|
78
79
|
private del;
|
|
@@ -117,7 +118,11 @@ export declare class ApiClient {
|
|
|
117
118
|
cancelApproval(projectId: string, approvalId: string): Promise<void>;
|
|
118
119
|
listNotifications(): Promise<Notification[]>;
|
|
119
120
|
markNotificationsSeen(): Promise<void>;
|
|
120
|
-
connectFeed(projectId: string,
|
|
121
|
+
connectFeed(projectId: string, callbacks: {
|
|
122
|
+
onEvent: (eventType: string, data: Record<string, unknown>) => void;
|
|
123
|
+
onConnected?: () => void;
|
|
124
|
+
onDisconnected?: () => void;
|
|
125
|
+
}): {
|
|
121
126
|
disconnect: () => void;
|
|
122
127
|
};
|
|
123
128
|
}
|
package/dist/api.js
CHANGED
|
@@ -17,42 +17,53 @@ class ApiClient {
|
|
|
17
17
|
"Content-Type": "application/json",
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
async
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
async request(path, init) {
|
|
21
|
+
const h = await this.headers();
|
|
22
|
+
const opts = {
|
|
23
|
+
...init,
|
|
24
|
+
headers: { ...h, ...init?.headers },
|
|
25
|
+
signal: AbortSignal.timeout(15_000),
|
|
26
|
+
};
|
|
27
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
28
|
+
try {
|
|
29
|
+
const res = await fetch(`${this.baseUrl}${path}`, opts);
|
|
30
|
+
if (res.ok)
|
|
31
|
+
return (await res.json());
|
|
32
|
+
if (res.status >= 500 && attempt === 0) {
|
|
33
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
throw new ApiError(res.status, await res.text());
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
if (err instanceof ApiError)
|
|
40
|
+
throw err;
|
|
41
|
+
if (attempt === 0) {
|
|
42
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
throw new Error("Request failed");
|
|
27
49
|
}
|
|
28
|
-
|
|
29
|
-
|
|
50
|
+
get(path) {
|
|
51
|
+
return this.request(path);
|
|
52
|
+
}
|
|
53
|
+
post(path, body) {
|
|
54
|
+
return this.request(path, {
|
|
30
55
|
method: "POST",
|
|
31
|
-
headers: await this.headers(),
|
|
32
56
|
body: body ? JSON.stringify(body) : undefined,
|
|
33
57
|
});
|
|
34
|
-
if (!res.ok)
|
|
35
|
-
throw new ApiError(res.status, await res.text());
|
|
36
|
-
return (await res.json());
|
|
37
|
-
}
|
|
38
|
-
async del(path) {
|
|
39
|
-
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
40
|
-
method: "DELETE",
|
|
41
|
-
headers: await this.headers(),
|
|
42
|
-
});
|
|
43
|
-
if (!res.ok)
|
|
44
|
-
throw new ApiError(res.status, await res.text());
|
|
45
|
-
return (await res.json());
|
|
46
58
|
}
|
|
47
|
-
|
|
48
|
-
|
|
59
|
+
del(path) {
|
|
60
|
+
return this.request(path, { method: "DELETE" });
|
|
61
|
+
}
|
|
62
|
+
patch(path, body) {
|
|
63
|
+
return this.request(path, {
|
|
49
64
|
method: "PATCH",
|
|
50
|
-
headers: await this.headers(),
|
|
51
65
|
body: JSON.stringify(body),
|
|
52
66
|
});
|
|
53
|
-
if (!res.ok)
|
|
54
|
-
throw new ApiError(res.status, await res.text());
|
|
55
|
-
return (await res.json());
|
|
56
67
|
}
|
|
57
68
|
// Auth
|
|
58
69
|
async me() {
|
|
@@ -136,10 +147,11 @@ class ApiClient {
|
|
|
136
147
|
await this.post(`/v1/notifications/seen`);
|
|
137
148
|
}
|
|
138
149
|
// SSE feed — returns a disconnect function
|
|
139
|
-
connectFeed(projectId,
|
|
150
|
+
connectFeed(projectId, callbacks) {
|
|
140
151
|
let aborted = false;
|
|
141
152
|
let currentController = null;
|
|
142
153
|
let retryDelay = 1000;
|
|
154
|
+
let wasConnected = false;
|
|
143
155
|
const connect = async () => {
|
|
144
156
|
if (aborted)
|
|
145
157
|
return;
|
|
@@ -151,11 +163,17 @@ class ApiClient {
|
|
|
151
163
|
signal: currentController.signal,
|
|
152
164
|
});
|
|
153
165
|
if (!res.ok || !res.body) {
|
|
166
|
+
if (wasConnected) {
|
|
167
|
+
wasConnected = false;
|
|
168
|
+
callbacks.onDisconnected?.();
|
|
169
|
+
}
|
|
154
170
|
if (!aborted)
|
|
155
171
|
setTimeout(connect, retryDelay);
|
|
156
172
|
return;
|
|
157
173
|
}
|
|
158
|
-
retryDelay = 1000;
|
|
174
|
+
retryDelay = 1000;
|
|
175
|
+
wasConnected = true;
|
|
176
|
+
callbacks.onConnected?.();
|
|
159
177
|
const reader = res.body.getReader();
|
|
160
178
|
const decoder = new TextDecoder();
|
|
161
179
|
let buffer = "";
|
|
@@ -169,8 +187,7 @@ class ApiClient {
|
|
|
169
187
|
for (const part of parts) {
|
|
170
188
|
if (!part.trim() || part.startsWith(":"))
|
|
171
189
|
continue;
|
|
172
|
-
|
|
173
|
-
let eventType = 'memory'; // default
|
|
190
|
+
let eventType = 'memory';
|
|
174
191
|
let dataJson = '';
|
|
175
192
|
for (const line of part.split('\n')) {
|
|
176
193
|
if (line.startsWith('event: '))
|
|
@@ -182,16 +199,24 @@ class ApiClient {
|
|
|
182
199
|
continue;
|
|
183
200
|
try {
|
|
184
201
|
const data = JSON.parse(dataJson);
|
|
185
|
-
onEvent(eventType, data);
|
|
202
|
+
callbacks.onEvent(eventType, data);
|
|
186
203
|
}
|
|
187
204
|
catch { }
|
|
188
205
|
}
|
|
189
206
|
}
|
|
190
207
|
// Stream ended — reconnect
|
|
208
|
+
if (wasConnected) {
|
|
209
|
+
wasConnected = false;
|
|
210
|
+
callbacks.onDisconnected?.();
|
|
211
|
+
}
|
|
191
212
|
if (!aborted)
|
|
192
213
|
setTimeout(connect, retryDelay);
|
|
193
214
|
}
|
|
194
215
|
catch {
|
|
216
|
+
if (wasConnected) {
|
|
217
|
+
wasConnected = false;
|
|
218
|
+
callbacks.onDisconnected?.();
|
|
219
|
+
}
|
|
195
220
|
if (!aborted) {
|
|
196
221
|
retryDelay = Math.min(retryDelay * 2, 30000);
|
|
197
222
|
setTimeout(connect, retryDelay);
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,oEAAoE;;;AAEpE,iCAAsC;AAEtC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AA2EjD,MAAa,SAAS;IACZ,OAAO,CAAS;IAExB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,gBAAgB,CAAC;IAC1E,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO;YACL,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;YAC3C,cAAc,EAAE,kBAAkB;SACnC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ interface StoredTokens {
|
|
|
4
4
|
expires_at: string;
|
|
5
5
|
base_url: string;
|
|
6
6
|
}
|
|
7
|
+
/** Read the long-lived API key for proxy use. Returns null if not stored. */
|
|
8
|
+
export declare function getApiKey(): string | null;
|
|
9
|
+
export declare function storeApiKey(key: string): void;
|
|
7
10
|
export declare function deviceAuthFlow(baseUrl: string): Promise<StoredTokens>;
|
|
8
11
|
export declare function getAuthToken(baseUrl: string): Promise<{
|
|
9
12
|
accessToken: string;
|
package/dist/auth.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// Device auth flow + token storage for the Cohvu CLI.
|
|
3
3
|
// Stores tokens in ~/.cohvu/tokens.json.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.getApiKey = getApiKey;
|
|
6
|
+
exports.storeApiKey = storeApiKey;
|
|
5
7
|
exports.deviceAuthFlow = deviceAuthFlow;
|
|
6
8
|
exports.getAuthToken = getAuthToken;
|
|
7
9
|
const fs_1 = require("fs");
|
|
@@ -10,6 +12,7 @@ const path_1 = require("path");
|
|
|
10
12
|
const child_process_1 = require("child_process");
|
|
11
13
|
const CONFIG_DIR = (0, path_1.join)((0, os_1.homedir)(), ".cohvu");
|
|
12
14
|
const TOKENS_FILE = (0, path_1.join)(CONFIG_DIR, "tokens.json");
|
|
15
|
+
const API_KEY_FILE = (0, path_1.join)(CONFIG_DIR, "credentials");
|
|
13
16
|
const POLL_INTERVAL_MS = 5000;
|
|
14
17
|
function ensureConfigDir() {
|
|
15
18
|
if (!(0, fs_1.existsSync)(CONFIG_DIR)) {
|
|
@@ -26,9 +29,27 @@ function loadStoredTokens() {
|
|
|
26
29
|
return null;
|
|
27
30
|
}
|
|
28
31
|
}
|
|
32
|
+
/** Read the long-lived API key for proxy use. Returns null if not stored. */
|
|
33
|
+
function getApiKey() {
|
|
34
|
+
if (!(0, fs_1.existsSync)(API_KEY_FILE))
|
|
35
|
+
return null;
|
|
36
|
+
try {
|
|
37
|
+
const key = (0, fs_1.readFileSync)(API_KEY_FILE, "utf-8").trim();
|
|
38
|
+
return key.startsWith("chv_") ? key : null;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function storeApiKey(key) {
|
|
45
|
+
ensureConfigDir();
|
|
46
|
+
const tmp = `${API_KEY_FILE}.${process.pid}.tmp`;
|
|
47
|
+
(0, fs_1.writeFileSync)(tmp, key, { mode: 0o600 });
|
|
48
|
+
(0, fs_1.renameSync)(tmp, API_KEY_FILE);
|
|
49
|
+
}
|
|
29
50
|
function storeTokens(tokens) {
|
|
30
51
|
ensureConfigDir();
|
|
31
|
-
const tmp = `${TOKENS_FILE}.tmp`;
|
|
52
|
+
const tmp = `${TOKENS_FILE}.${process.pid}.tmp`;
|
|
32
53
|
(0, fs_1.writeFileSync)(tmp, JSON.stringify(tokens, null, 2), { mode: 0o600 });
|
|
33
54
|
(0, fs_1.renameSync)(tmp, TOKENS_FILE);
|
|
34
55
|
}
|
|
@@ -102,6 +123,10 @@ async function deviceAuthFlow(baseUrl) {
|
|
|
102
123
|
base_url: baseUrl,
|
|
103
124
|
};
|
|
104
125
|
storeTokens(tokens);
|
|
126
|
+
// Store long-lived API key for proxy use
|
|
127
|
+
if (tokenData.api_key) {
|
|
128
|
+
storeApiKey(tokenData.api_key);
|
|
129
|
+
}
|
|
105
130
|
process.stderr.write("Authenticated.\n\n");
|
|
106
131
|
return tokens;
|
|
107
132
|
}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,yCAAyC;;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|