@mcptoolshop/venvkit 0.2.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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -0
  3. package/dist/doctorLite.d.ts +75 -0
  4. package/dist/doctorLite.d.ts.map +1 -0
  5. package/dist/doctorLite.js +705 -0
  6. package/dist/doctorLite.js.map +1 -0
  7. package/dist/doctorLite.test.d.ts +2 -0
  8. package/dist/doctorLite.test.d.ts.map +1 -0
  9. package/dist/doctorLite.test.js +268 -0
  10. package/dist/doctorLite.test.js.map +1 -0
  11. package/dist/index.d.ts +6 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +6 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/integration.test.d.ts +2 -0
  16. package/dist/integration.test.d.ts.map +1 -0
  17. package/dist/integration.test.js +245 -0
  18. package/dist/integration.test.js.map +1 -0
  19. package/dist/mapRender.d.ts +105 -0
  20. package/dist/mapRender.d.ts.map +1 -0
  21. package/dist/mapRender.js +718 -0
  22. package/dist/mapRender.js.map +1 -0
  23. package/dist/mapRender.test.d.ts +2 -0
  24. package/dist/mapRender.test.d.ts.map +1 -0
  25. package/dist/mapRender.test.js +571 -0
  26. package/dist/mapRender.test.js.map +1 -0
  27. package/dist/map_cli.d.ts +3 -0
  28. package/dist/map_cli.d.ts.map +1 -0
  29. package/dist/map_cli.js +278 -0
  30. package/dist/map_cli.js.map +1 -0
  31. package/dist/map_cli.test.d.ts +2 -0
  32. package/dist/map_cli.test.d.ts.map +1 -0
  33. package/dist/map_cli.test.js +276 -0
  34. package/dist/map_cli.test.js.map +1 -0
  35. package/dist/runLog.d.ts +71 -0
  36. package/dist/runLog.d.ts.map +1 -0
  37. package/dist/runLog.js +98 -0
  38. package/dist/runLog.js.map +1 -0
  39. package/dist/runLog.test.d.ts +2 -0
  40. package/dist/runLog.test.d.ts.map +1 -0
  41. package/dist/runLog.test.js +327 -0
  42. package/dist/runLog.test.js.map +1 -0
  43. package/dist/scanEnvPaths.d.ts +18 -0
  44. package/dist/scanEnvPaths.d.ts.map +1 -0
  45. package/dist/scanEnvPaths.js +174 -0
  46. package/dist/scanEnvPaths.js.map +1 -0
  47. package/dist/scanEnvPaths.test.d.ts +2 -0
  48. package/dist/scanEnvPaths.test.d.ts.map +1 -0
  49. package/dist/scanEnvPaths.test.js +250 -0
  50. package/dist/scanEnvPaths.test.js.map +1 -0
  51. package/dist/taskCluster.d.ts +62 -0
  52. package/dist/taskCluster.d.ts.map +1 -0
  53. package/dist/taskCluster.js +180 -0
  54. package/dist/taskCluster.js.map +1 -0
  55. package/dist/taskCluster.test.d.ts +2 -0
  56. package/dist/taskCluster.test.d.ts.map +1 -0
  57. package/dist/taskCluster.test.js +375 -0
  58. package/dist/taskCluster.test.js.map +1 -0
  59. package/dist/vitest.config.d.ts +3 -0
  60. package/dist/vitest.config.d.ts.map +1 -0
  61. package/dist/vitest.config.js +8 -0
  62. package/dist/vitest.config.js.map +1 -0
  63. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map_cli.test.js","sourceRoot":"","sources":["../map_cli.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ export type RunLogEventV1 = {
2
+ version: "1.0";
3
+ runId: string;
4
+ at: string;
5
+ cwd?: string;
6
+ task: {
7
+ name: string;
8
+ command: string;
9
+ args?: string[];
10
+ requirements?: {
11
+ python?: string;
12
+ packages?: string[];
13
+ features?: string[];
14
+ tags?: string[];
15
+ requireX64?: boolean;
16
+ };
17
+ };
18
+ selected: {
19
+ pythonPath: string;
20
+ envId?: string;
21
+ score?: number;
22
+ status?: "good" | "warn" | "bad" | "unknown";
23
+ };
24
+ outcome: {
25
+ ok: boolean;
26
+ exitCode?: number | null;
27
+ durationMs?: number;
28
+ errorClass?: string;
29
+ stderrSnippet?: string;
30
+ };
31
+ doctor?: {
32
+ dominantIssue?: string;
33
+ findings?: string[];
34
+ };
35
+ };
36
+ export type RunLogReadOptions = {
37
+ maxLines?: number;
38
+ };
39
+ /**
40
+ * Generate a run ID.
41
+ * @param input Optional deterministic seed (task signature). If omitted, returns UUID.
42
+ */
43
+ export declare function newRunId(input?: string): string;
44
+ /**
45
+ * Append a run event to the JSONL log file.
46
+ * Creates parent directories if needed.
47
+ */
48
+ export declare function appendRunLog(logPath: string, evt: RunLogEventV1): Promise<void>;
49
+ /**
50
+ * Read run events from a JSONL log file.
51
+ * Returns the last `maxLines` events (default 5000).
52
+ * Skips malformed lines gracefully.
53
+ */
54
+ export declare function readRunLog(logPath: string, opts?: RunLogReadOptions): Promise<RunLogEventV1[]>;
55
+ /**
56
+ * Count runs by outcome status.
57
+ */
58
+ export declare function summarizeRuns(runs: RunLogEventV1[]): {
59
+ total: number;
60
+ passed: number;
61
+ failed: number;
62
+ byTask: Map<string, {
63
+ passed: number;
64
+ failed: number;
65
+ }>;
66
+ byEnv: Map<string, {
67
+ passed: number;
68
+ failed: number;
69
+ }>;
70
+ };
71
+ //# sourceMappingURL=runLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runLog.d.ts","sourceRoot":"","sources":["../runLog.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,YAAY,CAAC,EAAE;YACb,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;YACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,UAAU,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC;KACH,CAAC;IAEF,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;KAC9C,CAAC;IAEF,OAAO,EAAE;QACP,EAAE,EAAE,OAAO,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAwBxG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD,CA8BA"}
package/dist/runLog.js ADDED
@@ -0,0 +1,98 @@
1
+ // runLog.ts
2
+ //
3
+ // Append-only JSONL run log for tracking task executions against Python envs.
4
+ // Each line is one RunLogEventV1 — durable, streaming-friendly, keeps forever.
5
+ //
6
+ // Used by mapRender to create:
7
+ // - task nodes (one per run)
8
+ // - ROUTES_TASK_TO edges (task → env)
9
+ // - FAILED_RUN edges (task → env with dominant issue label)
10
+ import * as fs from "node:fs/promises";
11
+ import * as path from "node:path";
12
+ import { createHash, randomUUID } from "node:crypto";
13
+ /**
14
+ * Generate a run ID.
15
+ * @param input Optional deterministic seed (task signature). If omitted, returns UUID.
16
+ */
17
+ export function newRunId(input) {
18
+ if (!input)
19
+ return randomUUID();
20
+ // deterministic id from task signature if desired
21
+ const h = createHash("sha256").update(input).digest("hex").slice(0, 16);
22
+ return `run_${h}`;
23
+ }
24
+ /**
25
+ * Append a run event to the JSONL log file.
26
+ * Creates parent directories if needed.
27
+ */
28
+ export async function appendRunLog(logPath, evt) {
29
+ await fs.mkdir(path.dirname(logPath), { recursive: true });
30
+ const line = JSON.stringify(evt) + "\n";
31
+ await fs.appendFile(logPath, line, "utf8");
32
+ }
33
+ /**
34
+ * Read run events from a JSONL log file.
35
+ * Returns the last `maxLines` events (default 5000).
36
+ * Skips malformed lines gracefully.
37
+ */
38
+ export async function readRunLog(logPath, opts = {}) {
39
+ const maxLines = opts.maxLines ?? 5000;
40
+ let raw = "";
41
+ try {
42
+ raw = await fs.readFile(logPath, "utf8");
43
+ }
44
+ catch {
45
+ return [];
46
+ }
47
+ const lines = raw.trimEnd().split("\n");
48
+ const tail = lines.slice(Math.max(0, lines.length - maxLines));
49
+ const out = [];
50
+ for (const l of tail) {
51
+ if (!l.trim())
52
+ continue;
53
+ try {
54
+ const obj = JSON.parse(l);
55
+ if (obj?.version === "1.0")
56
+ out.push(obj);
57
+ }
58
+ catch {
59
+ // ignore malformed lines
60
+ }
61
+ }
62
+ return out;
63
+ }
64
+ /**
65
+ * Count runs by outcome status.
66
+ */
67
+ export function summarizeRuns(runs) {
68
+ const byTask = new Map();
69
+ const byEnv = new Map();
70
+ let passed = 0;
71
+ let failed = 0;
72
+ for (const run of runs) {
73
+ if (run.outcome.ok) {
74
+ passed++;
75
+ }
76
+ else {
77
+ failed++;
78
+ }
79
+ // By task name
80
+ const taskName = run.task.name;
81
+ const taskStats = byTask.get(taskName) ?? { passed: 0, failed: 0 };
82
+ if (run.outcome.ok)
83
+ taskStats.passed++;
84
+ else
85
+ taskStats.failed++;
86
+ byTask.set(taskName, taskStats);
87
+ // By env path
88
+ const envPath = run.selected.pythonPath;
89
+ const envStats = byEnv.get(envPath) ?? { passed: 0, failed: 0 };
90
+ if (run.outcome.ok)
91
+ envStats.passed++;
92
+ else
93
+ envStats.failed++;
94
+ byEnv.set(envPath, envStats);
95
+ }
96
+ return { total: runs.length, passed, failed, byTask, byEnv };
97
+ }
98
+ //# sourceMappingURL=runLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runLog.js","sourceRoot":"","sources":["../runLog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runLog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runLog.test.d.ts","sourceRoot":"","sources":["../runLog.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,327 @@
1
+ // runLog.test.ts
2
+ // Unit tests for run log append + read
3
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
4
+ import * as fs from "node:fs/promises";
5
+ import * as path from "node:path";
6
+ import * as os from "node:os";
7
+ import { newRunId, appendRunLog, readRunLog, summarizeRuns, } from "./runLog.js";
8
+ function makeRunEvent(overrides = {}) {
9
+ return {
10
+ version: "1.0",
11
+ runId: overrides.runId ?? newRunId(),
12
+ at: overrides.at ?? new Date().toISOString(),
13
+ cwd: overrides.cwd ?? "/repo",
14
+ task: overrides.task ?? {
15
+ name: overrides.taskName ?? "pytest",
16
+ command: "pytest tests/",
17
+ args: ["tests/"],
18
+ requirements: {
19
+ packages: ["pytest"],
20
+ tags: ["test"],
21
+ },
22
+ },
23
+ selected: overrides.selected ?? {
24
+ pythonPath: overrides.pythonPath ?? "C:\\repo\\.venv\\Scripts\\python.exe",
25
+ score: 95,
26
+ status: "good",
27
+ },
28
+ outcome: overrides.outcome ?? {
29
+ ok: overrides.ok ?? true,
30
+ exitCode: overrides.ok === false ? 1 : 0,
31
+ durationMs: 1500,
32
+ errorClass: overrides.ok === false ? (overrides.errorClass ?? "RUNTIME_ERROR") : undefined,
33
+ stderrSnippet: overrides.ok === false ? "AssertionError: expected true" : undefined,
34
+ },
35
+ doctor: overrides.doctor,
36
+ };
37
+ }
38
+ describe("runLog", () => {
39
+ describe("newRunId", () => {
40
+ it("generates UUID when no input provided", () => {
41
+ const id1 = newRunId();
42
+ const id2 = newRunId();
43
+ expect(id1).not.toBe(id2);
44
+ // UUID format
45
+ expect(id1).toMatch(/^[\da-f-]{36}$/i);
46
+ });
47
+ it("generates deterministic ID from input", () => {
48
+ const id1 = newRunId("pytest|pytest tests/|2024-01-01");
49
+ const id2 = newRunId("pytest|pytest tests/|2024-01-01");
50
+ expect(id1).toBe(id2);
51
+ expect(id1).toMatch(/^run_[\da-f]{16}$/);
52
+ });
53
+ it("different inputs produce different IDs", () => {
54
+ const id1 = newRunId("task1");
55
+ const id2 = newRunId("task2");
56
+ expect(id1).not.toBe(id2);
57
+ });
58
+ });
59
+ describe("appendRunLog + readRunLog", () => {
60
+ let tempDir;
61
+ let logPath;
62
+ beforeEach(async () => {
63
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "venvkit-test-"));
64
+ logPath = path.join(tempDir, "runs.jsonl");
65
+ });
66
+ afterEach(async () => {
67
+ await fs.rm(tempDir, { recursive: true, force: true });
68
+ });
69
+ it("appends and reads a single event", async () => {
70
+ const evt = makeRunEvent({ taskName: "lint" });
71
+ await appendRunLog(logPath, evt);
72
+ const runs = await readRunLog(logPath);
73
+ expect(runs).toHaveLength(1);
74
+ expect(runs[0]?.task.name).toBe("lint");
75
+ expect(runs[0]?.version).toBe("1.0");
76
+ });
77
+ it("appends multiple events", async () => {
78
+ await appendRunLog(logPath, makeRunEvent({ taskName: "test1" }));
79
+ await appendRunLog(logPath, makeRunEvent({ taskName: "test2" }));
80
+ await appendRunLog(logPath, makeRunEvent({ taskName: "test3" }));
81
+ const runs = await readRunLog(logPath);
82
+ expect(runs).toHaveLength(3);
83
+ expect(runs.map((r) => r.task.name)).toEqual(["test1", "test2", "test3"]);
84
+ });
85
+ it("returns empty array for missing file", async () => {
86
+ const runs = await readRunLog(path.join(tempDir, "nonexistent.jsonl"));
87
+ expect(runs).toEqual([]);
88
+ });
89
+ it("skips malformed lines gracefully", async () => {
90
+ // Write valid + invalid lines
91
+ await fs.writeFile(logPath, [
92
+ JSON.stringify(makeRunEvent({ taskName: "valid1" })),
93
+ "{ broken json",
94
+ "",
95
+ JSON.stringify(makeRunEvent({ taskName: "valid2" })),
96
+ '{"version": "0.9", "old": true}', // wrong version
97
+ ].join("\n"), "utf8");
98
+ const runs = await readRunLog(logPath);
99
+ expect(runs).toHaveLength(2);
100
+ expect(runs.map((r) => r.task.name)).toEqual(["valid1", "valid2"]);
101
+ });
102
+ it("respects maxLines option", async () => {
103
+ for (let i = 0; i < 10; i++) {
104
+ await appendRunLog(logPath, makeRunEvent({ taskName: `task${i}` }));
105
+ }
106
+ const runs = await readRunLog(logPath, { maxLines: 3 });
107
+ expect(runs).toHaveLength(3);
108
+ // Should be last 3 lines
109
+ expect(runs.map((r) => r.task.name)).toEqual(["task7", "task8", "task9"]);
110
+ });
111
+ it("creates parent directories if needed", async () => {
112
+ const nestedPath = path.join(tempDir, "deep", "nested", "dir", "runs.jsonl");
113
+ await appendRunLog(nestedPath, makeRunEvent({ taskName: "nested" }));
114
+ const runs = await readRunLog(nestedPath);
115
+ expect(runs).toHaveLength(1);
116
+ });
117
+ });
118
+ describe("summarizeRuns", () => {
119
+ it("counts passed and failed runs", () => {
120
+ const runs = [
121
+ makeRunEvent({ ok: true }),
122
+ makeRunEvent({ ok: true }),
123
+ makeRunEvent({ ok: false }),
124
+ ];
125
+ const summary = summarizeRuns(runs);
126
+ expect(summary.total).toBe(3);
127
+ expect(summary.passed).toBe(2);
128
+ expect(summary.failed).toBe(1);
129
+ });
130
+ it("groups by task name", () => {
131
+ const runs = [
132
+ makeRunEvent({ taskName: "pytest", ok: true }),
133
+ makeRunEvent({ taskName: "pytest", ok: false }),
134
+ makeRunEvent({ taskName: "lint", ok: true }),
135
+ ];
136
+ const summary = summarizeRuns(runs);
137
+ expect(summary.byTask.get("pytest")).toEqual({ passed: 1, failed: 1 });
138
+ expect(summary.byTask.get("lint")).toEqual({ passed: 1, failed: 0 });
139
+ });
140
+ it("groups by env path", () => {
141
+ const runs = [
142
+ makeRunEvent({ pythonPath: "C:\\env1\\python.exe", ok: true }),
143
+ makeRunEvent({ pythonPath: "C:\\env1\\python.exe", ok: false }),
144
+ makeRunEvent({ pythonPath: "C:\\env2\\python.exe", ok: true }),
145
+ ];
146
+ const summary = summarizeRuns(runs);
147
+ expect(summary.byEnv.get("C:\\env1\\python.exe")).toEqual({ passed: 1, failed: 1 });
148
+ expect(summary.byEnv.get("C:\\env2\\python.exe")).toEqual({ passed: 1, failed: 0 });
149
+ });
150
+ it("handles empty array", () => {
151
+ const summary = summarizeRuns([]);
152
+ expect(summary.total).toBe(0);
153
+ expect(summary.passed).toBe(0);
154
+ expect(summary.failed).toBe(0);
155
+ expect(summary.byTask.size).toBe(0);
156
+ expect(summary.byEnv.size).toBe(0);
157
+ });
158
+ });
159
+ describe("task lifecycle logging", () => {
160
+ let tempDir;
161
+ let logPath;
162
+ beforeEach(async () => {
163
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "venvkit-lifecycle-"));
164
+ logPath = path.join(tempDir, "lifecycle.jsonl");
165
+ });
166
+ afterEach(async () => {
167
+ await fs.rm(tempDir, { recursive: true, force: true });
168
+ });
169
+ it("records task start with timestamp", async () => {
170
+ const startTime = new Date().toISOString();
171
+ const evt = makeRunEvent({
172
+ at: startTime,
173
+ taskName: "pytest",
174
+ ok: true,
175
+ });
176
+ await appendRunLog(logPath, evt);
177
+ const runs = await readRunLog(logPath);
178
+ expect(runs).toHaveLength(1);
179
+ expect(runs[0]?.at).toBe(startTime);
180
+ expect(runs[0]?.task.name).toBe("pytest");
181
+ });
182
+ it("records task completion with exit code", async () => {
183
+ const evt = makeRunEvent({
184
+ ok: true,
185
+ outcome: { ok: true, exitCode: 0, durationMs: 1234 },
186
+ });
187
+ await appendRunLog(logPath, evt);
188
+ const runs = await readRunLog(logPath);
189
+ expect(runs[0]?.outcome.ok).toBe(true);
190
+ expect(runs[0]?.outcome.exitCode).toBe(0);
191
+ expect(runs[0]?.outcome.durationMs).toBe(1234);
192
+ });
193
+ it("records task failure with error class", async () => {
194
+ const evt = makeRunEvent({
195
+ ok: false,
196
+ errorClass: "SSL_BROKEN",
197
+ });
198
+ await appendRunLog(logPath, evt);
199
+ const runs = await readRunLog(logPath);
200
+ expect(runs[0]?.outcome.ok).toBe(false);
201
+ expect(runs[0]?.outcome.errorClass).toBe("SSL_BROKEN");
202
+ });
203
+ it("records task failure with stderr snippet", async () => {
204
+ const evt = {
205
+ ...makeRunEvent({ ok: false }),
206
+ outcome: {
207
+ ok: false,
208
+ exitCode: 1,
209
+ errorClass: "IMPORT_ERROR",
210
+ stderrSnippet: "ModuleNotFoundError: No module named 'torch'",
211
+ },
212
+ };
213
+ await appendRunLog(logPath, evt);
214
+ const runs = await readRunLog(logPath);
215
+ expect(runs[0]?.outcome.stderrSnippet).toContain("ModuleNotFoundError");
216
+ });
217
+ });
218
+ describe("concurrent task handling", () => {
219
+ let tempDir;
220
+ let logPath;
221
+ beforeEach(async () => {
222
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "venvkit-concurrent-"));
223
+ logPath = path.join(tempDir, "concurrent.jsonl");
224
+ });
225
+ afterEach(async () => {
226
+ await fs.rm(tempDir, { recursive: true, force: true });
227
+ });
228
+ it("handles concurrent appends from multiple tasks", async () => {
229
+ // Simulate multiple concurrent task completions
230
+ const events = Array.from({ length: 10 }, (_, i) => makeRunEvent({ taskName: `task${i}`, runId: `run_concurrent_${i}` }));
231
+ // Append all concurrently
232
+ await Promise.all(events.map((evt) => appendRunLog(logPath, evt)));
233
+ const runs = await readRunLog(logPath);
234
+ // All events should be recorded
235
+ expect(runs).toHaveLength(10);
236
+ const runIds = runs.map((r) => r.runId);
237
+ events.forEach((evt) => {
238
+ expect(runIds).toContain(evt.runId);
239
+ });
240
+ });
241
+ it("maintains event order within single task", async () => {
242
+ // Write sequentially to maintain order
243
+ for (let i = 0; i < 5; i++) {
244
+ await appendRunLog(logPath, makeRunEvent({ taskName: "sequential", runId: `run_seq_${i}` }));
245
+ }
246
+ const runs = await readRunLog(logPath);
247
+ expect(runs).toHaveLength(5);
248
+ for (let i = 0; i < 5; i++) {
249
+ expect(runs[i]?.runId).toBe(`run_seq_${i}`);
250
+ }
251
+ });
252
+ });
253
+ describe("log persistence and retrieval", () => {
254
+ let tempDir;
255
+ let logPath;
256
+ beforeEach(async () => {
257
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "venvkit-persist-"));
258
+ logPath = path.join(tempDir, "persist.jsonl");
259
+ });
260
+ afterEach(async () => {
261
+ await fs.rm(tempDir, { recursive: true, force: true });
262
+ });
263
+ it("persists events across sessions", async () => {
264
+ // Session 1: write events
265
+ await appendRunLog(logPath, makeRunEvent({ taskName: "session1", runId: "run_s1" }));
266
+ await appendRunLog(logPath, makeRunEvent({ taskName: "session1", runId: "run_s2" }));
267
+ // Session 2: read and write more
268
+ const initialRuns = await readRunLog(logPath);
269
+ expect(initialRuns).toHaveLength(2);
270
+ await appendRunLog(logPath, makeRunEvent({ taskName: "session2", runId: "run_s3" }));
271
+ // Session 3: verify all present
272
+ const finalRuns = await readRunLog(logPath);
273
+ expect(finalRuns).toHaveLength(3);
274
+ expect(finalRuns.map((r) => r.runId)).toEqual(["run_s1", "run_s2", "run_s3"]);
275
+ });
276
+ it("retrieves runs by various criteria", async () => {
277
+ await appendRunLog(logPath, makeRunEvent({ taskName: "pytest", ok: true }));
278
+ await appendRunLog(logPath, makeRunEvent({ taskName: "pytest", ok: false }));
279
+ await appendRunLog(logPath, makeRunEvent({ taskName: "lint", ok: true }));
280
+ const runs = await readRunLog(logPath);
281
+ const summary = summarizeRuns(runs);
282
+ // Can filter by task
283
+ expect(summary.byTask.get("pytest")).toEqual({ passed: 1, failed: 1 });
284
+ expect(summary.byTask.get("lint")).toEqual({ passed: 1, failed: 0 });
285
+ });
286
+ });
287
+ describe("log file operations", () => {
288
+ let tempDir;
289
+ let logPath;
290
+ beforeEach(async () => {
291
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "venvkit-ops-"));
292
+ logPath = path.join(tempDir, "ops.jsonl");
293
+ });
294
+ afterEach(async () => {
295
+ await fs.rm(tempDir, { recursive: true, force: true });
296
+ });
297
+ it("handles log file with only newlines", async () => {
298
+ await fs.writeFile(logPath, "\n\n\n", "utf8");
299
+ const runs = await readRunLog(logPath);
300
+ expect(runs).toHaveLength(0);
301
+ });
302
+ it("handles very large events", async () => {
303
+ const largeStderr = "x".repeat(10000);
304
+ const evt = {
305
+ ...makeRunEvent({ ok: false }),
306
+ outcome: {
307
+ ok: false,
308
+ exitCode: 1,
309
+ stderrSnippet: largeStderr,
310
+ },
311
+ };
312
+ await appendRunLog(logPath, evt);
313
+ const runs = await readRunLog(logPath);
314
+ expect(runs).toHaveLength(1);
315
+ expect(runs[0]?.outcome.stderrSnippet).toBe(largeStderr);
316
+ });
317
+ it("clears log by overwriting", async () => {
318
+ await appendRunLog(logPath, makeRunEvent({ runId: "run_1" }));
319
+ await appendRunLog(logPath, makeRunEvent({ runId: "run_2" }));
320
+ // Clear by overwriting with empty content
321
+ await fs.writeFile(logPath, "", "utf8");
322
+ const runs = await readRunLog(logPath);
323
+ expect(runs).toHaveLength(0);
324
+ });
325
+ });
326
+ });
327
+ //# sourceMappingURL=runLog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runLog.test.js","sourceRoot":"","sources":["../runLog.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type ScanOptions = {
2
+ roots: string[];
3
+ maxDepth?: number;
4
+ includeHidden?: boolean;
5
+ includeUserHomeCache?: boolean;
6
+ dedupe?: boolean;
7
+ };
8
+ export type ScanResult = {
9
+ pythonPaths: string[];
10
+ meta: {
11
+ scannedRoots: string[];
12
+ maxDepth: number;
13
+ foundVenvs: number;
14
+ foundBases: number;
15
+ };
16
+ };
17
+ export declare function scanEnvPaths(options: ScanOptions): Promise<ScanResult>;
18
+ //# sourceMappingURL=scanEnvPaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanEnvPaths.d.ts","sourceRoot":"","sources":["../scanEnvPaths.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAsHF,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAiD5E"}