cohvu 2.21.1 → 3.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 (102) hide show
  1. package/README.md +37 -0
  2. package/cli.js +15501 -0
  3. package/package.json +15 -26
  4. package/dist/__tests__/instruction-file.unit.test.d.ts +0 -1
  5. package/dist/__tests__/instruction-file.unit.test.js +0 -296
  6. package/dist/__tests__/instruction-file.unit.test.js.map +0 -1
  7. package/dist/__tests__/teardown.unit.test.d.ts +0 -1
  8. package/dist/__tests__/teardown.unit.test.js +0 -196
  9. package/dist/__tests__/teardown.unit.test.js.map +0 -1
  10. package/dist/api.d.ts +0 -292
  11. package/dist/api.js +0 -337
  12. package/dist/api.js.map +0 -1
  13. package/dist/auth.d.ts +0 -4
  14. package/dist/auth.js +0 -96
  15. package/dist/auth.js.map +0 -1
  16. package/dist/constants.d.ts +0 -2
  17. package/dist/constants.js +0 -10
  18. package/dist/constants.js.map +0 -1
  19. package/dist/index.d.ts +0 -2
  20. package/dist/index.js +0 -259
  21. package/dist/index.js.map +0 -1
  22. package/dist/instructions.d.ts +0 -33
  23. package/dist/instructions.js +0 -238
  24. package/dist/instructions.js.map +0 -1
  25. package/dist/log.d.ts +0 -6
  26. package/dist/log.js +0 -51
  27. package/dist/log.js.map +0 -1
  28. package/dist/pause.d.ts +0 -3
  29. package/dist/pause.js +0 -24
  30. package/dist/pause.js.map +0 -1
  31. package/dist/platforms.d.ts +0 -22
  32. package/dist/platforms.js +0 -79
  33. package/dist/platforms.js.map +0 -1
  34. package/dist/postinstall.d.ts +0 -2
  35. package/dist/postinstall.js +0 -11
  36. package/dist/postinstall.js.map +0 -1
  37. package/dist/proxy.d.ts +0 -1
  38. package/dist/proxy.js +0 -371
  39. package/dist/proxy.js.map +0 -1
  40. package/dist/setup.d.ts +0 -15
  41. package/dist/setup.js +0 -295
  42. package/dist/setup.js.map +0 -1
  43. package/dist/teardown.d.ts +0 -15
  44. package/dist/teardown.js +0 -235
  45. package/dist/teardown.js.map +0 -1
  46. package/dist/tui/App.d.ts +0 -1
  47. package/dist/tui/App.js +0 -2245
  48. package/dist/tui/App.js.map +0 -1
  49. package/dist/tui/components/Banner.d.ts +0 -4
  50. package/dist/tui/components/Banner.js +0 -71
  51. package/dist/tui/components/Banner.js.map +0 -1
  52. package/dist/tui/components/Divider.d.ts +0 -1
  53. package/dist/tui/components/Divider.js +0 -8
  54. package/dist/tui/components/Divider.js.map +0 -1
  55. package/dist/tui/components/Footer.d.ts +0 -4
  56. package/dist/tui/components/Footer.js +0 -214
  57. package/dist/tui/components/Footer.js.map +0 -1
  58. package/dist/tui/components/Header.d.ts +0 -4
  59. package/dist/tui/components/Header.js +0 -126
  60. package/dist/tui/components/Header.js.map +0 -1
  61. package/dist/tui/components/LockCard.d.ts +0 -17
  62. package/dist/tui/components/LockCard.js +0 -37
  63. package/dist/tui/components/LockCard.js.map +0 -1
  64. package/dist/tui/components/Modal.d.ts +0 -5
  65. package/dist/tui/components/Modal.js +0 -195
  66. package/dist/tui/components/Modal.js.map +0 -1
  67. package/dist/tui/components/TabBar.d.ts +0 -4
  68. package/dist/tui/components/TabBar.js +0 -17
  69. package/dist/tui/components/TabBar.js.map +0 -1
  70. package/dist/tui/components/Toast.d.ts +0 -4
  71. package/dist/tui/components/Toast.js +0 -9
  72. package/dist/tui/components/Toast.js.map +0 -1
  73. package/dist/tui/index.d.ts +0 -1
  74. package/dist/tui/index.js +0 -20
  75. package/dist/tui/index.js.map +0 -1
  76. package/dist/tui/platform-detect.d.ts +0 -2
  77. package/dist/tui/platform-detect.js +0 -79
  78. package/dist/tui/platform-detect.js.map +0 -1
  79. package/dist/tui/state.d.ts +0 -414
  80. package/dist/tui/state.js +0 -397
  81. package/dist/tui/state.js.map +0 -1
  82. package/dist/tui/tabs/BillingTab.d.ts +0 -5
  83. package/dist/tui/tabs/BillingTab.js +0 -72
  84. package/dist/tui/tabs/BillingTab.js.map +0 -1
  85. package/dist/tui/tabs/KeysTab.d.ts +0 -5
  86. package/dist/tui/tabs/KeysTab.js +0 -87
  87. package/dist/tui/tabs/KeysTab.js.map +0 -1
  88. package/dist/tui/tabs/KnowledgeTab.d.ts +0 -5
  89. package/dist/tui/tabs/KnowledgeTab.js +0 -143
  90. package/dist/tui/tabs/KnowledgeTab.js.map +0 -1
  91. package/dist/tui/tabs/ProjectTab.d.ts +0 -5
  92. package/dist/tui/tabs/ProjectTab.js +0 -34
  93. package/dist/tui/tabs/ProjectTab.js.map +0 -1
  94. package/dist/tui/tabs/TeamTab.d.ts +0 -5
  95. package/dist/tui/tabs/TeamTab.js +0 -57
  96. package/dist/tui/tabs/TeamTab.js.map +0 -1
  97. package/dist/tui/tabs/YouTab.d.ts +0 -5
  98. package/dist/tui/tabs/YouTab.js +0 -25
  99. package/dist/tui/tabs/YouTab.js.map +0 -1
  100. package/dist/tui/utils.d.ts +0 -6
  101. package/dist/tui/utils.js +0 -58
  102. package/dist/tui/utils.js.map +0 -1
package/dist/api.d.ts DELETED
@@ -1,292 +0,0 @@
1
- export interface UsageInfo {
2
- tier: 'free' | 'pro' | 'team';
3
- ops_used: number;
4
- ops_limit: number;
5
- }
6
- export interface MeResponse {
7
- user: {
8
- id: string;
9
- email: string;
10
- name: string;
11
- active_project_id: string | null;
12
- deletion_scheduled_at: string | null;
13
- created_at: string;
14
- };
15
- individual_subscription: {
16
- status: string;
17
- current_period_end: string;
18
- cancel_at_period_end: boolean;
19
- } | null;
20
- usage: UsageInfo;
21
- personal_projects: Array<{
22
- project_id: string;
23
- slug: string;
24
- name: string;
25
- created_at: string;
26
- locked: boolean;
27
- }>;
28
- teams: Array<{
29
- team_id: string;
30
- name: string;
31
- slug: string;
32
- role: string;
33
- require_consensus: boolean;
34
- subscription: {
35
- status: string;
36
- seat_count: number;
37
- current_period_end: string;
38
- cancel_at_period_end: boolean;
39
- } | null;
40
- usage: UsageInfo;
41
- projects: Array<{
42
- project_id: string;
43
- slug: string;
44
- name: string;
45
- created_at: string;
46
- }>;
47
- }>;
48
- }
49
- export interface ContributionItem {
50
- id: string;
51
- body: string;
52
- updated_at: string;
53
- contributed_by?: Record<string, unknown>;
54
- contribution_type?: string | null;
55
- quality_score?: number | null;
56
- }
57
- export interface MemberItem {
58
- user_id: string;
59
- role: string;
60
- email: string | null;
61
- name: string | null;
62
- last_active_at: string | null;
63
- }
64
- export interface BillingInfo {
65
- tier: 'free' | 'pro' | 'team';
66
- ops_used: number;
67
- ops_limit: number;
68
- overflow_ops: number;
69
- subscription: {
70
- status: string;
71
- seat_count?: number;
72
- current_period_end: string;
73
- cancel_at_period_end: boolean;
74
- } | null;
75
- }
76
- export interface ProjectInfo {
77
- id: string;
78
- name: string;
79
- slug: string;
80
- }
81
- export interface TeamOverview {
82
- team_id: string;
83
- name: string;
84
- slug: string;
85
- subscription_status: 'active' | 'past_due' | 'canceled' | 'none';
86
- member_count: number;
87
- project_count: number;
88
- contribution_count: number;
89
- admin_contacts: Array<{
90
- name: string;
91
- email: string;
92
- }>;
93
- }
94
- export interface InviteLink {
95
- role: string;
96
- code: string;
97
- url: string;
98
- expires_at?: string | null;
99
- }
100
- export interface PendingApproval {
101
- id: string;
102
- action: string;
103
- description: string;
104
- initiator_email: string | null;
105
- initiator_name?: string | null;
106
- target_user_id: string | null;
107
- approved_by: string[];
108
- denied_by: string[];
109
- payload?: Record<string, unknown>;
110
- required_count: number;
111
- resolved_at: string | null;
112
- resolution: 'executed' | 'rejected' | 'canceled' | 'expired' | null;
113
- tally?: {
114
- approvals: number;
115
- denials: number;
116
- pending: number;
117
- majority: number;
118
- };
119
- created_at: string;
120
- expires_at: string;
121
- }
122
- /** Response wrapper for destructive actions that may defer to consensus.
123
- * When `pending_approval` is present, the action was queued as a proposal
124
- * rather than executed immediately. */
125
- export type MaybePending<T> = T & {
126
- pending_approval?: PendingApproval;
127
- };
128
- export interface Notification {
129
- id: string;
130
- type: string;
131
- message: string;
132
- created_at: string;
133
- seen: boolean;
134
- }
135
- export type KeyAction = 'understand' | 'contribute' | 'search' | 'get' | 'history' | 'update' | 'delete' | 'restore';
136
- export type KeyScope = 'own' | 'all';
137
- export interface ApiKeyScope {
138
- project_id: string;
139
- scope: KeyScope;
140
- allowed_actions: KeyAction[];
141
- }
142
- export interface ApiKeySummary {
143
- id: string;
144
- kind: 'session' | 'integration';
145
- name: string;
146
- key_prefix: string;
147
- permissions?: unknown;
148
- default_agent_name: string | null;
149
- last_used_at: string | null;
150
- expires_at: string | null;
151
- disabled_at: string | null;
152
- ops_limit: number | null;
153
- ops_used: number;
154
- created_at: string;
155
- scopes?: ApiKeyScope[];
156
- }
157
- export interface CreateSessionKeyInput {
158
- kind: 'session';
159
- name: string;
160
- expires_in_days?: number;
161
- }
162
- export interface CreateIntegrationKeyInput {
163
- kind: 'integration';
164
- name: string;
165
- projects: Array<{
166
- project_id: string;
167
- scope: KeyScope;
168
- allowed_actions: KeyAction[];
169
- }>;
170
- default_agent_name?: string;
171
- expires_in_days?: number;
172
- ops_limit?: number;
173
- }
174
- export declare class ApiClient {
175
- private baseUrl;
176
- constructor(baseUrl?: string);
177
- private headers;
178
- private request;
179
- private get;
180
- private post;
181
- private del;
182
- private patch;
183
- me(): Promise<MeResponse>;
184
- switchProject(projectId: string): Promise<void>;
185
- listContributions(projectId: string, opts: {
186
- limit: number;
187
- offset: number;
188
- }): Promise<{
189
- total: number;
190
- contributions: ContributionItem[];
191
- }>;
192
- searchContributions(projectId: string, query: string): Promise<{
193
- contributions: ContributionItem[];
194
- }>;
195
- deleteContribution(projectId: string, contributionId: string): Promise<void>;
196
- clearContributions(projectId: string): Promise<MaybePending<{
197
- contributions_removed: number | null;
198
- }>>;
199
- listTeamMembers(teamId: string): Promise<MemberItem[]>;
200
- removeTeamMember(teamId: string, userId: string): Promise<void>;
201
- changeTeamRole(teamId: string, userId: string, role: string): Promise<MaybePending<Record<string, unknown>>>;
202
- removeTeamMemberGated(teamId: string, userId: string): Promise<MaybePending<{
203
- removed: boolean;
204
- }>>;
205
- listTeamInviteLinks(teamId: string): Promise<InviteLink[]>;
206
- regenerateTeamInviteLink(teamId: string, role: string): Promise<InviteLink>;
207
- mintAdminInvite(teamId: string): Promise<InviteLink>;
208
- getIndividualBilling(): Promise<BillingInfo>;
209
- getTeamBilling(teamId: string): Promise<BillingInfo>;
210
- createIndividualCheckout(): Promise<{
211
- checkout_url: string;
212
- }>;
213
- getIndividualPortalUrl(): Promise<{
214
- url: string;
215
- }>;
216
- createTeamCheckout(teamId: string): Promise<{
217
- checkout_url: string;
218
- }>;
219
- getTeamPortalUrl(teamId: string): Promise<{
220
- url: string;
221
- }>;
222
- createProject(name: string, slug: string, ownerId?: string): Promise<ProjectInfo>;
223
- renameProject(projectId: string, name: string, slug: string): Promise<void>;
224
- deleteProject(projectId: string): Promise<void>;
225
- createTeam(name: string, slug: string, seats?: number): Promise<{
226
- checkout_url: string;
227
- }>;
228
- getTeamOverview(teamId: string): Promise<TeamOverview>;
229
- renameTeam(teamId: string, name: string, slug: string): Promise<void>;
230
- updateTeamSettings(teamId: string, settings: {
231
- require_consensus?: boolean;
232
- }): Promise<MaybePending<Record<string, unknown>>>;
233
- deleteTeam(teamId: string): Promise<MaybePending<{
234
- deleted: boolean;
235
- }>>;
236
- createTeamProject(teamId: string, name: string, slug: string): Promise<ProjectInfo>;
237
- getSso(teamId: string): Promise<{
238
- id: string;
239
- issuer: string;
240
- client_id: string;
241
- allowed_domains: string[];
242
- default_role: string;
243
- require_sso: boolean;
244
- enabled: boolean;
245
- } | null>;
246
- configureSso(teamId: string, config: {
247
- issuer: string;
248
- client_id: string;
249
- client_secret: string;
250
- allowed_domains: string[];
251
- default_role: string;
252
- require_sso: boolean;
253
- }): Promise<void>;
254
- updateSso(teamId: string, config: Record<string, unknown>): Promise<void>;
255
- deleteSso(teamId: string): Promise<void>;
256
- listApprovals(teamId: string): Promise<PendingApproval[]>;
257
- approveAction(teamId: string, approvalId: string): Promise<void>;
258
- denyApproval(teamId: string, approvalId: string): Promise<void>;
259
- cancelApproval(teamId: string, approvalId: string): Promise<void>;
260
- listSessionKeys(): Promise<ApiKeySummary[]>;
261
- listIntegrationKeys(projectId: string): Promise<ApiKeySummary[]>;
262
- createApiKey(input: CreateSessionKeyInput | CreateIntegrationKeyInput): Promise<{
263
- api_key: ApiKeySummary;
264
- key: string;
265
- }>;
266
- deleteApiKey(keyId: string): Promise<void>;
267
- restoreApiKey(keyId: string): Promise<{
268
- api_key: ApiKeySummary;
269
- key: string;
270
- }>;
271
- listNotifications(): Promise<Notification[]>;
272
- markNotificationsSeen(): Promise<void>;
273
- scheduleAccountDeletion(): Promise<{
274
- deletion_scheduled_at: string;
275
- message: string;
276
- }>;
277
- cancelAccountDeletion(): Promise<{
278
- message: string;
279
- }>;
280
- connectFeed(projectId: string, callbacks: {
281
- onEvent: (eventType: string, data: Record<string, unknown>) => void;
282
- onConnected?: () => void;
283
- onDisconnected?: () => void;
284
- }): {
285
- disconnect: () => void;
286
- };
287
- }
288
- export declare class ApiError extends Error {
289
- readonly status: number;
290
- readonly body: string;
291
- constructor(status: number, body: string);
292
- }
package/dist/api.js DELETED
@@ -1,337 +0,0 @@
1
- // Typed API client for the Cohvu REST API.
2
- // Centralizes all fetch calls with auth headers and error handling.
3
- import { getApiKey } from "./auth.js";
4
- import { DEFAULT_BASE_URL } from "./constants.js";
5
- export class ApiClient {
6
- baseUrl;
7
- constructor(baseUrl) {
8
- this.baseUrl = baseUrl ?? process.env.COHVU_API_URL ?? DEFAULT_BASE_URL;
9
- }
10
- headers() {
11
- const apiKey = getApiKey();
12
- if (!apiKey)
13
- throw new Error("Not logged in. Run `cohvu` first.");
14
- return {
15
- Authorization: `Bearer ${apiKey}`,
16
- "Content-Type": "application/json",
17
- };
18
- }
19
- async request(path, init) {
20
- const h = this.headers();
21
- for (let attempt = 0; attempt < 2; attempt++) {
22
- const opts = {
23
- ...init,
24
- headers: { ...h, ...init?.headers },
25
- signal: AbortSignal.timeout(15_000),
26
- };
27
- try {
28
- const res = await fetch(`${this.baseUrl}${path}`, opts);
29
- if (res.ok)
30
- return (await res.json());
31
- if (res.status >= 500 && attempt === 0) {
32
- await new Promise((r) => setTimeout(r, 1000));
33
- continue;
34
- }
35
- throw new ApiError(res.status, await res.text());
36
- }
37
- catch (err) {
38
- if (err instanceof ApiError)
39
- throw err;
40
- if (attempt === 0) {
41
- await new Promise((r) => setTimeout(r, 1000));
42
- continue;
43
- }
44
- throw err;
45
- }
46
- }
47
- throw new Error("Request failed");
48
- }
49
- get(path) {
50
- return this.request(path);
51
- }
52
- post(path, body) {
53
- return this.request(path, {
54
- method: "POST",
55
- body: body ? JSON.stringify(body) : undefined,
56
- });
57
- }
58
- del(path) {
59
- return this.request(path, { method: "DELETE" });
60
- }
61
- patch(path, body) {
62
- return this.request(path, {
63
- method: "PATCH",
64
- body: JSON.stringify(body),
65
- });
66
- }
67
- // Auth
68
- async me() {
69
- return this.get("/v1/auth/me");
70
- }
71
- async switchProject(projectId) {
72
- await this.post("/v1/auth/active-project", { project_id: projectId });
73
- }
74
- // Knowledge
75
- async listContributions(projectId, opts) {
76
- return this.get(`/v1/projects/${projectId}/contributions?limit=${opts.limit}&offset=${opts.offset}`);
77
- }
78
- async searchContributions(projectId, query) {
79
- return this.get(`/v1/projects/${projectId}/contributions/search?q=${encodeURIComponent(query)}`);
80
- }
81
- async deleteContribution(projectId, contributionId) {
82
- await this.del(`/v1/projects/${projectId}/contributions/${contributionId}`);
83
- }
84
- async clearContributions(projectId) {
85
- return this.del(`/v1/projects/${projectId}/knowledge`);
86
- }
87
- // Teams
88
- async listTeamMembers(teamId) {
89
- return this.get(`/v1/teams/${teamId}/members`);
90
- }
91
- async removeTeamMember(teamId, userId) {
92
- await this.del(`/v1/teams/${teamId}/members/${userId}`);
93
- }
94
- async changeTeamRole(teamId, userId, role) {
95
- return this.patch(`/v1/teams/${teamId}/members/${userId}`, { role });
96
- }
97
- async removeTeamMemberGated(teamId, userId) {
98
- return this.request(`/v1/teams/${teamId}/members/${userId}`, { method: 'DELETE' });
99
- }
100
- async listTeamInviteLinks(teamId) {
101
- return this.get(`/v1/teams/${teamId}/invite-links`);
102
- }
103
- async regenerateTeamInviteLink(teamId, role) {
104
- return this.post(`/v1/teams/${teamId}/invite-links/regenerate`, { role });
105
- }
106
- // Admin invites are one-shot and short-lived — mint a fresh one each time.
107
- async mintAdminInvite(teamId) {
108
- return this.post(`/v1/teams/${teamId}/invite-links/admin`);
109
- }
110
- // Billing — individual or team
111
- async getIndividualBilling() {
112
- return this.get("/v1/billing");
113
- }
114
- async getTeamBilling(teamId) {
115
- return this.get(`/v1/teams/${teamId}/billing`);
116
- }
117
- async createIndividualCheckout() {
118
- return this.post("/v1/billing/checkout");
119
- }
120
- async getIndividualPortalUrl() {
121
- return this.post("/v1/billing/portal", { return_url: this.baseUrl });
122
- }
123
- async createTeamCheckout(teamId) {
124
- return this.post(`/v1/teams/${teamId}/billing/checkout`);
125
- }
126
- async getTeamPortalUrl(teamId) {
127
- return this.post(`/v1/teams/${teamId}/billing/portal`, { return_url: this.baseUrl });
128
- }
129
- // Project
130
- async createProject(name, slug, ownerId) {
131
- return this.post("/v1/projects", { name, slug, owner_id: ownerId });
132
- }
133
- async renameProject(projectId, name, slug) {
134
- await this.patch(`/v1/projects/${projectId}`, { name, slug });
135
- }
136
- async deleteProject(projectId) {
137
- await this.del(`/v1/projects/${projectId}`);
138
- }
139
- // Team creation goes through Stripe checkout — the team row is created by
140
- // the webhook once payment completes. Returns a URL to open in the browser.
141
- async createTeam(name, slug, seats = 1) {
142
- return this.post("/v1/teams/checkout", { name, slug, seats });
143
- }
144
- async getTeamOverview(teamId) {
145
- return this.get(`/v1/teams/${teamId}/overview`);
146
- }
147
- async renameTeam(teamId, name, slug) {
148
- await this.patch(`/v1/teams/${teamId}`, { name, slug });
149
- }
150
- async updateTeamSettings(teamId, settings) {
151
- return this.patch(`/v1/teams/${teamId}`, settings);
152
- }
153
- async deleteTeam(teamId) {
154
- return this.del(`/v1/teams/${teamId}`);
155
- }
156
- async createTeamProject(teamId, name, slug) {
157
- return this.post(`/v1/teams/${teamId}/projects`, { name, slug });
158
- }
159
- // SSO
160
- async getSso(teamId) {
161
- try {
162
- return await this.get(`/v1/teams/${teamId}/sso`);
163
- }
164
- catch {
165
- return null;
166
- }
167
- }
168
- async configureSso(teamId, config) {
169
- await this.post(`/v1/teams/${teamId}/sso`, config);
170
- }
171
- async updateSso(teamId, config) {
172
- await this.patch(`/v1/teams/${teamId}/sso`, config);
173
- }
174
- async deleteSso(teamId) {
175
- await this.del(`/v1/teams/${teamId}/sso`);
176
- }
177
- // Approvals
178
- async listApprovals(teamId) {
179
- return this.get(`/v1/teams/${teamId}/approvals`);
180
- }
181
- async approveAction(teamId, approvalId) {
182
- await this.post(`/v1/teams/${teamId}/approvals/${approvalId}/approve`);
183
- }
184
- async denyApproval(teamId, approvalId) {
185
- await this.post(`/v1/teams/${teamId}/approvals/${approvalId}/deny`);
186
- }
187
- async cancelApproval(teamId, approvalId) {
188
- await this.del(`/v1/teams/${teamId}/approvals/${approvalId}`);
189
- }
190
- // API keys (session + integration)
191
- async listSessionKeys() {
192
- const res = await this.get(`/v1/api-keys?kind=session`);
193
- return res.api_keys;
194
- }
195
- async listIntegrationKeys(projectId) {
196
- const res = await this.get(`/v1/api-keys?kind=integration&project_id=${projectId}`);
197
- return res.api_keys;
198
- }
199
- async createApiKey(input) {
200
- return this.post(`/v1/api-keys`, input);
201
- }
202
- async deleteApiKey(keyId) {
203
- await this.del(`/v1/api-keys/${keyId}`);
204
- }
205
- async restoreApiKey(keyId) {
206
- return this.post(`/v1/api-keys/${keyId}/restore`);
207
- }
208
- // Notifications
209
- async listNotifications() {
210
- return this.get(`/v1/notifications`);
211
- }
212
- async markNotificationsSeen() {
213
- await this.post(`/v1/notifications/seen`);
214
- }
215
- // Account deletion flow. Schedule locks the account immediately; the
216
- // 3-day grace window lets the user cancel via cancelAccountDeletion
217
- // before the listener sweep purges the data.
218
- async scheduleAccountDeletion() {
219
- return this.post(`/v1/account/deletion`);
220
- }
221
- async cancelAccountDeletion() {
222
- return this.del(`/v1/account/deletion`);
223
- }
224
- // SSE feed — returns a disconnect function
225
- connectFeed(projectId, callbacks) {
226
- let aborted = false;
227
- let currentController = null;
228
- let retryDelay = 1000;
229
- let wasConnected = false;
230
- let retryTimer = null;
231
- const scheduleRetry = (delay) => {
232
- if (aborted)
233
- return;
234
- retryTimer = setTimeout(connect, delay);
235
- };
236
- const connect = async () => {
237
- if (aborted)
238
- return;
239
- retryTimer = null;
240
- currentController = new AbortController();
241
- try {
242
- const h = this.headers();
243
- const res = await fetch(`${this.baseUrl}/v1/projects/${projectId}/contributions/feed`, {
244
- headers: { Authorization: h.Authorization },
245
- signal: currentController.signal,
246
- });
247
- if (!res.ok || !res.body) {
248
- // Don't retry auth errors — they won't resolve on their own
249
- if (res.status === 401 || res.status === 403) {
250
- if (wasConnected) {
251
- wasConnected = false;
252
- callbacks.onDisconnected?.();
253
- }
254
- return;
255
- }
256
- if (wasConnected) {
257
- wasConnected = false;
258
- callbacks.onDisconnected?.();
259
- }
260
- retryDelay = Math.min(retryDelay * 2, 5000);
261
- scheduleRetry(retryDelay);
262
- return;
263
- }
264
- retryDelay = 1000;
265
- wasConnected = true;
266
- callbacks.onConnected?.();
267
- const reader = res.body.getReader();
268
- const decoder = new TextDecoder();
269
- let buffer = "";
270
- while (!aborted) {
271
- const { done, value } = await reader.read();
272
- if (done)
273
- break;
274
- buffer += decoder.decode(value, { stream: true });
275
- const parts = buffer.split("\n\n");
276
- buffer = parts.pop() ?? "";
277
- for (const part of parts) {
278
- if (!part.trim() || part.startsWith(":"))
279
- continue;
280
- let eventType = 'contribution';
281
- let dataJson = '';
282
- for (const line of part.split('\n')) {
283
- if (line.startsWith('event: '))
284
- eventType = line.slice(7).trim();
285
- if (line.startsWith('data: '))
286
- dataJson = line.slice(6);
287
- }
288
- if (!dataJson)
289
- continue;
290
- try {
291
- const data = JSON.parse(dataJson);
292
- try {
293
- callbacks.onEvent(eventType, data);
294
- }
295
- catch { }
296
- }
297
- catch { }
298
- }
299
- }
300
- // Stream ended cleanly — reconnect immediately
301
- if (wasConnected) {
302
- wasConnected = false;
303
- callbacks.onDisconnected?.();
304
- }
305
- retryDelay = 1000;
306
- scheduleRetry(retryDelay);
307
- }
308
- catch {
309
- if (wasConnected) {
310
- wasConnected = false;
311
- callbacks.onDisconnected?.();
312
- }
313
- retryDelay = Math.min(retryDelay * 2, 5000);
314
- scheduleRetry(retryDelay);
315
- }
316
- };
317
- connect();
318
- return {
319
- disconnect: () => {
320
- aborted = true;
321
- if (retryTimer)
322
- clearTimeout(retryTimer);
323
- currentController?.abort();
324
- },
325
- };
326
- }
327
- }
328
- export class ApiError extends Error {
329
- status;
330
- body;
331
- constructor(status, body) {
332
- super(`API error ${status}: ${body}`);
333
- this.status = status;
334
- this.body = body;
335
- }
336
- }
337
- //# sourceMappingURL=api.js.map
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/auth.d.ts DELETED
@@ -1,4 +0,0 @@
1
- /** Read the long-lived API key. Returns null if not stored. */
2
- export declare function getApiKey(): string | null;
3
- export declare function storeApiKey(key: string): void;
4
- export declare function deviceAuthFlow(baseUrl: string): Promise<string>;