fleetlens 0.6.0 → 0.6.2
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/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/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/usage/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/chunks/node_modules_next_036my~r._.js +6 -6
- package/app/apps/web/.next/server/chunks/packages_entries_dist_node_0bckr7-.js +11 -11
- package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0-1_njm._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0wwa6gh._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/_0xu2pvc._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_app_settings_ai-features-form_tsx_01p699p._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/packages_entries_dist_node_0_271yr.js +1 -1
- package/app/apps/web/.next/server/middleware-build-manifest.js +3 -3
- 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/04m3slg_5ph02.js +1 -0
- package/app/apps/web/.next/static/chunks/0wfbj5zr~az.z.css +1 -0
- package/app/apps/web/app/api/settings/route.ts +8 -3
- package/app/apps/web/app/settings/ai-features-form.tsx +19 -1
- package/app/apps/web/app/settings/page.tsx +4 -1
- package/app/apps/web/lib/auto-week-fire.ts +1 -37
- package/app/apps/web/lib/validate-settings.ts +4 -1
- package/app/apps/web/package.json +1 -1
- package/app/apps/web/tsconfig.tsbuildinfo +1 -1
- package/dist/daemon-worker.js +7479 -74
- package/dist/index.js +97 -58
- package/package.json +2 -4
- package/app/apps/web/.next/static/chunks/0-yc2_pjxwwuq.js +0 -1
- package/app/apps/web/.next/static/chunks/0fs3gxea5h0s3.css +0 -1
- /package/app/apps/web/.next/static/{8tTWPvUhtatZEoocIhamh → MLK3PKEm3q_E_QuKH5kOz}/_buildManifest.js +0 -0
- /package/app/apps/web/.next/static/{8tTWPvUhtatZEoocIhamh → MLK3PKEm3q_E_QuKH5kOz}/_clientMiddlewareManifest.js +0 -0
- /package/app/apps/web/.next/static/{8tTWPvUhtatZEoocIhamh → MLK3PKEm3q_E_QuKH5kOz}/_ssgManifest.js +0 -0
package/dist/index.js
CHANGED
|
@@ -454,9 +454,9 @@ Installed: ${PACKAGE_NAME}@${verify.installedVersion} at ${verify.installedPath
|
|
|
454
454
|
console.warn(
|
|
455
455
|
` \u2022 reinstall in the correct Node env: 'npm install -g ${PACKAGE_NAME}@latest'`
|
|
456
456
|
);
|
|
457
|
-
} else if (verify.installedVersion !== "0.6.
|
|
457
|
+
} else if (verify.installedVersion !== "0.6.2") {
|
|
458
458
|
console.log(
|
|
459
|
-
` \u2192 This process is still running ${"0.6.
|
|
459
|
+
` \u2192 This process is still running ${"0.6.2"}. Next invocation will use ${verify.installedVersion}.`
|
|
460
460
|
);
|
|
461
461
|
}
|
|
462
462
|
}
|
|
@@ -492,7 +492,7 @@ async function checkForUpdate() {
|
|
|
492
492
|
if (process.env.__FLEETLENS_UPDATED === "1" || process.env.__CCLENS_UPDATED === "1") return;
|
|
493
493
|
const latest = await fetchLatestVersion();
|
|
494
494
|
if (latest === null) return;
|
|
495
|
-
const current = "0.6.
|
|
495
|
+
const current = "0.6.2";
|
|
496
496
|
if (!shouldUpdate(current, latest)) return;
|
|
497
497
|
console.log(`Updating ${PACKAGE_NAME} ${current} \u2192 ${latest}...`);
|
|
498
498
|
await stopRunningServices();
|
|
@@ -574,7 +574,7 @@ async function restartServices(state) {
|
|
|
574
574
|
}
|
|
575
575
|
async function forceUpdate() {
|
|
576
576
|
const latest = await fetchLatestVersion();
|
|
577
|
-
const current = "0.6.
|
|
577
|
+
const current = "0.6.2";
|
|
578
578
|
if (latest === null) {
|
|
579
579
|
console.error("Could not reach npm registry. Check your network.");
|
|
580
580
|
process.exit(1);
|
|
@@ -8697,7 +8697,8 @@ function toDisk(s) {
|
|
|
8697
8697
|
ai_features: {
|
|
8698
8698
|
enabled: s.ai_features.enabled,
|
|
8699
8699
|
model: s.ai_features.model,
|
|
8700
|
-
monthly_budget_usd: s.ai_features.monthlyBudgetUsd
|
|
8700
|
+
monthly_budget_usd: s.ai_features.monthlyBudgetUsd,
|
|
8701
|
+
auto_backfill_last_week: s.ai_features.autoBackfillLastWeek
|
|
8701
8702
|
}
|
|
8702
8703
|
};
|
|
8703
8704
|
}
|
|
@@ -8707,7 +8708,8 @@ function fromDisk(d) {
|
|
|
8707
8708
|
ai_features: {
|
|
8708
8709
|
enabled: af.enabled ?? DEFAULT_SETTINGS.ai_features.enabled,
|
|
8709
8710
|
model: af.model ?? DEFAULT_SETTINGS.ai_features.model,
|
|
8710
|
-
monthlyBudgetUsd: af.monthly_budget_usd ?? null
|
|
8711
|
+
monthlyBudgetUsd: af.monthly_budget_usd ?? null,
|
|
8712
|
+
autoBackfillLastWeek: af.auto_backfill_last_week ?? DEFAULT_SETTINGS.ai_features.autoBackfillLastWeek
|
|
8711
8713
|
}
|
|
8712
8714
|
};
|
|
8713
8715
|
}
|
|
@@ -8740,7 +8742,8 @@ var init_settings = __esm({
|
|
|
8740
8742
|
ai_features: {
|
|
8741
8743
|
enabled: true,
|
|
8742
8744
|
model: "sonnet",
|
|
8743
|
-
monthlyBudgetUsd: null
|
|
8745
|
+
monthlyBudgetUsd: null,
|
|
8746
|
+
autoBackfillLastWeek: true
|
|
8744
8747
|
}
|
|
8745
8748
|
};
|
|
8746
8749
|
settingsPathCached = null;
|
|
@@ -12294,6 +12297,40 @@ var init_digest_month_pipeline = __esm({
|
|
|
12294
12297
|
}
|
|
12295
12298
|
});
|
|
12296
12299
|
|
|
12300
|
+
// ../entries/dist/auto-week-fire.js
|
|
12301
|
+
import { existsSync as existsSync11, readFileSync as readFileSync11, mkdirSync as mkdirSync8, renameSync as renameSync4, writeFileSync as writeFileSync7 } from "node:fs";
|
|
12302
|
+
import { join as join12, dirname as dirname9 } from "node:path";
|
|
12303
|
+
import { homedir as homedir11 } from "node:os";
|
|
12304
|
+
function autoFireFile() {
|
|
12305
|
+
return process.env.CCLENS_AUTO_WEEK_FILE ?? join12(homedir11(), ".cclens", "auto-week-fired-at");
|
|
12306
|
+
}
|
|
12307
|
+
function shouldAutoFireWeek(monday) {
|
|
12308
|
+
const file = autoFireFile();
|
|
12309
|
+
let prev = null;
|
|
12310
|
+
if (existsSync11(file)) {
|
|
12311
|
+
try {
|
|
12312
|
+
const raw = readFileSync11(file, "utf8").trim();
|
|
12313
|
+
if (MONDAY_RE.test(raw))
|
|
12314
|
+
prev = raw;
|
|
12315
|
+
} catch {
|
|
12316
|
+
}
|
|
12317
|
+
}
|
|
12318
|
+
if (prev === monday)
|
|
12319
|
+
return false;
|
|
12320
|
+
mkdirSync8(dirname9(file), { recursive: true });
|
|
12321
|
+
const tmp = `${file}.tmp`;
|
|
12322
|
+
writeFileSync7(tmp, monday + "\n", "utf8");
|
|
12323
|
+
renameSync4(tmp, file);
|
|
12324
|
+
return true;
|
|
12325
|
+
}
|
|
12326
|
+
var MONDAY_RE;
|
|
12327
|
+
var init_auto_week_fire = __esm({
|
|
12328
|
+
"../entries/dist/auto-week-fire.js"() {
|
|
12329
|
+
"use strict";
|
|
12330
|
+
MONDAY_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
12331
|
+
}
|
|
12332
|
+
});
|
|
12333
|
+
|
|
12297
12334
|
// ../entries/dist/node.js
|
|
12298
12335
|
var node_exports = {};
|
|
12299
12336
|
__export(node_exports, {
|
|
@@ -12347,6 +12384,7 @@ __export(node_exports, {
|
|
|
12347
12384
|
setCurrentMonthDigestInCache: () => setCurrentMonthDigestInCache,
|
|
12348
12385
|
setCurrentWeekDigestInCache: () => setCurrentWeekDigestInCache,
|
|
12349
12386
|
setTodayDigestInCache: () => setTodayDigestInCache,
|
|
12387
|
+
shouldAutoFireWeek: () => shouldAutoFireWeek,
|
|
12350
12388
|
weekDates: () => weekDates,
|
|
12351
12389
|
writeDayDigest: () => writeDayDigest,
|
|
12352
12390
|
writeInteractiveLock: () => writeInteractiveLock,
|
|
@@ -12372,6 +12410,7 @@ var init_node = __esm({
|
|
|
12372
12410
|
init_digest_month();
|
|
12373
12411
|
init_digest_week_pipeline();
|
|
12374
12412
|
init_digest_month_pipeline();
|
|
12413
|
+
init_auto_week_fire();
|
|
12375
12414
|
init_digest_fs();
|
|
12376
12415
|
}
|
|
12377
12416
|
});
|
|
@@ -12843,23 +12882,23 @@ var init_digest = __esm({
|
|
|
12843
12882
|
});
|
|
12844
12883
|
|
|
12845
12884
|
// src/team/config.ts
|
|
12846
|
-
import { readFileSync as
|
|
12847
|
-
import { join as
|
|
12848
|
-
import { homedir as
|
|
12885
|
+
import { readFileSync as readFileSync12, writeFileSync as writeFileSync8, unlinkSync as unlinkSync3, mkdirSync as mkdirSync9 } from "node:fs";
|
|
12886
|
+
import { join as join13 } from "node:path";
|
|
12887
|
+
import { homedir as homedir12 } from "node:os";
|
|
12849
12888
|
function readTeamConfig(dir = DEFAULT_DIR) {
|
|
12850
12889
|
try {
|
|
12851
|
-
return JSON.parse(
|
|
12890
|
+
return JSON.parse(readFileSync12(join13(dir, CONFIG_FILE), "utf8"));
|
|
12852
12891
|
} catch {
|
|
12853
12892
|
return null;
|
|
12854
12893
|
}
|
|
12855
12894
|
}
|
|
12856
12895
|
function writeTeamConfig(config, dir = DEFAULT_DIR) {
|
|
12857
|
-
|
|
12858
|
-
|
|
12896
|
+
mkdirSync9(dir, { recursive: true });
|
|
12897
|
+
writeFileSync8(join13(dir, CONFIG_FILE), JSON.stringify(config, null, 2), { mode: 384 });
|
|
12859
12898
|
}
|
|
12860
12899
|
function clearTeamConfig(dir = DEFAULT_DIR) {
|
|
12861
12900
|
try {
|
|
12862
|
-
unlinkSync3(
|
|
12901
|
+
unlinkSync3(join13(dir, CONFIG_FILE));
|
|
12863
12902
|
} catch {
|
|
12864
12903
|
}
|
|
12865
12904
|
}
|
|
@@ -12867,14 +12906,14 @@ var DEFAULT_DIR, CONFIG_FILE;
|
|
|
12867
12906
|
var init_config = __esm({
|
|
12868
12907
|
"src/team/config.ts"() {
|
|
12869
12908
|
"use strict";
|
|
12870
|
-
DEFAULT_DIR =
|
|
12909
|
+
DEFAULT_DIR = join13(homedir12(), ".cclens");
|
|
12871
12910
|
CONFIG_FILE = "team.json";
|
|
12872
12911
|
}
|
|
12873
12912
|
});
|
|
12874
12913
|
|
|
12875
12914
|
// src/usage/profile.ts
|
|
12876
|
-
import { existsSync as
|
|
12877
|
-
import { dirname as
|
|
12915
|
+
import { existsSync as existsSync12, mkdirSync as mkdirSync10, readFileSync as readFileSync13, writeFileSync as writeFileSync9 } from "node:fs";
|
|
12916
|
+
import { dirname as dirname10 } from "node:path";
|
|
12878
12917
|
function mapRateLimitTier(rateLimitTier) {
|
|
12879
12918
|
switch (rateLimitTier) {
|
|
12880
12919
|
case "default_claude_pro":
|
|
@@ -12914,9 +12953,9 @@ async function fetchProfile(nowMs = Date.now()) {
|
|
|
12914
12953
|
};
|
|
12915
12954
|
}
|
|
12916
12955
|
function readCachedProfile(cachePath) {
|
|
12917
|
-
if (!
|
|
12956
|
+
if (!existsSync12(cachePath)) return null;
|
|
12918
12957
|
try {
|
|
12919
|
-
const raw = JSON.parse(
|
|
12958
|
+
const raw = JSON.parse(readFileSync13(cachePath, "utf8"));
|
|
12920
12959
|
if (typeof raw.fetchedAtMs !== "number" || !raw.profile) return null;
|
|
12921
12960
|
return raw;
|
|
12922
12961
|
} catch {
|
|
@@ -12924,8 +12963,8 @@ function readCachedProfile(cachePath) {
|
|
|
12924
12963
|
}
|
|
12925
12964
|
}
|
|
12926
12965
|
function writeCachedProfile(cachePath, profile, nowMs = Date.now()) {
|
|
12927
|
-
|
|
12928
|
-
|
|
12966
|
+
mkdirSync10(dirname10(cachePath), { recursive: true });
|
|
12967
|
+
writeFileSync9(
|
|
12929
12968
|
cachePath,
|
|
12930
12969
|
JSON.stringify({ fetchedAtMs: nowMs, profile }, null, 2),
|
|
12931
12970
|
{ mode: 384 }
|
|
@@ -12960,8 +12999,8 @@ __export(backfill_exports, {
|
|
|
12960
12999
|
chunk: () => chunk,
|
|
12961
13000
|
runTeamBackfill: () => runTeamBackfill
|
|
12962
13001
|
});
|
|
12963
|
-
import { homedir as
|
|
12964
|
-
import { join as
|
|
13002
|
+
import { homedir as homedir13 } from "node:os";
|
|
13003
|
+
import { join as join14 } from "node:path";
|
|
12965
13004
|
function rawToWire(raw) {
|
|
12966
13005
|
const win = (w) => w ? { utilization: w.utilization, resetsAt: w.resets_at } : null;
|
|
12967
13006
|
return {
|
|
@@ -13068,8 +13107,8 @@ var init_backfill = __esm({
|
|
|
13068
13107
|
init_storage();
|
|
13069
13108
|
init_config();
|
|
13070
13109
|
init_profile();
|
|
13071
|
-
USAGE_LOG4 =
|
|
13072
|
-
PROFILE_CACHE =
|
|
13110
|
+
USAGE_LOG4 = join14(homedir13(), ".cclens", "usage.jsonl");
|
|
13111
|
+
PROFILE_CACHE = join14(homedir13(), ".cclens", "profile.json");
|
|
13073
13112
|
BATCH_SIZE = 500;
|
|
13074
13113
|
noopLog = () => {
|
|
13075
13114
|
};
|
|
@@ -13156,11 +13195,11 @@ var init_push = __esm({
|
|
|
13156
13195
|
});
|
|
13157
13196
|
|
|
13158
13197
|
// src/team/queue.ts
|
|
13159
|
-
import { readFileSync as
|
|
13160
|
-
import { join as
|
|
13161
|
-
import { homedir as
|
|
13198
|
+
import { readFileSync as readFileSync14, writeFileSync as writeFileSync10, appendFileSync as appendFileSync4, statSync as statSync3, mkdirSync as mkdirSync11 } from "node:fs";
|
|
13199
|
+
import { join as join15, dirname as dirname11 } from "node:path";
|
|
13200
|
+
import { homedir as homedir14 } from "node:os";
|
|
13162
13201
|
function enqueuePayload(payload, queuePath = QUEUE_PATH) {
|
|
13163
|
-
|
|
13202
|
+
mkdirSync11(dirname11(queuePath), { recursive: true });
|
|
13164
13203
|
const entry = { payload, enqueuedAt: (/* @__PURE__ */ new Date()).toISOString() };
|
|
13165
13204
|
appendFileSync4(queuePath, JSON.stringify(entry) + "\n", "utf8");
|
|
13166
13205
|
try {
|
|
@@ -13174,7 +13213,7 @@ function enqueuePayload(payload, queuePath = QUEUE_PATH) {
|
|
|
13174
13213
|
function dequeuePayloads(queuePath = QUEUE_PATH) {
|
|
13175
13214
|
let lines;
|
|
13176
13215
|
try {
|
|
13177
|
-
lines =
|
|
13216
|
+
lines = readFileSync14(queuePath, "utf8").trim().split("\n").filter(Boolean);
|
|
13178
13217
|
} catch {
|
|
13179
13218
|
return [];
|
|
13180
13219
|
}
|
|
@@ -13189,24 +13228,24 @@ function dequeuePayloads(queuePath = QUEUE_PATH) {
|
|
|
13189
13228
|
} catch {
|
|
13190
13229
|
}
|
|
13191
13230
|
}
|
|
13192
|
-
|
|
13231
|
+
writeFileSync10(queuePath, "", "utf8");
|
|
13193
13232
|
return valid.map((e) => e.payload);
|
|
13194
13233
|
}
|
|
13195
13234
|
function pruneOldest(queuePath) {
|
|
13196
13235
|
let lines;
|
|
13197
13236
|
try {
|
|
13198
|
-
lines =
|
|
13237
|
+
lines = readFileSync14(queuePath, "utf8").trim().split("\n").filter(Boolean);
|
|
13199
13238
|
} catch {
|
|
13200
13239
|
return;
|
|
13201
13240
|
}
|
|
13202
13241
|
const keep = lines.slice(Math.floor(lines.length / 2));
|
|
13203
|
-
|
|
13242
|
+
writeFileSync10(queuePath, keep.join("\n") + "\n", "utf8");
|
|
13204
13243
|
}
|
|
13205
13244
|
var QUEUE_PATH, MAX_SIZE_BYTES, MAX_AGE_MS;
|
|
13206
13245
|
var init_queue2 = __esm({
|
|
13207
13246
|
"src/team/queue.ts"() {
|
|
13208
13247
|
"use strict";
|
|
13209
|
-
QUEUE_PATH =
|
|
13248
|
+
QUEUE_PATH = join15(homedir14(), ".cclens", "ingest-queue.jsonl");
|
|
13210
13249
|
MAX_SIZE_BYTES = 10 * 1024 * 1024;
|
|
13211
13250
|
MAX_AGE_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
13212
13251
|
}
|
|
@@ -13217,8 +13256,8 @@ var sync_exports = {};
|
|
|
13217
13256
|
__export(sync_exports, {
|
|
13218
13257
|
runTeamSync: () => runTeamSync
|
|
13219
13258
|
});
|
|
13220
|
-
import { homedir as
|
|
13221
|
-
import { join as
|
|
13259
|
+
import { homedir as homedir15 } from "node:os";
|
|
13260
|
+
import { join as join16 } from "node:path";
|
|
13222
13261
|
async function runTeamSync(log = noopLog2, configOverride) {
|
|
13223
13262
|
const config = configOverride === void 0 ? readTeamConfig() : configOverride;
|
|
13224
13263
|
if (!config) return { paired: false, pushed: 0, queued: 0, queuedDrained: 0 };
|
|
@@ -13362,8 +13401,8 @@ var init_sync = __esm({
|
|
|
13362
13401
|
init_push();
|
|
13363
13402
|
init_queue2();
|
|
13364
13403
|
init_profile();
|
|
13365
|
-
USAGE_LOG5 =
|
|
13366
|
-
PROFILE_CACHE2 =
|
|
13404
|
+
USAGE_LOG5 = join16(homedir15(), ".cclens", "usage.jsonl");
|
|
13405
|
+
PROFILE_CACHE2 = join16(homedir15(), ".cclens", "profile.json");
|
|
13367
13406
|
noopLog2 = () => {
|
|
13368
13407
|
};
|
|
13369
13408
|
}
|
|
@@ -13508,13 +13547,13 @@ var logs_exports = {};
|
|
|
13508
13547
|
__export(logs_exports, {
|
|
13509
13548
|
teamLogs: () => teamLogs
|
|
13510
13549
|
});
|
|
13511
|
-
import { readFileSync as
|
|
13512
|
-
import { join as
|
|
13513
|
-
import { homedir as
|
|
13550
|
+
import { readFileSync as readFileSync15 } from "node:fs";
|
|
13551
|
+
import { join as join17 } from "node:path";
|
|
13552
|
+
import { homedir as homedir16 } from "node:os";
|
|
13514
13553
|
async function teamLogs() {
|
|
13515
|
-
const logPath =
|
|
13554
|
+
const logPath = join17(homedir16(), ".cclens", "daemon.log");
|
|
13516
13555
|
try {
|
|
13517
|
-
const lines =
|
|
13556
|
+
const lines = readFileSync15(logPath, "utf8").trim().split("\n");
|
|
13518
13557
|
const teamLines = lines.filter((l) => l.includes("team "));
|
|
13519
13558
|
if (teamLines.length === 0) {
|
|
13520
13559
|
console.log("No team-related log entries found.");
|
|
@@ -13610,9 +13649,9 @@ __export(runs_exports, {
|
|
|
13610
13649
|
runs: () => runs
|
|
13611
13650
|
});
|
|
13612
13651
|
import { execSync as execSync2 } from "node:child_process";
|
|
13613
|
-
import { existsSync as
|
|
13614
|
-
import { homedir as
|
|
13615
|
-
import { join as
|
|
13652
|
+
import { existsSync as existsSync13, readFileSync as readFileSync16, readdirSync as readdirSync3, statSync as statSync4 } from "node:fs";
|
|
13653
|
+
import { homedir as homedir17 } from "node:os";
|
|
13654
|
+
import { join as join18 } from "node:path";
|
|
13616
13655
|
async function runs(args2) {
|
|
13617
13656
|
const json = args2.includes("--json");
|
|
13618
13657
|
const watch = args2.includes("--watch");
|
|
@@ -13696,8 +13735,8 @@ function listActiveRuns() {
|
|
|
13696
13735
|
return runs2.sort((a, b) => a.elapsed_s - b.elapsed_s);
|
|
13697
13736
|
}
|
|
13698
13737
|
function readSpend(sinceMs) {
|
|
13699
|
-
if (!
|
|
13700
|
-
const lines =
|
|
13738
|
+
if (!existsSync13(SPEND_PATH)) return [];
|
|
13739
|
+
const lines = readFileSync16(SPEND_PATH, "utf-8").split("\n").filter((l) => l.trim());
|
|
13701
13740
|
const out = [];
|
|
13702
13741
|
for (const line of lines) {
|
|
13703
13742
|
try {
|
|
@@ -13818,23 +13857,23 @@ function ageLabel(ms) {
|
|
|
13818
13857
|
return `${Math.floor(ms / 864e5)}d`;
|
|
13819
13858
|
}
|
|
13820
13859
|
function listTraceFiles() {
|
|
13821
|
-
if (!
|
|
13860
|
+
if (!existsSync13(RUNS_DIR2)) return [];
|
|
13822
13861
|
const entries2 = readdirSync3(RUNS_DIR2).filter((f) => f.endsWith(".jsonl"));
|
|
13823
13862
|
return entries2.map((f) => {
|
|
13824
|
-
const path2 =
|
|
13863
|
+
const path2 = join18(RUNS_DIR2, f);
|
|
13825
13864
|
const st = statSync4(path2);
|
|
13826
13865
|
return { runId: f.replace(/\.jsonl$/, ""), path: path2, mtimeMs: st.mtimeMs };
|
|
13827
13866
|
}).sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
13828
13867
|
}
|
|
13829
13868
|
function resolveRunId(arg) {
|
|
13830
|
-
if (!
|
|
13869
|
+
if (!existsSync13(RUNS_DIR2)) return null;
|
|
13831
13870
|
if (arg === "latest") {
|
|
13832
13871
|
const all2 = listTraceFiles();
|
|
13833
13872
|
if (all2.length === 0) return null;
|
|
13834
13873
|
return { runId: all2[0].runId, path: all2[0].path };
|
|
13835
13874
|
}
|
|
13836
|
-
const exact =
|
|
13837
|
-
if (
|
|
13875
|
+
const exact = join18(RUNS_DIR2, `${arg}.jsonl`);
|
|
13876
|
+
if (existsSync13(exact)) return { runId: arg, path: exact };
|
|
13838
13877
|
const all = listTraceFiles();
|
|
13839
13878
|
const matches = all.filter((r) => r.runId.includes(arg));
|
|
13840
13879
|
if (matches.length === 1) return { runId: matches[0].runId, path: matches[0].path };
|
|
@@ -13846,7 +13885,7 @@ function resolveRunId(arg) {
|
|
|
13846
13885
|
return null;
|
|
13847
13886
|
}
|
|
13848
13887
|
function readTrace(path2) {
|
|
13849
|
-
return
|
|
13888
|
+
return readFileSync16(path2, "utf-8").split("\n").filter((l) => l.trim()).map((l) => {
|
|
13850
13889
|
try {
|
|
13851
13890
|
return JSON.parse(l);
|
|
13852
13891
|
} catch {
|
|
@@ -13858,7 +13897,7 @@ async function inspect(arg, follow, json) {
|
|
|
13858
13897
|
const r = resolveRunId(arg);
|
|
13859
13898
|
if (!r) {
|
|
13860
13899
|
console.error(`run not found: ${arg}`);
|
|
13861
|
-
if (
|
|
13900
|
+
if (existsSync13(RUNS_DIR2)) {
|
|
13862
13901
|
const all = listTraceFiles().slice(0, 5);
|
|
13863
13902
|
if (all.length > 0) {
|
|
13864
13903
|
console.error(`
|
|
@@ -13959,8 +13998,8 @@ var init_runs = __esm({
|
|
|
13959
13998
|
{ kind: "day_digest", marker: /single local day into a short, honest narrative/i },
|
|
13960
13999
|
{ kind: "entry_enrich", marker: /per[- ]entry|enrich.{0,40}entry|brief_summary/i }
|
|
13961
14000
|
];
|
|
13962
|
-
SPEND_PATH =
|
|
13963
|
-
RUNS_DIR2 =
|
|
14001
|
+
SPEND_PATH = join18(homedir17(), ".cclens", "llm-spend.jsonl");
|
|
14002
|
+
RUNS_DIR2 = join18(homedir17(), ".cclens", "llm-runs");
|
|
13964
14003
|
}
|
|
13965
14004
|
});
|
|
13966
14005
|
|
|
@@ -14027,7 +14066,7 @@ async function main() {
|
|
|
14027
14066
|
case "version":
|
|
14028
14067
|
case "--version":
|
|
14029
14068
|
case "-v":
|
|
14030
|
-
console.log(`fleetlens ${"0.6.
|
|
14069
|
+
console.log(`fleetlens ${"0.6.2"}`);
|
|
14031
14070
|
break;
|
|
14032
14071
|
case "help":
|
|
14033
14072
|
case "--help":
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fleetlens",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "fleetlens — local-only dashboard and usage tracker for Claude Code sessions and agent fleets",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -21,10 +21,8 @@
|
|
|
21
21
|
"test:coverage": "vitest run --coverage",
|
|
22
22
|
"lint": "eslint"
|
|
23
23
|
},
|
|
24
|
-
"dependencies": {
|
|
25
|
-
"@claude-lens/entries": "workspace:*"
|
|
26
|
-
},
|
|
27
24
|
"devDependencies": {
|
|
25
|
+
"@claude-lens/entries": "workspace:*",
|
|
28
26
|
"@claude-lens/parser": "workspace:*",
|
|
29
27
|
"@types/node": "^20.11.0",
|
|
30
28
|
"@vitest/coverage-v8": "^2.1.9",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55700,e=>{"use strict";var t=e.i(18050),s=e.i(71645);e.s(["AiFeaturesForm",0,function({initial:e}){let[a,n]=(0,s.useState)(e.enabled),[i,c]=(0,s.useState)(!1),[l,r]=(0,s.useState)(null);async function o(e){e.preventDefault(),c(!0),r(null);let t=await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({ai_features:{enabled:a}})});c(!1),r(t.ok?"Saved.":`Error: ${t.status}`)}return(0,t.jsxs)("form",{onSubmit:o,className:"space-y-4",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{type:"checkbox",checked:a,onChange:e=>n(e.target.checked)}),(0,t.jsx)("span",{children:"Enable AI digests and enrichment"})]}),(0,t.jsx)("button",{type:"submit",disabled:i,className:"px-3 py-1 border rounded bg-black text-white disabled:opacity-60",children:i?"Saving…":"Save"}),l&&(0,t.jsx)("p",{className:"text-sm",children:l})]})}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono:"SF Mono", "Fira Code", "JetBrains Mono", "Cascadia Code", monospace;--color-gray-500:#6a7282;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--default-mono-font-family:"SF Mono", "Fira Code", "JetBrains Mono", "Cascadia Code", monospace}@supports (color:lab(0% 0 0)){:root,:host{--color-gray-500:lab(47.7841% -.393182 -10.0268)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.max-w-2xl{max-width:var(--container-2xl)}.shrink{flex-shrink:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.items-baseline{align-items:baseline}.items-center{align-items:center}.gap-2{gap:calc(var(--spacing) * 2)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.bg-black{background-color:var(--color-black)}.p-6{padding:calc(var(--spacing) * 6)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-1{padding-block:calc(var(--spacing) * 1)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-all{word-break:break-all}.text-gray-500{color:var(--color-gray-500)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.disabled\:opacity-60:disabled{opacity:.6}}:root,[data-theme=dark]{--background:#1a1a1f;--foreground:#e8e8f0;--af-accent:#2dd4bf;--af-accent-hover:#5eead4;--af-accent-subtle:#2dd4bf1f;--af-success:#34d399;--af-success-subtle:#34d3991f;--af-warning:#fbbf24;--af-warning-subtle:#fbbf241a;--af-danger:#f87171;--af-danger-subtle:#f871711f;--af-info:#a78bfa;--af-info-subtle:#a78bfa1f;--af-surface:#2c2c33;--af-surface-hover:#333340;--af-surface-elevated:#38384a;--af-border-subtle:#2f2f38;--af-text:#e8e8f0;--af-text-secondary:#9090a0;--af-text-tertiary:#707078;--af-heatmap-0:#2f2f38;--af-heatmap-1:#2dd4bf2e;--af-heatmap-2:#2dd4bf59;--af-heatmap-3:#2dd4bf99;--af-heatmap-4:#2dd4bfe6}[data-theme=light]{--background:#fdfbf9;--foreground:#1a1a1a;--af-accent:#14b8a6;--af-accent-hover:#0d9488;--af-accent-subtle:#14b8a61f;--af-success:#059669;--af-success-subtle:#0596691f;--af-warning:#d97706;--af-warning-subtle:#d977061f;--af-danger:#c53030;--af-danger-subtle:#c530301f;--af-info:#8168e0;--af-info-subtle:#8168e01f;--af-surface:#f5f1ec;--af-surface-hover:#ede8e0;--af-surface-elevated:#e8e2da;--af-border-subtle:#e8e2da;--af-text:#1a1a1a;--af-text-secondary:#5a544e;--af-text-tertiary:#8a8580;--af-heatmap-0:#ede8e0;--af-heatmap-1:#14b8a638;--af-heatmap-2:#14b8a666;--af-heatmap-3:#14b8a6a6;--af-heatmap-4:#14b8a6f2}html,body{background:var(--background);color:var(--foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-size:14px;line-height:1.6}body{min-height:100vh}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}input:not([type=checkbox]):not([type=radio]),select,textarea{background:var(--background);border:1px solid var(--af-border-subtle);color:var(--af-text);border-radius:8px;outline:none;padding:9px 12px;font-size:13px;transition:border-color .15s}input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{border-color:var(--af-accent);box-shadow:0 0 0 3px var(--af-accent-subtle)}input::placeholder{color:var(--af-text-tertiary)}.sl-compact-select{border-radius:6px!important;height:32px!important;padding:4px 28px 4px 10px!important;font-size:12px!important}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--af-border-subtle);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--af-surface-elevated)}.af-panel{background:var(--af-surface);border:1px solid var(--af-border-subtle);border-radius:12px;overflow:hidden}.af-panel-header{border-bottom:1px solid var(--af-border-subtle);align-items:center;gap:6px;padding:14px 18px;font-size:13px;font-weight:600;display:flex}.af-tag{border:none;border-radius:100px;padding:3px 10px;font-size:11px;font-weight:500;display:inline-block}.af-tag-default{background:var(--af-border-subtle);color:var(--af-text-secondary)}.af-tag-accent{background:var(--af-accent-subtle);color:var(--af-accent)}.af-tag-success{background:var(--af-success-subtle);color:var(--af-success)}.af-tag-warning{background:var(--af-warning-subtle);color:var(--af-warning)}.af-tag-danger{background:var(--af-danger-subtle);color:var(--af-danger)}.af-empty{text-align:center;color:var(--af-text-tertiary);padding:48px 32px;font-size:13px}.af-tabs{background:var(--background);border-radius:8px;gap:2px;padding:3px;display:inline-flex}.af-tab-btn{color:var(--af-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:7px 18px;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s}.af-tab-btn:hover{color:var(--af-text)}.af-tab-btn.active{background:var(--af-surface-elevated);color:var(--af-text);box-shadow:0 1px 3px #0003}.flex{display:flex}.items-center{align-items:center}.items-baseline{align-items:baseline}.af-card{background:var(--af-surface);border:1px solid var(--af-border-subtle);border-radius:12px;padding:18px 20px;transition:border-color .12s}.af-card:hover{border-color:var(--af-surface-elevated)}.sl-prose{color:var(--af-text);word-break:break-word;font-size:13.5px;line-height:1.65}.sl-prose>:first-child{margin-top:0}.sl-prose>:last-child{margin-bottom:0}.sl-prose h1,.sl-prose h2,.sl-prose h3,.sl-prose h4{letter-spacing:-.01em;color:var(--af-text);margin:18px 0 8px;font-weight:700;line-height:1.25}.sl-prose h1{border-bottom:1px solid var(--af-border-subtle);padding-bottom:6px;font-size:20px}.sl-prose h2{font-size:16px}.sl-prose h3{font-size:14px}.sl-prose h4{color:var(--af-text-secondary);font-size:13px}.sl-prose p{margin:10px 0}.sl-prose strong{color:var(--af-text);font-weight:600}.sl-prose em{color:var(--af-text);font-style:italic}.sl-prose ul,.sl-prose ol{margin:10px 0;padding-left:22px}.sl-prose ul{list-style-type:disc}.sl-prose ol{list-style-type:decimal}.sl-prose li,.sl-prose li>p{margin:4px 0}.sl-prose blockquote{border-left:3px solid var(--af-accent);color:var(--af-text-secondary);background:var(--af-accent-subtle);border-radius:0 6px 6px 0;margin:12px 0;padding:4px 14px}.sl-prose code{font-family:var(--font-mono);background:var(--af-border-subtle);color:var(--af-text);border-radius:4px;padding:1px 5px;font-size:12px}.sl-prose pre{background:var(--background);border:1px solid var(--af-border-subtle);border-radius:8px;margin:12px 0;padding:12px 14px;font-size:12px;line-height:1.55;overflow-x:auto}.sl-prose pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.sl-prose table{border-collapse:collapse;width:100%;margin:12px 0;font-size:12px}.sl-prose th,.sl-prose td{border:1px solid var(--af-border-subtle);text-align:left;padding:6px 10px}.sl-prose th{background:var(--af-surface-hover);font-weight:600}.sl-prose hr{border:none;border-top:1px solid var(--af-border-subtle);margin:16px 0}.sl-prose a{color:var(--af-accent);text-underline-offset:2px;text-decoration:underline}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
/package/app/apps/web/.next/static/{8tTWPvUhtatZEoocIhamh → MLK3PKEm3q_E_QuKH5kOz}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
/package/app/apps/web/.next/static/{8tTWPvUhtatZEoocIhamh → MLK3PKEm3q_E_QuKH5kOz}/_ssgManifest.js
RENAMED
|
File without changes
|