fleetlens 0.16.1 → 0.16.3
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/app/apps/web/.next/BUILD_ID +1 -1
- package/app/apps/web/.next/build-manifest.json +3 -3
- package/app/apps/web/.next/prerender-manifest.json +3 -3
- package/app/apps/web/.next/server/app/_global-error.html +1 -1
- package/app/apps/web/.next/server/app/_global-error.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/agent/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/day/[date]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/day/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/digest/[date]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/digest/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/insights/[key]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/insights/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/parallelism/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/print/[key]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/runs/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/team/onboarding/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/team/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/usage/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/chunks/[root-of-the-server]__02faosk._.js +3 -3
- package/app/apps/web/.next/server/chunks/[root-of-the-server]__09cgmam._.js +2 -2
- package/app/apps/web/.next/server/chunks/[root-of-the-server]__0tk8p3d._.js +2 -2
- package/app/apps/web/.next/server/chunks/[root-of-the-server]__0u6pamj._.js +2 -2
- package/app/apps/web/.next/server/chunks/[root-of-the-server]__12jomao._.js +2 -2
- package/app/apps/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0sr4wr_.js +1 -1
- package/app/apps/web/.next/server/chunks/packages_parser_dist_06d9se1._.js +1 -1
- package/app/apps/web/.next/server/chunks/packages_parser_dist_10ihc3~._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/_0k8yioi._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_0epqfet._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_app_sessions_[id]_session-view_tsx_0-9t5~.._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_app_sessions_sessions-grid_tsx_0bri5x.._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0n7_p1d._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0nb5_-s._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/packages_parser_dist_0mx_509._.js +1 -1
- package/app/apps/web/.next/server/middleware-build-manifest.js +3 -3
- package/app/apps/web/.next/server/middleware-manifest.json +5 -5
- package/app/apps/web/.next/server/pages/500.html +1 -1
- package/app/apps/web/.next/server/server-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/app/apps/web/.next/static/chunks/{07bzlfv97o1ig.js → 0p5ee8wje3zi~.js} +1 -1
- package/app/apps/web/.next/static/chunks/0pt-1~k9ei92l.js +14 -0
- package/app/apps/web/.next/static/chunks/{0awkd5df28gvj.js → 0~uugvb4izjd2.js} +1 -1
- package/app/apps/web/app/sessions/[id]/session-view.tsx +6 -2
- package/app/apps/web/app/sessions/sessions-grid.tsx +5 -1
- package/app/apps/web/app/usage/page.tsx +27 -1
- package/app/apps/web/lib/agent/run.ts +24 -5
- package/app/apps/web/lib/changelog-data.generated.ts +1 -1
- package/app/apps/web/package.json +1 -1
- package/app/apps/web/tsconfig.tsbuildinfo +1 -1
- package/dist/daemon-worker.js +182 -34
- package/dist/index.js +187 -41
- package/menubar/FleetlensMenubar.app/Contents/Info.plist +2 -2
- package/menubar/FleetlensMenubar.app/Contents/MacOS/FleetlensMenubar +0 -0
- package/package.json +1 -1
- package/app/apps/web/.next/static/chunks/0at6brbse8wn2.js +0 -14
- /package/app/apps/web/.next/static/{d1mwRtSMG-R7wb8o9KxM3 → DoQvoHgeMQRMU3tniT_DK}/_buildManifest.js +0 -0
- /package/app/apps/web/.next/static/{d1mwRtSMG-R7wb8o9KxM3 → DoQvoHgeMQRMU3tniT_DK}/_clientMiddlewareManifest.js +0 -0
- /package/app/apps/web/.next/static/{d1mwRtSMG-R7wb8o9KxM3 → DoQvoHgeMQRMU3tniT_DK}/_ssgManifest.js +0 -0
package/dist/index.js
CHANGED
|
@@ -2853,6 +2853,11 @@ function parseRollout(file, lines) {
|
|
|
2853
2853
|
let lastUserPreview;
|
|
2854
2854
|
let lastAgentPreview;
|
|
2855
2855
|
const tsMs = [];
|
|
2856
|
+
let threadSource;
|
|
2857
|
+
let rootSessionId;
|
|
2858
|
+
let parentThreadId;
|
|
2859
|
+
let agentNickname;
|
|
2860
|
+
let agentPath;
|
|
2856
2861
|
let idx = 0;
|
|
2857
2862
|
for (const line of lines) {
|
|
2858
2863
|
if (typeof line !== "object" || line === null)
|
|
@@ -2873,6 +2878,16 @@ function parseRollout(file, lines) {
|
|
|
2873
2878
|
if (type === "session_meta") {
|
|
2874
2879
|
if (typeof payload.cwd === "string")
|
|
2875
2880
|
cwd = payload.cwd;
|
|
2881
|
+
if (threadSource === void 0 && typeof payload.thread_source === "string")
|
|
2882
|
+
threadSource = payload.thread_source;
|
|
2883
|
+
if (rootSessionId === void 0 && typeof payload.session_id === "string")
|
|
2884
|
+
rootSessionId = payload.session_id;
|
|
2885
|
+
if (parentThreadId === void 0 && typeof payload.parent_thread_id === "string")
|
|
2886
|
+
parentThreadId = payload.parent_thread_id;
|
|
2887
|
+
if (agentNickname === void 0 && typeof payload.agent_nickname === "string")
|
|
2888
|
+
agentNickname = payload.agent_nickname;
|
|
2889
|
+
if (agentPath === void 0 && typeof payload.agent_path === "string")
|
|
2890
|
+
agentPath = payload.agent_path;
|
|
2876
2891
|
continue;
|
|
2877
2892
|
}
|
|
2878
2893
|
if (type === "turn_context") {
|
|
@@ -3076,7 +3091,7 @@ function parseRollout(file, lines) {
|
|
|
3076
3091
|
airTimeMs,
|
|
3077
3092
|
activeSegments
|
|
3078
3093
|
};
|
|
3079
|
-
return { meta, events };
|
|
3094
|
+
return { meta, events, threadSource, rootSessionId, parentThreadId, agentNickname, agentPath };
|
|
3080
3095
|
}
|
|
3081
3096
|
function numberOf(v) {
|
|
3082
3097
|
return typeof v === "number" && Number.isFinite(v) ? v : void 0;
|
|
@@ -3114,28 +3129,112 @@ function clearCodexCaches() {
|
|
|
3114
3129
|
metaCache2.clear();
|
|
3115
3130
|
detailCache2.clear();
|
|
3116
3131
|
}
|
|
3117
|
-
async function
|
|
3118
|
-
const root = opts.root ?? DEFAULT_CODEX_ROOT;
|
|
3132
|
+
async function scanAllCodex(root) {
|
|
3119
3133
|
const files = await listRolloutFiles(root);
|
|
3120
3134
|
const out = [];
|
|
3121
3135
|
for (const file of files) {
|
|
3122
3136
|
const cached = metaCache2.get(file.filePath);
|
|
3123
3137
|
if (cached && cached.mtimeMs === file.mtimeMs && cached.sizeBytes === file.sizeBytes) {
|
|
3124
|
-
out.push(
|
|
3138
|
+
out.push({
|
|
3139
|
+
file,
|
|
3140
|
+
meta: cached.meta,
|
|
3141
|
+
threadSource: cached.threadSource,
|
|
3142
|
+
rootSessionId: cached.rootSessionId,
|
|
3143
|
+
parentThreadId: cached.parentThreadId,
|
|
3144
|
+
agentNickname: cached.agentNickname,
|
|
3145
|
+
agentPath: cached.agentPath
|
|
3146
|
+
});
|
|
3125
3147
|
continue;
|
|
3126
3148
|
}
|
|
3127
3149
|
try {
|
|
3128
3150
|
const lines = await readJsonl(file.filePath);
|
|
3129
|
-
const
|
|
3151
|
+
const parsed = parseRollout(file, lines);
|
|
3130
3152
|
metaCache2.set(file.filePath, {
|
|
3131
|
-
meta,
|
|
3153
|
+
meta: parsed.meta,
|
|
3132
3154
|
mtimeMs: file.mtimeMs,
|
|
3133
|
-
sizeBytes: file.sizeBytes
|
|
3155
|
+
sizeBytes: file.sizeBytes,
|
|
3156
|
+
threadSource: parsed.threadSource,
|
|
3157
|
+
rootSessionId: parsed.rootSessionId,
|
|
3158
|
+
parentThreadId: parsed.parentThreadId,
|
|
3159
|
+
agentNickname: parsed.agentNickname,
|
|
3160
|
+
agentPath: parsed.agentPath
|
|
3161
|
+
});
|
|
3162
|
+
out.push({
|
|
3163
|
+
file,
|
|
3164
|
+
meta: parsed.meta,
|
|
3165
|
+
threadSource: parsed.threadSource,
|
|
3166
|
+
rootSessionId: parsed.rootSessionId,
|
|
3167
|
+
parentThreadId: parsed.parentThreadId,
|
|
3168
|
+
agentNickname: parsed.agentNickname,
|
|
3169
|
+
agentPath: parsed.agentPath
|
|
3134
3170
|
});
|
|
3135
|
-
out.push(meta);
|
|
3136
3171
|
} catch {
|
|
3137
3172
|
}
|
|
3138
3173
|
}
|
|
3174
|
+
return out;
|
|
3175
|
+
}
|
|
3176
|
+
function buildSubagentRun(entry, parentStartMs) {
|
|
3177
|
+
const meta = entry.meta;
|
|
3178
|
+
const startMs = meta.firstTimestamp ? Date.parse(meta.firstTimestamp) : void 0;
|
|
3179
|
+
const endMs = meta.lastTimestamp ? Date.parse(meta.lastTimestamp) : void 0;
|
|
3180
|
+
const startOk = startMs !== void 0 && Number.isFinite(startMs) ? startMs : void 0;
|
|
3181
|
+
const endOk = endMs !== void 0 && Number.isFinite(endMs) ? endMs : void 0;
|
|
3182
|
+
return {
|
|
3183
|
+
agentId: meta.id,
|
|
3184
|
+
agentType: entry.agentNickname ?? entry.agentPath ?? "subagent",
|
|
3185
|
+
description: entry.agentPath ?? entry.agentNickname ?? meta.id,
|
|
3186
|
+
startMs: startOk,
|
|
3187
|
+
endMs: endOk,
|
|
3188
|
+
durationMs: meta.durationMs,
|
|
3189
|
+
startTOffsetMs: parentStartMs !== void 0 && startOk !== void 0 ? Math.max(0, startOk - parentStartMs) : void 0,
|
|
3190
|
+
endTOffsetMs: parentStartMs !== void 0 && endOk !== void 0 ? Math.max(0, endOk - parentStartMs) : void 0,
|
|
3191
|
+
eventCount: meta.eventCount,
|
|
3192
|
+
totalUsage: meta.totalUsage,
|
|
3193
|
+
model: meta.model,
|
|
3194
|
+
toolCallCount: meta.toolCallCount,
|
|
3195
|
+
finalPreview: meta.lastAgentPreview
|
|
3196
|
+
};
|
|
3197
|
+
}
|
|
3198
|
+
async function listCodexSessions(opts = {}) {
|
|
3199
|
+
const root = opts.root ?? DEFAULT_CODEX_ROOT;
|
|
3200
|
+
const all = await scanAllCodex(root);
|
|
3201
|
+
const subagentsByRoot = /* @__PURE__ */ new Map();
|
|
3202
|
+
for (const entry of all) {
|
|
3203
|
+
if (entry.threadSource !== "subagent" || !entry.rootSessionId)
|
|
3204
|
+
continue;
|
|
3205
|
+
const list = subagentsByRoot.get(entry.rootSessionId);
|
|
3206
|
+
if (list)
|
|
3207
|
+
list.push(entry);
|
|
3208
|
+
else
|
|
3209
|
+
subagentsByRoot.set(entry.rootSessionId, [entry]);
|
|
3210
|
+
}
|
|
3211
|
+
const out = [];
|
|
3212
|
+
for (const entry of all) {
|
|
3213
|
+
if (entry.threadSource === "subagent")
|
|
3214
|
+
continue;
|
|
3215
|
+
const children = subagentsByRoot.get(entry.meta.id);
|
|
3216
|
+
if (!children || children.length === 0) {
|
|
3217
|
+
out.push(entry.meta);
|
|
3218
|
+
continue;
|
|
3219
|
+
}
|
|
3220
|
+
const merged = {
|
|
3221
|
+
...entry.meta,
|
|
3222
|
+
spawnedAgentCount: children.length,
|
|
3223
|
+
totalUsage: {
|
|
3224
|
+
input: entry.meta.totalUsage.input + children.reduce((s, c) => s + c.meta.totalUsage.input, 0),
|
|
3225
|
+
output: entry.meta.totalUsage.output + children.reduce((s, c) => s + c.meta.totalUsage.output, 0),
|
|
3226
|
+
cacheRead: entry.meta.totalUsage.cacheRead + children.reduce((s, c) => s + c.meta.totalUsage.cacheRead, 0),
|
|
3227
|
+
cacheWrite: entry.meta.totalUsage.cacheWrite + children.reduce((s, c) => s + c.meta.totalUsage.cacheWrite, 0)
|
|
3228
|
+
},
|
|
3229
|
+
toolCallCount: (entry.meta.toolCallCount ?? 0) + children.reduce((s, c) => s + (c.meta.toolCallCount ?? 0), 0)
|
|
3230
|
+
};
|
|
3231
|
+
for (const c of children) {
|
|
3232
|
+
if (c.meta.lastTimestamp && (!merged.lastTimestamp || c.meta.lastTimestamp > merged.lastTimestamp)) {
|
|
3233
|
+
merged.lastTimestamp = c.meta.lastTimestamp;
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
out.push(merged);
|
|
3237
|
+
}
|
|
3139
3238
|
out.sort((a, b) => (b.firstTimestamp ?? "").localeCompare(a.firstTimestamp ?? ""));
|
|
3140
3239
|
if (opts.limit !== void 0)
|
|
3141
3240
|
return out.slice(0, opts.limit);
|
|
@@ -3143,17 +3242,41 @@ async function listCodexSessions(opts = {}) {
|
|
|
3143
3242
|
}
|
|
3144
3243
|
async function getCodexSession(id, opts = {}) {
|
|
3145
3244
|
const root = opts.root ?? DEFAULT_CODEX_ROOT;
|
|
3146
|
-
const
|
|
3147
|
-
const
|
|
3148
|
-
if (!
|
|
3149
|
-
|
|
3245
|
+
const all = await scanAllCodex(root);
|
|
3246
|
+
const rootEntry = all.find((a) => a.meta.id === id && a.threadSource !== "subagent");
|
|
3247
|
+
if (!rootEntry) {
|
|
3248
|
+
const direct = all.find((a) => a.meta.id === id);
|
|
3249
|
+
if (!direct)
|
|
3250
|
+
return null;
|
|
3251
|
+
const cached2 = detailCache2.get(direct.file.filePath);
|
|
3252
|
+
if (cached2 && cached2.mtimeMs === direct.file.mtimeMs && cached2.sizeBytes === direct.file.sizeBytes) {
|
|
3253
|
+
return cached2.detail;
|
|
3254
|
+
}
|
|
3255
|
+
const lines2 = await readJsonl(direct.file.filePath);
|
|
3256
|
+
const { meta: meta2, events: events2 } = parseRollout(direct.file, lines2);
|
|
3257
|
+
const detail2 = { ...meta2, events: events2 };
|
|
3258
|
+
detailCache2.set(direct.file.filePath, {
|
|
3259
|
+
detail: detail2,
|
|
3260
|
+
mtimeMs: direct.file.mtimeMs,
|
|
3261
|
+
sizeBytes: direct.file.sizeBytes
|
|
3262
|
+
});
|
|
3263
|
+
return detail2;
|
|
3264
|
+
}
|
|
3265
|
+
const file = rootEntry.file;
|
|
3150
3266
|
const cached = detailCache2.get(file.filePath);
|
|
3151
3267
|
if (cached && cached.mtimeMs === file.mtimeMs && cached.sizeBytes === file.sizeBytes) {
|
|
3152
3268
|
return cached.detail;
|
|
3153
3269
|
}
|
|
3154
3270
|
const lines = await readJsonl(file.filePath);
|
|
3155
3271
|
const { meta, events } = parseRollout(file, lines);
|
|
3156
|
-
const
|
|
3272
|
+
const children = all.filter((a) => a.threadSource === "subagent" && a.rootSessionId === id);
|
|
3273
|
+
const parentStartMs = meta.firstTimestamp ? Date.parse(meta.firstTimestamp) : void 0;
|
|
3274
|
+
const subagents = children.map((c) => buildSubagentRun(c, parentStartMs)).sort((a, b) => (a.startMs ?? 0) - (b.startMs ?? 0));
|
|
3275
|
+
const detail = {
|
|
3276
|
+
...meta,
|
|
3277
|
+
events,
|
|
3278
|
+
...subagents.length > 0 ? { subagents, spawnedAgentCount: subagents.length } : {}
|
|
3279
|
+
};
|
|
3157
3280
|
detailCache2.set(file.filePath, {
|
|
3158
3281
|
detail,
|
|
3159
3282
|
mtimeMs: file.mtimeMs,
|
|
@@ -3164,6 +3287,15 @@ async function getCodexSession(id, opts = {}) {
|
|
|
3164
3287
|
function hasUsableRateLimitWindows(primary, secondary) {
|
|
3165
3288
|
return numberOf(primary?.used_percent) !== void 0 || numberOf(secondary?.used_percent) !== void 0;
|
|
3166
3289
|
}
|
|
3290
|
+
function normalizeCodexWindow(raw, nowMs) {
|
|
3291
|
+
const usedPercent = numberOf(raw?.used_percent);
|
|
3292
|
+
const resetUnix = numberOf(raw?.resets_at);
|
|
3293
|
+
const expired = resetUnix !== void 0 && nowMs > resetUnix * 1e3;
|
|
3294
|
+
return {
|
|
3295
|
+
utilization: usedPercent === void 0 ? null : expired ? 0 : usedPercent,
|
|
3296
|
+
resets_at: resetUnix !== void 0 ? new Date(resetUnix * 1e3).toISOString() : null
|
|
3297
|
+
};
|
|
3298
|
+
}
|
|
3167
3299
|
async function getLatestCodexUsage(opts = {}) {
|
|
3168
3300
|
const root = opts.root ?? DEFAULT_CODEX_ROOT;
|
|
3169
3301
|
const files = await listRolloutFiles(root);
|
|
@@ -3189,23 +3321,34 @@ async function getLatestCodexUsage(opts = {}) {
|
|
|
3189
3321
|
const secondary = rl.secondary ?? null;
|
|
3190
3322
|
if (!hasUsableRateLimitWindows(primary, secondary))
|
|
3191
3323
|
continue;
|
|
3192
|
-
const fivePct = numberOf(primary?.used_percent);
|
|
3193
|
-
const sevenPct = numberOf(secondary?.used_percent);
|
|
3194
|
-
const fiveResetUnix = numberOf(primary?.resets_at);
|
|
3195
|
-
const sevenResetUnix = numberOf(secondary?.resets_at);
|
|
3196
3324
|
const planType = typeof rl.plan_type === "string" ? rl.plan_type : null;
|
|
3197
3325
|
const nowMs = Date.now();
|
|
3198
|
-
|
|
3199
|
-
|
|
3326
|
+
let fiveHour = null;
|
|
3327
|
+
let sevenDay = null;
|
|
3328
|
+
for (const candidate of [primary, secondary]) {
|
|
3329
|
+
if (!candidate)
|
|
3330
|
+
continue;
|
|
3331
|
+
const windowMinutes = numberOf(candidate.window_minutes);
|
|
3332
|
+
if (windowMinutes === FIVE_HOUR_WINDOW_MINUTES) {
|
|
3333
|
+
fiveHour = normalizeCodexWindow(candidate, nowMs);
|
|
3334
|
+
} else if (windowMinutes === SEVEN_DAY_WINDOW_MINUTES) {
|
|
3335
|
+
sevenDay = normalizeCodexWindow(candidate, nowMs);
|
|
3336
|
+
}
|
|
3337
|
+
}
|
|
3338
|
+
const unknownWindows = [primary, secondary].filter((candidate) => candidate !== null && numberOf(candidate.window_minutes) === void 0);
|
|
3339
|
+
if (!fiveHour && !sevenDay) {
|
|
3340
|
+
fiveHour = primary ? normalizeCodexWindow(primary, nowMs) : null;
|
|
3341
|
+
sevenDay = secondary ? normalizeCodexWindow(secondary, nowMs) : null;
|
|
3342
|
+
} else if (unknownWindows.length === 1) {
|
|
3343
|
+
const inferred = normalizeCodexWindow(unknownWindows[0], nowMs);
|
|
3344
|
+
if (!fiveHour)
|
|
3345
|
+
fiveHour = inferred;
|
|
3346
|
+
else if (!sevenDay)
|
|
3347
|
+
sevenDay = inferred;
|
|
3348
|
+
}
|
|
3200
3349
|
return {
|
|
3201
|
-
five_hour: {
|
|
3202
|
-
|
|
3203
|
-
resets_at: fiveResetUnix !== void 0 ? new Date(fiveResetUnix * 1e3).toISOString() : null
|
|
3204
|
-
},
|
|
3205
|
-
seven_day: {
|
|
3206
|
-
utilization: sevenExpired ? 0 : sevenPct ?? null,
|
|
3207
|
-
resets_at: sevenResetUnix !== void 0 ? new Date(sevenResetUnix * 1e3).toISOString() : null
|
|
3208
|
-
},
|
|
3350
|
+
five_hour: fiveHour ?? { utilization: null, resets_at: null },
|
|
3351
|
+
seven_day: sevenDay ?? { utilization: null, resets_at: null },
|
|
3209
3352
|
plan_type: planType,
|
|
3210
3353
|
source_path: file.filePath
|
|
3211
3354
|
};
|
|
@@ -3219,7 +3362,7 @@ function codexSessionLocalDay(meta) {
|
|
|
3219
3362
|
const ms = Date.parse(meta.firstTimestamp);
|
|
3220
3363
|
return Number.isFinite(ms) ? toLocalDay(ms) : void 0;
|
|
3221
3364
|
}
|
|
3222
|
-
var DEFAULT_CODEX_ROOT, ROLLOUT_RE, IDLE_GAP_MS, metaCache2, detailCache2;
|
|
3365
|
+
var DEFAULT_CODEX_ROOT, ROLLOUT_RE, IDLE_GAP_MS, metaCache2, detailCache2, FIVE_HOUR_WINDOW_MINUTES, SEVEN_DAY_WINDOW_MINUTES;
|
|
3223
3366
|
var init_codex = __esm({
|
|
3224
3367
|
"../parser/dist/codex.js"() {
|
|
3225
3368
|
"use strict";
|
|
@@ -3231,6 +3374,8 @@ var init_codex = __esm({
|
|
|
3231
3374
|
IDLE_GAP_MS = 3 * 60 * 1e3;
|
|
3232
3375
|
metaCache2 = /* @__PURE__ */ new Map();
|
|
3233
3376
|
detailCache2 = /* @__PURE__ */ new Map();
|
|
3377
|
+
FIVE_HOUR_WINDOW_MINUTES = 5 * 60;
|
|
3378
|
+
SEVEN_DAY_WINDOW_MINUTES = 7 * 24 * 60;
|
|
3234
3379
|
}
|
|
3235
3380
|
});
|
|
3236
3381
|
|
|
@@ -5576,7 +5721,8 @@ var init_fs = __esm({
|
|
|
5576
5721
|
captured_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5577
5722
|
agent: "codex",
|
|
5578
5723
|
five_hour: w.five_hour,
|
|
5579
|
-
seven_day: w.seven_day
|
|
5724
|
+
seven_day: w.seven_day,
|
|
5725
|
+
plan_type: w.plan_type
|
|
5580
5726
|
};
|
|
5581
5727
|
}
|
|
5582
5728
|
};
|
|
@@ -5663,9 +5809,9 @@ function onDiskVersion() {
|
|
|
5663
5809
|
try {
|
|
5664
5810
|
const here = dirname3(fileURLToPath(import.meta.url));
|
|
5665
5811
|
const pkg = JSON.parse(readFileSync5(join3(here, "..", "package.json"), "utf8"));
|
|
5666
|
-
return pkg.version ?? "0.16.
|
|
5812
|
+
return pkg.version ?? "0.16.3";
|
|
5667
5813
|
} catch {
|
|
5668
|
-
return "0.16.
|
|
5814
|
+
return "0.16.3";
|
|
5669
5815
|
}
|
|
5670
5816
|
}
|
|
5671
5817
|
function getServerStatus() {
|
|
@@ -5677,7 +5823,7 @@ function getServerStatus() {
|
|
|
5677
5823
|
return { running: false };
|
|
5678
5824
|
}
|
|
5679
5825
|
function isServerStale(status2) {
|
|
5680
|
-
return status2.running === true && status2.version !== "0.16.
|
|
5826
|
+
return status2.running === true && status2.version !== "0.16.3";
|
|
5681
5827
|
}
|
|
5682
5828
|
async function ensureCurrentServer(opts = {}) {
|
|
5683
5829
|
const status2 = getServerStatus();
|
|
@@ -6116,9 +6262,9 @@ Installed: ${PACKAGE_NAME}@${verify.installedVersion} at ${verify.installedPath
|
|
|
6116
6262
|
console.warn(
|
|
6117
6263
|
` \u2022 reinstall in the correct Node env: 'npm install -g ${PACKAGE_NAME}@latest'`
|
|
6118
6264
|
);
|
|
6119
|
-
} else if (verify.installedVersion !== "0.16.
|
|
6265
|
+
} else if (verify.installedVersion !== "0.16.3") {
|
|
6120
6266
|
console.log(
|
|
6121
|
-
` \u2192 This process is still running ${"0.16.
|
|
6267
|
+
` \u2192 This process is still running ${"0.16.3"}. Next invocation will use ${verify.installedVersion}.`
|
|
6122
6268
|
);
|
|
6123
6269
|
}
|
|
6124
6270
|
}
|
|
@@ -6153,14 +6299,14 @@ async function getUpdateAvailability() {
|
|
|
6153
6299
|
if (isDevMode()) return null;
|
|
6154
6300
|
const latest = await fetchLatestVersion();
|
|
6155
6301
|
if (latest === null) return {
|
|
6156
|
-
current: "0.16.
|
|
6302
|
+
current: "0.16.3",
|
|
6157
6303
|
latest: null,
|
|
6158
6304
|
updateAvailable: false
|
|
6159
6305
|
};
|
|
6160
6306
|
return {
|
|
6161
|
-
current: "0.16.
|
|
6307
|
+
current: "0.16.3",
|
|
6162
6308
|
latest,
|
|
6163
|
-
updateAvailable: shouldUpdate("0.16.
|
|
6309
|
+
updateAvailable: shouldUpdate("0.16.3", latest)
|
|
6164
6310
|
};
|
|
6165
6311
|
}
|
|
6166
6312
|
async function checkForUpdate() {
|
|
@@ -6250,7 +6396,7 @@ async function restartServices(state) {
|
|
|
6250
6396
|
}
|
|
6251
6397
|
async function forceUpdate() {
|
|
6252
6398
|
const latest = await fetchLatestVersion();
|
|
6253
|
-
const current = "0.16.
|
|
6399
|
+
const current = "0.16.3";
|
|
6254
6400
|
if (latest === null) {
|
|
6255
6401
|
console.error("Could not reach npm registry. Check your network.");
|
|
6256
6402
|
process.exit(1);
|
|
@@ -6663,7 +6809,7 @@ async function status() {
|
|
|
6663
6809
|
console.log(`Server: running on ${url} (PID ${server.pid}, v${ver})`);
|
|
6664
6810
|
if (isServerStale(server)) {
|
|
6665
6811
|
console.log(
|
|
6666
|
-
` \u26A0 serving stale ${ver} (CLI is ${"0.16.
|
|
6812
|
+
` \u26A0 serving stale ${ver} (CLI is ${"0.16.3"}) \u2014 run 'fleetlens start' to restart on the current version`
|
|
6667
6813
|
);
|
|
6668
6814
|
}
|
|
6669
6815
|
} else {
|
|
@@ -18806,7 +18952,7 @@ function buildIngestPayload(inputs) {
|
|
|
18806
18952
|
return {
|
|
18807
18953
|
ingestId: randomUUID2(),
|
|
18808
18954
|
observedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
18809
|
-
cliVersion: "0.16.
|
|
18955
|
+
cliVersion: "0.16.3",
|
|
18810
18956
|
...richRollup || inputs.enrichedExtras || inputs.artifactSignals ? { schemaVersion: RICH_ROLLUP_SCHEMA_VERSION } : {},
|
|
18811
18957
|
...inputs.rollup ? { dailyRollup: inputs.rollup } : {},
|
|
18812
18958
|
...richRollup ? { richRollup } : {},
|
|
@@ -20849,7 +20995,7 @@ async function main() {
|
|
|
20849
20995
|
case "version":
|
|
20850
20996
|
case "--version":
|
|
20851
20997
|
case "-v":
|
|
20852
|
-
console.log(`fleetlens ${"0.16.
|
|
20998
|
+
console.log(`fleetlens ${"0.16.3"}`);
|
|
20853
20999
|
break;
|
|
20854
21000
|
case "help":
|
|
20855
21001
|
case "--help":
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<key>CFBundleName</key><string>Fleetlens</string>
|
|
11
11
|
<key>CFBundleDisplayName</key><string>Fleetlens Menu Bar</string>
|
|
12
12
|
<key>CFBundlePackageType</key><string>APPL</string>
|
|
13
|
-
<key>CFBundleShortVersionString</key><string>0.16.
|
|
14
|
-
<key>CFBundleVersion</key><string>0.16.
|
|
13
|
+
<key>CFBundleShortVersionString</key><string>0.16.3</string>
|
|
14
|
+
<key>CFBundleVersion</key><string>0.16.3</string>
|
|
15
15
|
<key>LSApplicationCategoryType</key><string>public.app-category.developer-tools</string>
|
|
16
16
|
<key>LSMinimumSystemVersion</key><string>14.0</string>
|
|
17
17
|
<key>LSUIElement</key><true/>
|
|
Binary file
|