@tracemarketplace/cli 0.0.13 → 0.0.17
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.
- package/dist/api-client.d.ts +9 -2
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +80 -15
- package/dist/api-client.js.map +1 -1
- package/dist/api-client.test.d.ts +2 -0
- package/dist/api-client.test.d.ts.map +1 -0
- package/dist/api-client.test.js +34 -0
- package/dist/api-client.test.js.map +1 -0
- package/dist/cli.js +48 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto-submit.d.ts +2 -1
- package/dist/commands/auto-submit.d.ts.map +1 -1
- package/dist/commands/auto-submit.js +43 -56
- package/dist/commands/auto-submit.js.map +1 -1
- package/dist/commands/daemon.d.ts +8 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +184 -63
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/history.d.ts +3 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +8 -4
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/login.d.ts +5 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +25 -9
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/register.d.ts +1 -0
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +4 -39
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/remove-daemon.d.ts +6 -0
- package/dist/commands/remove-daemon.d.ts.map +1 -0
- package/dist/commands/remove-daemon.js +66 -0
- package/dist/commands/remove-daemon.js.map +1 -0
- package/dist/commands/remove-hook.d.ts +6 -0
- package/dist/commands/remove-hook.d.ts.map +1 -0
- package/dist/commands/remove-hook.js +174 -0
- package/dist/commands/remove-hook.js.map +1 -0
- package/dist/commands/setup-hook.d.ts +2 -0
- package/dist/commands/setup-hook.d.ts.map +1 -1
- package/dist/commands/setup-hook.js +85 -41
- package/dist/commands/setup-hook.js.map +1 -1
- package/dist/commands/status.d.ts +3 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +8 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/submit.d.ts +1 -0
- package/dist/commands/submit.d.ts.map +1 -1
- package/dist/commands/submit.js +138 -83
- package/dist/commands/submit.js.map +1 -1
- package/dist/commands/whoami.d.ts +3 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +8 -4
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config.d.ts +38 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +175 -17
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -0
- package/dist/flush.d.ts +49 -0
- package/dist/flush.d.ts.map +1 -0
- package/dist/flush.js +405 -0
- package/dist/flush.js.map +1 -0
- package/dist/flush.test.d.ts +2 -0
- package/dist/flush.test.d.ts.map +1 -0
- package/dist/flush.test.js +330 -0
- package/dist/flush.test.js.map +1 -0
- package/dist/submitter.d.ts.map +1 -1
- package/dist/submitter.js +5 -2
- package/dist/submitter.js.map +1 -1
- package/package.json +8 -7
- package/src/api-client.test.ts +47 -0
- package/src/api-client.ts +100 -16
- package/src/cli.ts +55 -19
- package/src/commands/auto-submit.ts +80 -40
- package/src/commands/daemon.ts +243 -60
- package/src/commands/history.ts +9 -4
- package/src/commands/login.ts +37 -9
- package/src/commands/remove-daemon.ts +75 -0
- package/src/commands/remove-hook.ts +194 -0
- package/src/commands/setup-hook.ts +93 -43
- package/src/commands/status.ts +8 -4
- package/src/commands/submit.ts +191 -83
- package/src/commands/whoami.ts +8 -4
- package/src/config.ts +241 -21
- package/src/constants.ts +18 -0
- package/src/flush.test.ts +395 -0
- package/src/flush.ts +591 -0
- package/vitest.config.ts +8 -0
- package/src/commands/register.ts +0 -52
- package/src/submitter.ts +0 -110
package/dist/config.js
CHANGED
|
@@ -1,46 +1,204 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
2
2
|
import { homedir } from "os";
|
|
3
3
|
import { join } from "path";
|
|
4
|
+
import { DEFAULT_PROFILE } from "./constants.js";
|
|
5
|
+
const EMPTY_SUBMIT_STATE = { version: 2, chunks: {}, sessions: {} };
|
|
4
6
|
export function getConfigDir() {
|
|
5
7
|
return join(homedir(), ".config", "tracemarketplace");
|
|
6
8
|
}
|
|
7
9
|
export function getConfigPath() {
|
|
8
10
|
return join(getConfigDir(), "config.json");
|
|
9
11
|
}
|
|
10
|
-
export function getStatePath() {
|
|
11
|
-
return join(getConfigDir(),
|
|
12
|
+
export function getStatePath(profile) {
|
|
13
|
+
return join(getConfigDir(), `state${profileSuffix(profile)}.json`);
|
|
12
14
|
}
|
|
13
|
-
export function
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
export function getAutoSubmitLogPath(profile) {
|
|
16
|
+
return join(getConfigDir(), `auto-submit${profileSuffix(profile)}.log`);
|
|
17
|
+
}
|
|
18
|
+
export function getDaemonStatePath(profile) {
|
|
19
|
+
return join(getConfigDir(), `daemon-state${profileSuffix(profile)}.json`);
|
|
20
|
+
}
|
|
21
|
+
export function getDaemonPidPath(profile) {
|
|
22
|
+
return join(getConfigDir(), `daemon${profileSuffix(profile)}.pid`);
|
|
23
|
+
}
|
|
24
|
+
export function resolveProfile(profile) {
|
|
25
|
+
if (profile)
|
|
26
|
+
return normalizeProfile(profile);
|
|
27
|
+
if (process.env.TRACEMP_PROFILE)
|
|
28
|
+
return normalizeProfile(process.env.TRACEMP_PROFILE);
|
|
29
|
+
return normalizeProfile(loadConfigStore().defaultProfile);
|
|
30
|
+
}
|
|
31
|
+
export function loadConfigStore() {
|
|
32
|
+
const raw = readConfigFile();
|
|
33
|
+
if (isStoredProfileConfig(raw)) {
|
|
34
|
+
return {
|
|
35
|
+
defaultProfile: DEFAULT_PROFILE,
|
|
36
|
+
profiles: { [DEFAULT_PROFILE]: normalizeStoredProfileConfig(raw) },
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (!isRecord(raw)) {
|
|
40
|
+
return {
|
|
41
|
+
defaultProfile: DEFAULT_PROFILE,
|
|
42
|
+
profiles: {},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const profiles = normalizeProfiles(raw.profiles);
|
|
46
|
+
const requestedDefault = normalizeProfile(typeof raw.defaultProfile === "string" ? raw.defaultProfile : DEFAULT_PROFILE);
|
|
47
|
+
return {
|
|
48
|
+
defaultProfile: profiles[requestedDefault]
|
|
49
|
+
? requestedDefault
|
|
50
|
+
: profiles[DEFAULT_PROFILE]
|
|
51
|
+
? DEFAULT_PROFILE
|
|
52
|
+
: requestedDefault,
|
|
53
|
+
profiles,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function loadConfig(profile) {
|
|
57
|
+
const store = loadConfigStore();
|
|
58
|
+
const resolvedProfile = resolveProfileFromStore(store, profile);
|
|
59
|
+
const selected = store.profiles[resolvedProfile];
|
|
60
|
+
if (!selected)
|
|
16
61
|
return null;
|
|
62
|
+
return { profile: resolvedProfile, ...selected };
|
|
63
|
+
}
|
|
64
|
+
export function saveConfig(config, options = {}) {
|
|
65
|
+
const store = loadConfigStore();
|
|
66
|
+
const profile = normalizeProfile(options.profile);
|
|
67
|
+
store.profiles[profile] = normalizeStoredProfileConfig(config);
|
|
68
|
+
const normalizedDefault = normalizeProfile(store.defaultProfile);
|
|
69
|
+
if (options.setDefault || !store.profiles[normalizedDefault]) {
|
|
70
|
+
store.defaultProfile = profile;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
store.defaultProfile = normalizedDefault;
|
|
74
|
+
}
|
|
75
|
+
writeConfigStore(store);
|
|
76
|
+
return { profile, ...store.profiles[profile] };
|
|
77
|
+
}
|
|
78
|
+
export function loadState(profile) {
|
|
79
|
+
const p = getStatePath(profile);
|
|
80
|
+
if (!existsSync(p))
|
|
81
|
+
return EMPTY_SUBMIT_STATE;
|
|
17
82
|
try {
|
|
18
|
-
return JSON.parse(readFileSync(p, "utf-8"));
|
|
83
|
+
return normalizeSubmitState(JSON.parse(readFileSync(p, "utf-8")));
|
|
19
84
|
}
|
|
20
85
|
catch {
|
|
21
|
-
return
|
|
86
|
+
return EMPTY_SUBMIT_STATE;
|
|
22
87
|
}
|
|
23
88
|
}
|
|
24
|
-
export function
|
|
89
|
+
export function saveState(state, profile) {
|
|
25
90
|
mkdirSync(getConfigDir(), { recursive: true });
|
|
26
|
-
writeFileSync(
|
|
91
|
+
writeFileSync(getStatePath(profile), JSON.stringify(state, null, 2) + "\n", "utf-8");
|
|
27
92
|
}
|
|
28
|
-
export function
|
|
29
|
-
|
|
93
|
+
export function stateKey(sourceTool, sessionId) {
|
|
94
|
+
return `${sourceTool}:${sessionId}`;
|
|
95
|
+
}
|
|
96
|
+
function readConfigFile() {
|
|
97
|
+
const p = getConfigPath();
|
|
30
98
|
if (!existsSync(p))
|
|
31
|
-
return
|
|
99
|
+
return null;
|
|
32
100
|
try {
|
|
33
101
|
return JSON.parse(readFileSync(p, "utf-8"));
|
|
34
102
|
}
|
|
35
103
|
catch {
|
|
36
|
-
return
|
|
104
|
+
return null;
|
|
37
105
|
}
|
|
38
106
|
}
|
|
39
|
-
|
|
107
|
+
function writeConfigStore(store) {
|
|
108
|
+
const profiles = normalizeProfiles(store.profiles);
|
|
109
|
+
const requestedDefault = normalizeProfile(store.defaultProfile);
|
|
110
|
+
const defaultProfile = profiles[requestedDefault]
|
|
111
|
+
? requestedDefault
|
|
112
|
+
: profiles[DEFAULT_PROFILE]
|
|
113
|
+
? DEFAULT_PROFILE
|
|
114
|
+
: requestedDefault;
|
|
40
115
|
mkdirSync(getConfigDir(), { recursive: true });
|
|
41
|
-
writeFileSync(
|
|
116
|
+
writeFileSync(getConfigPath(), JSON.stringify({ defaultProfile, profiles }, null, 2) + "\n", "utf-8");
|
|
42
117
|
}
|
|
43
|
-
|
|
44
|
-
|
|
118
|
+
function resolveProfileFromStore(store, profile) {
|
|
119
|
+
if (profile)
|
|
120
|
+
return normalizeProfile(profile);
|
|
121
|
+
if (process.env.TRACEMP_PROFILE)
|
|
122
|
+
return normalizeProfile(process.env.TRACEMP_PROFILE);
|
|
123
|
+
return normalizeProfile(store.defaultProfile);
|
|
124
|
+
}
|
|
125
|
+
function profileSuffix(profile) {
|
|
126
|
+
const resolvedProfile = normalizeProfile(profile);
|
|
127
|
+
return resolvedProfile === DEFAULT_PROFILE ? "" : `.${resolvedProfile}`;
|
|
128
|
+
}
|
|
129
|
+
function normalizeProfile(profile) {
|
|
130
|
+
const trimmed = (profile ?? "").trim().toLowerCase();
|
|
131
|
+
if (!trimmed)
|
|
132
|
+
return DEFAULT_PROFILE;
|
|
133
|
+
const normalized = trimmed
|
|
134
|
+
.replace(/[^a-z0-9_-]+/g, "-")
|
|
135
|
+
.replace(/^-+/, "")
|
|
136
|
+
.replace(/-+$/, "");
|
|
137
|
+
return normalized || DEFAULT_PROFILE;
|
|
138
|
+
}
|
|
139
|
+
function normalizeProfiles(value) {
|
|
140
|
+
if (!isRecord(value))
|
|
141
|
+
return {};
|
|
142
|
+
const profiles = {};
|
|
143
|
+
for (const [profile, config] of Object.entries(value)) {
|
|
144
|
+
if (!isStoredProfileConfig(config))
|
|
145
|
+
continue;
|
|
146
|
+
profiles[normalizeProfile(profile)] = normalizeStoredProfileConfig(config);
|
|
147
|
+
}
|
|
148
|
+
return profiles;
|
|
149
|
+
}
|
|
150
|
+
function normalizeStoredProfileConfig(config) {
|
|
151
|
+
return {
|
|
152
|
+
apiKey: config.apiKey,
|
|
153
|
+
serverUrl: config.serverUrl,
|
|
154
|
+
email: config.email,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function normalizeSubmitState(value) {
|
|
158
|
+
if (!isRecord(value)) {
|
|
159
|
+
return EMPTY_SUBMIT_STATE;
|
|
160
|
+
}
|
|
161
|
+
const chunks = isRecord(value.chunks)
|
|
162
|
+
? Object.fromEntries(Object.entries(value.chunks)
|
|
163
|
+
.filter((entry) => typeof entry[1] === "number"))
|
|
164
|
+
: {};
|
|
165
|
+
const sessions = isRecord(value.sessions)
|
|
166
|
+
? Object.fromEntries(Object.entries(value.sessions)
|
|
167
|
+
.filter((entry) => isSessionUploadState(entry[1])))
|
|
168
|
+
: {};
|
|
169
|
+
return {
|
|
170
|
+
version: 2,
|
|
171
|
+
chunks,
|
|
172
|
+
sessions,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function isRecord(value) {
|
|
176
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
177
|
+
}
|
|
178
|
+
function isStoredProfileConfig(value) {
|
|
179
|
+
return isRecord(value)
|
|
180
|
+
&& typeof value.apiKey === "string"
|
|
181
|
+
&& typeof value.serverUrl === "string"
|
|
182
|
+
&& typeof value.email === "string";
|
|
183
|
+
}
|
|
184
|
+
function isSessionUploadState(value) {
|
|
185
|
+
return isRecord(value)
|
|
186
|
+
&& (value.sourceTool === "claude_code" || value.sourceTool === "codex_cli" || value.sourceTool === "cursor")
|
|
187
|
+
&& typeof value.sourceSessionId === "string"
|
|
188
|
+
&& typeof value.locator === "string"
|
|
189
|
+
&& typeof value.nextChunkIndex === "number"
|
|
190
|
+
&& typeof value.openChunkStartTurn === "number"
|
|
191
|
+
&& typeof value.lastSeenTurnCount === "number"
|
|
192
|
+
&& (value.lastActivityAt === null || typeof value.lastActivityAt === "string")
|
|
193
|
+
&& (value.lastFlushedTurnId === null || typeof value.lastFlushedTurnId === "string");
|
|
194
|
+
}
|
|
195
|
+
export function migrateSessionUploadState(value) {
|
|
196
|
+
return {
|
|
197
|
+
...value,
|
|
198
|
+
// Backward compat: existing sessions assume all submitted chunks are confirmed
|
|
199
|
+
confirmedChunkIndex: value.confirmedChunkIndex ?? value.nextChunkIndex,
|
|
200
|
+
confirmedOpenChunkStartTurn: value.confirmedOpenChunkStartTurn ?? value.openChunkStartTurn,
|
|
201
|
+
unconfirmedSince: value.unconfirmedSince ?? null,
|
|
202
|
+
};
|
|
45
203
|
}
|
|
46
204
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CLI_NAME = "tracemp";
|
|
2
|
+
export declare const DEFAULT_PROFILE = "prod";
|
|
3
|
+
export declare const PROD_SERVER_URL = "https://trace-marketplace-api.fly.dev";
|
|
4
|
+
export declare const DEV_SERVER_URL = "http://localhost:3001";
|
|
5
|
+
export declare function defaultServerUrlForProfile(profile: string): string;
|
|
6
|
+
export declare function inferProfileFromServerUrl(serverUrl: string): string;
|
|
7
|
+
export declare function loginCommandForProfile(profile: string): string;
|
|
8
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,YAAY,CAAC;AAClC,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,eAAe,0CAA0C,CAAC;AACvE,eAAO,MAAM,cAAc,0BAA0B,CAAC;AAEtD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const CLI_NAME = "tracemp";
|
|
2
|
+
export const DEFAULT_PROFILE = "prod";
|
|
3
|
+
export const PROD_SERVER_URL = "https://trace-marketplace-api.fly.dev";
|
|
4
|
+
export const DEV_SERVER_URL = "http://localhost:3001";
|
|
5
|
+
export function defaultServerUrlForProfile(profile) {
|
|
6
|
+
return profile === "dev" ? DEV_SERVER_URL : PROD_SERVER_URL;
|
|
7
|
+
}
|
|
8
|
+
export function inferProfileFromServerUrl(serverUrl) {
|
|
9
|
+
return serverUrl === PROD_SERVER_URL ? DEFAULT_PROFILE : "dev";
|
|
10
|
+
}
|
|
11
|
+
export function loginCommandForProfile(profile) {
|
|
12
|
+
return profile === DEFAULT_PROFILE
|
|
13
|
+
? `${CLI_NAME} login`
|
|
14
|
+
: `${CLI_NAME} login --profile ${profile}`;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,uCAAuC,CAAC;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAEtD,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,OAAO,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,OAAO,SAAS,KAAK,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,OAAO,KAAK,eAAe;QAChC,CAAC,CAAC,GAAG,QAAQ,QAAQ;QACrB,CAAC,CAAC,GAAG,QAAQ,oBAAoB,OAAO,EAAE,CAAC;AAC/C,CAAC"}
|
package/dist/flush.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type NormalizedTrace } from "@tracemarketplace/shared";
|
|
2
|
+
import { ApiClient } from "./api-client.js";
|
|
3
|
+
import { loadState, type Config, type SessionUploadState, type TrackedSessionTool } from "./config.js";
|
|
4
|
+
export interface SessionSource {
|
|
5
|
+
tool: TrackedSessionTool;
|
|
6
|
+
locator: string;
|
|
7
|
+
label: string;
|
|
8
|
+
}
|
|
9
|
+
export interface PlannedUpload {
|
|
10
|
+
trace: NormalizedTrace;
|
|
11
|
+
nextState: SessionUploadState;
|
|
12
|
+
}
|
|
13
|
+
export interface SessionPlan {
|
|
14
|
+
observedState: SessionUploadState;
|
|
15
|
+
uploads: PlannedUpload[];
|
|
16
|
+
pending: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionFlushResult {
|
|
19
|
+
source: SessionSource;
|
|
20
|
+
sessionKey: string | null;
|
|
21
|
+
uploadedChunks: number;
|
|
22
|
+
duplicateChunks: number;
|
|
23
|
+
pending: boolean;
|
|
24
|
+
payoutCents: number;
|
|
25
|
+
turnCount: number;
|
|
26
|
+
migratedLegacyState: boolean;
|
|
27
|
+
error?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface FlushResult {
|
|
30
|
+
processedSessions: number;
|
|
31
|
+
uploadedChunks: number;
|
|
32
|
+
duplicateChunks: number;
|
|
33
|
+
pendingSessions: number;
|
|
34
|
+
payoutCents: number;
|
|
35
|
+
results: SessionFlushResult[];
|
|
36
|
+
}
|
|
37
|
+
export declare function collectIdleSessionSources(sessions: Record<string, SessionUploadState>, now?: Date): SessionSource[];
|
|
38
|
+
export declare function verifyUnconfirmedChunks(state: ReturnType<typeof loadState>, client: ApiClient, now: Date): Promise<void>;
|
|
39
|
+
export declare function flushTrackedSessions(config: Config, sources: SessionSource[], opts?: {
|
|
40
|
+
includeIdleTracked?: boolean;
|
|
41
|
+
now?: Date;
|
|
42
|
+
prefetchedTraces?: Map<string, NormalizedTrace>;
|
|
43
|
+
}): Promise<FlushResult>;
|
|
44
|
+
export declare function planSessionUploads(trace: NormalizedTrace, cursor: SessionUploadState, now?: Date): SessionPlan;
|
|
45
|
+
export declare function createFreshSessionState(source: SessionSource, trace: NormalizedTrace): SessionUploadState;
|
|
46
|
+
export declare function migrateLegacySessionState(source: SessionSource, trace: NormalizedTrace, legacyChunkIndex: number): SessionUploadState;
|
|
47
|
+
export declare function buildFileSessionSource(tool: "claude_code" | "codex_cli", filePath: string): SessionSource;
|
|
48
|
+
export declare function buildCursorSessionSource(sessionId: string): SessionSource;
|
|
49
|
+
//# sourceMappingURL=flush.d.ts.map
|
|
@@ -0,0 +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,CAAA;CAAO,GACvG,OAAO,CAAC,WAAW,CAAC,CAqCtB;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;AA8SD,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"}
|