@tracemarketplace/cli 0.0.21 → 0.0.23

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.
@@ -7,7 +7,8 @@ export declare class ApiError extends Error {
7
7
  export declare class ApiClient {
8
8
  private baseUrl;
9
9
  private apiKey?;
10
- constructor(baseUrl: string, apiKey?: string | undefined);
10
+ private requestTimeoutMs;
11
+ constructor(baseUrl: string, apiKey?: string | undefined, requestTimeoutMs?: number);
11
12
  get(path: string): Promise<unknown>;
12
13
  post(path: string, body: unknown): Promise<unknown>;
13
14
  private request;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;gBAHzC,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,MAAM,GAAG,IAAI;CAK5C;AAED,qBAAa,SAAS;IAElB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,CAAC;gBADP,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,YAAA;IAGnB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAI3C,OAAO;CA2CtB"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;gBAHzC,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,MAAM,GAAG,IAAI;CAK5C;AAID,qBAAa,SAAS;IAElB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,gBAAgB;gBAFhB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,gBAAgB,SAA6B;IAGjD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAI3C,OAAO;CA4DtB"}
@@ -10,12 +10,15 @@ export class ApiError extends Error {
10
10
  this.name = "ApiError";
11
11
  }
12
12
  }
13
+ const DEFAULT_REQUEST_TIMEOUT_MS = 120_000;
13
14
  export class ApiClient {
14
15
  baseUrl;
15
16
  apiKey;
16
- constructor(baseUrl, apiKey) {
17
+ requestTimeoutMs;
18
+ constructor(baseUrl, apiKey, requestTimeoutMs = DEFAULT_REQUEST_TIMEOUT_MS) {
17
19
  this.baseUrl = baseUrl;
18
20
  this.apiKey = apiKey;
21
+ this.requestTimeoutMs = requestTimeoutMs;
19
22
  }
20
23
  async get(path) {
21
24
  return this.request("GET", path);
@@ -32,24 +35,37 @@ export class ApiClient {
32
35
  const { gzip } = await import("zlib");
33
36
  const buf = await new Promise((resolve, reject) => gzip(Buffer.from(json), (err, result) => err ? reject(err) : resolve(result)));
34
37
  reqBody = new Uint8Array(buf);
35
- extraHeaders["X-Content-Encoding"] = "gzip";
36
- const ratio = Math.round((1 - buf.length / json.length) * 100);
37
- console.error(`[gzip] ${Math.round(json.length / 1024)}KB → ${Math.round(buf.length / 1024)}KB (${ratio}% reduction)`);
38
+ extraHeaders["Content-Encoding"] = "gzip";
39
+ if (json.length >= 1024) {
40
+ const ratio = Math.round((1 - buf.length / json.length) * 100);
41
+ const deltaLabel = ratio >= 0 ? `${ratio}% reduction` : `${Math.abs(ratio)}% increase`;
42
+ console.error(`[gzip] ${formatSize(json.length)} → ${formatSize(buf.length)} (${deltaLabel})`);
43
+ }
38
44
  }
39
45
  catch (e) {
40
46
  console.error(`[gzip] compression failed, sending uncompressed: ${e}`);
41
47
  reqBody = json;
42
48
  }
43
49
  }
44
- const res = await fetch(`${this.baseUrl}${path}`, {
45
- method,
46
- headers: {
47
- ...(method === "POST" ? { "Content-Type": "application/json" } : {}),
48
- ...(this.apiKey ? { "X-Api-Key": this.apiKey } : {}),
49
- ...extraHeaders,
50
- },
51
- body: reqBody,
52
- });
50
+ let res;
51
+ try {
52
+ res = await fetch(`${this.baseUrl}${path}`, {
53
+ method,
54
+ headers: {
55
+ ...(method === "POST" ? { "Content-Type": "application/json" } : {}),
56
+ ...(this.apiKey ? { "X-Api-Key": this.apiKey } : {}),
57
+ ...extraHeaders,
58
+ },
59
+ body: reqBody,
60
+ signal: AbortSignal.timeout(this.requestTimeoutMs),
61
+ });
62
+ }
63
+ catch (error) {
64
+ if (isRequestTimeout(error)) {
65
+ throw new ApiError(`API request timed out after ${formatDuration(this.requestTimeoutMs)}`, 408, { error: "Request timed out" }, null);
66
+ }
67
+ throw error;
68
+ }
53
69
  const parsedBody = await parseResponseBody(res);
54
70
  if (!res.ok) {
55
71
  throw new ApiError(`API error ${res.status}: ${formatErrorBody(parsedBody)}`, res.status, parsedBody, parseRetryAfterHeader(res.headers.get("retry-after")));
@@ -96,4 +112,22 @@ function parseRetryAfterHeader(value) {
96
112
  const seconds = Math.ceil((dateMs - Date.now()) / 1000);
97
113
  return Math.max(0, seconds);
98
114
  }
115
+ function formatSize(bytes) {
116
+ if (bytes < 1024) {
117
+ return `${bytes}B`;
118
+ }
119
+ return `${Math.round(bytes / 1024)}KB`;
120
+ }
121
+ function isRequestTimeout(error) {
122
+ if (!(error instanceof Error)) {
123
+ return false;
124
+ }
125
+ return error.name === "AbortError" || error.name === "TimeoutError";
126
+ }
127
+ function formatDuration(ms) {
128
+ if (ms < 1000) {
129
+ return `${ms}ms`;
130
+ }
131
+ return `${Math.ceil(ms / 1000)}s`;
132
+ }
99
133
  //# sourceMappingURL=api-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,14 @@ import { afterEach, describe, expect, it, vi } from "vitest";
2
2
  import { ApiClient } from "./api-client.js";
3
3
  describe("ApiClient", () => {
4
4
  const originalFetch = global.fetch;
5
+ const consoleError = console.error;
5
6
  afterEach(() => {
6
7
  global.fetch = originalFetch;
8
+ console.error = consoleError;
7
9
  vi.restoreAllMocks();
8
10
  });
9
11
  it("parses retry-after and json error bodies", async () => {
12
+ console.error = vi.fn();
10
13
  global.fetch = vi.fn().mockResolvedValue(new Response(JSON.stringify({ error: "busy" }), {
11
14
  status: 503,
12
15
  headers: {
@@ -15,7 +18,7 @@ describe("ApiClient", () => {
15
18
  },
16
19
  }));
17
20
  const client = new ApiClient("https://example.test", "token");
18
- await expect(client.post("/api/v1/traces/batch", {})).rejects.toEqual(expect.objectContaining({
21
+ await expect(client.post("/api/v1/traces/ingest", {})).rejects.toEqual(expect.objectContaining({
19
22
  name: "ApiError",
20
23
  status: 503,
21
24
  retryAfterSeconds: 12,
@@ -30,5 +33,37 @@ describe("ApiClient", () => {
30
33
  const client = new ApiClient("https://example.test", "token");
31
34
  await expect(client.get("/health")).resolves.toEqual({ ok: true });
32
35
  });
36
+ it("uses the standard content-encoding header for gzipped post bodies", async () => {
37
+ console.error = vi.fn();
38
+ const fetchMock = vi.fn().mockResolvedValue(new Response(JSON.stringify({ ok: true }), {
39
+ status: 200,
40
+ headers: { "content-type": "application/json" },
41
+ }));
42
+ global.fetch = fetchMock;
43
+ const client = new ApiClient("https://example.test", "token");
44
+ await expect(client.post("/api/v1/auth/cli-init", {})).resolves.toEqual({ ok: true });
45
+ const [, init] = fetchMock.mock.calls[0];
46
+ expect(init.headers).toEqual({
47
+ "Content-Type": "application/json",
48
+ "X-Api-Key": "token",
49
+ "Content-Encoding": "gzip",
50
+ });
51
+ expect(init.body).toBeInstanceOf(Uint8Array);
52
+ });
53
+ it("turns hung requests into a timeout ApiError", async () => {
54
+ console.error = vi.fn();
55
+ global.fetch = vi.fn().mockImplementation((_url, init) => new Promise((_, reject) => {
56
+ (init?.signal).addEventListener("abort", () => {
57
+ reject(new DOMException("timed out", "TimeoutError"));
58
+ }, { once: true });
59
+ }));
60
+ const client = new ApiClient("https://example.test", "token", 5);
61
+ await expect(client.get("/health")).rejects.toEqual(expect.objectContaining({
62
+ name: "ApiError",
63
+ status: 408,
64
+ retryAfterSeconds: null,
65
+ body: { error: "Request timed out" },
66
+ }));
67
+ });
33
68
  });
34
69
  //# sourceMappingURL=api-client.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAEtD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QAC7B,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;YAC9C,MAAM,EAAE,GAAG;YACX,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI;aACpB;SACF,CAAC,CACa,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACnE,MAAM,CAAC,gBAAgB,CAAoB;YACzC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,GAAG;YACX,iBAAiB,EAAE,EAAE;YACrB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACzC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CACa,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAEtD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QAC7B,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC;QAC7B,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;YAC9C,MAAM,EAAE,GAAG;YACX,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI;aACpB;SACF,CAAC,CACa,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACpE,MAAM,CAAC,gBAAgB,CAAoB;YACzC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,GAAG;YACX,iBAAiB,EAAE,EAAE;YACrB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACzC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CACa,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACzC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CACH,CAAC;QACF,MAAM,CAAC,KAAK,GAAG,SAAyB,CAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtF,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAA0B,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YAC3B,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,OAAO;YACpB,kBAAkB,EAAE,MAAM;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAClF,CAAC,IAAI,EAAE,MAAsB,CAAA,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3D,MAAM,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;YACxD,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CAAiB,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAEjE,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACjD,MAAM,CAAC,gBAAgB,CAAoB;YACzC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,GAAG;YACX,iBAAiB,EAAE,IAAI;YACvB,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;SACrC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=submit-worker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit-worker.test.d.ts","sourceRoot":"","sources":["../../src/commands/submit-worker.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ import { unlinkSync } from "fs";
2
+ import { readFile } from "fs/promises";
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
+ vi.mock("fs", () => ({
5
+ closeSync: vi.fn(),
6
+ existsSync: vi.fn(() => false),
7
+ mkdirSync: vi.fn(),
8
+ openSync: vi.fn(() => 1),
9
+ unlinkSync: vi.fn(),
10
+ writeFileSync: vi.fn(),
11
+ }));
12
+ vi.mock("fs/promises", () => ({
13
+ readFile: vi.fn(),
14
+ }));
15
+ vi.mock("../config.js", () => ({
16
+ getConfigDir: vi.fn(() => "/tmp/tracemarketplace"),
17
+ getSubmitLogPath: vi.fn(() => "/tmp/tracemarketplace/submit.log"),
18
+ loadConfig: vi.fn(),
19
+ loadState: vi.fn(() => ({ sessions: {}, chunks: {} })),
20
+ resolveProfile: vi.fn((profile) => profile ?? "prod"),
21
+ stateKey: vi.fn(() => "session-key"),
22
+ }));
23
+ vi.mock("../flush.js", () => ({
24
+ buildCursorSessionSource: vi.fn(),
25
+ buildFileSessionSource: vi.fn(),
26
+ createFreshSessionState: vi.fn(),
27
+ flushTrackedSessions: vi.fn(),
28
+ migrateLegacySessionState: vi.fn(),
29
+ planSessionUploads: vi.fn(),
30
+ }));
31
+ vi.mock("../sessions.js", () => ({
32
+ CURSOR_DB_PATH: "/tmp/cursor.sqlite",
33
+ findFiles: vi.fn(() => []),
34
+ }));
35
+ vi.mock("../submit-worker-state.js", () => ({
36
+ createSubmitWorkerState: vi.fn(),
37
+ removeSubmitWorkerState: vi.fn(),
38
+ writeSubmitWorkerState: vi.fn(),
39
+ }));
40
+ import { loadConfig } from "../config.js";
41
+ import { flushTrackedSessions } from "../flush.js";
42
+ import { removeSubmitWorkerState } from "../submit-worker-state.js";
43
+ import { submitWorkerCommand } from "./submit.js";
44
+ describe("submitWorkerCommand", () => {
45
+ beforeEach(() => {
46
+ vi.mocked(loadConfig).mockReturnValue({
47
+ profile: "prod",
48
+ email: "user@example.com",
49
+ serverUrl: "https://example.test",
50
+ apiKey: "tm_test_key",
51
+ });
52
+ vi.mocked(readFile).mockResolvedValue(JSON.stringify({
53
+ createdAt: "2026-03-22T20:16:00.000Z",
54
+ readyChunkCount: 2,
55
+ readySessionCount: 1,
56
+ sources: [
57
+ {
58
+ tool: "codex_cli",
59
+ locator: "/tmp/session.jsonl",
60
+ label: "codex_cli:/tmp/session.jsonl",
61
+ },
62
+ ],
63
+ }));
64
+ vi.mocked(flushTrackedSessions).mockResolvedValue({
65
+ processedSessions: 1,
66
+ uploadedChunks: 2,
67
+ duplicateChunks: 0,
68
+ pendingSessions: 0,
69
+ payoutCents: 0,
70
+ results: [],
71
+ });
72
+ });
73
+ afterEach(() => {
74
+ vi.restoreAllMocks();
75
+ });
76
+ it("waits for sync uploads before removing worker state", async () => {
77
+ const consoleLog = vi.spyOn(console, "log").mockImplementation(() => undefined);
78
+ await submitWorkerCommand({ profile: "prod", manifest: "/tmp/submit-job.json" });
79
+ expect(flushTrackedSessions).toHaveBeenCalledWith(expect.objectContaining({ profile: "prod" }), [
80
+ {
81
+ tool: "codex_cli",
82
+ locator: "/tmp/session.jsonl",
83
+ label: "codex_cli:/tmp/session.jsonl",
84
+ },
85
+ ], expect.objectContaining({
86
+ includeIdleTracked: false,
87
+ sync: true,
88
+ }));
89
+ expect(removeSubmitWorkerState).toHaveBeenCalledWith("prod", process.pid);
90
+ expect(unlinkSync).toHaveBeenCalledWith("/tmp/submit-job.json");
91
+ consoleLog.mockRestore();
92
+ });
93
+ });
94
+ //# sourceMappingURL=submit-worker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit-worker.test.js","sourceRoot":"","sources":["../../src/commands/submit-worker.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAO,SAAQ,mBAAmB;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2BAA2B,EAAE,MAAM,CAAC;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC9C;AAKD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,eAAe,IAAI,WAAW,CA6B7C;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1D;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,MAAM,CAeR;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAQvD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtE;AAwHD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAQvF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAO,SAAQ,mBAAmB;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2BAA2B,EAAE,MAAM,CAAC;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC9C;AAKD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,eAAe,IAAI,WAAW,CA6B7C;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS1D;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,MAAM,CAkBR;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAQvD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtE;AAwHD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAQvF"}
package/dist/config.js CHANGED
@@ -65,7 +65,10 @@ export function loadConfig(profile) {
65
65
  const selected = store.profiles[resolvedProfile];
66
66
  if (!selected)
67
67
  return null;
68
- return { profile: resolvedProfile, ...selected };
68
+ return {
69
+ profile: resolvedProfile,
70
+ ...selected,
71
+ };
69
72
  }
70
73
  export function saveConfig(config, options = {}) {
71
74
  const store = loadConfigStore();
@@ -79,7 +82,10 @@ export function saveConfig(config, options = {}) {
79
82
  store.defaultProfile = normalizedDefault;
80
83
  }
81
84
  writeConfigStore(store);
82
- return { profile, ...store.profiles[profile] };
85
+ return {
86
+ profile,
87
+ ...store.profiles[profile],
88
+ };
83
89
  }
84
90
  export function loadState(profile) {
85
91
  const p = getStatePath(profile);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { tmpdir } from "os";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ const TEST_HOME = join(tmpdir(), "tracemarketplace-config-test");
6
+ vi.mock("os", async (importOriginal) => {
7
+ const actual = await importOriginal();
8
+ return {
9
+ ...actual,
10
+ homedir: () => TEST_HOME,
11
+ };
12
+ });
13
+ import { getConfigDir, getConfigPath, loadConfig, saveConfig } from "./config.js";
14
+ describe("config persistence", () => {
15
+ beforeEach(() => {
16
+ rmSync(TEST_HOME, { recursive: true, force: true });
17
+ });
18
+ afterEach(() => {
19
+ rmSync(TEST_HOME, { recursive: true, force: true });
20
+ });
21
+ it("persists the active config shape without a raw upload toggle", () => {
22
+ const saved = saveConfig({
23
+ apiKey: "tm_test_key",
24
+ serverUrl: "https://example.test",
25
+ email: "user@example.com",
26
+ });
27
+ expect(saved).toEqual({
28
+ profile: "prod",
29
+ apiKey: "tm_test_key",
30
+ serverUrl: "https://example.test",
31
+ email: "user@example.com",
32
+ });
33
+ expect(loadConfig(saved.profile)).toEqual(saved);
34
+ });
35
+ it("loads legacy config files that still contain the raw upload toggle", () => {
36
+ mkdirSync(getConfigDir(), { recursive: true });
37
+ writeFileSync(getConfigPath(), JSON.stringify({
38
+ defaultProfile: "prod",
39
+ profiles: {
40
+ prod: {
41
+ apiKey: "tm_test_key",
42
+ serverUrl: "https://example.test",
43
+ email: "user@example.com",
44
+ includeRawJsonInUploads: true,
45
+ },
46
+ },
47
+ }, null, 2));
48
+ expect(loadConfig("prod")).toEqual({
49
+ profile: "prod",
50
+ apiKey: "tm_test_key",
51
+ serverUrl: "https://example.test",
52
+ email: "user@example.com",
53
+ });
54
+ });
55
+ it("rewrites configs without the legacy raw upload toggle", () => {
56
+ saveConfig({
57
+ apiKey: "tm_test_key",
58
+ serverUrl: "https://example.test",
59
+ email: "user@example.com",
60
+ }, { profile: "prod" });
61
+ expect(existsSync(getConfigPath())).toBe(true);
62
+ expect(readFileSync(getConfigPath(), "utf8")).not.toContain("includeRawJsonInUploads");
63
+ });
64
+ });
65
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"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"}
package/dist/flush.d.ts CHANGED
@@ -34,6 +34,9 @@ export interface FlushResult {
34
34
  payoutCents: number;
35
35
  results: SessionFlushResult[];
36
36
  }
37
+ export declare function prepareTraceForUpload(trace: NormalizedTrace, options?: {
38
+ homeDir?: string;
39
+ }): NormalizedTrace;
37
40
  export declare function collectIdleSessionSources(sessions: Record<string, SessionUploadState>, now?: Date): SessionSource[];
38
41
  export declare function verifyUnconfirmedChunks(state: ReturnType<typeof loadState>, client: ApiClient, now: Date): Promise<void>;
39
42
  export declare function flushTrackedSessions(config: Config, sources: SessionSource[], opts?: {
@@ -1 +1 @@
1
- {"version":3,"file":"flush.d.ts","sourceRoot":"","sources":["../src/flush.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,SAAS,EAIT,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAOrB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,kBAAkB,CAAC;IAClC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAeD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC5C,GAAG,OAAa,GACf,aAAa,EAAE,CAQjB;AAOD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EACnC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EAAE,EACxB,IAAI,GAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACvH,OAAO,CAAC,WAAW,CAAC,CAsCtB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,OAAa,GACf,WAAW,CA2Cb;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,GACrB,kBAAkB,CAcpB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,EACtB,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,CAgBpB;AA4TD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,GAAG,WAAW,EACjC,QAAQ,EAAE,MAAM,GACf,aAAa,CAMf;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAMzE"}
1
+ {"version":3,"file":"flush.d.ts","sourceRoot":"","sources":["../src/flush.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,SAAS,EAIT,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAOrB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,kBAAkB,CAAC;IAClC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAeD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,eAAe,CAYjB;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC5C,GAAG,OAAa,GACf,aAAa,EAAE,CAQjB;AAUD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EACnC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAeD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EAAE,EACxB,IAAI,GAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACvH,OAAO,CAAC,WAAW,CAAC,CAsCtB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,OAAa,GACf,WAAW,CA2Cb;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,GACrB,kBAAkB,CAcpB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,EACtB,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,CAgBpB;AA4TD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,GAAG,WAAW,EACjC,QAAQ,EAAE,MAAM,GACf,aAAa,CAMf;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAMzE"}
package/dist/flush.js CHANGED
@@ -7,6 +7,15 @@ import { CURSOR_DB_PATH } from "./sessions.js";
7
7
  const IDLE_FINALIZATION_MS = 2 * 24 * 60 * 60 * 1000;
8
8
  const UNCONFIRMED_RESUBMIT_MS = 2 * 60 * 60 * 1000; // re-submit after 2hr with no confirmation
9
9
  const INGEST_CONCURRENCY = 12;
10
+ export function prepareTraceForUpload(trace, options = {}) {
11
+ const { homeDir = homedir() } = options;
12
+ // Keep session-sized raw payloads local until they have a separate upload path.
13
+ return redactTrace({
14
+ ...trace,
15
+ raw_json: null,
16
+ raw_json_format: null,
17
+ }, { homeDir });
18
+ }
10
19
  export function collectIdleSessionSources(sessions, now = new Date()) {
11
20
  return Object.values(sessions)
12
21
  .filter((session) => isSessionIdlePending(session, now))
@@ -20,19 +29,9 @@ export async function verifyUnconfirmedChunks(state, client, now) {
20
29
  for (const [key, session] of Object.entries(state.sessions)) {
21
30
  if (session.confirmedChunkIndex >= session.nextChunkIndex)
22
31
  continue;
23
- // Check if timed out — reset to re-submit from last confirmed point
24
- if (session.unconfirmedSince) {
25
- const age = now.getTime() - Date.parse(session.unconfirmedSince);
26
- if (age >= UNCONFIRMED_RESUBMIT_MS) {
27
- state.sessions[key] = {
28
- ...session,
29
- nextChunkIndex: session.confirmedChunkIndex,
30
- openChunkStartTurn: session.confirmedOpenChunkStartTurn,
31
- unconfirmedSince: null,
32
- };
33
- continue;
34
- }
35
- }
32
+ const timedOut = session.unconfirmedSince
33
+ ? now.getTime() - Date.parse(session.unconfirmedSince) >= UNCONFIRMED_RESUBMIT_MS
34
+ : false;
36
35
  // Check each unconfirmed chunk sequentially — stop at first missing one
37
36
  for (let i = session.confirmedChunkIndex; i < session.nextChunkIndex; i++) {
38
37
  try {
@@ -42,21 +41,44 @@ export async function verifyUnconfirmedChunks(state, client, now) {
42
41
  chunk_index: String(i),
43
42
  });
44
43
  const result = await client.get(`/api/v1/traces/exists?${params}`);
45
- if (!result.exists)
44
+ if (result.exists) {
45
+ state.sessions[key] = {
46
+ ...state.sessions[key],
47
+ confirmedChunkIndex: i + 1,
48
+ confirmedOpenChunkStartTurn: state.sessions[key].openChunkStartTurn,
49
+ unconfirmedSince: i + 1 >= session.nextChunkIndex ? null : state.sessions[key].unconfirmedSince,
50
+ };
51
+ continue;
52
+ }
53
+ if (result.pending) {
54
+ break;
55
+ }
56
+ if (result.status === "failed_terminal" || result.status === "payload_expired") {
57
+ resetSessionToConfirmedBaseline(state, key, session);
46
58
  break;
47
- state.sessions[key] = {
48
- ...state.sessions[key],
49
- confirmedChunkIndex: i + 1,
50
- confirmedOpenChunkStartTurn: state.sessions[key].openChunkStartTurn,
51
- unconfirmedSince: i + 1 >= session.nextChunkIndex ? null : state.sessions[key].unconfirmedSince,
52
- };
59
+ }
60
+ if (timedOut) {
61
+ resetSessionToConfirmedBaseline(state, key, session);
62
+ }
63
+ break;
53
64
  }
54
65
  catch {
66
+ if (timedOut) {
67
+ resetSessionToConfirmedBaseline(state, key, session);
68
+ }
55
69
  break;
56
70
  }
57
71
  }
58
72
  }
59
73
  }
74
+ function resetSessionToConfirmedBaseline(state, key, session) {
75
+ state.sessions[key] = {
76
+ ...session,
77
+ nextChunkIndex: session.confirmedChunkIndex,
78
+ openChunkStartTurn: session.confirmedOpenChunkStartTurn,
79
+ unconfirmedSince: null,
80
+ };
81
+ }
60
82
  export async function flushTrackedSessions(config, sources, opts = {}) {
61
83
  const now = opts.now ?? new Date();
62
84
  const state = loadState(config.profile);
@@ -260,7 +282,7 @@ async function extractTraceFromSource(source, email) {
260
282
  }
261
283
  async function uploadTraceChunk(trace, client, sync = false) {
262
284
  // Client-side regex redaction runs before transmission; Presidio runs server-side async.
263
- const payloadTrace = redactTrace(trace, { homeDir: homedir() });
285
+ const payloadTrace = prepareTraceForUpload(trace);
264
286
  const jsonSize = JSON.stringify({ trace: payloadTrace, source_tool: payloadTrace.source_tool }).length;
265
287
  console.error(`[upload] ${payloadTrace.source_session_id} payload=${Math.round(jsonSize / 1024)}KB turns=${payloadTrace.turn_count}`);
266
288
  if (!sync) {