cohvu 0.6.1 → 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.
Files changed (49) hide show
  1. package/dist/api.d.ts +128 -0
  2. package/dist/api.js +221 -0
  3. package/dist/api.js.map +1 -0
  4. package/dist/auth.js +2 -2
  5. package/dist/auth.js.map +1 -1
  6. package/dist/index.js +83 -738
  7. package/dist/index.js.map +1 -1
  8. package/dist/proxy.d.ts +1 -0
  9. package/dist/proxy.js +151 -0
  10. package/dist/proxy.js.map +1 -0
  11. package/dist/setup.js +1 -1
  12. package/dist/setup.js.map +1 -1
  13. package/dist/tui/ansi.d.ts +41 -0
  14. package/dist/tui/ansi.js +120 -0
  15. package/dist/tui/ansi.js.map +1 -0
  16. package/dist/tui/dashboard.d.ts +1 -0
  17. package/dist/tui/dashboard.js +1051 -0
  18. package/dist/tui/dashboard.js.map +1 -0
  19. package/dist/tui/keys.d.ts +31 -0
  20. package/dist/tui/keys.js +53 -0
  21. package/dist/tui/keys.js.map +1 -0
  22. package/dist/tui/platform-detect.d.ts +2 -0
  23. package/dist/tui/platform-detect.js +102 -0
  24. package/dist/tui/platform-detect.js.map +1 -0
  25. package/dist/tui/render.d.ts +5 -0
  26. package/dist/tui/render.js +139 -0
  27. package/dist/tui/render.js.map +1 -0
  28. package/dist/tui/state.d.ts +215 -0
  29. package/dist/tui/state.js +206 -0
  30. package/dist/tui/state.js.map +1 -0
  31. package/dist/tui/views/billing.d.ts +3 -0
  32. package/dist/tui/views/billing.js +127 -0
  33. package/dist/tui/views/billing.js.map +1 -0
  34. package/dist/tui/views/knowledge.d.ts +3 -0
  35. package/dist/tui/views/knowledge.js +195 -0
  36. package/dist/tui/views/knowledge.js.map +1 -0
  37. package/dist/tui/views/modals.d.ts +3 -0
  38. package/dist/tui/views/modals.js +192 -0
  39. package/dist/tui/views/modals.js.map +1 -0
  40. package/dist/tui/views/project.d.ts +3 -0
  41. package/dist/tui/views/project.js +76 -0
  42. package/dist/tui/views/project.js.map +1 -0
  43. package/dist/tui/views/team.d.ts +3 -0
  44. package/dist/tui/views/team.js +100 -0
  45. package/dist/tui/views/team.js.map +1 -0
  46. package/dist/tui/views/you.d.ts +3 -0
  47. package/dist/tui/views/you.js +74 -0
  48. package/dist/tui/views/you.js.map +1 -0
  49. package/package.json +1 -1
package/dist/api.d.ts ADDED
@@ -0,0 +1,128 @@
1
+ export interface MeResponse {
2
+ user: {
3
+ id: string;
4
+ email: string;
5
+ name: string;
6
+ active_project_id: string | null;
7
+ created_at: string;
8
+ };
9
+ projects: Array<{
10
+ project_id: string;
11
+ slug: string;
12
+ name: string;
13
+ is_root: boolean;
14
+ trial_ends_at: string | null;
15
+ billing_status: string | null;
16
+ people_link: string | null;
17
+ created_by: string | null;
18
+ created_at: string | null;
19
+ role: string;
20
+ }>;
21
+ }
22
+ export interface MemoryItem {
23
+ id: string;
24
+ body: string;
25
+ updated_at: string;
26
+ contributed_by?: Record<string, unknown>;
27
+ }
28
+ export interface MemberItem {
29
+ user_id: string;
30
+ role: string;
31
+ email: string | null;
32
+ name: string | null;
33
+ last_active_at: string | null;
34
+ }
35
+ export interface BillingInfo {
36
+ subscription: {
37
+ status: string;
38
+ seat_count: number;
39
+ current_period_end: string;
40
+ cancel_at_period_end: boolean;
41
+ } | null;
42
+ }
43
+ export interface ProjectInfo {
44
+ id: string;
45
+ name: string;
46
+ slug: string;
47
+ trial_ends_at: string | null;
48
+ }
49
+ export interface InviteLink {
50
+ role: string;
51
+ code: string;
52
+ url: string;
53
+ }
54
+ export interface PendingApproval {
55
+ id: string;
56
+ action: string;
57
+ description: string;
58
+ initiator_email: string;
59
+ target_user_id?: string;
60
+ approved_by: string[];
61
+ required_count: number;
62
+ created_at: string;
63
+ expires_at: string;
64
+ }
65
+ export interface Notification {
66
+ id: string;
67
+ type: string;
68
+ message: string;
69
+ created_at: string;
70
+ seen: boolean;
71
+ }
72
+ export declare class ApiClient {
73
+ private baseUrl;
74
+ constructor(baseUrl?: string);
75
+ private headers;
76
+ private get;
77
+ private post;
78
+ private del;
79
+ private patch;
80
+ me(): Promise<MeResponse>;
81
+ switchProject(projectId: string): Promise<void>;
82
+ listMemories(projectId: string, opts: {
83
+ limit: number;
84
+ offset: number;
85
+ }): Promise<{
86
+ total: number;
87
+ memories: MemoryItem[];
88
+ }>;
89
+ searchMemories(projectId: string, query: string): Promise<{
90
+ memories: MemoryItem[];
91
+ }>;
92
+ deleteMemory(projectId: string, memoryId: string): Promise<void>;
93
+ clearMemories(projectId: string): Promise<{
94
+ memories_removed: number;
95
+ }>;
96
+ listMembers(projectId: string): Promise<MemberItem[]>;
97
+ removeMember(projectId: string, userId: string): Promise<void>;
98
+ regeneratePeopleLink(projectId: string): Promise<{
99
+ people_link: string | null;
100
+ }>;
101
+ getBilling(projectId: string): Promise<BillingInfo>;
102
+ createCheckout(projectId: string): Promise<{
103
+ checkout_url: string;
104
+ }>;
105
+ getPortalUrl(projectId: string): Promise<{
106
+ url: string;
107
+ }>;
108
+ createProject(name: string, slug: string): Promise<ProjectInfo>;
109
+ renameProject(projectId: string, name: string, slug: string): Promise<void>;
110
+ deleteProject(projectId: string): Promise<void>;
111
+ changeRole(projectId: string, userId: string, role: string): Promise<void>;
112
+ listInviteLinks(projectId: string): Promise<InviteLink[]>;
113
+ regenerateInviteLink(projectId: string, role: string): Promise<InviteLink>;
114
+ listApprovals(projectId: string): Promise<PendingApproval[]>;
115
+ initiateApproval(projectId: string, action: string, targetUserId?: string): Promise<PendingApproval>;
116
+ approveAction(projectId: string, approvalId: string): Promise<void>;
117
+ cancelApproval(projectId: string, approvalId: string): Promise<void>;
118
+ listNotifications(): Promise<Notification[]>;
119
+ markNotificationsSeen(): Promise<void>;
120
+ connectFeed(projectId: string, onEvent: (eventType: string, data: Record<string, unknown>) => void): {
121
+ disconnect: () => void;
122
+ };
123
+ }
124
+ export declare class ApiError extends Error {
125
+ readonly status: number;
126
+ readonly body: string;
127
+ constructor(status: number, body: string);
128
+ }
package/dist/api.js ADDED
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ // Typed API client for the Cohvu REST API.
3
+ // Centralizes all fetch calls with auth headers and error handling.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ApiError = exports.ApiClient = void 0;
6
+ const auth_1 = require("./auth");
7
+ const DEFAULT_BASE_URL = "https://api.cohvu.com";
8
+ class ApiClient {
9
+ baseUrl;
10
+ constructor(baseUrl) {
11
+ this.baseUrl = baseUrl ?? process.env.COHVU_API_URL ?? DEFAULT_BASE_URL;
12
+ }
13
+ async headers() {
14
+ const auth = await (0, auth_1.getAuthToken)(this.baseUrl);
15
+ return {
16
+ Authorization: `Bearer ${auth.accessToken}`,
17
+ "Content-Type": "application/json",
18
+ };
19
+ }
20
+ async get(path) {
21
+ const res = await fetch(`${this.baseUrl}${path}`, {
22
+ headers: await this.headers(),
23
+ });
24
+ if (!res.ok)
25
+ throw new ApiError(res.status, await res.text());
26
+ return (await res.json());
27
+ }
28
+ async post(path, body) {
29
+ const res = await fetch(`${this.baseUrl}${path}`, {
30
+ method: "POST",
31
+ headers: await this.headers(),
32
+ body: body ? JSON.stringify(body) : undefined,
33
+ });
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
+ }
47
+ async patch(path, body) {
48
+ const res = await fetch(`${this.baseUrl}${path}`, {
49
+ method: "PATCH",
50
+ headers: await this.headers(),
51
+ body: JSON.stringify(body),
52
+ });
53
+ if (!res.ok)
54
+ throw new ApiError(res.status, await res.text());
55
+ return (await res.json());
56
+ }
57
+ // Auth
58
+ async me() {
59
+ return this.get("/v1/auth/me");
60
+ }
61
+ async switchProject(projectId) {
62
+ await this.post("/v1/auth/active-project", { project_id: projectId });
63
+ }
64
+ // Knowledge
65
+ async listMemories(projectId, opts) {
66
+ return this.get(`/v1/projects/${projectId}/memories?limit=${opts.limit}&offset=${opts.offset}`);
67
+ }
68
+ async searchMemories(projectId, query) {
69
+ return this.get(`/v1/projects/${projectId}/memories/search?q=${encodeURIComponent(query)}`);
70
+ }
71
+ async deleteMemory(projectId, memoryId) {
72
+ await this.del(`/v1/projects/${projectId}/memories/${memoryId}`);
73
+ }
74
+ async clearMemories(projectId) {
75
+ return this.del(`/v1/projects/${projectId}/knowledge`);
76
+ }
77
+ // Team
78
+ async listMembers(projectId) {
79
+ return this.get(`/v1/projects/${projectId}/members`);
80
+ }
81
+ async removeMember(projectId, userId) {
82
+ await this.del(`/v1/projects/${projectId}/members/${userId}`);
83
+ }
84
+ async regeneratePeopleLink(projectId) {
85
+ return this.post(`/v1/projects/${projectId}/regenerate-people-link`);
86
+ }
87
+ // Billing
88
+ async getBilling(projectId) {
89
+ return this.get(`/v1/projects/${projectId}/billing`);
90
+ }
91
+ async createCheckout(projectId) {
92
+ return this.post(`/v1/projects/${projectId}/checkout`);
93
+ }
94
+ async getPortalUrl(projectId) {
95
+ return this.post(`/v1/projects/${projectId}/billing/portal`, { return_url: "https://cohvu.com" });
96
+ }
97
+ // Project
98
+ async createProject(name, slug) {
99
+ return this.post("/v1/projects", { name, slug });
100
+ }
101
+ async renameProject(projectId, name, slug) {
102
+ await this.patch(`/v1/projects/${projectId}`, { name, slug });
103
+ }
104
+ async deleteProject(projectId) {
105
+ await this.del(`/v1/projects/${projectId}`);
106
+ }
107
+ // Roles
108
+ async changeRole(projectId, userId, role) {
109
+ await this.patch(`/v1/projects/${projectId}/members/${userId}`, { role });
110
+ }
111
+ // Invite links
112
+ async listInviteLinks(projectId) {
113
+ return this.get(`/v1/projects/${projectId}/invite-links`);
114
+ }
115
+ async regenerateInviteLink(projectId, role) {
116
+ return this.post(`/v1/projects/${projectId}/invite-links/regenerate`, { role });
117
+ }
118
+ // Approvals
119
+ async listApprovals(projectId) {
120
+ return this.get(`/v1/projects/${projectId}/approvals`);
121
+ }
122
+ async initiateApproval(projectId, action, targetUserId) {
123
+ return this.post(`/v1/projects/${projectId}/approvals`, { action, target_user_id: targetUserId });
124
+ }
125
+ async approveAction(projectId, approvalId) {
126
+ await this.post(`/v1/projects/${projectId}/approvals/${approvalId}/approve`);
127
+ }
128
+ async cancelApproval(projectId, approvalId) {
129
+ await this.del(`/v1/projects/${projectId}/approvals/${approvalId}`);
130
+ }
131
+ // Notifications
132
+ async listNotifications() {
133
+ return this.get(`/v1/notifications`);
134
+ }
135
+ async markNotificationsSeen() {
136
+ await this.post(`/v1/notifications/seen`);
137
+ }
138
+ // SSE feed — returns a disconnect function
139
+ connectFeed(projectId, onEvent) {
140
+ let aborted = false;
141
+ let currentController = null;
142
+ let retryDelay = 1000;
143
+ const connect = async () => {
144
+ if (aborted)
145
+ return;
146
+ currentController = new AbortController();
147
+ try {
148
+ const auth = await (0, auth_1.getAuthToken)(this.baseUrl);
149
+ const res = await fetch(`${this.baseUrl}/v1/projects/${projectId}/memories/feed`, {
150
+ headers: { Authorization: `Bearer ${auth.accessToken}` },
151
+ signal: currentController.signal,
152
+ });
153
+ if (!res.ok || !res.body) {
154
+ if (!aborted)
155
+ setTimeout(connect, retryDelay);
156
+ return;
157
+ }
158
+ retryDelay = 1000; // Reset on successful connection
159
+ const reader = res.body.getReader();
160
+ const decoder = new TextDecoder();
161
+ let buffer = "";
162
+ while (!aborted) {
163
+ const { done, value } = await reader.read();
164
+ if (done)
165
+ break;
166
+ buffer += decoder.decode(value, { stream: true });
167
+ const parts = buffer.split("\n\n");
168
+ buffer = parts.pop() ?? "";
169
+ for (const part of parts) {
170
+ if (!part.trim() || part.startsWith(":"))
171
+ continue;
172
+ // Parse event type and data from SSE frame
173
+ let eventType = 'memory'; // default
174
+ let dataJson = '';
175
+ for (const line of part.split('\n')) {
176
+ if (line.startsWith('event: '))
177
+ eventType = line.slice(7).trim();
178
+ if (line.startsWith('data: '))
179
+ dataJson = line.slice(6);
180
+ }
181
+ if (!dataJson)
182
+ continue;
183
+ try {
184
+ const data = JSON.parse(dataJson);
185
+ onEvent(eventType, data);
186
+ }
187
+ catch { }
188
+ }
189
+ }
190
+ // Stream ended — reconnect
191
+ if (!aborted)
192
+ setTimeout(connect, retryDelay);
193
+ }
194
+ catch {
195
+ if (!aborted) {
196
+ retryDelay = Math.min(retryDelay * 2, 30000);
197
+ setTimeout(connect, retryDelay);
198
+ }
199
+ }
200
+ };
201
+ connect();
202
+ return {
203
+ disconnect: () => {
204
+ aborted = true;
205
+ currentController?.abort();
206
+ },
207
+ };
208
+ }
209
+ }
210
+ exports.ApiClient = ApiClient;
211
+ class ApiError extends Error {
212
+ status;
213
+ body;
214
+ constructor(status, body) {
215
+ super(`API error ${status}: ${body}`);
216
+ this.status = status;
217
+ this.body = body;
218
+ }
219
+ }
220
+ exports.ApiError = ApiError;
221
+ //# sourceMappingURL=api.js.map
@@ -0,0 +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,GAAG,CAAI,IAAY;QAC/B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAc;QAChD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,GAAG,CAAI,IAAY;QAC/B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,KAAK,CAAI,IAAY,EAAE,IAAa;QAChD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;IAED,OAAO;IACP,KAAK,CAAC,EAAE;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,IAAuC;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,mBAAmB,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,KAAa;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,QAAgB;QACpD,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,aAAa,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;IACP,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,MAAc;QAClD,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,YAAY,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,yBAAyB,CAAC,CAAC;IACvE,CAAC;IAED,UAAU;IACV,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,iBAAiB,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,UAAU;IACV,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAY;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,IAAY,EAAE,IAAY;QAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ;IACR,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,IAAY;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,SAAS,YAAY,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,eAAe;IACf,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,eAAe,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,IAAY;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,MAAc,EAAE,YAAqB;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,YAAY,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,UAAkB;QACvD,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,cAAc,UAAU,UAAU,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,UAAkB;QACxD,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,cAAc,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,2CAA2C;IAC3C,WAAW,CAAC,SAAiB,EAAE,OAAmE;QAChG,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,iBAAiB,GAA2B,IAAI,CAAC;QACrD,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI,OAAO;gBAAE,OAAO;YACpB,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,gBAAgB,SAAS,gBAAgB,EAAE;oBAChF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;oBACxD,MAAM,EAAE,iBAAiB,CAAC,MAAM;iBACjC,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACzB,IAAI,CAAC,OAAO;wBAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;oBAC9C,OAAO;gBACT,CAAC;gBAED,UAAU,GAAG,IAAI,CAAC,CAAC,iCAAiC;gBACpD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,MAAM,GAAG,EAAE,CAAC;gBAEhB,OAAO,CAAC,OAAO,EAAE,CAAC;oBAChB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5C,IAAI,IAAI;wBAAE,MAAM;oBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;oBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;4BAAE,SAAS;wBAEnD,2CAA2C;wBAC3C,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,UAAU;wBACpC,IAAI,QAAQ,GAAG,EAAE,CAAC;wBAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;4BACpC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gCAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;4BACjE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gCAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC1D,CAAC;wBACD,IAAI,CAAC,QAAQ;4BAAE,SAAS;wBAExB,IAAI,CAAC;4BACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;4BAClC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBAC3B,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;oBACZ,CAAC;gBACH,CAAC;gBAED,2BAA2B;gBAC3B,IAAI,CAAC,OAAO;oBAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC7C,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,EAAE,CAAC;QAEV,OAAO;YACL,UAAU,EAAE,GAAG,EAAE;gBACf,OAAO,GAAG,IAAI,CAAC;gBACf,iBAAiB,EAAE,KAAK,EAAE,CAAC;YAC7B,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAtOD,8BAsOC;AAED,MAAa,QAAS,SAAQ,KAAK;IACjB,MAAM,CAAS;IACf,IAAI,CAAS;IAE7B,YAAY,MAAc,EAAE,IAAY;QACtC,KAAK,CAAC,aAAa,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AATD,4BASC"}
package/dist/auth.js CHANGED
@@ -36,7 +36,7 @@ function openBrowser(url) {
36
36
  : process.platform === "win32"
37
37
  ? "start"
38
38
  : "xdg-open";
39
- (0, child_process_1.exec)(`${cmd} "${url}"`);
39
+ (0, child_process_1.execFile)(cmd, [url], () => { });
40
40
  }
41
41
  function isExpired(expiresAt) {
42
42
  return new Date(expiresAt) < new Date();
@@ -118,6 +118,6 @@ async function getAuthToken(baseUrl) {
118
118
  }
119
119
  }
120
120
  // No valid tokens — don't auto-trigger device flow from proxy
121
- throw new Error("Not logged in. Run `npx cohvu login` first.");
121
+ throw new Error("Not logged in. Run `npx cohvu` first.");
122
122
  }
123
123
  //# sourceMappingURL=auth.js.map
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}