@drewpayment/mink 0.13.0-beta.2 → 0.13.0-beta.4
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/dashboard/out/404.html +1 -1
- package/dashboard/out/_next/static/chunks/157-7bbe4894a18a8332.js +1 -0
- package/dashboard/out/_next/static/chunks/447-8cfdad14e7559c07.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/activity/page-c285fb9f63d9a82a.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/bugs/page-f3ba7d8f50a96568.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/capture/page-e004bec9af99a244.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/compression/page-21e1af119b3f81ff.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/config/page-d47fb6f588ccfd4b.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/daemon/page-52f913e751416717.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/design/page-53a76719b9af5830.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/discord/page-04502d12c4a96cf7.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/file-index/page-a1bd10e04bb219d9.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/insights/page-7367274963571b6b.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/learning/{page-b766adc79099adb4.js → page-4a03cf7b9a6106fd.js} +1 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/overview/page-141f456cd7141815.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/scheduler/page-510b78c9b0a61012.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/sync/page-b7215c2a29a7d7a7.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/tokens/page-1be7ed35a5c9bd39.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/waste/page-24a726e6d63f771a.js +1 -0
- package/dashboard/out/_next/static/chunks/app/(panels)/wiki/page-230d2d1cae6507a8.js +1 -0
- package/dashboard/out/_next/static/chunks/app/layout-99d1a82956bc0f56.js +1 -0
- package/dashboard/out/_next/static/css/0e381ead1d090c3f.css +1 -0
- package/dashboard/out/_next/static/zeNEMTDaNBRpOk-to-GkA/_buildManifest.js +1 -0
- package/dashboard/out/action-log.html +1 -1
- package/dashboard/out/action-log.txt +5 -5
- package/dashboard/out/activity.html +1 -1
- package/dashboard/out/activity.txt +6 -6
- package/dashboard/out/bugs.html +1 -1
- package/dashboard/out/bugs.txt +6 -6
- package/dashboard/out/capture.html +1 -1
- package/dashboard/out/capture.txt +6 -6
- package/dashboard/out/compression.html +1 -0
- package/dashboard/out/compression.txt +24 -0
- package/dashboard/out/config.html +1 -1
- package/dashboard/out/config.txt +6 -6
- package/dashboard/out/daemon.html +1 -1
- package/dashboard/out/daemon.txt +6 -6
- package/dashboard/out/design.html +1 -1
- package/dashboard/out/design.txt +6 -6
- package/dashboard/out/discord.html +1 -1
- package/dashboard/out/discord.txt +6 -6
- package/dashboard/out/file-index.html +1 -1
- package/dashboard/out/file-index.txt +6 -6
- package/dashboard/out/index.html +1 -1
- package/dashboard/out/index.txt +5 -5
- package/dashboard/out/insights.html +1 -1
- package/dashboard/out/insights.txt +6 -6
- package/dashboard/out/learning.html +1 -1
- package/dashboard/out/learning.txt +6 -6
- package/dashboard/out/overview.html +1 -1
- package/dashboard/out/overview.txt +6 -6
- package/dashboard/out/scheduler.html +1 -1
- package/dashboard/out/scheduler.txt +6 -6
- package/dashboard/out/sync.html +1 -1
- package/dashboard/out/sync.txt +6 -6
- package/dashboard/out/tokens.html +1 -1
- package/dashboard/out/tokens.txt +6 -6
- package/dashboard/out/waste.html +1 -1
- package/dashboard/out/waste.txt +6 -6
- package/dashboard/out/wiki.html +1 -1
- package/dashboard/out/wiki.txt +6 -6
- package/dist/cli.bun.js +68 -4
- package/dist/cli.node.js +68 -4
- package/package.json +1 -1
- package/src/commands/status.ts +13 -1
- package/src/core/dashboard-api.ts +20 -1
- package/src/core/dashboard-server.ts +3 -0
- package/src/repositories/token-ledger-repo.ts +55 -0
- package/src/types/dashboard.ts +22 -1
- package/src/types/token-ledger.ts +22 -0
- package/dashboard/out/_next/static/Yl3F-J4CwvYf6yWG-SSmG/_buildManifest.js +0 -1
- package/dashboard/out/_next/static/chunks/189-fe789442321eb5eb.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/activity/page-096a97ba539d5323.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/bugs/page-449d31c133432458.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/capture/page-c6617aa0a8a7333e.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/config/page-aa0a0623b3fdd0d8.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/daemon/page-7cd3fac2f5d87a0d.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/design/page-5304675c96b6793b.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/discord/page-9940dde80ba2a69e.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/file-index/page-ecd8a753614e981e.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/insights/page-7909d8beb8d8ef7a.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/overview/page-7a9e86dcde67d6a9.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/scheduler/page-a88f93204c9742a1.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/sync/page-8a9ad4c36aa6cb65.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/tokens/page-8dac7d50d4db2756.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/waste/page-bcf56144faf7d133.js +0 -1
- package/dashboard/out/_next/static/chunks/app/(panels)/wiki/page-a32fdbd0bf58b30b.js +0 -1
- package/dashboard/out/_next/static/chunks/app/layout-782cd26e0ccc4514.js +0 -1
- package/dashboard/out/_next/static/css/5e43917ea49c5b3e.css +0 -1
- /package/dashboard/out/_next/static/{Yl3F-J4CwvYf6yWG-SSmG → zeNEMTDaNBRpOk-to-GkA}/_ssgManifest.js +0 -0
package/dist/cli.node.js
CHANGED
|
@@ -3725,7 +3725,8 @@ class TokenLedgerRepo {
|
|
|
3725
3725
|
snapshot() {
|
|
3726
3726
|
const ledger = {
|
|
3727
3727
|
lifetime: this.lifetime(),
|
|
3728
|
-
sessions: this.activeSessions()
|
|
3728
|
+
sessions: this.activeSessions(),
|
|
3729
|
+
compression: this.compressionLifetime()
|
|
3729
3730
|
};
|
|
3730
3731
|
const flagRows = this.db.prepare("SELECT pattern, detected_at, details FROM waste_flags ORDER BY detected_at").all();
|
|
3731
3732
|
if (flagRows.length > 0) {
|
|
@@ -3821,6 +3822,48 @@ class TokenLedgerRepo {
|
|
|
3821
3822
|
holdout: Number(r.holdout) === 1
|
|
3822
3823
|
}));
|
|
3823
3824
|
}
|
|
3825
|
+
compressionArms() {
|
|
3826
|
+
const row = this.db.prepare(`
|
|
3827
|
+
SELECT
|
|
3828
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN 1 END), 0) AS cEvents,
|
|
3829
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN original_tokens END), 0) AS cOriginal,
|
|
3830
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN compressed_tokens END), 0) AS cCompressed,
|
|
3831
|
+
COALESCE(SUM(CASE WHEN holdout = 1 THEN 1 END), 0) AS hEvents,
|
|
3832
|
+
COALESCE(SUM(CASE WHEN holdout = 1 THEN original_tokens END), 0) AS hOriginal
|
|
3833
|
+
FROM ledger_compressions
|
|
3834
|
+
`).get();
|
|
3835
|
+
return {
|
|
3836
|
+
compressed: {
|
|
3837
|
+
events: Number(row?.cEvents ?? 0),
|
|
3838
|
+
originalTokens: Number(row?.cOriginal ?? 0),
|
|
3839
|
+
compressedTokens: Number(row?.cCompressed ?? 0)
|
|
3840
|
+
},
|
|
3841
|
+
holdout: {
|
|
3842
|
+
events: Number(row?.hEvents ?? 0),
|
|
3843
|
+
originalTokens: Number(row?.hOriginal ?? 0)
|
|
3844
|
+
}
|
|
3845
|
+
};
|
|
3846
|
+
}
|
|
3847
|
+
compressionBreakdown(dimension) {
|
|
3848
|
+
const rows = this.db.prepare(`
|
|
3849
|
+
SELECT
|
|
3850
|
+
${dimension} AS key,
|
|
3851
|
+
COUNT(*) AS events,
|
|
3852
|
+
COALESCE(SUM(original_tokens), 0) AS originalTokens,
|
|
3853
|
+
COALESCE(SUM(compressed_tokens), 0) AS compressedTokens,
|
|
3854
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN original_tokens - compressed_tokens END), 0) AS savings
|
|
3855
|
+
FROM ledger_compressions
|
|
3856
|
+
GROUP BY ${dimension}
|
|
3857
|
+
ORDER BY savings DESC
|
|
3858
|
+
`).all();
|
|
3859
|
+
return rows.map((r) => ({
|
|
3860
|
+
key: String(r.key),
|
|
3861
|
+
events: Number(r.events),
|
|
3862
|
+
originalTokens: Number(r.originalTokens),
|
|
3863
|
+
compressedTokens: Number(r.compressedTokens),
|
|
3864
|
+
savings: Number(r.savings)
|
|
3865
|
+
}));
|
|
3866
|
+
}
|
|
3824
3867
|
insertSessionRow(summary, deviceId, archived) {
|
|
3825
3868
|
this.db.prepare(`
|
|
3826
3869
|
INSERT OR REPLACE INTO ledger_sessions
|
|
@@ -6969,7 +7012,12 @@ function status(cwd) {
|
|
|
6969
7012
|
console.log(` Sessions: ${lt.totalSessions}`);
|
|
6970
7013
|
console.log(` Total tokens: ${lt.totalTokens.toLocaleString()}`);
|
|
6971
7014
|
console.log(` Reads: ${lt.totalReads} Writes: ${lt.totalWrites}`);
|
|
6972
|
-
console.log(` Estimated savings: ${lt.totalEstimatedSavings.toLocaleString()} tokens`);
|
|
7015
|
+
console.log(` Estimated savings (heuristic): ${lt.totalEstimatedSavings.toLocaleString()} tokens`);
|
|
7016
|
+
const comp = ledger.compression;
|
|
7017
|
+
if (comp && comp.totalEvents > 0) {
|
|
7018
|
+
const ratio = comp.totalOriginalTokens > 0 ? Math.round(comp.totalMeasuredSavings / comp.totalOriginalTokens * 100) : 0;
|
|
7019
|
+
console.log(` Measured compression savings: ${comp.totalMeasuredSavings.toLocaleString()} tokens` + ` (${ratio}% over ${comp.totalEvents} event${comp.totalEvents === 1 ? "" : "s"}` + `, ${comp.totalHoldoutEvents} held out)`);
|
|
7020
|
+
}
|
|
6973
7021
|
} catch {
|
|
6974
7022
|
console.log(" Token ledger: error reading");
|
|
6975
7023
|
}
|
|
@@ -9972,14 +10020,26 @@ function loadOverview(cwd) {
|
|
|
9972
10020
|
checkTextFile("action-log.md", actionLogPath(cwd)),
|
|
9973
10021
|
checkJsonFile2("scheduler-manifest.json", schedulerManifestPath(cwd))
|
|
9974
10022
|
];
|
|
9975
|
-
return { project, daemon, summary, stateFiles };
|
|
10023
|
+
return { project, daemon, summary, compression: ledger.compression, stateFiles };
|
|
9976
10024
|
}
|
|
9977
10025
|
function loadTokenLedgerPanel(cwd) {
|
|
9978
10026
|
const ledger = aggregateTokenLedger(cwd);
|
|
9979
10027
|
return {
|
|
9980
10028
|
lifetime: ledger.lifetime,
|
|
9981
10029
|
sessions: ledger.sessions,
|
|
9982
|
-
wasteFlags: ledger.wasteFlags ?? []
|
|
10030
|
+
wasteFlags: ledger.wasteFlags ?? [],
|
|
10031
|
+
compression: ledger.compression
|
|
10032
|
+
};
|
|
10033
|
+
}
|
|
10034
|
+
function loadCompressionPanel(cwd) {
|
|
10035
|
+
const repo = TokenLedgerRepo.for(cwd);
|
|
10036
|
+
return {
|
|
10037
|
+
enabled: loadCompressionConfig().enabled,
|
|
10038
|
+
lifetime: repo.compressionLifetime(),
|
|
10039
|
+
arms: repo.compressionArms(),
|
|
10040
|
+
byKind: repo.compressionBreakdown("content_kind"),
|
|
10041
|
+
byTool: repo.compressionBreakdown("tool_name"),
|
|
10042
|
+
recent: repo.compressionEvents(50)
|
|
9983
10043
|
};
|
|
9984
10044
|
}
|
|
9985
10045
|
function loadFileIndexPanel(cwd) {
|
|
@@ -10708,6 +10768,8 @@ var init_dashboard_api = __esm(() => {
|
|
|
10708
10768
|
init_note_writer();
|
|
10709
10769
|
init_paths();
|
|
10710
10770
|
init_config();
|
|
10771
|
+
init_token_ledger_repo();
|
|
10772
|
+
init_compression();
|
|
10711
10773
|
init_design_eval();
|
|
10712
10774
|
SECRET_KEY_PATTERNS = [/token/i, /secret/i, /password/i, /api[-_]?key/i];
|
|
10713
10775
|
BOOLEAN_VALUES = new Set(["true", "false"]);
|
|
@@ -11057,6 +11119,8 @@ retry: 3000
|
|
|
11057
11119
|
return jsonResponse(loadOverview(resolvedCwd));
|
|
11058
11120
|
case "/api/token-ledger":
|
|
11059
11121
|
return jsonResponse(loadTokenLedgerPanel(resolvedCwd));
|
|
11122
|
+
case "/api/compression":
|
|
11123
|
+
return jsonResponse(loadCompressionPanel(resolvedCwd));
|
|
11060
11124
|
case "/api/file-index":
|
|
11061
11125
|
return jsonResponse(loadFileIndexPanel(resolvedCwd));
|
|
11062
11126
|
case "/api/scheduler":
|
package/package.json
CHANGED
package/src/commands/status.ts
CHANGED
|
@@ -149,7 +149,19 @@ export function status(cwd: string): void {
|
|
|
149
149
|
console.log(` Sessions: ${lt.totalSessions}`);
|
|
150
150
|
console.log(` Total tokens: ${lt.totalTokens.toLocaleString()}`);
|
|
151
151
|
console.log(` Reads: ${lt.totalReads} Writes: ${lt.totalWrites}`);
|
|
152
|
-
console.log(` Estimated savings: ${lt.totalEstimatedSavings.toLocaleString()} tokens`);
|
|
152
|
+
console.log(` Estimated savings (heuristic): ${lt.totalEstimatedSavings.toLocaleString()} tokens`);
|
|
153
|
+
const comp = ledger.compression;
|
|
154
|
+
if (comp && comp.totalEvents > 0) {
|
|
155
|
+
const ratio =
|
|
156
|
+
comp.totalOriginalTokens > 0
|
|
157
|
+
? Math.round((comp.totalMeasuredSavings / comp.totalOriginalTokens) * 100)
|
|
158
|
+
: 0;
|
|
159
|
+
console.log(
|
|
160
|
+
` Measured compression savings: ${comp.totalMeasuredSavings.toLocaleString()} tokens` +
|
|
161
|
+
` (${ratio}% over ${comp.totalEvents} event${comp.totalEvents === 1 ? "" : "s"}` +
|
|
162
|
+
`, ${comp.totalHoldoutEvents} held out)`
|
|
163
|
+
);
|
|
164
|
+
}
|
|
153
165
|
} catch {
|
|
154
166
|
console.log(" Token ledger: error reading");
|
|
155
167
|
}
|
|
@@ -80,7 +80,10 @@ import type {
|
|
|
80
80
|
WikiPanelPayload,
|
|
81
81
|
WikiNotePayload,
|
|
82
82
|
WikiTreeNode,
|
|
83
|
+
CompressionPayload,
|
|
83
84
|
} from "../types/dashboard";
|
|
85
|
+
import { TokenLedgerRepo } from "../repositories/token-ledger-repo";
|
|
86
|
+
import { loadCompressionConfig } from "./compression";
|
|
84
87
|
import { isDesignEvalReport } from "../types/design-eval";
|
|
85
88
|
import type { DesignEvalReport } from "../types/design-eval";
|
|
86
89
|
import type { FileIndex, FileIndexEntry } from "../types/file-index";
|
|
@@ -185,7 +188,7 @@ export function loadOverview(cwd: string): OverviewPayload {
|
|
|
185
188
|
checkJsonFile("scheduler-manifest.json", schedulerManifestPath(cwd)),
|
|
186
189
|
];
|
|
187
190
|
|
|
188
|
-
return { project, daemon, summary, stateFiles };
|
|
191
|
+
return { project, daemon, summary, compression: ledger.compression, stateFiles };
|
|
189
192
|
}
|
|
190
193
|
|
|
191
194
|
export function loadTokenLedgerPanel(cwd: string): TokenLedgerPayload {
|
|
@@ -194,6 +197,22 @@ export function loadTokenLedgerPanel(cwd: string): TokenLedgerPayload {
|
|
|
194
197
|
lifetime: ledger.lifetime,
|
|
195
198
|
sessions: ledger.sessions,
|
|
196
199
|
wasteFlags: ledger.wasteFlags ?? [],
|
|
200
|
+
compression: ledger.compression,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Dedicated Compression panel (spec 21, phase 4). Reads the measured
|
|
205
|
+
// compression aggregates, the holdout A/B split, per-kind/per-tool breakdowns,
|
|
206
|
+
// and recent events, plus whether compression is currently enabled.
|
|
207
|
+
export function loadCompressionPanel(cwd: string): CompressionPayload {
|
|
208
|
+
const repo = TokenLedgerRepo.for(cwd);
|
|
209
|
+
return {
|
|
210
|
+
enabled: loadCompressionConfig().enabled,
|
|
211
|
+
lifetime: repo.compressionLifetime(),
|
|
212
|
+
arms: repo.compressionArms(),
|
|
213
|
+
byKind: repo.compressionBreakdown("content_kind"),
|
|
214
|
+
byTool: repo.compressionBreakdown("tool_name"),
|
|
215
|
+
recent: repo.compressionEvents(50),
|
|
197
216
|
};
|
|
198
217
|
}
|
|
199
218
|
|
|
@@ -5,6 +5,7 @@ import { projectDir, designCapturesDir } from "./paths";
|
|
|
5
5
|
import {
|
|
6
6
|
loadOverview,
|
|
7
7
|
loadTokenLedgerPanel,
|
|
8
|
+
loadCompressionPanel,
|
|
8
9
|
loadFileIndexPanel,
|
|
9
10
|
loadSchedulerPanel,
|
|
10
11
|
loadLearningMemoryPanel,
|
|
@@ -525,6 +526,8 @@ export async function startDashboardServer(
|
|
|
525
526
|
return jsonResponse(loadOverview(resolvedCwd));
|
|
526
527
|
case "/api/token-ledger":
|
|
527
528
|
return jsonResponse(loadTokenLedgerPanel(resolvedCwd));
|
|
529
|
+
case "/api/compression":
|
|
530
|
+
return jsonResponse(loadCompressionPanel(resolvedCwd));
|
|
528
531
|
case "/api/file-index":
|
|
529
532
|
return jsonResponse(loadFileIndexPanel(resolvedCwd));
|
|
530
533
|
case "/api/scheduler":
|
|
@@ -24,6 +24,8 @@ import type {
|
|
|
24
24
|
CompressionEvent,
|
|
25
25
|
CompressionEventInput,
|
|
26
26
|
CompressionLifetime,
|
|
27
|
+
CompressionArms,
|
|
28
|
+
CompressionBreakdownRow,
|
|
27
29
|
} from "../types/token-ledger";
|
|
28
30
|
import type { SessionSummary } from "../types/session";
|
|
29
31
|
import type { WasteFlag, WastePattern } from "../types/waste-detection";
|
|
@@ -185,6 +187,7 @@ export class TokenLedgerRepo {
|
|
|
185
187
|
const ledger: TokenLedger = {
|
|
186
188
|
lifetime: this.lifetime(),
|
|
187
189
|
sessions: this.activeSessions(),
|
|
190
|
+
compression: this.compressionLifetime(),
|
|
188
191
|
};
|
|
189
192
|
const flagRows = this.db
|
|
190
193
|
.prepare(
|
|
@@ -320,6 +323,58 @@ export class TokenLedgerRepo {
|
|
|
320
323
|
}));
|
|
321
324
|
}
|
|
322
325
|
|
|
326
|
+
// Compression split by arm (holdout A/B). Compressed-arm carries the savings
|
|
327
|
+
// story; the holdout arm records the originals we deliberately left
|
|
328
|
+
// uncompressed as a control.
|
|
329
|
+
compressionArms(): CompressionArms {
|
|
330
|
+
const row = this.db.prepare(`
|
|
331
|
+
SELECT
|
|
332
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN 1 END), 0) AS cEvents,
|
|
333
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN original_tokens END), 0) AS cOriginal,
|
|
334
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN compressed_tokens END), 0) AS cCompressed,
|
|
335
|
+
COALESCE(SUM(CASE WHEN holdout = 1 THEN 1 END), 0) AS hEvents,
|
|
336
|
+
COALESCE(SUM(CASE WHEN holdout = 1 THEN original_tokens END), 0) AS hOriginal
|
|
337
|
+
FROM ledger_compressions
|
|
338
|
+
`).get() as Record<string, number> | undefined;
|
|
339
|
+
return {
|
|
340
|
+
compressed: {
|
|
341
|
+
events: Number(row?.cEvents ?? 0),
|
|
342
|
+
originalTokens: Number(row?.cOriginal ?? 0),
|
|
343
|
+
compressedTokens: Number(row?.cCompressed ?? 0),
|
|
344
|
+
},
|
|
345
|
+
holdout: {
|
|
346
|
+
events: Number(row?.hEvents ?? 0),
|
|
347
|
+
originalTokens: Number(row?.hOriginal ?? 0),
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Compression aggregates grouped by a dimension (content_kind or tool_name),
|
|
353
|
+
// ordered by measured savings. `savings` credits compressed arms only, so the
|
|
354
|
+
// breakdown reflects realised reductions, not held-out controls.
|
|
355
|
+
compressionBreakdown(
|
|
356
|
+
dimension: "content_kind" | "tool_name"
|
|
357
|
+
): CompressionBreakdownRow[] {
|
|
358
|
+
const rows = this.db.prepare(`
|
|
359
|
+
SELECT
|
|
360
|
+
${dimension} AS key,
|
|
361
|
+
COUNT(*) AS events,
|
|
362
|
+
COALESCE(SUM(original_tokens), 0) AS originalTokens,
|
|
363
|
+
COALESCE(SUM(compressed_tokens), 0) AS compressedTokens,
|
|
364
|
+
COALESCE(SUM(CASE WHEN holdout = 0 THEN original_tokens - compressed_tokens END), 0) AS savings
|
|
365
|
+
FROM ledger_compressions
|
|
366
|
+
GROUP BY ${dimension}
|
|
367
|
+
ORDER BY savings DESC
|
|
368
|
+
`).all() as Array<Record<string, unknown>>;
|
|
369
|
+
return rows.map((r) => ({
|
|
370
|
+
key: String(r.key),
|
|
371
|
+
events: Number(r.events),
|
|
372
|
+
originalTokens: Number(r.originalTokens),
|
|
373
|
+
compressedTokens: Number(r.compressedTokens),
|
|
374
|
+
savings: Number(r.savings),
|
|
375
|
+
}));
|
|
376
|
+
}
|
|
377
|
+
|
|
323
378
|
// ── Helpers ───────────────────────────────────────────────────────────
|
|
324
379
|
|
|
325
380
|
private insertSessionRow(
|
package/src/types/dashboard.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
LifetimeCounters,
|
|
3
|
+
LedgerSession,
|
|
4
|
+
CompressionLifetime,
|
|
5
|
+
CompressionArms,
|
|
6
|
+
CompressionBreakdownRow,
|
|
7
|
+
CompressionEvent,
|
|
8
|
+
} from "./token-ledger";
|
|
2
9
|
import type { WasteFlag } from "./waste-detection";
|
|
3
10
|
import type { FileIndexHeader, FileIndexEntry } from "./file-index";
|
|
4
11
|
import type { BugEntry } from "./bug-memory";
|
|
@@ -59,6 +66,9 @@ export interface OverviewPayload {
|
|
|
59
66
|
totalWrites: number;
|
|
60
67
|
estimatedSavings: number;
|
|
61
68
|
};
|
|
69
|
+
// Measured tool-output compression aggregates (spec 21), kept distinct from
|
|
70
|
+
// the heuristic estimatedSavings above. Optional for back-compat.
|
|
71
|
+
compression?: CompressionLifetime;
|
|
62
72
|
stateFiles: FileStatus[];
|
|
63
73
|
}
|
|
64
74
|
|
|
@@ -66,6 +76,17 @@ export interface TokenLedgerPayload {
|
|
|
66
76
|
lifetime: LifetimeCounters;
|
|
67
77
|
sessions: LedgerSession[];
|
|
68
78
|
wasteFlags: WasteFlag[];
|
|
79
|
+
compression?: CompressionLifetime;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Dedicated Compression panel payload (spec 21, phase 4).
|
|
83
|
+
export interface CompressionPayload {
|
|
84
|
+
enabled: boolean;
|
|
85
|
+
lifetime: CompressionLifetime;
|
|
86
|
+
arms: CompressionArms;
|
|
87
|
+
byKind: CompressionBreakdownRow[];
|
|
88
|
+
byTool: CompressionBreakdownRow[];
|
|
89
|
+
recent: CompressionEvent[];
|
|
69
90
|
}
|
|
70
91
|
|
|
71
92
|
export interface FileIndexPayload {
|
|
@@ -40,6 +40,10 @@ export interface TokenLedger {
|
|
|
40
40
|
lifetime: LifetimeCounters;
|
|
41
41
|
sessions: LedgerSession[];
|
|
42
42
|
wasteFlags?: WasteFlag[];
|
|
43
|
+
// Measured tool-output compression aggregates (spec 21). Optional because the
|
|
44
|
+
// legacy JSON-fallback ledger path has no compression data; only the SQLite
|
|
45
|
+
// snapshot() populates it.
|
|
46
|
+
compression?: CompressionLifetime;
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
// Tool-output compression measurement (spec 21).
|
|
@@ -74,3 +78,21 @@ export interface CompressionLifetime {
|
|
|
74
78
|
totalCompressedTokens: number;
|
|
75
79
|
totalMeasuredSavings: number;
|
|
76
80
|
}
|
|
81
|
+
|
|
82
|
+
// Compression aggregates split by arm — the holdout A/B view. The lifetime row
|
|
83
|
+
// sums original/compressed across both arms, so an honest comparison must come
|
|
84
|
+
// from grouping ledger_compressions by the holdout flag.
|
|
85
|
+
export interface CompressionArms {
|
|
86
|
+
compressed: { events: number; originalTokens: number; compressedTokens: number };
|
|
87
|
+
holdout: { events: number; originalTokens: number };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// One row of a compression breakdown grouped by a dimension (content kind or
|
|
91
|
+
// tool). `savings` credits compressed arms only.
|
|
92
|
+
export interface CompressionBreakdownRow {
|
|
93
|
+
key: string;
|
|
94
|
+
events: number;
|
|
95
|
+
originalTokens: number;
|
|
96
|
+
compressedTokens: number;
|
|
97
|
+
savings: number;
|
|
98
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(e,r,t,s){return{__rewrites:{afterFiles:[{has:t,source:"/api/:path*",destination:t}],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:19,errorRate:1e-4,numBits:365,numHashes:14,bitArray:[0,0,1,e,1,r,e,e,r,r,r,e,r,e,r,e,r,e,r,r,e,r,e,r,e,r,r,e,r,r,e,r,e,r,e,r,r,e,r,e,r,e,e,e,e,r,e,e,e,e,e,e,e,e,e,r,e,e,e,e,e,e,r,r,e,e,r,e,e,r,e,e,e,r,r,r,r,r,e,e,e,r,r,e,e,r,e,r,e,r,r,r,r,r,r,e,r,r,r,r,e,e,e,r,e,r,e,e,e,r,e,r,e,e,r,e,r,r,e,r,r,r,e,r,r,e,r,r,e,r,e,e,r,r,r,r,r,r,r,r,r,r,r,e,e,e,r,r,r,r,e,r,e,e,e,e,r,r,r,e,e,r,r,r,r,r,e,e,e,e,e,e,r,r,e,r,e,e,r,e,e,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,e,r,e,e,e,r,e,e,r,e,r,e,r,r,r,e,r,r,e,e,e,r,e,e,e,r,r,e,e,r,e,e,r,r,e,e,r,r,e,r,e,e,r,e,e,r,e,e,e,e,r,r,r,r,r,e,e,r,e,e,r,e,r,e,e,r,r,e,e,e,e,e,e,e,e,e,e,r,r,e,e,e,r,r,r,e,r,r,r,r,r,e,e,r,e,e,r,e,e,r,e,e,r,e,e,r,r,e,r,r,e,e,e,r,r,e,e,e,r,e,e,r,e,e,r,r,r,e,r,r,r,e,r,e,r,e,r,e,e,r,e,e,r,r,r,e,e,e,r,e,e,e,e,r,r,r,r,r,r,e,r,r,e,e,e,r,r,r,e]},__routerFilterDynamic:{numItems:e,errorRate:1e-4,numBits:e,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-cb2a52f75f2162e2.js"],sortedPages:["/_app","/_error"]}}(0,1,void 0,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[189],{63:(e,t,r)=>{"use strict";var n=r(7260);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},369:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_f367f3",variable:"__variable_f367f3"}},2296:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return p},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return g},NormalizeError:function(){return h},PageNotFoundError:function(){return y},SP:function(){return d},ST:function(){return m},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return i},getLocationOrigin:function(){return u},getURL:function(){return l},isAbsoluteUrl:function(){return a},isResSent:function(){return s},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return v}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return r||(r=!0,t=e(...o)),t}}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,a=e=>o.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function l(){let{href:e}=window.location,t=u();return e.substring(t.length)}function i(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function s(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&s(r))return n;if(!n)throw Object.defineProperty(Error('"'+i(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let d="undefined"!=typeof performance,m=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class p extends Error{}class h extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class g extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function v(e){return JSON.stringify({message:e.message,stack:e.stack})}},2619:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return y},useLinkStatus:function(){return b}});let n=r(9417),o=r(5155),a=n._(r(2115)),u=r(7670),l=r(6752),i=r(3011),s=r(2296),c=r(6058);r(4781);let f=r(3499),d=r(8607),m=r(1807);r(7045);let p=r(6048);function h(e){return"string"==typeof e?e:(0,u.formatUrl)(e)}function y(e){var t;let r,n,u,[y,b]=(0,a.useOptimistic)(f.IDLE_LINK_STATUS),v=(0,a.useRef)(null),{href:S,as:P,children:_,prefetch:E=null,passHref:O,replace:C,shallow:T,scroll:w,onClick:j,onMouseEnter:I,onTouchStart:k,legacyBehavior:N=!1,onNavigate:A,ref:L,unstable_dynamicOnHover:x,...M}=e;r=_,N&&("string"==typeof r||"number"==typeof r)&&(r=(0,o.jsx)("a",{children:r}));let R=a.default.useContext(l.AppRouterContext),U=!1!==E,F=!1!==E?null===(t=E)||"auto"===t?p.FetchStrategy.PPR:p.FetchStrategy.Full:p.FetchStrategy.PPR,{href:D,as:K}=a.default.useMemo(()=>{let e=h(S);return{href:e,as:P?h(P):e}},[S,P]);N&&(n=a.default.Children.only(r));let z=N?n&&"object"==typeof n&&n.ref:L,B=a.default.useCallback(e=>(null!==R&&(v.current=(0,f.mountLinkInstance)(e,D,R,F,U,b)),()=>{v.current&&((0,f.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,f.unmountPrefetchableInstance)(e)}),[U,D,R,F,b]),H={ref:(0,i.useMergedRef)(B,z),onClick(e){N||"function"!=typeof j||j(e),N&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),R&&(e.defaultPrevented||function(e,t,r,n,o,u,l){let{nodeName:i}=e.currentTarget;if(!("A"===i.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,d.isLocalURL)(t)){o&&(e.preventDefault(),location.replace(t));return}if(e.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}a.default.startTransition(()=>{(0,m.dispatchNavigateAction)(r||t,o?"replace":"push",null==u||u,n.current)})}}(e,D,K,v,C,w,A))},onMouseEnter(e){N||"function"!=typeof I||I(e),N&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),R&&U&&(0,f.onNavigationIntent)(e.currentTarget,!0===x)},onTouchStart:function(e){N||"function"!=typeof k||k(e),N&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),R&&U&&(0,f.onNavigationIntent)(e.currentTarget,!0===x)}};return(0,s.isAbsoluteUrl)(K)?H.href=K:N&&!O&&("a"!==n.type||"href"in n.props)||(H.href=(0,c.addBasePath)(K)),u=N?a.default.cloneElement(n,H):(0,o.jsx)("a",{...M,...H,children:r}),(0,o.jsx)(g.Provider,{value:y,children:u})}let g=(0,a.createContext)(f.IDLE_LINK_STATUS),b=()=>(0,a.useContext)(g);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3011:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=r(2115);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=a(e,n)),t&&(o.current=a(t,n))},[e,t])}function a(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3078:(e,t)=>{"use strict";function r(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,n(e));else t.set(r,n(o));return t}function a(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];for(let t of r){for(let r of t.keys())e.delete(r);for(let[r,n]of t.entries())e.append(r,n)}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{assign:function(){return a},searchParamsToUrlQuery:function(){return r},urlQueryToSearchParams:function(){return o}})},5379:(e,t,r)=>{"use strict";r.d(t,{D:()=>s,ThemeProvider:()=>c});var n=r(2115),o=(e,t,r,n,o,a,u,l)=>{let i=document.documentElement,s=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&a?o.map(e=>a[e]||e):o;r?(i.classList.remove(...n),i.classList.add(a&&a[t]?a[t]:t)):i.setAttribute(e,t)}),r=t,l&&s.includes(r)&&(i.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=u&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}},a=["light","dark"],u="(prefers-color-scheme: dark)",l=n.createContext(void 0),i={setTheme:e=>{},themes:[]},s=()=>{var e;return null!=(e=n.useContext(l))?e:i},c=e=>n.useContext(l)?n.createElement(n.Fragment,null,e.children):n.createElement(d,{...e}),f=["light","dark"],d=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:o=!0,enableColorScheme:i=!0,storageKey:s="theme",themes:c=f,defaultTheme:d=o?"system":"light",attribute:g="data-theme",value:b,children:v,nonce:S,scriptProps:P}=e,[_,E]=n.useState(()=>p(s,d)),[O,C]=n.useState(()=>"system"===_?y():_),T=b?Object.values(b):c,w=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&o&&(t=y());let n=b?b[t]:t,u=r?h(S):null,l=document.documentElement,s=e=>{"class"===e?(l.classList.remove(...T),n&&l.classList.add(n)):e.startsWith("data-")&&(n?l.setAttribute(e,n):l.removeAttribute(e))};if(Array.isArray(g)?g.forEach(s):s(g),i){let e=a.includes(d)?d:null,r=a.includes(t)?t:e;l.style.colorScheme=r}null==u||u()},[S]),j=n.useCallback(e=>{let t="function"==typeof e?e(_):e;E(t);try{localStorage.setItem(s,t)}catch(e){}},[_]),I=n.useCallback(e=>{C(y(e)),"system"===_&&o&&!t&&w("system")},[_,t]);n.useEffect(()=>{let e=window.matchMedia(u);return e.addListener(I),I(e),()=>e.removeListener(I)},[I]),n.useEffect(()=>{let e=e=>{e.key===s&&(e.newValue?E(e.newValue):j(d))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[j]),n.useEffect(()=>{w(null!=t?t:_)},[t,_]);let k=n.useMemo(()=>({theme:_,setTheme:j,forcedTheme:t,resolvedTheme:"system"===_?O:_,themes:o?[...c,"system"]:c,systemTheme:o?O:void 0}),[_,j,t,O,o,c]);return n.createElement(l.Provider,{value:k},n.createElement(m,{forcedTheme:t,storageKey:s,attribute:g,enableSystem:o,enableColorScheme:i,defaultTheme:d,value:b,themes:c,nonce:S,scriptProps:P}),v)},m=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:a,enableSystem:u,enableColorScheme:l,defaultTheme:i,value:s,themes:c,nonce:f,scriptProps:d}=e,m=JSON.stringify([a,r,i,t,c,s,u,l]).slice(1,-1);return n.createElement("script",{...d,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(o.toString(),")(").concat(m,")")}})}),p=(e,t)=>{let r;try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t},h=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},y=e=>(e||(e=window.matchMedia(u)),e.matches?"dark":"light")},5959:(e,t,r)=>{"use strict";r.d(t,{v:()=>u});var n=r(2115);let o=e=>{let t,r=new Set,n=(e,n)=>{let o="function"==typeof e?e(t):e;if(!Object.is(o,t)){let e=t;t=(null!=n?n:"object"!=typeof o||null===o)?o:Object.assign({},t,o),r.forEach(r=>r(t,e))}},o=()=>t,a={setState:n,getState:o,getInitialState:()=>u,subscribe:e=>(r.add(e),()=>r.delete(e))},u=t=e(n,o,a);return a},a=e=>{let t=(e=>e?o(e):o)(e),r=e=>(function(e,t=e=>e){let r=n.useSyncExternalStore(e.subscribe,n.useCallback(()=>t(e.getState()),[e,t]),n.useCallback(()=>t(e.getInitialState()),[e,t]));return n.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},u=e=>e?a(e):a},7045:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},7670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return a},formatWithValidation:function(){return l},urlObjectKeys:function(){return u}});let n=r(9417)._(r(3078)),o=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:r}=e,a=e.protocol||"",u=e.pathname||"",l=e.hash||"",i=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(s+=":"+e.port)),i&&"object"==typeof i&&(i=String(n.urlQueryToSearchParams(i)));let c=e.search||i&&"?"+i||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==s?(s="//"+(s||""),u&&"/"!==u[0]&&(u="/"+u)):s||(s=""),l&&"#"!==l[0]&&(l="#"+l),c&&"?"!==c[0]&&(c="?"+c),""+a+s+(u=u.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+l}let u=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return a(e)}},7770:e=>{e.exports={style:{fontFamily:"'JetBrains Mono', 'JetBrains Mono Fallback'",fontStyle:"normal"},className:"__className_3c557b",variable:"__variable_3c557b"}},8607:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=r(2296),o=r(2929);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},9863:(e,t,r)=>{"use strict";function n(e,t){let r;try{r=e()}catch(e){return}return{getItem:e=>{var n;let o=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),a=null!=(n=r.getItem(e))?n:null;return a instanceof Promise?a.then(o):o(a)},setItem:(e,n)=>r.setItem(e,JSON.stringify(n,null==t?void 0:t.replacer)),removeItem:e=>r.removeItem(e)}}r.d(t,{KU:()=>n,Zr:()=>a});let o=e=>t=>{try{let r=e(t);if(r instanceof Promise)return r;return{then:e=>o(e)(r),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>o(t)(e)}}},a=(e,t)=>(r,a,u)=>{let l,i={storage:n(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},s=!1,c=0,f=new Set,d=new Set,m=i.storage;if(!m)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),r(...e)},a,u);let p=()=>{let e=i.partialize({...a()});return m.setItem(i.name,{state:e,version:i.version})},h=u.setState;u.setState=(e,t)=>(h(e,t),p());let y=e((...e)=>(r(...e),p()),a,u);u.getInitialState=()=>y;let g=()=>{var e,t;if(!m)return;let n=++c;s=!1,f.forEach(e=>{var t;return e(null!=(t=a())?t:y)});let u=(null==(t=i.onRehydrateStorage)?void 0:t.call(i,null!=(e=a())?e:y))||void 0;return o(m.getItem.bind(m))(i.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===i.version)return[!1,e.state];else{if(i.migrate){let t=i.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;if(n!==c)return;let[o,u]=e;if(r(l=i.merge(u,null!=(t=a())?t:y),!0),o)return p()}).then(()=>{n===c&&(null==u||u(a(),void 0),l=a(),s=!0,d.forEach(e=>e(l)))}).catch(e=>{n===c&&(null==u||u(void 0,e))})};return u.persist={setOptions:e=>{i={...i,...e},e.storage&&(m=e.storage)},clearStorage:()=>{null==m||m.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>g(),hasHydrated:()=>s,onHydrate:e=>(f.add(e),()=>{f.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},i.skipHydration||g(),l||y}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[91],{1044:(e,t,s)=>{"use strict";s.d(t,{I:()=>n});var l=s(5155);let a={pulse:"M2 12h4l2-7 4 14 2-7h6",activity:"M22 12h-4l-3 9L9 3l-3 9H2",layers:"M12 2l10 6-10 6L2 8l10-6zm0 10l10 6-10 6L2 18l10-6z",database:"M4 5a8 3 0 1016 0 8 3 0 10-16 0v14a8 3 0 0016 0V5",sparkles:"M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM20 15l.8 2.2L23 18l-2.2.8L20 21l-.8-2.2L17 18l2.2-.8z",brain:"M12 4a4 4 0 00-4 4v1a3 3 0 00-2 5.5A3 3 0 008 19a4 4 0 004 2 4 4 0 004-2 3 3 0 002-4.5A3 3 0 0016 9V8a4 4 0 00-4-4z",bug:"M8 8V6a4 4 0 018 0v2M4 13h16M12 8v13M7 21s-3-2-3-8M17 21s3-2 3-8M8 9l-4-3M16 9l4-3M8 13l-4 3M16 13l4 3",file:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z",folder:"M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z",clock:"M12 22a10 10 0 100-20 10 10 0 000 20zm0-16v6l4 2",alert:"M12 2l11 20H1L12 2zm0 7v5m0 4v0",settings:"M12 15a3 3 0 100-6 3 3 0 000 6zm8-3l2-1-2-4-2 1-1-1V4h-4v1l-1 1-2-1-2 4 2 1v2l-2 1 2 4 2-1 1 1v1h4v-1l1-1 2 1 2-4-2-1v-2z",link:"M10 13a5 5 0 007 0l3-3a5 5 0 00-7-7l-1 1M14 11a5 5 0 00-7 0l-3 3a5 5 0 007 7l1-1",git:"M6 3v12M6 15a3 3 0 110 6 3 3 0 010-6zm0-12a3 3 0 110 6 3 3 0 010-6zm12 6a3 3 0 110 6 3 3 0 010-6zM18 9v2a2 2 0 01-2 2H9",discord:"M9 14a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zM7 7l2-1h6l2 1 2 5-1 5-3 1-1-2-4 0-1 2-3-1-1-5z",chev:"M9 6l6 6-6 6",chevDown:"M6 9l6 6 6-6",play:"M6 4l14 8-14 8z",pause:"M7 4h4v16H7zM13 4h4v16h-4z",stop:"M6 6h12v12H6z",plus:"M12 5v14M5 12h14",search:"M21 21l-5-5m2-6a8 8 0 11-16 0 8 8 0 0116 0z",refresh:"M3 12a9 9 0 019-9c2.5 0 4.7 1 6.3 2.7M21 3v5h-5M21 12a9 9 0 01-9 9c-2.5 0-4.7-1-6.3-2.7M3 21v-5h5",dots:"M5 12a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0z",check:"M20 6L9 17l-5-5",x:"M6 6l12 12M6 18L18 6",download:"M12 3v13m0 0l-5-5m5 5l5-5M4 21h16",upload:"M12 21V8m0 0l-5 5m5-5l5 5M4 3h16",arrowUp:"M12 19V5m0 0l-7 7m7-7l7 7",arrowDown:"M12 5v14m0 0l-7-7m7 7l7-7",trash:"M4 7h16M10 7V4h4v3m-6 0v13h8V7",home:"M3 12l9-9 9 9M5 10v10h14V10",command:"M6 3a3 3 0 013 3v12a3 3 0 11-3-3h12a3 3 0 113 3V6a3 3 0 11-3 3H6",archive:"M3 7h18v4H3zM5 11v9h14v-9M10 14h4",terminal:"M4 5h16v14H4zM8 9l3 3-3 3M13 15h4",wand:"M15 4V2m0 14v-2m-7-7h2M22 9h-2M5.6 5.6l1.4 1.4M18.4 5.6L17 7m0 10l1.4 1.4M7 17l-1.4 1.4M14 7l-9 9 3 3 9-9",tag:"M20 13l-7 7a2 2 0 01-3 0L3 13V4h9l8 9zM7 7h.01",calendar:"M3 7h18v13H3zM3 7l0-3h18v3M8 2v4M16 2v4M3 11h18",list:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",grid:"M3 3h8v8H3zM13 3h8v8h-8zM3 13h8v8H3zM13 13h8v8h-8z",eye:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12zm10 3a3 3 0 100-6 3 3 0 000 6z",chart:"M3 20h18M6 16V8M11 16V4M16 16v-6M21 16v-3",book:"M4 4h12a4 4 0 014 4v12H8a4 4 0 01-4-4V4zm0 0v16",copy:"M8 5h10a2 2 0 012 2v10M4 9h10a2 2 0 012 2v10H6a2 2 0 01-2-2V9z",power:"M18 6a8 8 0 11-12 0M12 2v8",stack:"M4 6h16M4 12h16M4 18h16"};function n(e){let{name:t,size:s=14,stroke:n=1.7,className:i=""}=e,r=a[t];return r?(0,l.jsx)("svg",{className:"icn ".concat(i).trim(),width:s,height:s,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round",children:(0,l.jsx)("path",{d:r})}):null}},3742:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var l=s(5155);function a(e){let{title:t,sub:s,tools:a,flush:n,className:i="",style:r,children:c}=e,o=null!=t||null!=a;return(0,l.jsxs)("div",{className:"card ".concat(i).trim(),style:r,children:[o&&(0,l.jsxs)("div",{className:"card-head",children:[null!=t&&("string"==typeof t?(0,l.jsx)("h3",{children:t}):t),null!=s&&(0,l.jsx)("span",{className:"sub",children:s}),null!=a&&(0,l.jsx)("div",{className:"tools",children:a})]}),(0,l.jsx)("div",{className:"card-body ".concat(n?"flush":"").trim(),children:c})]})}},3928:(e,t,s)=>{"use strict";s.d(t,{f:()=>l});let l=(0,s(5959).v)(e=>({connected:!1,projects:[],activeProjectId:null,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[],config:null,sync:null,channel:null,wiki:null,wikiNote:null,setConnected:t=>e({connected:t}),setProjects:(t,s)=>e({projects:t,activeProjectId:s}),setActiveProject:t=>e({activeProjectId:t,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[]}),setOverview:t=>e({overview:t}),setLedger:t=>{var s;return e({ledger:t,wasteFlags:null!=(s=t.wasteFlags)?s:[]})},setFileIndex:t=>e({fileIndex:t}),setScheduler:(t,s,l)=>e({tasks:t,taskDefinitions:s,deadLetters:l}),setHealth:t=>e({health:t}),setLearningMemory:t=>e({learningMemory:t}),setActionLog:t=>e({actionLog:t}),setBugs:t=>e({bugs:t}),setWasteFlags:t=>e({wasteFlags:t}),setDesignImages:t=>e({designImages:t}),setConfig:t=>e({config:t}),setSync:t=>e({sync:t}),setChannel:t=>e({channel:t}),setWiki:t=>e({wiki:t}),setWikiNote:t=>e({wikiNote:t})}))},5530:(e,t,s)=>{Promise.resolve().then(s.bind(s,6893))},5959:(e,t,s)=>{"use strict";s.d(t,{v:()=>i});var l=s(2115);let a=e=>{let t,s=new Set,l=(e,l)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=l?l:"object"!=typeof a||null===a)?a:Object.assign({},t,a),s.forEach(s=>s(t,e))}},a=()=>t,n={setState:l,getState:a,getInitialState:()=>i,subscribe:e=>(s.add(e),()=>s.delete(e))},i=t=e(l,a,n);return n},n=e=>{let t=(e=>e?a(e):a)(e),s=e=>(function(e,t=e=>e){let s=l.useSyncExternalStore(e.subscribe,l.useCallback(()=>t(e.getState()),[e,t]),l.useCallback(()=>t(e.getInitialState()),[e,t]));return l.useDebugValue(s),s})(t,e);return Object.assign(s,t),s},i=e=>e?n(e):n},6845:(e,t,s)=>{"use strict";s.d(t,{t:()=>n});var l=s(5155),a=s(1044);function n(e){let{icon:t,variant:s,size:n,className:i="",children:r,...c}=e,o=["btn"];return s&&o.push(s),n&&o.push(n),i&&o.push(i),(0,l.jsxs)("button",{className:o.join(" "),...c,children:[t&&(0,l.jsx)(a.I,{name:t}),r]})}},6893:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>u});var l=s(5155),a=s(2115),n=s(3928),i=s(3742),r=s(7125),c=s(6845);let o=["all","read","write","session","other"];function h(e){let t=e.action.toLowerCase();return"read"===t?"read":"create"===t||"edit"===t||"write"===t?"write":t.includes("session")?"session":"other"}function d(){let e=(0,n.f)(e=>e.actionLog),[t,s]=(0,a.useState)("all"),d=(0,a.useMemo)(()=>[...e].reverse(),[e]),u="all"===t?d:d.filter(e=>h(e)===t);return(0,l.jsxs)("div",{className:"page",children:[(0,l.jsxs)("div",{className:"page-head",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h1",{className:"page-title",children:"Activity log"}),(0,l.jsx)("p",{className:"page-sub",children:"Chronological, human-readable record of every hook event"})]}),(0,l.jsx)("div",{className:"page-actions",children:(0,l.jsx)(c.t,{icon:"download",variant:"ghost",disabled:!0,title:"Export coming soon",children:"Export .md"})})]}),(0,l.jsx)(i.Z,{title:"Recent activity",sub:"".concat(u.length," events"),tools:(0,l.jsx)("div",{className:"row tight",children:o.map(e=>(0,l.jsx)("button",{type:"button",className:"tab ".concat(t===e?"on":""),style:{padding:"3px 8px",fontSize:10.5,marginBottom:0,borderBottom:0,borderRadius:4,background:t===e?"var(--bg-3)":"transparent"},onClick:()=>s(e),children:e},e))}),flush:!0,children:0===u.length?(0,l.jsxs)("div",{className:"empty",children:[(0,l.jsx)("h4",{children:"No activity recorded"}),(0,l.jsx)("span",{children:"start a Claude session with mink hooks enabled to populate this log."})]}):(0,l.jsx)("div",{children:u.map((e,t)=>{let s=h(e);return(0,l.jsxs)("div",{className:"evt ".concat(t<2?"fresh":"").trim(),children:[(0,l.jsx)("span",{className:"t",children:e.time}),(0,l.jsxs)("span",{className:"c",children:[(0,l.jsx)(r.v,{tone:function(e){switch(e){case"read":return"";case"write":return"blue";case"session":return"accent";default:return"amber"}}(s),children:s}),(0,l.jsxs)("span",{children:[" ",e.action," "]}),e.files&&"—"!==e.files&&(0,l.jsx)("code",{children:e.files}),e.outcome&&"—"!==e.outcome&&(0,l.jsx)("span",{className:"muted",style:{marginLeft:8,fontSize:10.5,fontFamily:"var(--font-mono), monospace"},children:e.outcome}),e.tokens&&"—"!==e.tokens&&(0,l.jsxs)("span",{className:"muted",style:{marginLeft:8,fontSize:10.5,fontFamily:"var(--font-mono), monospace"},children:[e.tokens," tok"]})]})]},"".concat(e.time,"-").concat(t))})})})]})}function u(){return(0,l.jsx)(d,{})}},7125:(e,t,s)=>{"use strict";s.d(t,{v:()=>a});var l=s(5155);function a(e){let{tone:t="",children:s,className:a=""}=e;return(0,l.jsx)("span",{className:"chip ".concat(t," ").concat(a).trim(),children:s})}}},e=>{e.O(0,[441,255,358],()=>e(e.s=5530)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[273],{1008:(e,t,l)=>{Promise.resolve().then(l.bind(l,8032))},1044:(e,t,l)=>{"use strict";l.d(t,{I:()=>n});var s=l(5155);let a={pulse:"M2 12h4l2-7 4 14 2-7h6",activity:"M22 12h-4l-3 9L9 3l-3 9H2",layers:"M12 2l10 6-10 6L2 8l10-6zm0 10l10 6-10 6L2 18l10-6z",database:"M4 5a8 3 0 1016 0 8 3 0 10-16 0v14a8 3 0 0016 0V5",sparkles:"M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM20 15l.8 2.2L23 18l-2.2.8L20 21l-.8-2.2L17 18l2.2-.8z",brain:"M12 4a4 4 0 00-4 4v1a3 3 0 00-2 5.5A3 3 0 008 19a4 4 0 004 2 4 4 0 004-2 3 3 0 002-4.5A3 3 0 0016 9V8a4 4 0 00-4-4z",bug:"M8 8V6a4 4 0 018 0v2M4 13h16M12 8v13M7 21s-3-2-3-8M17 21s3-2 3-8M8 9l-4-3M16 9l4-3M8 13l-4 3M16 13l4 3",file:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z",folder:"M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z",clock:"M12 22a10 10 0 100-20 10 10 0 000 20zm0-16v6l4 2",alert:"M12 2l11 20H1L12 2zm0 7v5m0 4v0",settings:"M12 15a3 3 0 100-6 3 3 0 000 6zm8-3l2-1-2-4-2 1-1-1V4h-4v1l-1 1-2-1-2 4 2 1v2l-2 1 2 4 2-1 1 1v1h4v-1l1-1 2 1 2-4-2-1v-2z",link:"M10 13a5 5 0 007 0l3-3a5 5 0 00-7-7l-1 1M14 11a5 5 0 00-7 0l-3 3a5 5 0 007 7l1-1",git:"M6 3v12M6 15a3 3 0 110 6 3 3 0 010-6zm0-12a3 3 0 110 6 3 3 0 010-6zm12 6a3 3 0 110 6 3 3 0 010-6zM18 9v2a2 2 0 01-2 2H9",discord:"M9 14a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zM7 7l2-1h6l2 1 2 5-1 5-3 1-1-2-4 0-1 2-3-1-1-5z",chev:"M9 6l6 6-6 6",chevDown:"M6 9l6 6 6-6",play:"M6 4l14 8-14 8z",pause:"M7 4h4v16H7zM13 4h4v16h-4z",stop:"M6 6h12v12H6z",plus:"M12 5v14M5 12h14",search:"M21 21l-5-5m2-6a8 8 0 11-16 0 8 8 0 0116 0z",refresh:"M3 12a9 9 0 019-9c2.5 0 4.7 1 6.3 2.7M21 3v5h-5M21 12a9 9 0 01-9 9c-2.5 0-4.7-1-6.3-2.7M3 21v-5h5",dots:"M5 12a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0z",check:"M20 6L9 17l-5-5",x:"M6 6l12 12M6 18L18 6",download:"M12 3v13m0 0l-5-5m5 5l5-5M4 21h16",upload:"M12 21V8m0 0l-5 5m5-5l5 5M4 3h16",arrowUp:"M12 19V5m0 0l-7 7m7-7l7 7",arrowDown:"M12 5v14m0 0l-7-7m7 7l7-7",trash:"M4 7h16M10 7V4h4v3m-6 0v13h8V7",home:"M3 12l9-9 9 9M5 10v10h14V10",command:"M6 3a3 3 0 013 3v12a3 3 0 11-3-3h12a3 3 0 113 3V6a3 3 0 11-3 3H6",archive:"M3 7h18v4H3zM5 11v9h14v-9M10 14h4",terminal:"M4 5h16v14H4zM8 9l3 3-3 3M13 15h4",wand:"M15 4V2m0 14v-2m-7-7h2M22 9h-2M5.6 5.6l1.4 1.4M18.4 5.6L17 7m0 10l1.4 1.4M7 17l-1.4 1.4M14 7l-9 9 3 3 9-9",tag:"M20 13l-7 7a2 2 0 01-3 0L3 13V4h9l8 9zM7 7h.01",calendar:"M3 7h18v13H3zM3 7l0-3h18v3M8 2v4M16 2v4M3 11h18",list:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",grid:"M3 3h8v8H3zM13 3h8v8h-8zM3 13h8v8H3zM13 13h8v8h-8z",eye:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12zm10 3a3 3 0 100-6 3 3 0 000 6z",chart:"M3 20h18M6 16V8M11 16V4M16 16v-6M21 16v-3",book:"M4 4h12a4 4 0 014 4v12H8a4 4 0 01-4-4V4zm0 0v16",copy:"M8 5h10a2 2 0 012 2v10M4 9h10a2 2 0 012 2v10H6a2 2 0 01-2-2V9z",power:"M18 6a8 8 0 11-12 0M12 2v8",stack:"M4 6h16M4 12h16M4 18h16"};function n(e){let{name:t,size:l=14,stroke:n=1.7,className:r=""}=e,i=a[t];return i?(0,s.jsx)("svg",{className:"icn ".concat(r).trim(),width:l,height:l,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:n,strokeLinecap:"round",strokeLinejoin:"round",children:(0,s.jsx)("path",{d:i})}):null}},3742:(e,t,l)=>{"use strict";l.d(t,{Z:()=>a});var s=l(5155);function a(e){let{title:t,sub:l,tools:a,flush:n,className:r="",style:i,children:c}=e,o=null!=t||null!=a;return(0,s.jsxs)("div",{className:"card ".concat(r).trim(),style:i,children:[o&&(0,s.jsxs)("div",{className:"card-head",children:[null!=t&&("string"==typeof t?(0,s.jsx)("h3",{children:t}):t),null!=l&&(0,s.jsx)("span",{className:"sub",children:l}),null!=a&&(0,s.jsx)("div",{className:"tools",children:a})]}),(0,s.jsx)("div",{className:"card-body ".concat(n?"flush":"").trim(),children:c})]})}},3928:(e,t,l)=>{"use strict";l.d(t,{f:()=>s});let s=(0,l(5959).v)(e=>({connected:!1,projects:[],activeProjectId:null,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[],config:null,sync:null,channel:null,wiki:null,wikiNote:null,setConnected:t=>e({connected:t}),setProjects:(t,l)=>e({projects:t,activeProjectId:l}),setActiveProject:t=>e({activeProjectId:t,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[]}),setOverview:t=>e({overview:t}),setLedger:t=>{var l;return e({ledger:t,wasteFlags:null!=(l=t.wasteFlags)?l:[]})},setFileIndex:t=>e({fileIndex:t}),setScheduler:(t,l,s)=>e({tasks:t,taskDefinitions:l,deadLetters:s}),setHealth:t=>e({health:t}),setLearningMemory:t=>e({learningMemory:t}),setActionLog:t=>e({actionLog:t}),setBugs:t=>e({bugs:t}),setWasteFlags:t=>e({wasteFlags:t}),setDesignImages:t=>e({designImages:t}),setConfig:t=>e({config:t}),setSync:t=>e({sync:t}),setChannel:t=>e({channel:t}),setWiki:t=>e({wiki:t}),setWikiNote:t=>e({wikiNote:t})}))},5959:(e,t,l)=>{"use strict";l.d(t,{v:()=>r});var s=l(2115);let a=e=>{let t,l=new Set,s=(e,s)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=s?s:"object"!=typeof a||null===a)?a:Object.assign({},t,a),l.forEach(l=>l(t,e))}},a=()=>t,n={setState:s,getState:a,getInitialState:()=>r,subscribe:e=>(l.add(e),()=>l.delete(e))},r=t=e(s,a,n);return n},n=e=>{let t=(e=>e?a(e):a)(e),l=e=>(function(e,t=e=>e){let l=s.useSyncExternalStore(e.subscribe,s.useCallback(()=>t(e.getState()),[e,t]),s.useCallback(()=>t(e.getInitialState()),[e,t]));return s.useDebugValue(l),l})(t,e);return Object.assign(l,t),l},r=e=>e?n(e):n},6845:(e,t,l)=>{"use strict";l.d(t,{t:()=>n});var s=l(5155),a=l(1044);function n(e){let{icon:t,variant:l,size:n,className:r="",children:i,...c}=e,o=["btn"];return l&&o.push(l),n&&o.push(n),r&&o.push(r),(0,s.jsxs)("button",{className:o.join(" "),...c,children:[t&&(0,s.jsx)(a.I,{name:t}),i]})}},7e3:(e,t,l)=>{"use strict";function s(e){return e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":String(e)}function a(e){if(!e||e<=0)return"—";let t=Math.floor(e/1e3),l=Math.floor(t/60),s=Math.floor(l/60);return s>0?s+"h "+l%60+"m":l>0?l+"m "+t%60+"s":t+"s"}function n(e){if(!e)return"—";try{let t=new Date(e);return t.toLocaleDateString()+" "+t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch(t){return e}}l.d(t,{Y0:()=>a,aT:()=>s,r6:()=>n})},7125:(e,t,l)=>{"use strict";l.d(t,{v:()=>a});var s=l(5155);function a(e){let{tone:t="",children:l,className:a=""}=e;return(0,s.jsx)("span",{className:"chip ".concat(t," ").concat(a).trim(),children:l})}},8032:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>m});var s=l(5155),a=l(2115),n=l(3928),r=l(3742),i=l(7125),c=l(6845),o=l(1044),d=l(7e3);function h(e){return!!e.fixDescription&&e.fixDescription.trim().length>0}function u(){let e=(0,n.f)(e=>e.bugs),[t,l]=(0,a.useState)(""),[u,m]=(0,a.useState)("all"),[v,M]=(0,a.useState)([]),[g,x]=(0,a.useState)(null),f=(0,a.useMemo)(()=>{let t=new Set;return e.forEach(e=>{var l;return null==(l=e.tags)?void 0:l.forEach(e=>t.add(e))}),Array.from(t).sort()},[e]),j=(0,a.useMemo)(()=>e.filter(e=>{var l;return!("open"===u&&h(e))&&("fixed"!==u||!!h(e))&&(!t||!!((null==(l=e.errorMessage)?void 0:l.toLowerCase().includes(t.toLowerCase()))||e.id.toLowerCase().includes(t.toLowerCase())))&&(!v.length||!!v.every(t=>e.tags.includes(t)))}),[e,t,u,v]),p=e.filter(e=>!h(e)).length;return(0,s.jsxs)("div",{className:"page",children:[(0,s.jsxs)("div",{className:"page-head",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Bug memory"}),(0,s.jsxs)("p",{className:"page-sub",children:[e.length," bugs \xb7 ",p," open"]})]}),(0,s.jsx)("div",{className:"page-actions",children:(0,s.jsx)(c.t,{icon:"plus",variant:"primary",disabled:!0,title:"Write endpoint coming soon",children:"Log bug"})})]}),(0,s.jsx)(r.Z,{title:(0,s.jsxs)("div",{className:"row",style:{flex:1,gap:10,flexWrap:"wrap"},children:[(0,s.jsxs)("div",{className:"row",style:{maxWidth:280,flex:1},children:[(0,s.jsx)(o.I,{name:"search",size:12,className:"muted"}),(0,s.jsx)("input",{value:t,onChange:e=>l(e.target.value),placeholder:"Search bugs…","aria-label":"Search bugs",style:{flex:1,background:"transparent",border:0,color:"var(--fg-0)",fontSize:11.5,outline:"none",fontFamily:"var(--font-mono), monospace"}})]}),(0,s.jsx)("div",{className:"seg",children:["all","open","fixed"].map(e=>(0,s.jsx)("button",{type:"button",className:u===e?"on":"",onClick:()=>m(e),children:e},e))}),(0,s.jsx)("div",{className:"row tight",style:{flexWrap:"wrap"},children:f.map(e=>(0,s.jsx)("button",{type:"button",onClick:()=>{M(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},children:(0,s.jsxs)(i.v,{tone:v.includes(e)?"accent":"",children:["#",e]})},e))})]}),flush:!0,children:0===j.length?(0,s.jsx)("div",{className:"empty",children:(0,s.jsx)("h4",{children:"No bugs match"})}):(0,s.jsxs)("table",{className:"tbl",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{}),(0,s.jsx)("th",{children:"ID"}),(0,s.jsx)("th",{children:"Error"}),(0,s.jsx)("th",{children:"Tags"}),(0,s.jsx)("th",{children:"File"}),(0,s.jsx)("th",{children:"Root cause"}),(0,s.jsx)("th",{className:"right",children:"When"})]})}),(0,s.jsx)("tbody",{children:j.map(e=>{let t=h(e),l=g===e.id;return(0,s.jsxs)(a.Fragment,{children:[(0,s.jsxs)("tr",{onClick:()=>x(l?null:e.id),style:{cursor:"pointer"},children:[(0,s.jsx)("td",{children:t?(0,s.jsx)(i.v,{tone:"accent",children:"fixed"}):(0,s.jsx)(i.v,{tone:"red",children:"open"})}),(0,s.jsx)("td",{className:"mono",children:e.id}),(0,s.jsx)("td",{className:"strong",style:{maxWidth:280,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.errorMessage}),(0,s.jsx)("td",{children:(0,s.jsx)("div",{className:"row tight",style:{flexWrap:"wrap"},children:e.tags.map(e=>(0,s.jsxs)(i.v,{children:["#",e]},e))})}),(0,s.jsxs)("td",{className:"mono muted",style:{fontSize:10.5},children:[e.filePath,e.lineNumber?":".concat(e.lineNumber):""]}),(0,s.jsx)("td",{className:"muted",style:{maxWidth:260,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.rootCause}),(0,s.jsx)("td",{className:"right mono muted",children:(0,d.r6)(e.lastSeenAt)})]}),l&&(0,s.jsx)("tr",{children:(0,s.jsx)("td",{colSpan:7,style:{background:"var(--bg-2)",padding:"12px 14px"},children:(0,s.jsxs)("div",{className:"vstack",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"muted",style:{fontSize:10,textTransform:"uppercase",letterSpacing:"0.08em",fontWeight:600,marginBottom:4},children:"Root cause"}),(0,s.jsx)("div",{children:e.rootCause||"—"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"muted",style:{fontSize:10,textTransform:"uppercase",letterSpacing:"0.08em",fontWeight:600,marginBottom:4},children:"Fix"}),(0,s.jsx)("div",{children:e.fixDescription||(0,s.jsx)("span",{className:"muted",children:"not fixed yet"})})]}),(0,s.jsxs)("div",{className:"mono muted",style:{fontSize:11},children:["seen ",e.occurrenceCount,"\xd7 \xb7 created ",(0,d.r6)(e.createdAt)]})]})})})]},e.id)})})]})})]})}function m(){return(0,s.jsx)(u,{})}}},e=>{e.O(0,[441,255,358],()=>e(e.s=1008)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[24],{1044:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var a=n(5155);let s={pulse:"M2 12h4l2-7 4 14 2-7h6",activity:"M22 12h-4l-3 9L9 3l-3 9H2",layers:"M12 2l10 6-10 6L2 8l10-6zm0 10l10 6-10 6L2 18l10-6z",database:"M4 5a8 3 0 1016 0 8 3 0 10-16 0v14a8 3 0 0016 0V5",sparkles:"M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM20 15l.8 2.2L23 18l-2.2.8L20 21l-.8-2.2L17 18l2.2-.8z",brain:"M12 4a4 4 0 00-4 4v1a3 3 0 00-2 5.5A3 3 0 008 19a4 4 0 004 2 4 4 0 004-2 3 3 0 002-4.5A3 3 0 0016 9V8a4 4 0 00-4-4z",bug:"M8 8V6a4 4 0 018 0v2M4 13h16M12 8v13M7 21s-3-2-3-8M17 21s3-2 3-8M8 9l-4-3M16 9l4-3M8 13l-4 3M16 13l4 3",file:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z",folder:"M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z",clock:"M12 22a10 10 0 100-20 10 10 0 000 20zm0-16v6l4 2",alert:"M12 2l11 20H1L12 2zm0 7v5m0 4v0",settings:"M12 15a3 3 0 100-6 3 3 0 000 6zm8-3l2-1-2-4-2 1-1-1V4h-4v1l-1 1-2-1-2 4 2 1v2l-2 1 2 4 2-1 1 1v1h4v-1l1-1 2 1 2-4-2-1v-2z",link:"M10 13a5 5 0 007 0l3-3a5 5 0 00-7-7l-1 1M14 11a5 5 0 00-7 0l-3 3a5 5 0 007 7l1-1",git:"M6 3v12M6 15a3 3 0 110 6 3 3 0 010-6zm0-12a3 3 0 110 6 3 3 0 010-6zm12 6a3 3 0 110 6 3 3 0 010-6zM18 9v2a2 2 0 01-2 2H9",discord:"M9 14a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zM7 7l2-1h6l2 1 2 5-1 5-3 1-1-2-4 0-1 2-3-1-1-5z",chev:"M9 6l6 6-6 6",chevDown:"M6 9l6 6 6-6",play:"M6 4l14 8-14 8z",pause:"M7 4h4v16H7zM13 4h4v16h-4z",stop:"M6 6h12v12H6z",plus:"M12 5v14M5 12h14",search:"M21 21l-5-5m2-6a8 8 0 11-16 0 8 8 0 0116 0z",refresh:"M3 12a9 9 0 019-9c2.5 0 4.7 1 6.3 2.7M21 3v5h-5M21 12a9 9 0 01-9 9c-2.5 0-4.7-1-6.3-2.7M3 21v-5h5",dots:"M5 12a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0z",check:"M20 6L9 17l-5-5",x:"M6 6l12 12M6 18L18 6",download:"M12 3v13m0 0l-5-5m5 5l5-5M4 21h16",upload:"M12 21V8m0 0l-5 5m5-5l5 5M4 3h16",arrowUp:"M12 19V5m0 0l-7 7m7-7l7 7",arrowDown:"M12 5v14m0 0l-7-7m7 7l7-7",trash:"M4 7h16M10 7V4h4v3m-6 0v13h8V7",home:"M3 12l9-9 9 9M5 10v10h14V10",command:"M6 3a3 3 0 013 3v12a3 3 0 11-3-3h12a3 3 0 113 3V6a3 3 0 11-3 3H6",archive:"M3 7h18v4H3zM5 11v9h14v-9M10 14h4",terminal:"M4 5h16v14H4zM8 9l3 3-3 3M13 15h4",wand:"M15 4V2m0 14v-2m-7-7h2M22 9h-2M5.6 5.6l1.4 1.4M18.4 5.6L17 7m0 10l1.4 1.4M7 17l-1.4 1.4M14 7l-9 9 3 3 9-9",tag:"M20 13l-7 7a2 2 0 01-3 0L3 13V4h9l8 9zM7 7h.01",calendar:"M3 7h18v13H3zM3 7l0-3h18v3M8 2v4M16 2v4M3 11h18",list:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",grid:"M3 3h8v8H3zM13 3h8v8h-8zM3 13h8v8H3zM13 13h8v8h-8z",eye:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12zm10 3a3 3 0 100-6 3 3 0 000 6z",chart:"M3 20h18M6 16V8M11 16V4M16 16v-6M21 16v-3",book:"M4 4h12a4 4 0 014 4v12H8a4 4 0 01-4-4V4zm0 0v16",copy:"M8 5h10a2 2 0 012 2v10M4 9h10a2 2 0 012 2v10H6a2 2 0 01-2-2V9z",power:"M18 6a8 8 0 11-12 0M12 2v8",stack:"M4 6h16M4 12h16M4 18h16"};function i(e){let{name:t,size:n=14,stroke:i=1.7,className:l=""}=e,r=s[t];return r?(0,a.jsx)("svg",{className:"icn ".concat(l).trim(),width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:i,strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("path",{d:r})}):null}},2327:(e,t,n)=>{"use strict";async function a(e,t){let n=t?"".concat(e).concat(e.includes("?")?"&":"?","project=").concat(encodeURIComponent(t)):e,a=await fetch(n);if(!a.ok)throw Error("API error ".concat(a.status,": ").concat(e));return a.json()}function s(){return a("/api/projects")}function i(e){return a("/api/overview",e)}function l(e){return a("/api/token-ledger",e)}function r(e){return a("/api/file-index",e)}function c(e){return a("/api/scheduler",e)}function o(e){return a("/api/learning-memory",e)}function d(e){return a("/api/action-log",e)}function u(e){return a("/api/bugs",e)}function h(e){return a("/api/design",e)}async function v(e){return(await fetch("/api/switch-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:e})})).json()}async function p(e,t){let n=t?"?project=".concat(encodeURIComponent(t)):"";return(await fetch("/api/tasks/".concat(encodeURIComponent(e),"/run").concat(n),{method:"POST"})).json()}async function m(e,t){let n=t?"?project=".concat(encodeURIComponent(t)):"";return(await fetch("/api/dead-letter/".concat(encodeURIComponent(e),"/retry").concat(n),{method:"POST"})).json()}async function g(e){let t=e?"?project=".concat(encodeURIComponent(e)):"";return(await fetch("/api/rescan".concat(t),{method:"POST"})).json()}async function f(){return(await fetch("/api/daemon/start",{method:"POST"})).json()}async function j(){return(await fetch("/api/daemon/stop",{method:"POST"})).json()}async function y(){return(await fetch("/api/daemon/restart",{method:"POST"})).json()}function M(){return a("/api/config")}async function x(e,t){return(await fetch("/api/config/set",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).json()}async function w(e,t){return(await fetch("/api/config/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,all:t})})).json()}function S(){return a("/api/sync")}async function b(){return(await fetch("/api/sync/pull",{method:"POST"})).json()}async function k(){return(await fetch("/api/sync/push",{method:"POST"})).json()}async function N(){return(await fetch("/api/sync/disconnect",{method:"POST"})).json()}function C(){return a("/api/channel")}async function z(){return(await fetch("/api/channel/start",{method:"POST"})).json()}async function P(){return(await fetch("/api/channel/stop",{method:"POST"})).json()}async function O(){return(await fetch("/api/channel/restart",{method:"POST"})).json()}function I(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new URLSearchParams;null!=e.limit&&t.set("limit",String(e.limit)),e.category&&t.set("category",e.category);let n=t.toString();return a("/api/wiki".concat(n?"?".concat(n):""))}function T(e){return a("/api/wiki/note?path=".concat(encodeURIComponent(e)))}function L(e){let t={"Content-Type":"application/json"};return e&&(t["X-Mink-Dedup-Key"]=e),t}async function V(e){return(await fetch("/api/wiki/notes",{method:"POST",headers:L(e.dedupKey),body:JSON.stringify({mode:e.mode,title:e.title,category:e.category,body:e.body,tags:e.tags})})).json()}async function H(e,t){return(await fetch("/api/wiki/daily",{method:"POST",headers:L(t),body:JSON.stringify({content:e})})).json()}async function D(e){return(await fetch("/api/wiki/ingest",{method:"POST",headers:L(e.dedupKey),body:JSON.stringify({sourcePath:e.sourcePath,category:e.category,tags:e.tags})})).json()}n.d(t,{$Z:()=>O,Aq:()=>N,D:()=>I,Dz:()=>M,EP:()=>i,FW:()=>w,G1:()=>C,Gs:()=>S,Iw:()=>H,MP:()=>u,On:()=>z,P:()=>p,Vo:()=>l,WH:()=>P,Z4:()=>m,ZN:()=>T,ab:()=>y,co:()=>o,e2:()=>c,fX:()=>f,hD:()=>g,hY:()=>h,jm:()=>b,kH:()=>k,p4:()=>V,pu:()=>d,tf:()=>D,vj:()=>s,vo:()=>j,xl:()=>r,yJ:()=>x,yP:()=>v})},2346:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>v});var a=n(5155),s=n(2115),i=n(3742),l=n(7125),r=n(6845),c=n(3928),o=n(2327);let d=[];function u(){return"undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():"dedup-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2))}function h(){let[e,t]=(0,s.useState)("quick"),n=(0,c.f)(e=>{var t,n;return null!=(n=null==(t=e.wiki)?void 0:t.tags)?n:d}),[h,v]=(0,s.useState)(""),[p,m]=(0,s.useState)(""),[g,f]=(0,s.useState)("inbox"),[j,y]=(0,s.useState)(""),[M,x]=(0,s.useState)(""),[w,S]=(0,s.useState)(""),[b,k]=(0,s.useState)(""),[N,C]=(0,s.useState)("resources"),[z,P]=(0,s.useState)("idle"),[O,I]=(0,s.useState)(null),[T,L]=(0,s.useState)(null);async function V(e){P("saving"),I(null);try{var t,n;let a=await e();a.success?(P("saved"),L(null!=(t=a.filePath)?t:null),setTimeout(()=>P(e=>"saved"===e?"idle":e),2e3)):(P("error"),I(null!=(n=a.error)?n:"Save failed"))}catch(e){P("error"),I(e instanceof Error?e.message:String(e))}}function H(){let e=h.trim();if(!e)return;let t=u();V(()=>(0,o.p4)({mode:"quick",body:e,dedupKey:t})).then(()=>v(""))}function D(){let e=w.trim();if(!e)return;let t=u();V(()=>(0,o.Iw)(e,t)).then(()=>S(""))}function U(){return"saved"===z&&T?(0,a.jsxs)("div",{className:"muted",style:{fontSize:11,color:"var(--accent)"},children:["Saved → ",(0,a.jsx)("span",{className:"mono",children:T})]}):"error"===z&&O?(0,a.jsx)("div",{style:{fontSize:11,color:"var(--danger, #c33)",whiteSpace:"pre-wrap"},children:O}):"saving"===z?(0,a.jsx)("div",{className:"muted",style:{fontSize:11},children:"Saving…"}):null}return(0,a.jsxs)("div",{className:"page",style:{maxWidth:900},children:[(0,a.jsx)("div",{className:"page-head",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title row tight",children:(0,a.jsx)("span",{children:"Capture"})}),(0,a.jsx)("p",{className:"page-sub",children:"Quick or structured — captures land in the vault immediately"})]})}),(0,a.jsxs)(i.Z,{children:[(0,a.jsx)("div",{className:"seg",style:{marginBottom:12},children:["quick","structured","daily","file"].map(n=>(0,a.jsx)("button",{type:"button",className:e===n?"on":"",onClick:()=>t(n),children:"file"===n?"Ingest file":"daily"===n?"Daily journal":n[0].toUpperCase()+n.slice(1)},n))}),"quick"===e&&(0,a.jsxs)("div",{className:"vstack",children:[(0,a.jsxs)("div",{className:"field",children:[(0,a.jsx)("label",{children:"Quick capture"}),(0,a.jsx)("textarea",{rows:4,value:h,onChange:e=>v(e.target.value),placeholder:"What's on your mind? First line becomes the title; lands in inbox/.",onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&H()}}),(0,a.jsxs)("div",{className:"hint",children:["Lands in ",(0,a.jsx)("span",{className:"mono",children:"inbox/"}),". Cmd/Ctrl+Enter to save."]})]}),(0,a.jsxs)("div",{className:"row tight",children:[(0,a.jsx)(r.t,{variant:"primary",icon:"plus",onClick:H,disabled:"saving"===z||!h.trim(),children:"saving"===z?"Saving…":"Capture"}),(0,a.jsx)(U,{})]})]}),"structured"===e&&(0,a.jsxs)("div",{className:"grid g-2",children:[(0,a.jsxs)("div",{className:"field",children:[(0,a.jsx)("label",{children:"Title"}),(0,a.jsx)("input",{value:p,onChange:e=>m(e.target.value),placeholder:"e.g. JWT Cookie Pattern"})]}),(0,a.jsxs)("div",{className:"field",children:[(0,a.jsx)("label",{children:"Category"}),(0,a.jsxs)("select",{value:g,onChange:e=>f(e.target.value),children:[(0,a.jsx)("option",{value:"inbox",children:"inbox"}),(0,a.jsx)("option",{value:"projects",children:"projects"}),(0,a.jsx)("option",{value:"areas",children:"areas"}),(0,a.jsx)("option",{value:"resources",children:"resources"}),(0,a.jsx)("option",{value:"archives",children:"archives"})]})]}),(0,a.jsxs)("div",{className:"field",style:{gridColumn:"span 2"},children:[(0,a.jsx)("label",{children:"Body (markdown)"}),(0,a.jsx)("textarea",{rows:6,className:"mono",value:j,onChange:e=>y(e.target.value),placeholder:"## Context\n\nUse httpOnly cookies for token storage..."})]}),(0,a.jsxs)("div",{className:"field",style:{gridColumn:"span 2"},children:[(0,a.jsx)("label",{children:"Tags (comma-separated)"}),(0,a.jsx)("input",{value:M,onChange:e=>x(e.target.value),placeholder:"auth, security, pattern"})]}),(0,a.jsxs)("div",{style:{gridColumn:"span 2"},className:"row tight",children:[(0,a.jsx)(r.t,{variant:"primary",icon:"plus",onClick:function(){let e=j.trim();if(!e)return;let t=u();V(()=>(0,o.p4)({mode:"structured",title:p.trim(),category:g,body:e,tags:M.split(",").map(e=>e.trim().replace(/^#/,"")).filter(Boolean),dedupKey:t})).then(()=>{m(""),y(""),x("")})},disabled:"saving"===z||!j.trim(),children:"saving"===z?"Saving…":"Create note"}),(0,a.jsx)(U,{})]})]}),"daily"===e&&(0,a.jsxs)("div",{className:"vstack",children:[(0,a.jsxs)("div",{className:"field",children:[(0,a.jsx)("label",{children:"Today"}),(0,a.jsx)("textarea",{rows:5,value:w,onChange:e=>S(e.target.value),placeholder:"Append to today's daily entry…",onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&D()}})]}),(0,a.jsxs)("div",{className:"row tight",children:[(0,a.jsx)(r.t,{variant:"primary",icon:"plus",onClick:D,disabled:"saving"===z||!w.trim(),children:"saving"===z?"Saving…":"Append"}),(0,a.jsx)(U,{})]})]}),"file"===e&&(0,a.jsxs)("div",{className:"vstack",children:[(0,a.jsxs)("div",{className:"field",children:[(0,a.jsx)("label",{children:"Source file"}),(0,a.jsx)("input",{value:b,onChange:e=>k(e.target.value),placeholder:"./scratch-notes.md",className:"mono"})]}),(0,a.jsxs)("div",{className:"field",children:[(0,a.jsx)("label",{children:"Category"}),(0,a.jsxs)("select",{value:N,onChange:e=>C(e.target.value),children:[(0,a.jsx)("option",{value:"resources",children:"resources"}),(0,a.jsx)("option",{value:"inbox",children:"inbox"}),(0,a.jsx)("option",{value:"projects",children:"projects"}),(0,a.jsx)("option",{value:"archives",children:"archives"})]})]}),(0,a.jsxs)("div",{className:"row tight",children:[(0,a.jsx)(r.t,{variant:"primary",icon:"upload",onClick:function(){let e=b.trim();if(!e)return;let t=u();V(()=>(0,o.tf)({sourcePath:e,category:N,dedupKey:t})).then(()=>k(""))},disabled:"saving"===z||!b.trim(),children:"saving"===z?"Ingesting…":"Ingest"}),(0,a.jsx)(U,{})]})]})]}),(0,a.jsx)("div",{style:{height:14}}),(0,a.jsx)(i.Z,{title:"Tag cloud",sub:"top tags across the vault",children:(0,a.jsx)("div",{className:"row tight",style:{flexWrap:"wrap",gap:6},children:0===n.length?(0,a.jsx)("span",{className:"muted",style:{fontSize:11},children:"No tags yet — capture a note to get started."}):n.slice(0,40).map(e=>{let[t,n]=e;return(0,a.jsxs)(l.v,{children:[(0,a.jsxs)("span",{children:["#",t]}),(0,a.jsx)("span",{className:"muted",children:n})]},t)})})})]})}function v(){return(0,a.jsx)(h,{})}},3742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(5155);function s(e){let{title:t,sub:n,tools:s,flush:i,className:l="",style:r,children:c}=e,o=null!=t||null!=s;return(0,a.jsxs)("div",{className:"card ".concat(l).trim(),style:r,children:[o&&(0,a.jsxs)("div",{className:"card-head",children:[null!=t&&("string"==typeof t?(0,a.jsx)("h3",{children:t}):t),null!=n&&(0,a.jsx)("span",{className:"sub",children:n}),null!=s&&(0,a.jsx)("div",{className:"tools",children:s})]}),(0,a.jsx)("div",{className:"card-body ".concat(i?"flush":"").trim(),children:c})]})}},3928:(e,t,n)=>{"use strict";n.d(t,{f:()=>a});let a=(0,n(5959).v)(e=>({connected:!1,projects:[],activeProjectId:null,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[],config:null,sync:null,channel:null,wiki:null,wikiNote:null,setConnected:t=>e({connected:t}),setProjects:(t,n)=>e({projects:t,activeProjectId:n}),setActiveProject:t=>e({activeProjectId:t,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[]}),setOverview:t=>e({overview:t}),setLedger:t=>{var n;return e({ledger:t,wasteFlags:null!=(n=t.wasteFlags)?n:[]})},setFileIndex:t=>e({fileIndex:t}),setScheduler:(t,n,a)=>e({tasks:t,taskDefinitions:n,deadLetters:a}),setHealth:t=>e({health:t}),setLearningMemory:t=>e({learningMemory:t}),setActionLog:t=>e({actionLog:t}),setBugs:t=>e({bugs:t}),setWasteFlags:t=>e({wasteFlags:t}),setDesignImages:t=>e({designImages:t}),setConfig:t=>e({config:t}),setSync:t=>e({sync:t}),setChannel:t=>e({channel:t}),setWiki:t=>e({wiki:t}),setWikiNote:t=>e({wikiNote:t})}))},5959:(e,t,n)=>{"use strict";n.d(t,{v:()=>l});var a=n(2115);let s=e=>{let t,n=new Set,a=(e,a)=>{let s="function"==typeof e?e(t):e;if(!Object.is(s,t)){let e=t;t=(null!=a?a:"object"!=typeof s||null===s)?s:Object.assign({},t,s),n.forEach(n=>n(t,e))}},s=()=>t,i={setState:a,getState:s,getInitialState:()=>l,subscribe:e=>(n.add(e),()=>n.delete(e))},l=t=e(a,s,i);return i},i=e=>{let t=(e=>e?s(e):s)(e),n=e=>(function(e,t=e=>e){let n=a.useSyncExternalStore(e.subscribe,a.useCallback(()=>t(e.getState()),[e,t]),a.useCallback(()=>t(e.getInitialState()),[e,t]));return a.useDebugValue(n),n})(t,e);return Object.assign(n,t),n},l=e=>e?i(e):i},6845:(e,t,n)=>{"use strict";n.d(t,{t:()=>i});var a=n(5155),s=n(1044);function i(e){let{icon:t,variant:n,size:i,className:l="",children:r,...c}=e,o=["btn"];return n&&o.push(n),i&&o.push(i),l&&o.push(l),(0,a.jsxs)("button",{className:o.join(" "),...c,children:[t&&(0,a.jsx)(s.I,{name:t}),r]})}},7125:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var a=n(5155);function s(e){let{tone:t="",children:n,className:s=""}=e;return(0,a.jsx)("span",{className:"chip ".concat(t," ").concat(s).trim(),children:n})}},9993:(e,t,n)=>{Promise.resolve().then(n.bind(n,2346))}},e=>{e.O(0,[441,255,358],()=>e(e.s=9993)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[748],{1044:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var a=n(5155);let s={pulse:"M2 12h4l2-7 4 14 2-7h6",activity:"M22 12h-4l-3 9L9 3l-3 9H2",layers:"M12 2l10 6-10 6L2 8l10-6zm0 10l10 6-10 6L2 18l10-6z",database:"M4 5a8 3 0 1016 0 8 3 0 10-16 0v14a8 3 0 0016 0V5",sparkles:"M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM20 15l.8 2.2L23 18l-2.2.8L20 21l-.8-2.2L17 18l2.2-.8z",brain:"M12 4a4 4 0 00-4 4v1a3 3 0 00-2 5.5A3 3 0 008 19a4 4 0 004 2 4 4 0 004-2 3 3 0 002-4.5A3 3 0 0016 9V8a4 4 0 00-4-4z",bug:"M8 8V6a4 4 0 018 0v2M4 13h16M12 8v13M7 21s-3-2-3-8M17 21s3-2 3-8M8 9l-4-3M16 9l4-3M8 13l-4 3M16 13l4 3",file:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z",folder:"M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z",clock:"M12 22a10 10 0 100-20 10 10 0 000 20zm0-16v6l4 2",alert:"M12 2l11 20H1L12 2zm0 7v5m0 4v0",settings:"M12 15a3 3 0 100-6 3 3 0 000 6zm8-3l2-1-2-4-2 1-1-1V4h-4v1l-1 1-2-1-2 4 2 1v2l-2 1 2 4 2-1 1 1v1h4v-1l1-1 2 1 2-4-2-1v-2z",link:"M10 13a5 5 0 007 0l3-3a5 5 0 00-7-7l-1 1M14 11a5 5 0 00-7 0l-3 3a5 5 0 007 7l1-1",git:"M6 3v12M6 15a3 3 0 110 6 3 3 0 010-6zm0-12a3 3 0 110 6 3 3 0 010-6zm12 6a3 3 0 110 6 3 3 0 010-6zM18 9v2a2 2 0 01-2 2H9",discord:"M9 14a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zM7 7l2-1h6l2 1 2 5-1 5-3 1-1-2-4 0-1 2-3-1-1-5z",chev:"M9 6l6 6-6 6",chevDown:"M6 9l6 6 6-6",play:"M6 4l14 8-14 8z",pause:"M7 4h4v16H7zM13 4h4v16h-4z",stop:"M6 6h12v12H6z",plus:"M12 5v14M5 12h14",search:"M21 21l-5-5m2-6a8 8 0 11-16 0 8 8 0 0116 0z",refresh:"M3 12a9 9 0 019-9c2.5 0 4.7 1 6.3 2.7M21 3v5h-5M21 12a9 9 0 01-9 9c-2.5 0-4.7-1-6.3-2.7M3 21v-5h5",dots:"M5 12a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0z",check:"M20 6L9 17l-5-5",x:"M6 6l12 12M6 18L18 6",download:"M12 3v13m0 0l-5-5m5 5l5-5M4 21h16",upload:"M12 21V8m0 0l-5 5m5-5l5 5M4 3h16",arrowUp:"M12 19V5m0 0l-7 7m7-7l7 7",arrowDown:"M12 5v14m0 0l-7-7m7 7l7-7",trash:"M4 7h16M10 7V4h4v3m-6 0v13h8V7",home:"M3 12l9-9 9 9M5 10v10h14V10",command:"M6 3a3 3 0 013 3v12a3 3 0 11-3-3h12a3 3 0 113 3V6a3 3 0 11-3 3H6",archive:"M3 7h18v4H3zM5 11v9h14v-9M10 14h4",terminal:"M4 5h16v14H4zM8 9l3 3-3 3M13 15h4",wand:"M15 4V2m0 14v-2m-7-7h2M22 9h-2M5.6 5.6l1.4 1.4M18.4 5.6L17 7m0 10l1.4 1.4M7 17l-1.4 1.4M14 7l-9 9 3 3 9-9",tag:"M20 13l-7 7a2 2 0 01-3 0L3 13V4h9l8 9zM7 7h.01",calendar:"M3 7h18v13H3zM3 7l0-3h18v3M8 2v4M16 2v4M3 11h18",list:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",grid:"M3 3h8v8H3zM13 3h8v8h-8zM3 13h8v8H3zM13 13h8v8h-8z",eye:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12zm10 3a3 3 0 100-6 3 3 0 000 6z",chart:"M3 20h18M6 16V8M11 16V4M16 16v-6M21 16v-3",book:"M4 4h12a4 4 0 014 4v12H8a4 4 0 01-4-4V4zm0 0v16",copy:"M8 5h10a2 2 0 012 2v10M4 9h10a2 2 0 012 2v10H6a2 2 0 01-2-2V9z",power:"M18 6a8 8 0 11-12 0M12 2v8",stack:"M4 6h16M4 12h16M4 18h16"};function i(e){let{name:t,size:n=14,stroke:i=1.7,className:r=""}=e,l=s[t];return l?(0,a.jsx)("svg",{className:"icn ".concat(r).trim(),width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:i,strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("path",{d:l})}):null}},2327:(e,t,n)=>{"use strict";async function a(e,t){let n=t?"".concat(e).concat(e.includes("?")?"&":"?","project=").concat(encodeURIComponent(t)):e,a=await fetch(n);if(!a.ok)throw Error("API error ".concat(a.status,": ").concat(e));return a.json()}function s(){return a("/api/projects")}function i(e){return a("/api/overview",e)}function r(e){return a("/api/token-ledger",e)}function l(e){return a("/api/file-index",e)}function o(e){return a("/api/scheduler",e)}function c(e){return a("/api/learning-memory",e)}function u(e){return a("/api/action-log",e)}function d(e){return a("/api/bugs",e)}function h(e){return a("/api/design",e)}async function v(e){return(await fetch("/api/switch-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:e})})).json()}async function p(e,t){let n=t?"?project=".concat(encodeURIComponent(t)):"";return(await fetch("/api/tasks/".concat(encodeURIComponent(e),"/run").concat(n),{method:"POST"})).json()}async function f(e,t){let n=t?"?project=".concat(encodeURIComponent(t)):"";return(await fetch("/api/dead-letter/".concat(encodeURIComponent(e),"/retry").concat(n),{method:"POST"})).json()}async function m(e){let t=e?"?project=".concat(encodeURIComponent(e)):"";return(await fetch("/api/rescan".concat(t),{method:"POST"})).json()}async function g(){return(await fetch("/api/daemon/start",{method:"POST"})).json()}async function M(){return(await fetch("/api/daemon/stop",{method:"POST"})).json()}async function y(){return(await fetch("/api/daemon/restart",{method:"POST"})).json()}function j(){return a("/api/config")}async function x(e,t){return(await fetch("/api/config/set",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).json()}async function w(e,t){return(await fetch("/api/config/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,all:t})})).json()}function b(){return a("/api/sync")}async function k(){return(await fetch("/api/sync/pull",{method:"POST"})).json()}async function S(){return(await fetch("/api/sync/push",{method:"POST"})).json()}async function z(){return(await fetch("/api/sync/disconnect",{method:"POST"})).json()}function N(){return a("/api/channel")}async function O(){return(await fetch("/api/channel/start",{method:"POST"})).json()}async function P(){return(await fetch("/api/channel/stop",{method:"POST"})).json()}async function T(){return(await fetch("/api/channel/restart",{method:"POST"})).json()}function C(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new URLSearchParams;null!=e.limit&&t.set("limit",String(e.limit)),e.category&&t.set("category",e.category);let n=t.toString();return a("/api/wiki".concat(n?"?".concat(n):""))}function I(e){return a("/api/wiki/note?path=".concat(encodeURIComponent(e)))}function L(e){let t={"Content-Type":"application/json"};return e&&(t["X-Mink-Dedup-Key"]=e),t}async function H(e){return(await fetch("/api/wiki/notes",{method:"POST",headers:L(e.dedupKey),body:JSON.stringify({mode:e.mode,title:e.title,category:e.category,body:e.body,tags:e.tags})})).json()}async function V(e,t){return(await fetch("/api/wiki/daily",{method:"POST",headers:L(t),body:JSON.stringify({content:e})})).json()}async function F(e){return(await fetch("/api/wiki/ingest",{method:"POST",headers:L(e.dedupKey),body:JSON.stringify({sourcePath:e.sourcePath,category:e.category,tags:e.tags})})).json()}n.d(t,{$Z:()=>T,Aq:()=>z,D:()=>C,Dz:()=>j,EP:()=>i,FW:()=>w,G1:()=>N,Gs:()=>b,Iw:()=>V,MP:()=>d,On:()=>O,P:()=>p,Vo:()=>r,WH:()=>P,Z4:()=>f,ZN:()=>I,ab:()=>y,co:()=>c,e2:()=>o,fX:()=>g,hD:()=>m,hY:()=>h,jm:()=>k,kH:()=>S,p4:()=>H,pu:()=>u,tf:()=>F,vj:()=>s,vo:()=>M,xl:()=>l,yJ:()=>x,yP:()=>v})},3067:(e,t,n)=>{Promise.resolve().then(n.bind(n,6411))},3742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(5155);function s(e){let{title:t,sub:n,tools:s,flush:i,className:r="",style:l,children:o}=e,c=null!=t||null!=s;return(0,a.jsxs)("div",{className:"card ".concat(r).trim(),style:l,children:[c&&(0,a.jsxs)("div",{className:"card-head",children:[null!=t&&("string"==typeof t?(0,a.jsx)("h3",{children:t}):t),null!=n&&(0,a.jsx)("span",{className:"sub",children:n}),null!=s&&(0,a.jsx)("div",{className:"tools",children:s})]}),(0,a.jsx)("div",{className:"card-body ".concat(i?"flush":"").trim(),children:o})]})}},3928:(e,t,n)=>{"use strict";n.d(t,{f:()=>a});let a=(0,n(5959).v)(e=>({connected:!1,projects:[],activeProjectId:null,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[],config:null,sync:null,channel:null,wiki:null,wikiNote:null,setConnected:t=>e({connected:t}),setProjects:(t,n)=>e({projects:t,activeProjectId:n}),setActiveProject:t=>e({activeProjectId:t,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[]}),setOverview:t=>e({overview:t}),setLedger:t=>{var n;return e({ledger:t,wasteFlags:null!=(n=t.wasteFlags)?n:[]})},setFileIndex:t=>e({fileIndex:t}),setScheduler:(t,n,a)=>e({tasks:t,taskDefinitions:n,deadLetters:a}),setHealth:t=>e({health:t}),setLearningMemory:t=>e({learningMemory:t}),setActionLog:t=>e({actionLog:t}),setBugs:t=>e({bugs:t}),setWasteFlags:t=>e({wasteFlags:t}),setDesignImages:t=>e({designImages:t}),setConfig:t=>e({config:t}),setSync:t=>e({sync:t}),setChannel:t=>e({channel:t}),setWiki:t=>e({wiki:t}),setWikiNote:t=>e({wikiNote:t})}))},4239:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var a=n(5155);function s(e){let{on:t,onChange:n,className:s="",ariaLabel:i}=e;return(0,a.jsx)("button",{type:"button",role:"switch","aria-checked":t,"aria-label":i,className:"toggle ".concat(t?"on":""," ").concat(s).trim(),onClick:()=>null==n?void 0:n(!t)})}},5959:(e,t,n)=>{"use strict";n.d(t,{v:()=>r});var a=n(2115);let s=e=>{let t,n=new Set,a=(e,a)=>{let s="function"==typeof e?e(t):e;if(!Object.is(s,t)){let e=t;t=(null!=a?a:"object"!=typeof s||null===s)?s:Object.assign({},t,s),n.forEach(n=>n(t,e))}},s=()=>t,i={setState:a,getState:s,getInitialState:()=>r,subscribe:e=>(n.add(e),()=>n.delete(e))},r=t=e(a,s,i);return i},i=e=>{let t=(e=>e?s(e):s)(e),n=e=>(function(e,t=e=>e){let n=a.useSyncExternalStore(e.subscribe,a.useCallback(()=>t(e.getState()),[e,t]),a.useCallback(()=>t(e.getInitialState()),[e,t]));return a.useDebugValue(n),n})(t,e);return Object.assign(n,t),n},r=e=>e?i(e):i},6411:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g});var a=n(5155),s=n(2115),i=n(3742),r=n(7125),l=n(6845),o=n(1044),c=n(4239),u=n(3928),d=n(2327);let h={default:"",shared:"accent",local:"accent",env:"amber"},v={default:"default",shared:"shared",local:"local",env:"env"};function p(e){let{label:t}=e;return(0,a.jsx)("div",{style:{padding:"8px 14px",background:"var(--bg-2)",borderTop:"1px solid var(--line-1)",borderBottom:"1px solid var(--line-1)",fontSize:10.5,color:"var(--fg-3)",textTransform:"uppercase",letterSpacing:"0.08em",fontWeight:600},children:t})}function f(e){let{entry:t}=e,[n,i]=(0,s.useState)(t.value),[o,u]=(0,s.useState)("idle"),[p,f]=(0,s.useState)(null),[m,g]=(0,s.useState)(!1),M=(0,s.useRef)(null),y=(0,s.useRef)(t.value);function j(e){u("saving"),f(null),(0,d.yJ)(t.key,e).then(e=>{if(e.success)u("saved"),setTimeout(()=>u(e=>"saved"===e?"idle":e),1500);else{var t;u("error"),f(null!=(t=e.error)?t:"Failed to save")}}).catch(e=>{u("error"),f(e instanceof Error?e.message:String(e))})}(0,s.useEffect)(()=>{t.value!==y.current&&(y.current=t.value,"saving"!==o&&i(t.value))},[t.value,o]);let x="boolean"===t.type,w=(t.isSecret,n);return(0,a.jsxs)("div",{className:"row",style:{padding:"8px 14px",borderBottom:"1px solid var(--line-1)",gap:14,alignItems:"center"},children:[(0,a.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,a.jsxs)("div",{className:"row tight",style:{gap:6},children:[(0,a.jsx)("span",{className:"mono strong",style:{fontSize:12},children:t.key}),(0,a.jsx)(r.v,{tone:h[t.source],children:v[t.source]}),t.isSecret&&(0,a.jsx)(r.v,{children:"secret"})]}),t.description&&(0,a.jsx)("div",{className:"muted",style:{fontSize:10.5,marginTop:2},children:t.description}),p&&(0,a.jsx)("div",{style:{fontSize:10.5,color:"var(--danger, #c33)",marginTop:2},children:p})]}),(0,a.jsxs)("div",{style:{width:260,display:"flex",gap:6,alignItems:"center"},children:[x?(0,a.jsx)(c.l,{on:"true"===n,onChange:function(e){let t=e?"true":"false";i(t),j(t)}}):(0,a.jsx)("input",{value:w,onChange:e=>{var t;i(t=e.target.value),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>j(t),500)},type:t.isSecret&&!m?"password":"text",className:"mono","aria-label":t.key,style:{width:"100%",background:"var(--bg-inset)",border:"1px solid var(--line-1)",borderRadius:5,padding:"4px 8px",color:"var(--fg-0)",fontSize:11,outline:"none"}}),t.isSecret&&!x&&(0,a.jsx)(l.t,{size:"sm",variant:"ghost",icon:"eye",onClick:()=>g(e=>!e),title:m?"Hide":"Reveal",children:m?"Hide":"Show"}),(0,a.jsx)(l.t,{size:"sm",variant:"ghost",icon:"refresh",onClick:function(){u("saving"),f(null),(0,d.FW)(t.key).then(e=>{if(e.success)u("saved"),setTimeout(()=>u(e=>"saved"===e?"idle":e),1500);else{var t;u("error"),f(null!=(t=e.error)?t:"Failed to reset")}}).catch(e=>{u("error"),f(e instanceof Error?e.message:String(e))})},disabled:"saving"===o||"default"===t.source,title:"Reset to default",children:"saving"===o?"…":"saved"===o?"✓":"Reset"})]})]})}function m(){var e;let t=(0,u.f)(e=>e.config),[n,r]=(0,s.useState)(""),c=null!=(e=null==t?void 0:t.entries)?e:[],d=(0,s.useMemo)(()=>{let e={};for(let a of c){var t;(!n||a.key.toLowerCase().includes(n.toLowerCase()))&&(e[a.group]=null!=(t=e[a.group])?t:[]).push(a)}return e},[c,n]);return(0,a.jsxs)("div",{className:"page",style:{maxWidth:900},children:[(0,a.jsxs)("div",{className:"page-head",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title row tight",children:(0,a.jsx)("span",{children:"Configuration"})}),(0,a.jsx)("p",{className:"page-sub",children:"~/.mink/config (shared) \xb7 ~/.mink/config.local (per-machine) \xb7 env vars override"})]}),(0,a.jsxs)("div",{className:"page-actions",children:[(0,a.jsx)(l.t,{icon:"download",variant:"ghost",disabled:!0,children:"Export"}),(0,a.jsx)(l.t,{icon:"upload",disabled:!0,children:"Import"})]})]}),(0,a.jsx)(i.Z,{title:"All settings",tools:(0,a.jsxs)("div",{className:"row",style:{maxWidth:220},children:[(0,a.jsx)(o.I,{name:"search",size:12,className:"muted"}),(0,a.jsx)("input",{value:n,onChange:e=>r(e.target.value),placeholder:"Filter keys…","aria-label":"Filter config keys",style:{background:"transparent",border:0,color:"var(--fg-0)",outline:"none",fontSize:11.5,flex:1,fontFamily:"var(--font-mono), monospace"}})]}),flush:!0,children:0===c.length?(0,a.jsx)("div",{className:"empty",children:(0,a.jsx)("h4",{children:"Loading configuration…"})}):0===Object.keys(d).length?(0,a.jsx)("div",{className:"empty",children:(0,a.jsx)("h4",{children:"No settings match"})}):Object.entries(d).map(e=>{let[t,n]=e;return(0,a.jsxs)("div",{children:[(0,a.jsx)(p,{label:t}),n.map(e=>(0,a.jsx)(f,{entry:e},e.key))]},t)})})]})}function g(){return(0,a.jsx)(m,{})}},6845:(e,t,n)=>{"use strict";n.d(t,{t:()=>i});var a=n(5155),s=n(1044);function i(e){let{icon:t,variant:n,size:i,className:r="",children:l,...o}=e,c=["btn"];return n&&c.push(n),i&&c.push(i),r&&c.push(r),(0,a.jsxs)("button",{className:c.join(" "),...o,children:[t&&(0,a.jsx)(s.I,{name:t}),l]})}},7125:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var a=n(5155);function s(e){let{tone:t="",children:n,className:s=""}=e;return(0,a.jsx)("span",{className:"chip ".concat(t," ").concat(s).trim(),children:n})}}},e=>{e.O(0,[441,255,358],()=>e(e.s=3067)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[666],{1044:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var s=n(5155);let a={pulse:"M2 12h4l2-7 4 14 2-7h6",activity:"M22 12h-4l-3 9L9 3l-3 9H2",layers:"M12 2l10 6-10 6L2 8l10-6zm0 10l10 6-10 6L2 18l10-6z",database:"M4 5a8 3 0 1016 0 8 3 0 10-16 0v14a8 3 0 0016 0V5",sparkles:"M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM20 15l.8 2.2L23 18l-2.2.8L20 21l-.8-2.2L17 18l2.2-.8z",brain:"M12 4a4 4 0 00-4 4v1a3 3 0 00-2 5.5A3 3 0 008 19a4 4 0 004 2 4 4 0 004-2 3 3 0 002-4.5A3 3 0 0016 9V8a4 4 0 00-4-4z",bug:"M8 8V6a4 4 0 018 0v2M4 13h16M12 8v13M7 21s-3-2-3-8M17 21s3-2 3-8M8 9l-4-3M16 9l4-3M8 13l-4 3M16 13l4 3",file:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z",folder:"M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z",clock:"M12 22a10 10 0 100-20 10 10 0 000 20zm0-16v6l4 2",alert:"M12 2l11 20H1L12 2zm0 7v5m0 4v0",settings:"M12 15a3 3 0 100-6 3 3 0 000 6zm8-3l2-1-2-4-2 1-1-1V4h-4v1l-1 1-2-1-2 4 2 1v2l-2 1 2 4 2-1 1 1v1h4v-1l1-1 2 1 2-4-2-1v-2z",link:"M10 13a5 5 0 007 0l3-3a5 5 0 00-7-7l-1 1M14 11a5 5 0 00-7 0l-3 3a5 5 0 007 7l1-1",git:"M6 3v12M6 15a3 3 0 110 6 3 3 0 010-6zm0-12a3 3 0 110 6 3 3 0 010-6zm12 6a3 3 0 110 6 3 3 0 010-6zM18 9v2a2 2 0 01-2 2H9",discord:"M9 14a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zM7 7l2-1h6l2 1 2 5-1 5-3 1-1-2-4 0-1 2-3-1-1-5z",chev:"M9 6l6 6-6 6",chevDown:"M6 9l6 6 6-6",play:"M6 4l14 8-14 8z",pause:"M7 4h4v16H7zM13 4h4v16h-4z",stop:"M6 6h12v12H6z",plus:"M12 5v14M5 12h14",search:"M21 21l-5-5m2-6a8 8 0 11-16 0 8 8 0 0116 0z",refresh:"M3 12a9 9 0 019-9c2.5 0 4.7 1 6.3 2.7M21 3v5h-5M21 12a9 9 0 01-9 9c-2.5 0-4.7-1-6.3-2.7M3 21v-5h5",dots:"M5 12a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0z",check:"M20 6L9 17l-5-5",x:"M6 6l12 12M6 18L18 6",download:"M12 3v13m0 0l-5-5m5 5l5-5M4 21h16",upload:"M12 21V8m0 0l-5 5m5-5l5 5M4 3h16",arrowUp:"M12 19V5m0 0l-7 7m7-7l7 7",arrowDown:"M12 5v14m0 0l-7-7m7 7l7-7",trash:"M4 7h16M10 7V4h4v3m-6 0v13h8V7",home:"M3 12l9-9 9 9M5 10v10h14V10",command:"M6 3a3 3 0 013 3v12a3 3 0 11-3-3h12a3 3 0 113 3V6a3 3 0 11-3 3H6",archive:"M3 7h18v4H3zM5 11v9h14v-9M10 14h4",terminal:"M4 5h16v14H4zM8 9l3 3-3 3M13 15h4",wand:"M15 4V2m0 14v-2m-7-7h2M22 9h-2M5.6 5.6l1.4 1.4M18.4 5.6L17 7m0 10l1.4 1.4M7 17l-1.4 1.4M14 7l-9 9 3 3 9-9",tag:"M20 13l-7 7a2 2 0 01-3 0L3 13V4h9l8 9zM7 7h.01",calendar:"M3 7h18v13H3zM3 7l0-3h18v3M8 2v4M16 2v4M3 11h18",list:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",grid:"M3 3h8v8H3zM13 3h8v8h-8zM3 13h8v8H3zM13 13h8v8h-8z",eye:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12zm10 3a3 3 0 100-6 3 3 0 000 6z",chart:"M3 20h18M6 16V8M11 16V4M16 16v-6M21 16v-3",book:"M4 4h12a4 4 0 014 4v12H8a4 4 0 01-4-4V4zm0 0v16",copy:"M8 5h10a2 2 0 012 2v10M4 9h10a2 2 0 012 2v10H6a2 2 0 01-2-2V9z",power:"M18 6a8 8 0 11-12 0M12 2v8",stack:"M4 6h16M4 12h16M4 18h16"};function i(e){let{name:t,size:n=14,stroke:i=1.7,className:l=""}=e,r=a[t];return r?(0,s.jsx)("svg",{className:"icn ".concat(l).trim(),width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:i,strokeLinecap:"round",strokeLinejoin:"round",children:(0,s.jsx)("path",{d:r})}):null}},2327:(e,t,n)=>{"use strict";async function s(e,t){let n=t?"".concat(e).concat(e.includes("?")?"&":"?","project=").concat(encodeURIComponent(t)):e,s=await fetch(n);if(!s.ok)throw Error("API error ".concat(s.status,": ").concat(e));return s.json()}function a(){return s("/api/projects")}function i(e){return s("/api/overview",e)}function l(e){return s("/api/token-ledger",e)}function r(e){return s("/api/file-index",e)}function c(e){return s("/api/scheduler",e)}function o(e){return s("/api/learning-memory",e)}function d(e){return s("/api/action-log",e)}function h(e){return s("/api/bugs",e)}function u(e){return s("/api/design",e)}async function m(e){return(await fetch("/api/switch-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:e})})).json()}async function v(e,t){let n=t?"?project=".concat(encodeURIComponent(t)):"";return(await fetch("/api/tasks/".concat(encodeURIComponent(e),"/run").concat(n),{method:"POST"})).json()}async function f(e,t){let n=t?"?project=".concat(encodeURIComponent(t)):"";return(await fetch("/api/dead-letter/".concat(encodeURIComponent(e),"/retry").concat(n),{method:"POST"})).json()}async function p(e){let t=e?"?project=".concat(encodeURIComponent(e)):"";return(await fetch("/api/rescan".concat(t),{method:"POST"})).json()}async function g(){return(await fetch("/api/daemon/start",{method:"POST"})).json()}async function j(){return(await fetch("/api/daemon/stop",{method:"POST"})).json()}async function M(){return(await fetch("/api/daemon/restart",{method:"POST"})).json()}function y(){return s("/api/config")}async function x(e,t){return(await fetch("/api/config/set",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).json()}async function w(e,t){return(await fetch("/api/config/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,all:t})})).json()}function k(){return s("/api/sync")}async function b(){return(await fetch("/api/sync/pull",{method:"POST"})).json()}async function N(){return(await fetch("/api/sync/push",{method:"POST"})).json()}async function S(){return(await fetch("/api/sync/disconnect",{method:"POST"})).json()}function z(){return s("/api/channel")}async function P(){return(await fetch("/api/channel/start",{method:"POST"})).json()}async function O(){return(await fetch("/api/channel/stop",{method:"POST"})).json()}async function T(){return(await fetch("/api/channel/restart",{method:"POST"})).json()}function C(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new URLSearchParams;null!=e.limit&&t.set("limit",String(e.limit)),e.category&&t.set("category",e.category);let n=t.toString();return s("/api/wiki".concat(n?"?".concat(n):""))}function L(e){return s("/api/wiki/note?path=".concat(encodeURIComponent(e)))}function I(e){let t={"Content-Type":"application/json"};return e&&(t["X-Mink-Dedup-Key"]=e),t}async function H(e){return(await fetch("/api/wiki/notes",{method:"POST",headers:I(e.dedupKey),body:JSON.stringify({mode:e.mode,title:e.title,category:e.category,body:e.body,tags:e.tags})})).json()}async function V(e,t){return(await fetch("/api/wiki/daily",{method:"POST",headers:I(t),body:JSON.stringify({content:e})})).json()}async function D(e){return(await fetch("/api/wiki/ingest",{method:"POST",headers:I(e.dedupKey),body:JSON.stringify({sourcePath:e.sourcePath,category:e.category,tags:e.tags})})).json()}n.d(t,{$Z:()=>T,Aq:()=>S,D:()=>C,Dz:()=>y,EP:()=>i,FW:()=>w,G1:()=>z,Gs:()=>k,Iw:()=>V,MP:()=>h,On:()=>P,P:()=>v,Vo:()=>l,WH:()=>O,Z4:()=>f,ZN:()=>L,ab:()=>M,co:()=>o,e2:()=>c,fX:()=>g,hD:()=>p,hY:()=>u,jm:()=>b,kH:()=>N,p4:()=>H,pu:()=>d,tf:()=>D,vj:()=>a,vo:()=>j,xl:()=>r,yJ:()=>x,yP:()=>m})},3742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var s=n(5155);function a(e){let{title:t,sub:n,tools:a,flush:i,className:l="",style:r,children:c}=e,o=null!=t||null!=a;return(0,s.jsxs)("div",{className:"card ".concat(l).trim(),style:r,children:[o&&(0,s.jsxs)("div",{className:"card-head",children:[null!=t&&("string"==typeof t?(0,s.jsx)("h3",{children:t}):t),null!=n&&(0,s.jsx)("span",{className:"sub",children:n}),null!=a&&(0,s.jsx)("div",{className:"tools",children:a})]}),(0,s.jsx)("div",{className:"card-body ".concat(i?"flush":"").trim(),children:c})]})}},3928:(e,t,n)=>{"use strict";n.d(t,{f:()=>s});let s=(0,n(5959).v)(e=>({connected:!1,projects:[],activeProjectId:null,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[],config:null,sync:null,channel:null,wiki:null,wikiNote:null,setConnected:t=>e({connected:t}),setProjects:(t,n)=>e({projects:t,activeProjectId:n}),setActiveProject:t=>e({activeProjectId:t,overview:null,ledger:null,fileIndex:null,tasks:[],taskDefinitions:[],deadLetters:[],health:null,learningMemory:null,actionLog:[],bugs:[],wasteFlags:[],designImages:[]}),setOverview:t=>e({overview:t}),setLedger:t=>{var n;return e({ledger:t,wasteFlags:null!=(n=t.wasteFlags)?n:[]})},setFileIndex:t=>e({fileIndex:t}),setScheduler:(t,n,s)=>e({tasks:t,taskDefinitions:n,deadLetters:s}),setHealth:t=>e({health:t}),setLearningMemory:t=>e({learningMemory:t}),setActionLog:t=>e({actionLog:t}),setBugs:t=>e({bugs:t}),setWasteFlags:t=>e({wasteFlags:t}),setDesignImages:t=>e({designImages:t}),setConfig:t=>e({config:t}),setSync:t=>e({sync:t}),setChannel:t=>e({channel:t}),setWiki:t=>e({wiki:t}),setWikiNote:t=>e({wikiNote:t})}))},4239:(e,t,n)=>{"use strict";n.d(t,{l:()=>a});var s=n(5155);function a(e){let{on:t,onChange:n,className:a="",ariaLabel:i}=e;return(0,s.jsx)("button",{type:"button",role:"switch","aria-checked":t,"aria-label":i,className:"toggle ".concat(t?"on":""," ").concat(a).trim(),onClick:()=>null==n?void 0:n(!t)})}},4940:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var s=n(5155),a=n(2115),i=n(3928),l=n(3742),r=n(7125),c=n(6845),o=n(4239),d=n(7e3),h=n(2327);function u(){var e,t,n;let u=(0,i.f)(e=>e.overview),m=(0,i.f)(e=>e.health),[v,f]=(0,a.useState)(null),[p,g]=(0,a.useState)(null),j=null!=(n=null==u||null==(e=u.daemon)?void 0:e.running)&&n,M=null==u||null==(t=u.daemon)?void 0:t.pid,y=j&&(null==m?void 0:m.uptimeMs)?(0,d.Y0)(m.uptimeMs):"—";async function x(e,t){f(e),g(null);try{let s=await t();if(!s.success){var n;g(null!=(n=s.error)?n:"Failed to ".concat(e," daemon"))}}catch(e){g(e instanceof Error?e.message:String(e))}finally{f(null)}}return(0,s.jsxs)("div",{className:"page",style:{maxWidth:1100},children:[(0,s.jsxs)("div",{className:"page-head",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title row tight",children:(0,s.jsx)("span",{children:"Daemon"})}),(0,s.jsx)("p",{className:"page-sub",children:"Background process — runs scheduled tasks, listens for hook events, pushes live updates"})]}),(0,s.jsx)("div",{className:"page-actions",children:j?(0,s.jsx)(c.t,{icon:"stop",variant:"danger",disabled:null!==v,onClick:()=>x("stop",h.vo),children:"stop"===v?"Stopping…":"Stop daemon"}):(0,s.jsx)(c.t,{icon:"play",variant:"primary",disabled:null!==v,onClick:()=>x("start",h.fX),children:"start"===v?"Starting…":"Start daemon"})})]}),p&&(0,s.jsxs)("div",{className:"kpi",style:{marginBottom:14,borderColor:"var(--danger, #c33)"},children:[(0,s.jsx)("div",{className:"label",style:{color:"var(--danger, #c33)"},children:"Error"}),(0,s.jsx)("div",{className:"value",style:{fontSize:13},children:p})]}),(0,s.jsxs)("div",{className:"grid g-4",style:{marginBottom:14},children:[(0,s.jsxs)("div",{className:"kpi",children:[(0,s.jsx)("div",{className:"label",children:"Status"}),(0,s.jsxs)("div",{className:"value",style:{display:"flex",alignItems:"center",gap:6,fontSize:16},children:[(0,s.jsx)("span",{className:"pulse",style:{width:8,height:8,borderRadius:4,background:j?"var(--accent)":"var(--fg-3)"}}),j?"Online":"Offline"]}),(0,s.jsx)("div",{className:"delta",children:j?M?"pid ".concat(M):"running":"run: mink daemon start"})]}),(0,s.jsxs)("div",{className:"kpi",children:[(0,s.jsx)("div",{className:"label",children:"Uptime"}),(0,s.jsx)("div",{className:"value mono",children:y})]}),(0,s.jsxs)("div",{className:"kpi",children:[(0,s.jsx)("div",{className:"label",children:"Heartbeat"}),(0,s.jsx)("div",{className:"value mono",children:j?"5.0s":"—"}),(0,s.jsx)("div",{className:"delta",children:j?"healthy":"paused"})]}),(0,s.jsxs)("div",{className:"kpi",children:[(0,s.jsx)("div",{className:"label",children:"Hook wiring"}),(0,s.jsx)("div",{className:"value",style:{fontSize:16},children:j?"6 events":"—"}),(0,s.jsx)("div",{className:"delta",children:".claude/settings.json"})]})]}),(0,s.jsxs)("div",{className:"grid g-2",children:[(0,s.jsx)(l.Z,{title:"Controls",children:(0,s.jsxs)("div",{className:"vstack",children:[(0,s.jsxs)("div",{className:"row",children:[(0,s.jsxs)("div",{style:{flex:1},children:[(0,s.jsx)("div",{style:{fontSize:12},children:"Auto-restart on failure"}),(0,s.jsx)("div",{className:"muted",style:{fontSize:11},children:"max 5 attempts, backoff 30s"})]}),(0,s.jsx)(o.l,{on:!0})]}),(0,s.jsxs)("div",{className:"row",children:[(0,s.jsxs)("div",{style:{flex:1},children:[(0,s.jsx)("div",{style:{fontSize:12},children:"Boot on system login"}),(0,s.jsx)("div",{className:"muted",style:{fontSize:11},children:"launchd / systemd user service"})]}),(0,s.jsx)(o.l,{on:!1})]}),(0,s.jsxs)("div",{className:"row",children:[(0,s.jsxs)("div",{style:{flex:1},children:[(0,s.jsx)("div",{style:{fontSize:12},children:"Verbose logging"}),(0,s.jsx)("div",{className:"muted",style:{fontSize:11},children:"log level: debug"})]}),(0,s.jsx)(o.l,{on:!1})]}),(0,s.jsx)("div",{className:"divider"}),(0,s.jsxs)("div",{className:"row tight",style:{flexWrap:"wrap"},children:[(0,s.jsx)(c.t,{size:"sm",icon:"refresh",disabled:null!==v||!j,onClick:()=>x("restart",h.ab),children:"restart"===v?"Restarting…":"Restart"}),(0,s.jsx)(c.t,{size:"sm",variant:"ghost",icon:"eye",disabled:!0,children:"Open log file"}),(0,s.jsx)(c.t,{size:"sm",variant:"ghost",icon:"download",disabled:!0,children:"Dump state"})]})]})}),(0,s.jsx)(l.Z,{title:"Hook integration",sub:".claude/settings.json",flush:!0,children:(0,s.jsxs)("table",{className:"tbl",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Event"}),(0,s.jsx)("th",{children:"Command"}),(0,s.jsx)("th",{children:"Purpose"}),(0,s.jsx)("th",{children:"Status"})]})}),(0,s.jsx)("tbody",{children:[["SessionStart","mink session-start","Create fresh session state"],["Stop","mink session-stop","Finalize session, calculate savings"],["PreToolUse (Read)","mink pre-read","Check file index, warn on repeats"],["PostToolUse (Read)","mink post-read","Track read, estimate tokens"],["PreToolUse (Write)","mink pre-write","Enforce learned rules, surface bugs"],["PostToolUse (Write)","mink post-write","Log write, update file index"]].map(e=>{let[t,n,a]=e;return(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"mono strong",children:t}),(0,s.jsx)("td",{className:"mono muted",children:n}),(0,s.jsx)("td",{children:a}),(0,s.jsx)("td",{children:(0,s.jsx)(r.v,{tone:j?"accent":"",children:j?"wired":"—"})})]},t)})})]})})]})]})}function m(){return(0,s.jsx)(u,{})}},5959:(e,t,n)=>{"use strict";n.d(t,{v:()=>l});var s=n(2115);let a=e=>{let t,n=new Set,s=(e,s)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=s?s:"object"!=typeof a||null===a)?a:Object.assign({},t,a),n.forEach(n=>n(t,e))}},a=()=>t,i={setState:s,getState:a,getInitialState:()=>l,subscribe:e=>(n.add(e),()=>n.delete(e))},l=t=e(s,a,i);return i},i=e=>{let t=(e=>e?a(e):a)(e),n=e=>(function(e,t=e=>e){let n=s.useSyncExternalStore(e.subscribe,s.useCallback(()=>t(e.getState()),[e,t]),s.useCallback(()=>t(e.getInitialState()),[e,t]));return s.useDebugValue(n),n})(t,e);return Object.assign(n,t),n},l=e=>e?i(e):i},6845:(e,t,n)=>{"use strict";n.d(t,{t:()=>i});var s=n(5155),a=n(1044);function i(e){let{icon:t,variant:n,size:i,className:l="",children:r,...c}=e,o=["btn"];return n&&o.push(n),i&&o.push(i),l&&o.push(l),(0,s.jsxs)("button",{className:o.join(" "),...c,children:[t&&(0,s.jsx)(a.I,{name:t}),r]})}},7e3:(e,t,n)=>{"use strict";function s(e){return e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":String(e)}function a(e){if(!e||e<=0)return"—";let t=Math.floor(e/1e3),n=Math.floor(t/60),s=Math.floor(n/60);return s>0?s+"h "+n%60+"m":n>0?n+"m "+t%60+"s":t+"s"}function i(e){if(!e)return"—";try{let t=new Date(e);return t.toLocaleDateString()+" "+t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch(t){return e}}n.d(t,{Y0:()=>a,aT:()=>s,r6:()=>i})},7125:(e,t,n)=>{"use strict";n.d(t,{v:()=>a});var s=n(5155);function a(e){let{tone:t="",children:n,className:a=""}=e;return(0,s.jsx)("span",{className:"chip ".concat(t," ").concat(a).trim(),children:n})}},8105:(e,t,n)=>{Promise.resolve().then(n.bind(n,4940))}},e=>{e.O(0,[441,255,358],()=>e(e.s=8105)),_N_E=e.O()}]);
|