@inferevents/mcp 0.3.6 → 0.4.1

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 +0,0 @@
1
- {"version":3,"file":"charts.test.js","sourceRoot":"","sources":["../src/charts.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":""}
@@ -1,409 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- // Mock node:fs/promises before any imports that use it
3
- vi.mock("node:fs/promises", () => ({
4
- readFile: vi.fn(),
5
- writeFile: vi.fn(),
6
- mkdir: vi.fn(),
7
- }));
8
- vi.mock("node:os", () => ({
9
- homedir: () => "/mock/home",
10
- }));
11
- import { readFile, writeFile, mkdir } from "node:fs/promises";
12
- import { loadConfig, switchProject, listProjects, addProject, readConfigFile, writeConfigFile, ConfigError, } from "./config.js";
13
- const mockReadFile = vi.mocked(readFile);
14
- const mockWriteFile = vi.mocked(writeFile);
15
- const mockMkdir = vi.mocked(mkdir);
16
- describe("config", () => {
17
- const originalEnv = { ...process.env };
18
- beforeEach(() => {
19
- vi.clearAllMocks();
20
- // Clean env vars before each test
21
- delete process.env.INFER_API_KEY;
22
- delete process.env.INFER_ENDPOINT;
23
- delete process.env.INFER_PROJECT_ID;
24
- });
25
- afterEach(() => {
26
- // Restore original env
27
- process.env = { ...originalEnv };
28
- });
29
- describe("loadConfig with env vars", () => {
30
- it("uses INFER_API_KEY when set", async () => {
31
- process.env.INFER_API_KEY = "pk_read_envkey";
32
- const config = await loadConfig();
33
- expect(config.apiKey).toBe("pk_read_envkey");
34
- });
35
- it("uses INFER_ENDPOINT when set", async () => {
36
- process.env.INFER_API_KEY = "pk_read_envkey";
37
- process.env.INFER_ENDPOINT = "https://custom.endpoint.com";
38
- const config = await loadConfig();
39
- expect(config.endpoint).toBe("https://custom.endpoint.com");
40
- });
41
- it("uses INFER_PROJECT_ID when set", async () => {
42
- process.env.INFER_API_KEY = "pk_read_envkey";
43
- process.env.INFER_PROJECT_ID = "proj_env123";
44
- const config = await loadConfig();
45
- expect(config.projectId).toBe("proj_env123");
46
- });
47
- it("defaults endpoint when INFER_ENDPOINT not set", async () => {
48
- process.env.INFER_API_KEY = "pk_read_envkey";
49
- const config = await loadConfig();
50
- expect(config.endpoint).toBe("https://api.infer.events");
51
- });
52
- it("skips file reading when env key is set", async () => {
53
- process.env.INFER_API_KEY = "pk_read_envkey";
54
- await loadConfig();
55
- expect(mockReadFile).not.toHaveBeenCalled();
56
- });
57
- });
58
- describe("loadConfig with config file", () => {
59
- it("reads from ~/.infer/config.json", async () => {
60
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
61
- apiKey: "pk_read_filekey",
62
- endpoint: "https://api.infer.events",
63
- projectId: "proj_file",
64
- }));
65
- await loadConfig();
66
- expect(mockReadFile).toHaveBeenCalledWith("/mock/home/.infer/config.json", "utf-8");
67
- });
68
- it("handles old flat format { apiKey, endpoint, projectId }", async () => {
69
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
70
- apiKey: "pk_read_oldformat",
71
- endpoint: "https://old.api.com",
72
- projectId: "proj_old",
73
- }));
74
- const config = await loadConfig();
75
- expect(config.apiKey).toBe("pk_read_oldformat");
76
- expect(config.endpoint).toBe("https://old.api.com");
77
- expect(config.projectId).toBe("proj_old");
78
- });
79
- it("strips trailing slashes from endpoint in old format", async () => {
80
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
81
- apiKey: "pk_read_test",
82
- endpoint: "https://api.example.com///",
83
- }));
84
- const config = await loadConfig();
85
- expect(config.endpoint).toBe("https://api.example.com");
86
- });
87
- it("handles new profiles format", async () => {
88
- mockReadFile.mockImplementation(async (path) => {
89
- if (typeof path === "string" && path.endsWith("config.json")) {
90
- return JSON.stringify({
91
- endpoint: "https://api.infer.events",
92
- activeProject: "my-app",
93
- projects: {
94
- "my-app": {
95
- apiKey: "pk_read_myapp",
96
- projectId: "proj_myapp",
97
- },
98
- "other-app": {
99
- apiKey: "pk_read_other",
100
- projectId: "proj_other",
101
- },
102
- },
103
- });
104
- }
105
- throw new Error("ENOENT");
106
- });
107
- const config = await loadConfig();
108
- expect(config.apiKey).toBe("pk_read_myapp");
109
- expect(config.projectId).toBe("proj_myapp");
110
- });
111
- it("uses first project when activeProject not set", async () => {
112
- mockReadFile.mockImplementation(async (path) => {
113
- if (typeof path === "string" && path.endsWith("config.json")) {
114
- return JSON.stringify({
115
- projects: {
116
- "first-proj": {
117
- apiKey: "pk_read_first",
118
- projectId: "proj_first",
119
- },
120
- "second-proj": {
121
- apiKey: "pk_read_second",
122
- projectId: "proj_second",
123
- },
124
- },
125
- });
126
- }
127
- throw new Error("ENOENT");
128
- });
129
- const config = await loadConfig();
130
- expect(config.apiKey).toBe("pk_read_first");
131
- expect(config.projectId).toBe("proj_first");
132
- });
133
- it("throws ConfigError when config file is missing", async () => {
134
- mockReadFile.mockRejectedValueOnce(new Error("ENOENT"));
135
- await expect(loadConfig()).rejects.toThrow(ConfigError);
136
- await expect(
137
- // Need to re-mock since the first call consumed the mock
138
- (mockReadFile.mockRejectedValueOnce(new Error("ENOENT")), loadConfig())).rejects.toThrow(/not configured/);
139
- });
140
- it("throws ConfigError when JSON is invalid", async () => {
141
- mockReadFile.mockResolvedValueOnce("not valid json {{{");
142
- await expect(loadConfig()).rejects.toThrow(ConfigError);
143
- });
144
- it("throws ConfigError when JSON is invalid with descriptive message", async () => {
145
- mockReadFile.mockResolvedValueOnce("not valid json {{{");
146
- await expect(loadConfig()).rejects.toThrow(/Invalid JSON/);
147
- });
148
- it('throws ConfigError when apiKey does not start with pk_read_', async () => {
149
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
150
- apiKey: "pk_write_wrongtype",
151
- endpoint: "https://api.infer.events",
152
- }));
153
- await expect(loadConfig()).rejects.toThrow(ConfigError);
154
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
155
- apiKey: "pk_write_wrongtype",
156
- endpoint: "https://api.infer.events",
157
- }));
158
- await expect(loadConfig()).rejects.toThrow(/read API key/);
159
- });
160
- it("throws ConfigError when no projects exist in profiles format", async () => {
161
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
162
- projects: {},
163
- }));
164
- await expect(loadConfig()).rejects.toThrow(ConfigError);
165
- });
166
- it('throws ConfigError when project apiKey does not start with pk_read_', async () => {
167
- mockReadFile.mockImplementation(async (path) => {
168
- if (typeof path === "string" && path.endsWith("config.json")) {
169
- return JSON.stringify({
170
- activeProject: "bad-proj",
171
- projects: {
172
- "bad-proj": {
173
- apiKey: "sk_live_wrongprefix",
174
- projectId: "proj_bad",
175
- },
176
- },
177
- });
178
- }
179
- throw new Error("ENOENT");
180
- });
181
- await expect(loadConfig()).rejects.toThrow(ConfigError);
182
- await expect(loadConfig()).rejects.toThrow(/Invalid read key/);
183
- });
184
- it("defaults endpoint to https://api.infer.events in old format", async () => {
185
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
186
- apiKey: "pk_read_noendpoint",
187
- }));
188
- const config = await loadConfig();
189
- expect(config.endpoint).toBe("https://api.infer.events");
190
- });
191
- it("defaults endpoint in profiles format", async () => {
192
- mockReadFile.mockImplementation(async (path) => {
193
- if (typeof path === "string" && path.endsWith("config.json")) {
194
- return JSON.stringify({
195
- activeProject: "proj",
196
- projects: {
197
- proj: {
198
- apiKey: "pk_read_test",
199
- projectId: "proj_1",
200
- },
201
- },
202
- });
203
- }
204
- throw new Error("ENOENT");
205
- });
206
- const config = await loadConfig();
207
- expect(config.endpoint).toBe("https://api.infer.events");
208
- });
209
- });
210
- describe("project management", () => {
211
- describe("switchProject", () => {
212
- it("changes activeProject and returns config", async () => {
213
- const baseConfig = {
214
- endpoint: "https://api.infer.events",
215
- activeProject: "proj-a",
216
- projects: {
217
- "proj-a": { apiKey: "pk_read_a", projectId: "proj_a" },
218
- "proj-b": { apiKey: "pk_read_b", projectId: "proj_b" },
219
- },
220
- };
221
- // First call: readConfigFile reads original config
222
- // Second call: loadConfig reads the updated config (after writeConfigFile)
223
- mockReadFile
224
- .mockResolvedValueOnce(JSON.stringify(baseConfig))
225
- .mockResolvedValueOnce(JSON.stringify({ ...baseConfig, activeProject: "proj-b" }));
226
- mockWriteFile.mockResolvedValue(undefined);
227
- mockMkdir.mockResolvedValue(undefined);
228
- const config = await switchProject("proj-b");
229
- // Should have written the updated config
230
- expect(mockWriteFile).toHaveBeenCalled();
231
- const writtenContent = JSON.parse(mockWriteFile.mock.calls[0][1]);
232
- expect(writtenContent.activeProject).toBe("proj-b");
233
- // Should return the loaded config for proj-b
234
- expect(config.apiKey).toBe("pk_read_b");
235
- expect(config.projectId).toBe("proj_b");
236
- });
237
- it("throws ConfigError for unknown project", async () => {
238
- mockReadFile.mockResolvedValue(JSON.stringify({
239
- activeProject: "proj-a",
240
- projects: {
241
- "proj-a": { apiKey: "pk_read_a", projectId: "proj_a" },
242
- },
243
- }));
244
- await expect(switchProject("nonexistent")).rejects.toThrow(ConfigError);
245
- await expect(switchProject("nonexistent")).rejects.toThrow(/not found/);
246
- });
247
- it("lists available projects in error message", async () => {
248
- mockReadFile.mockResolvedValue(JSON.stringify({
249
- projects: {
250
- alpha: { apiKey: "pk_read_a", projectId: "proj_a" },
251
- beta: { apiKey: "pk_read_b", projectId: "proj_b" },
252
- },
253
- }));
254
- await expect(switchProject("gamma")).rejects.toThrow(/alpha/);
255
- await expect(switchProject("gamma")).rejects.toThrow(/beta/);
256
- });
257
- });
258
- describe("listProjects", () => {
259
- it("returns all projects with active flag", async () => {
260
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
261
- activeProject: "prod",
262
- projects: {
263
- prod: { apiKey: "pk_read_prod", projectId: "proj_prod" },
264
- staging: { apiKey: "pk_read_stg", projectId: "proj_stg" },
265
- },
266
- }));
267
- const projects = await listProjects();
268
- expect(projects).toHaveLength(2);
269
- expect(projects).toContainEqual({
270
- name: "prod",
271
- projectId: "proj_prod",
272
- active: true,
273
- });
274
- expect(projects).toContainEqual({
275
- name: "staging",
276
- projectId: "proj_stg",
277
- active: false,
278
- });
279
- });
280
- it("returns empty array when no projects", async () => {
281
- mockReadFile.mockResolvedValueOnce(JSON.stringify({ projects: {} }));
282
- const projects = await listProjects();
283
- expect(projects).toEqual([]);
284
- });
285
- });
286
- describe("addProject", () => {
287
- it("adds to config and sets active by default", async () => {
288
- mockReadFile.mockResolvedValue(JSON.stringify({
289
- activeProject: "existing",
290
- projects: {
291
- existing: { apiKey: "pk_read_ex", projectId: "proj_ex" },
292
- },
293
- }));
294
- mockWriteFile.mockResolvedValue(undefined);
295
- mockMkdir.mockResolvedValue(undefined);
296
- await addProject("new-proj", "pk_read_new", "proj_new");
297
- expect(mockWriteFile).toHaveBeenCalled();
298
- const written = JSON.parse(mockWriteFile.mock.calls[0][1]);
299
- expect(written.projects["new-proj"]).toEqual({
300
- apiKey: "pk_read_new",
301
- projectId: "proj_new",
302
- });
303
- expect(written.activeProject).toBe("new-proj");
304
- });
305
- it("adds without setting active when setActive=false", async () => {
306
- mockReadFile.mockResolvedValue(JSON.stringify({
307
- activeProject: "existing",
308
- projects: {
309
- existing: { apiKey: "pk_read_ex", projectId: "proj_ex" },
310
- },
311
- }));
312
- mockWriteFile.mockResolvedValue(undefined);
313
- mockMkdir.mockResolvedValue(undefined);
314
- await addProject("new-proj", "pk_read_new", "proj_new", undefined, false);
315
- const written = JSON.parse(mockWriteFile.mock.calls[0][1]);
316
- expect(written.projects["new-proj"]).toBeDefined();
317
- expect(written.activeProject).toBe("existing");
318
- });
319
- it("stores writeKey when provided", async () => {
320
- mockReadFile.mockResolvedValue(JSON.stringify({
321
- projects: {},
322
- }));
323
- mockWriteFile.mockResolvedValue(undefined);
324
- mockMkdir.mockResolvedValue(undefined);
325
- await addProject("proj", "pk_read_key", "proj_id", "pk_write_key");
326
- const written = JSON.parse(mockWriteFile.mock.calls[0][1]);
327
- expect(written.projects["proj"].writeKey).toBe("pk_write_key");
328
- });
329
- it("stores session when provided", async () => {
330
- mockReadFile.mockResolvedValue(JSON.stringify({
331
- projects: {},
332
- }));
333
- mockWriteFile.mockResolvedValue(undefined);
334
- mockMkdir.mockResolvedValue(undefined);
335
- await addProject("proj", "pk_read_key", "proj_id", undefined, true, "sess_123");
336
- const written = JSON.parse(mockWriteFile.mock.calls[0][1]);
337
- expect(written.session).toBe("sess_123");
338
- });
339
- });
340
- });
341
- describe("readConfigFile", () => {
342
- it("migrates old flat format to profiles format", async () => {
343
- mockReadFile.mockResolvedValueOnce(JSON.stringify({
344
- apiKey: "pk_read_old",
345
- projectId: "proj_old",
346
- session: "sess_old",
347
- }));
348
- const config = await readConfigFile();
349
- expect(config.activeProject).toBe("default");
350
- expect(config.projects.default).toEqual({
351
- apiKey: "pk_read_old",
352
- projectId: "proj_old",
353
- writeKey: undefined,
354
- });
355
- expect(config.session).toBe("sess_old");
356
- });
357
- it("returns empty config when file not found", async () => {
358
- mockReadFile.mockRejectedValueOnce(new Error("ENOENT"));
359
- const config = await readConfigFile();
360
- expect(config.projects).toEqual({});
361
- expect(config.endpoint).toBe("https://api.infer.events");
362
- });
363
- });
364
- describe("writeConfigFile", () => {
365
- it("creates directory and writes config", async () => {
366
- mockMkdir.mockResolvedValue(undefined);
367
- mockWriteFile.mockResolvedValue(undefined);
368
- await writeConfigFile({
369
- activeProject: "test",
370
- projects: {
371
- test: { apiKey: "pk_read_test", projectId: "proj_test" },
372
- },
373
- });
374
- expect(mockMkdir).toHaveBeenCalledWith("/mock/home/.infer", {
375
- recursive: true,
376
- });
377
- expect(mockWriteFile).toHaveBeenCalledWith("/mock/home/.infer/config.json", expect.any(String), "utf-8");
378
- });
379
- it("writes valid JSON with trailing newline", async () => {
380
- mockMkdir.mockResolvedValue(undefined);
381
- mockWriteFile.mockResolvedValue(undefined);
382
- const input = {
383
- activeProject: "test",
384
- projects: {
385
- test: { apiKey: "pk_read_test", projectId: "proj_test" },
386
- },
387
- };
388
- await writeConfigFile(input);
389
- const written = mockWriteFile.mock.calls[0][1];
390
- expect(written.endsWith("\n")).toBe(true);
391
- expect(JSON.parse(written)).toMatchObject(input);
392
- });
393
- });
394
- describe("ConfigError", () => {
395
- it('has name "ConfigError"', () => {
396
- const err = new ConfigError("test");
397
- expect(err.name).toBe("ConfigError");
398
- });
399
- it("extends Error", () => {
400
- const err = new ConfigError("test");
401
- expect(err).toBeInstanceOf(Error);
402
- });
403
- it("stores message", () => {
404
- const err = new ConfigError("something broke");
405
- expect(err.message).toBe("something broke");
406
- });
407
- });
408
- });
409
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tips.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tips.test.d.ts","sourceRoot":"","sources":["../src/tips.test.ts"],"names":[],"mappings":""}
package/dist/tips.test.js DELETED
@@ -1,92 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- // Tips module uses module-level Map state, so we need fresh imports for isolation.
3
- // vi.resetModules() + dynamic import gives us a clean module each time.
4
- async function freshGetTip() {
5
- vi.resetModules();
6
- const mod = await import("./tips.js");
7
- return mod.getTip;
8
- }
9
- describe("getTip", () => {
10
- beforeEach(() => {
11
- vi.resetModules();
12
- });
13
- it("returns a tip string for a valid category", async () => {
14
- const getTip = await freshGetTip();
15
- const tip = getTip("afterCounts");
16
- expect(tip).toBeTruthy();
17
- expect(typeof tip).toBe("string");
18
- expect(tip.length).toBeGreaterThan(0);
19
- });
20
- it("returns tip prefixed with double newline", async () => {
21
- const getTip = await freshGetTip();
22
- const tip = getTip("afterCounts");
23
- expect(tip).toMatch(/^\n\n/);
24
- });
25
- it("returns different tips on subsequent calls (rotation)", async () => {
26
- const getTip = await freshGetTip();
27
- const tip1 = getTip("afterCounts");
28
- const tip2 = getTip("afterCounts");
29
- const tip3 = getTip("afterCounts");
30
- expect(tip1).not.toBe(tip2);
31
- expect(tip2).not.toBe(tip3);
32
- });
33
- it("returns tips in order (index 0, then 1, then 2...)", async () => {
34
- const getTip = await freshGetTip();
35
- const tip1 = getTip("afterRetention");
36
- // The first tip should contain the first item's content
37
- expect(tip1).toContain("Track this over time");
38
- });
39
- it("resets and starts over after all tips are shown", async () => {
40
- const getTip = await freshGetTip();
41
- // afterTopEvents has 4 tips
42
- const firstRound = [];
43
- for (let i = 0; i < 4; i++) {
44
- firstRound.push(getTip("afterTopEvents"));
45
- }
46
- // All 4 should be unique
47
- const unique = new Set(firstRound);
48
- expect(unique.size).toBe(4);
49
- // Next call should reset and return the first tip again
50
- const afterReset = getTip("afterTopEvents");
51
- expect(afterReset).toBe(firstRound[0]);
52
- });
53
- it("tracks categories independently", async () => {
54
- const getTip = await freshGetTip();
55
- const countsTip = getTip("afterCounts");
56
- const retentionTip = getTip("afterRetention");
57
- // Both should return their first tips, not share state
58
- expect(countsTip).toContain("automatically");
59
- expect(retentionTip).toContain("Track this over time");
60
- });
61
- it("works for afterCounts category", async () => {
62
- const getTip = await freshGetTip();
63
- const tip = getTip("afterCounts");
64
- expect(tip).toBeTruthy();
65
- expect(tip).toContain("💡");
66
- });
67
- it("works for afterRetention category", async () => {
68
- const getTip = await freshGetTip();
69
- const tip = getTip("afterRetention");
70
- expect(tip).toBeTruthy();
71
- expect(tip).toContain("💡");
72
- });
73
- it("works for afterJourney category", async () => {
74
- const getTip = await freshGetTip();
75
- const tip = getTip("afterJourney");
76
- expect(tip).toBeTruthy();
77
- expect(tip).toContain("💡");
78
- });
79
- it("works for afterTopEvents category", async () => {
80
- const getTip = await freshGetTip();
81
- const tip = getTip("afterTopEvents");
82
- expect(tip).toBeTruthy();
83
- expect(tip).toContain("💡");
84
- });
85
- it("works for afterInsights category", async () => {
86
- const getTip = await freshGetTip();
87
- const tip = getTip("afterInsights");
88
- expect(tip).toBeTruthy();
89
- expect(tip).toContain("💡");
90
- });
91
- });
92
- //# sourceMappingURL=tips.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tips.test.js","sourceRoot":"","sources":["../src/tips.test.ts"],"names":[],"mappings":"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"}