codesesh 1.0.6 → 1.0.8
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/README.md +1 -1
- package/dist/{chunk-COZSWVCH.js → chunk-AGUAXTKC.js} +2 -2
- package/dist/{chunk-XQDYKKRC.js → chunk-DHQPM5FF.js} +98 -14
- package/dist/chunk-DHQPM5FF.js.map +1 -0
- package/dist/{chunk-YZ6XCSVQ.js → chunk-KVTLNX7V.js} +3 -3
- package/dist/chunk-KVTLNX7V.js.map +1 -0
- package/dist/{chunk-A3MT6L6Z.js → chunk-L4G3LE7I.js} +25 -26
- package/dist/chunk-L4G3LE7I.js.map +1 -0
- package/dist/{chunk-L3DDWTYV.js → chunk-RBCCNCDO.js} +12 -10
- package/dist/chunk-RBCCNCDO.js.map +1 -0
- package/dist/{chunk-4QFNZCBR.js → chunk-V3HKVTIO.js} +3 -2
- package/dist/chunk-V3HKVTIO.js.map +1 -0
- package/dist/{chunk-4ND6AT6W.js → chunk-YLXHGL4S.js} +6 -6
- package/dist/chunk-YLXHGL4S.js.map +1 -0
- package/dist/{discovery-ADSQARBV.js → discovery-KEZQU6RL.js} +7 -5
- package/dist/index.js +42 -16
- package/dist/index.js.map +1 -1
- package/dist/project-identity-worker.js +4 -4
- package/dist/scan-refresh-worker.js +6 -6
- package/dist/search-index-worker.js +6 -6
- package/dist/session-detail-worker.js +6 -6
- package/dist/smart-tag-worker.js +3 -3
- package/dist/web/assets/CustomTimeWindowDialog-z5xtqkBF.js +1 -0
- package/dist/web/assets/DetailLanding-CpV0jLmT.js +1 -0
- package/dist/web/assets/DialogTitle-B8zPwJB8.js +1 -0
- package/dist/web/assets/InteractiveReceipt-Bsj37HtN.js +1 -0
- package/dist/web/assets/OverviewScreen-B9qZqEQA.js +1 -0
- package/dist/web/assets/PrismHighlighter-DWS6Nx_X.js +6 -0
- package/dist/web/assets/Projects-oY3KCgS4.js +1 -0
- package/dist/web/assets/SearchResultsPanel-BAManMmt.js +1 -0
- package/dist/web/assets/SessionDetail-KSgkmLV7.js +53 -0
- package/dist/web/assets/SmartTagChips-BMP9pPRw.js +1 -0
- package/dist/web/assets/api-CtZGdxlN.js +1 -0
- package/dist/web/assets/index-BSLHxV0w.css +1 -0
- package/dist/web/assets/index-DNw59Qsn.js +1423 -0
- package/dist/web/assets/jsx-runtime-D3jfb0Ew.js +1 -0
- package/dist/web/assets/panel-DcOuALYX.js +1 -0
- package/dist/web/assets/session-indexes-DKukxoe1.js +4 -0
- package/dist/web/assets/translate-CLoII3EO.js +2 -0
- package/dist/web/assets/utils-Dk_44zMo.js +1 -0
- package/dist/web/index.html +9 -8
- package/package.json +2 -2
- package/dist/chunk-4ND6AT6W.js.map +0 -1
- package/dist/chunk-4QFNZCBR.js.map +0 -1
- package/dist/chunk-A3MT6L6Z.js.map +0 -1
- package/dist/chunk-L3DDWTYV.js.map +0 -1
- package/dist/chunk-XQDYKKRC.js.map +0 -1
- package/dist/chunk-YZ6XCSVQ.js.map +0 -1
- package/dist/web/assets/CustomTimeWindowDialog-D2bx7uDv.js +0 -1
- package/dist/web/assets/InteractiveReceipt-BFpIdno8.js +0 -1
- package/dist/web/assets/OverviewScreen-D_KXfiJi.js +0 -1
- package/dist/web/assets/PrismHighlighter-BgVkYu_S.js +0 -6
- package/dist/web/assets/Projects-CN44UpuR.js +0 -1
- package/dist/web/assets/SearchResultsPanel-CWD01v-a.js +0 -1
- package/dist/web/assets/SessionDetail-D8taQ6Tl.js +0 -53
- package/dist/web/assets/api-B9lJtVbO.js +0 -1
- package/dist/web/assets/index-XpolWMY4.js +0 -1423
- package/dist/web/assets/index-xbEEMszv.css +0 -1
- package/dist/web/assets/jsx-runtime-B-hcVAMW.js +0 -1
- package/dist/web/assets/session-indexes-fib48ZKn.js +0 -4
- package/dist/web/assets/translate-Dmym1ZDl.js +0 -2
- package/dist/web/assets/utils-Bk66u8b3.js +0 -1
- /package/dist/{chunk-COZSWVCH.js.map → chunk-AGUAXTKC.js.map} +0 -0
- /package/dist/{discovery-ADSQARBV.js.map → discovery-KEZQU6RL.js.map} +0 -0
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ Your browser will open at `http://localhost:4521` with all your sessions ready t
|
|
|
24
24
|
- **Persistent Themes** — Choose light, dark, or system appearance and keep your UI preferences across sessions
|
|
25
25
|
- **Structured Global Search** — Search titles, messages, tool output, and file paths with filters for agent, project, smart tag, tool, file activity, and cost
|
|
26
26
|
- **UI languages** — English, Simplified Chinese, and Japanese. Follows your browser language by default; use the language selector in the top toolbar to switch and save your preference. Session content and code stay in their original language.
|
|
27
|
-
- **Dashboard & Activity Trends** — See totals, daily activity, agent distribution, model
|
|
27
|
+
- **Dashboard & Activity Trends** — See totals, daily activity, agent distribution, model token shares for the selected date range, token trends, smart tags, bookmarks, and recent sessions
|
|
28
28
|
- **Project Browse Mode** — Open a dedicated projects view with project-level metrics, sessions, and cross-agent drill-down
|
|
29
29
|
- **Project & Nested Session Tree** — Group sessions by repository or project identity, while keeping subagent sessions under their parent
|
|
30
30
|
- **Smart Tags** — Automatically label bugfix, refactoring, feature work, testing, docs, planning, git, build/deploy, and exploration sessions
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
appLogger
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-V3HKVTIO.js";
|
|
5
5
|
|
|
6
6
|
// src/worker-log-drain.ts
|
|
7
7
|
import { randomUUID } from "crypto";
|
|
@@ -86,4 +86,4 @@ export {
|
|
|
86
86
|
acknowledgeWorkerLogDrain,
|
|
87
87
|
terminateWorkerAfterLogDrain
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=chunk-
|
|
89
|
+
//# sourceMappingURL=chunk-AGUAXTKC.js.map
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
normalizeProjectDirectory,
|
|
9
9
|
normalizeProjectScopePath,
|
|
10
10
|
realFs
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KVTLNX7V.js";
|
|
12
12
|
import {
|
|
13
13
|
SessionScanError,
|
|
14
14
|
createAgentScanFailure,
|
|
15
15
|
createRegisteredAgents,
|
|
16
16
|
reportAgentScanFailure
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RBCCNCDO.js";
|
|
18
18
|
import {
|
|
19
19
|
SMART_TAG_CLASSIFIER_REVISION,
|
|
20
20
|
assertIdentifiedSessionHead,
|
|
@@ -41,12 +41,12 @@ import {
|
|
|
41
41
|
setUserVersion,
|
|
42
42
|
sortSessionsByActivity,
|
|
43
43
|
tableExists
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-YLXHGL4S.js";
|
|
45
45
|
|
|
46
|
-
// ../core/dist/chunk-
|
|
47
|
-
var CACHE_SCHEMA_VERSION =
|
|
46
|
+
// ../core/dist/chunk-SU7BSXP6.mjs
|
|
47
|
+
var CACHE_SCHEMA_VERSION = 34;
|
|
48
48
|
|
|
49
|
-
// ../core/dist/chunk-
|
|
49
|
+
// ../core/dist/chunk-DEN6EOVG.mjs
|
|
50
50
|
import { existsSync } from "fs";
|
|
51
51
|
import { join } from "path";
|
|
52
52
|
import { homedir } from "os";
|
|
@@ -243,6 +243,15 @@ function discardPublicationStaging(db, publicationId, agentName) {
|
|
|
243
243
|
deletePublicationPayloads(db, publicationId, agentName);
|
|
244
244
|
}
|
|
245
245
|
var CACHE_CONTENT_MIGRATIONS = [
|
|
246
|
+
{
|
|
247
|
+
key: "pi_automated_messages_v1",
|
|
248
|
+
apply(db) {
|
|
249
|
+
if (!tableExists(db, "sessions") || !tableExists(db, "pending_reindex")) return;
|
|
250
|
+
db.exec(
|
|
251
|
+
"INSERT OR IGNORE INTO pending_reindex(agent_name, session_id) SELECT agent_name, session_id FROM sessions WHERE agent_name = 'pi'"
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
},
|
|
246
255
|
{
|
|
247
256
|
key: "codex_exec_decode_migrated_v3",
|
|
248
257
|
apply(db) {
|
|
@@ -298,7 +307,8 @@ function messageCursorContentFromCachedRow(row) {
|
|
|
298
307
|
partsJson: String(row.parts_json),
|
|
299
308
|
partsFormatVersion: row.parts_format_version,
|
|
300
309
|
subagentId: row.subagent_id,
|
|
301
|
-
nickname: row.nickname
|
|
310
|
+
nickname: row.nickname,
|
|
311
|
+
automated: row.automated
|
|
302
312
|
};
|
|
303
313
|
}
|
|
304
314
|
function messageCursorContentFromStructuredRecord(record) {
|
|
@@ -317,7 +327,8 @@ function messageCursorContentFromStructuredRecord(record) {
|
|
|
317
327
|
partsJson: record.partsJson,
|
|
318
328
|
partsFormatVersion: MESSAGE_PARTS_FORMAT_VERSION,
|
|
319
329
|
subagentId: record.subagentId,
|
|
320
|
-
nickname: record.nickname
|
|
330
|
+
nickname: record.nickname,
|
|
331
|
+
automated: record.automated
|
|
321
332
|
};
|
|
322
333
|
}
|
|
323
334
|
function stringifyOptionalJson(value) {
|
|
@@ -575,7 +586,8 @@ function messageMetadataFromBackfillRow(row) {
|
|
|
575
586
|
model: row.model ?? null,
|
|
576
587
|
provider: row.provider ?? null,
|
|
577
588
|
subagent_id: row.subagent_id ?? void 0,
|
|
578
|
-
nickname: row.nickname ?? void 0
|
|
589
|
+
nickname: row.nickname ?? void 0,
|
|
590
|
+
...row.automated ? { automated: true } : {}
|
|
579
591
|
};
|
|
580
592
|
}
|
|
581
593
|
function messageMetadataFromCachedRow(row) {
|
|
@@ -738,6 +750,7 @@ function normalizeMessages(session) {
|
|
|
738
750
|
partsJson: JSON.stringify(message.parts),
|
|
739
751
|
subagentId: message.subagent_id ?? null,
|
|
740
752
|
nickname: message.nickname ?? null,
|
|
753
|
+
automated: message.automated ? 1 : 0,
|
|
741
754
|
contentText: buildMessageText(message),
|
|
742
755
|
toolMetadataJson: toolMetadata.length > 0 ? JSON.stringify(toolMetadata) : null,
|
|
743
756
|
toolNames: toolNamesFromMessage(message)
|
|
@@ -858,6 +871,7 @@ function createSessionTables(db) {
|
|
|
858
871
|
content_chain_digest TEXT,
|
|
859
872
|
subagent_id TEXT,
|
|
860
873
|
nickname TEXT,
|
|
874
|
+
automated INTEGER NOT NULL DEFAULT 0,
|
|
861
875
|
content_text TEXT NOT NULL,
|
|
862
876
|
tool_metadata_json TEXT,
|
|
863
877
|
PRIMARY KEY (agent_name, session_id, message_index),
|
|
@@ -1226,6 +1240,11 @@ function recreateProjectGroupsView(db) {
|
|
|
1226
1240
|
db.exec("DROP VIEW IF EXISTS project_groups_v");
|
|
1227
1241
|
createProjectGroupsView(db);
|
|
1228
1242
|
}
|
|
1243
|
+
function createUserActivityIndex(db) {
|
|
1244
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_messages_user_activity
|
|
1245
|
+
ON messages(time_created, agent_name, session_id)
|
|
1246
|
+
WHERE role = 'user' AND automated = 0 AND time_created > 0`);
|
|
1247
|
+
}
|
|
1229
1248
|
function runSearchIndexWrite(db, rebuild, write, transaction = "immediate") {
|
|
1230
1249
|
const execute = () => {
|
|
1231
1250
|
if (rebuild) {
|
|
@@ -2042,6 +2061,7 @@ function ensureCacheSchema(db, dbPath) {
|
|
|
2042
2061
|
}
|
|
2043
2062
|
if (currentVersion === 0 && !hasAnyCacheSchema(db)) {
|
|
2044
2063
|
createLatestCacheSchema(db);
|
|
2064
|
+
createUserActivityIndex(db);
|
|
2045
2065
|
createSearchStateIndex(db);
|
|
2046
2066
|
setCacheSchemaVersion(db);
|
|
2047
2067
|
runCacheContentMigrations(db);
|
|
@@ -2132,10 +2152,20 @@ function ensureCacheSchema(db, dbPath) {
|
|
|
2132
2152
|
db2.exec("DROP INDEX IF EXISTS idx_messages_usage_time");
|
|
2133
2153
|
createMessageUsageIndex(db2);
|
|
2134
2154
|
}
|
|
2155
|
+
},
|
|
2156
|
+
{
|
|
2157
|
+
version: 34,
|
|
2158
|
+
migrate(db2) {
|
|
2159
|
+
if (!columnExists(db2, "messages", "automated")) {
|
|
2160
|
+
db2.exec("ALTER TABLE messages ADD COLUMN automated INTEGER NOT NULL DEFAULT 0");
|
|
2161
|
+
}
|
|
2162
|
+
createUserActivityIndex(db2);
|
|
2163
|
+
}
|
|
2135
2164
|
}
|
|
2136
2165
|
]
|
|
2137
2166
|
});
|
|
2138
2167
|
createLatestCacheSchema(db);
|
|
2168
|
+
createUserActivityIndex(db);
|
|
2139
2169
|
createSearchStateIndex(db);
|
|
2140
2170
|
const userVersion = getUserVersion(db);
|
|
2141
2171
|
if (userVersion < CACHE_SCHEMA_VERSION) {
|
|
@@ -2499,6 +2529,7 @@ function updateMessageContent(hash, content) {
|
|
|
2499
2529
|
updateField(hash, content.partsFormatVersion);
|
|
2500
2530
|
updateField(hash, content.subagentId);
|
|
2501
2531
|
updateField(hash, content.nickname);
|
|
2532
|
+
if (content.automated) updateField(hash, "automated");
|
|
2502
2533
|
}
|
|
2503
2534
|
function initialMessageCursorDigest(reference) {
|
|
2504
2535
|
const hash = createHash("sha256");
|
|
@@ -2630,9 +2661,10 @@ function prepareSessionMaterializationWriter(db, agentName) {
|
|
|
2630
2661
|
content_chain_digest,
|
|
2631
2662
|
subagent_id,
|
|
2632
2663
|
nickname,
|
|
2664
|
+
automated,
|
|
2633
2665
|
content_text,
|
|
2634
2666
|
tool_metadata_json
|
|
2635
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
2667
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
2636
2668
|
ON CONFLICT(agent_name, session_id, message_index) DO UPDATE SET
|
|
2637
2669
|
message_id = excluded.message_id,
|
|
2638
2670
|
role = excluded.role,
|
|
@@ -2650,6 +2682,7 @@ function prepareSessionMaterializationWriter(db, agentName) {
|
|
|
2650
2682
|
content_chain_digest = excluded.content_chain_digest,
|
|
2651
2683
|
subagent_id = excluded.subagent_id,
|
|
2652
2684
|
nickname = excluded.nickname,
|
|
2685
|
+
automated = excluded.automated,
|
|
2653
2686
|
content_text = excluded.content_text,
|
|
2654
2687
|
tool_metadata_json = excluded.tool_metadata_json
|
|
2655
2688
|
`);
|
|
@@ -2704,6 +2737,7 @@ function prepareSessionMaterializationWriter(db, agentName) {
|
|
|
2704
2737
|
contentChainDigest,
|
|
2705
2738
|
message.subagentId ?? null,
|
|
2706
2739
|
message.nickname ?? null,
|
|
2740
|
+
message.automated ?? 0,
|
|
2707
2741
|
message.contentText,
|
|
2708
2742
|
message.toolMetadataJson ?? null
|
|
2709
2743
|
);
|
|
@@ -4063,7 +4097,7 @@ function matchesSessionQueryScope(session, scope) {
|
|
|
4063
4097
|
return !scope?.projectScope || matchesProjectScope(session, scope.projectScope);
|
|
4064
4098
|
}
|
|
4065
4099
|
|
|
4066
|
-
// ../core/dist/chunk-
|
|
4100
|
+
// ../core/dist/chunk-CXKZFUE7.mjs
|
|
4067
4101
|
import { existsSync as existsSync2, rmSync, unlinkSync } from "fs";
|
|
4068
4102
|
import { availableParallelism } from "os";
|
|
4069
4103
|
import { Worker } from "worker_threads";
|
|
@@ -4356,7 +4390,8 @@ function readCachedSessionMessageRows(db, agentName, sessionId, startIndex) {
|
|
|
4356
4390
|
parts_format_version,
|
|
4357
4391
|
content_chain_digest,
|
|
4358
4392
|
subagent_id,
|
|
4359
|
-
nickname
|
|
4393
|
+
nickname,
|
|
4394
|
+
automated
|
|
4360
4395
|
FROM messages
|
|
4361
4396
|
WHERE agent_name = ? AND session_id = ? AND message_index >= ?
|
|
4362
4397
|
ORDER BY message_index
|
|
@@ -6058,6 +6093,54 @@ function commitDurableSessionPublication(publication, loadSessionData, searchOpt
|
|
|
6058
6093
|
reportPublicationStage(detail, "committed", searchOptions);
|
|
6059
6094
|
return { status: "committed", publicationId, searchIndex };
|
|
6060
6095
|
}
|
|
6096
|
+
function listDashboardActiveHours(options, queryScope) {
|
|
6097
|
+
if (!hasCacheStorage()) return null;
|
|
6098
|
+
const formatter = new Intl.DateTimeFormat("en-US", {
|
|
6099
|
+
timeZone: options.timeZone,
|
|
6100
|
+
weekday: "short",
|
|
6101
|
+
hour: "2-digit",
|
|
6102
|
+
hourCycle: "h23"
|
|
6103
|
+
});
|
|
6104
|
+
const weekdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
6105
|
+
const { clauses, params } = buildSessionQueryScopeFilters(queryScope);
|
|
6106
|
+
clauses.push(
|
|
6107
|
+
"s.publication_id IS NULL",
|
|
6108
|
+
"s.parent_agent_name IS NULL AND s.parent_session_id IS NULL",
|
|
6109
|
+
"m.role = 'user' AND m.automated = 0 AND m.time_created > 0",
|
|
6110
|
+
"m.time_created <= ?"
|
|
6111
|
+
);
|
|
6112
|
+
params.push(options.to);
|
|
6113
|
+
if (options.from != null) {
|
|
6114
|
+
clauses.push("m.time_created >= ?");
|
|
6115
|
+
params.push(options.from);
|
|
6116
|
+
}
|
|
6117
|
+
if (options.agent) {
|
|
6118
|
+
clauses.push("s.agent_name = ?");
|
|
6119
|
+
params.push(options.agent);
|
|
6120
|
+
}
|
|
6121
|
+
if (options.projectKind != null || options.projectKey != null) {
|
|
6122
|
+
clauses.push("s.project_identity_kind = ? AND s.project_identity_key = ?");
|
|
6123
|
+
params.push(options.projectKind ?? null, options.projectKey ?? null);
|
|
6124
|
+
}
|
|
6125
|
+
const read = withCacheDbReadOnly((db) => {
|
|
6126
|
+
const counts = Array(84).fill(0);
|
|
6127
|
+
const rows = db.prepare(`
|
|
6128
|
+
SELECT m.time_created FROM messages m INDEXED BY idx_messages_user_activity
|
|
6129
|
+
JOIN sessions s ON s.agent_name = m.agent_name AND s.session_id = m.session_id
|
|
6130
|
+
WHERE ${clauses.join(" AND ")}
|
|
6131
|
+
`).iterate(...params);
|
|
6132
|
+
for (const row of rows) {
|
|
6133
|
+
const time = Number(row.time_created);
|
|
6134
|
+
if (Number.isNaN(new Date(time).getTime())) continue;
|
|
6135
|
+
const parts = formatter.formatToParts(time);
|
|
6136
|
+
const weekday = weekdays.indexOf(parts.find((part) => part.type === "weekday").value);
|
|
6137
|
+
const hour = Number(parts.find((part) => part.type === "hour").value);
|
|
6138
|
+
counts[weekday * 12 + Math.floor(hour / 2)] += 1;
|
|
6139
|
+
}
|
|
6140
|
+
return { timeZone: options.timeZone, counts };
|
|
6141
|
+
});
|
|
6142
|
+
return read.status === "success" ? read.value : null;
|
|
6143
|
+
}
|
|
6061
6144
|
|
|
6062
6145
|
export {
|
|
6063
6146
|
closeCacheStorage,
|
|
@@ -6108,6 +6191,7 @@ export {
|
|
|
6108
6191
|
listCachedProjectGroups,
|
|
6109
6192
|
listDashboardCostFacts,
|
|
6110
6193
|
listModelCostDistribution,
|
|
6111
|
-
commitDurableSessionPublication
|
|
6194
|
+
commitDurableSessionPublication,
|
|
6195
|
+
listDashboardActiveHours
|
|
6112
6196
|
};
|
|
6113
|
-
//# sourceMappingURL=chunk-
|
|
6197
|
+
//# sourceMappingURL=chunk-DHQPM5FF.js.map
|