codesesh 1.0.4 → 1.0.5

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.
Files changed (53) hide show
  1. package/README.md +4 -4
  2. package/dist/{chunk-MBZ4VV4C.js → chunk-FCYCBGEL.js} +3 -3
  3. package/dist/{chunk-W4PZHL2C.js → chunk-NBJJGH5P.js} +57 -39
  4. package/dist/chunk-NBJJGH5P.js.map +1 -0
  5. package/dist/chunk-PAP2Q3WV.js +1271 -0
  6. package/dist/chunk-PAP2Q3WV.js.map +1 -0
  7. package/dist/{chunk-BYB77UAJ.js → chunk-TS3IWH5U.js} +115 -72
  8. package/dist/chunk-TS3IWH5U.js.map +1 -0
  9. package/dist/{chunk-YCUN52HA.js → chunk-WUYSZAYR.js} +75 -114
  10. package/dist/chunk-WUYSZAYR.js.map +1 -0
  11. package/dist/{chunk-3SXCTDD6.js → chunk-XKZSX5BM.js} +4 -3
  12. package/dist/chunk-YQFEGFWD.js +89 -0
  13. package/dist/chunk-YQFEGFWD.js.map +1 -0
  14. package/dist/{discovery-K3GLISI6.js → discovery-D23RV7FY.js} +11 -5
  15. package/dist/index.js +1415 -948
  16. package/dist/index.js.map +1 -1
  17. package/dist/project-identity-worker.js +4 -4
  18. package/dist/scan-refresh-worker.js +17 -7
  19. package/dist/scan-refresh-worker.js.map +1 -1
  20. package/dist/search-index-worker.js +16 -8
  21. package/dist/search-index-worker.js.map +1 -1
  22. package/dist/session-detail-worker.js +79 -0
  23. package/dist/session-detail-worker.js.map +1 -0
  24. package/dist/smart-tag-worker.js +3 -3
  25. package/dist/web/assets/CustomTimeWindowDialog-C9XTZRm0.js +1 -0
  26. package/dist/web/assets/{InteractiveReceipt-Dk50TBsH.js → InteractiveReceipt-Sca1smpv.js} +1 -1
  27. package/dist/web/assets/OverviewScreen-Vq6BQR9_.js +1 -0
  28. package/dist/web/assets/{PrismHighlighter-B1a2dPJO.js → PrismHighlighter-LWITDffT.js} +1 -1
  29. package/dist/web/assets/Projects-CwicV3Dk.js +1 -0
  30. package/dist/web/assets/{SearchResultsPanel-DfheEwpz.js → SearchResultsPanel-DCO0Ak0c.js} +1 -1
  31. package/dist/web/assets/SessionDetail-mdmTQgo1.js +53 -0
  32. package/dist/web/assets/api-CXVT9XcZ.js +1 -0
  33. package/dist/web/assets/contract-BS78VBCV.js +2 -0
  34. package/dist/web/assets/{index-Bd-YkWkZ.css → index-C5cyw58A.css} +1 -1
  35. package/dist/web/assets/index-H2cT-6c6.js +1423 -0
  36. package/dist/web/assets/{session-indexes-BsgjUoc1.js → session-indexes-yyyWpKLf.js} +2 -2
  37. package/dist/web/index.html +6 -6
  38. package/package.json +1 -1
  39. package/dist/chunk-BYB77UAJ.js.map +0 -1
  40. package/dist/chunk-G4HRD3AR.js +0 -246
  41. package/dist/chunk-G4HRD3AR.js.map +0 -1
  42. package/dist/chunk-W4PZHL2C.js.map +0 -1
  43. package/dist/chunk-YCUN52HA.js.map +0 -1
  44. package/dist/web/assets/OverviewScreen-5hvQVp4H.js +0 -1
  45. package/dist/web/assets/Projects-Cy_v2yep.js +0 -1
  46. package/dist/web/assets/SessionDetail-DRI8R3st.js +0 -53
  47. package/dist/web/assets/api-GP9UCedC.js +0 -1
  48. package/dist/web/assets/contract-xJyW5u7a.js +0 -2
  49. package/dist/web/assets/index-DEjvzumm.js +0 -1410
  50. package/dist/web/assets/panel-ND0J63d3.js +0 -1
  51. /package/dist/{chunk-MBZ4VV4C.js.map → chunk-FCYCBGEL.js.map} +0 -0
  52. /package/dist/{chunk-3SXCTDD6.js.map → chunk-XKZSX5BM.js.map} +0 -0
  53. /package/dist/{discovery-K3GLISI6.js.map → discovery-D23RV7FY.js.map} +0 -0
@@ -4,9 +4,9 @@ import {
4
4
  getProjectIdentityKey,
5
5
  getSessionAgentKey,
6
6
  matchesProjectIdentity
7
- } from "./chunk-W4PZHL2C.js";
7
+ } from "./chunk-NBJJGH5P.js";
8
8
 
9
- // ../core/dist/chunk-G47S2ACS.mjs
9
+ // ../core/dist/chunk-SULHDCDQ.mjs
10
10
  import * as os from "os";
11
11
  import * as path from "path";
12
12
  import { createHash } from "crypto";
@@ -317,10 +317,11 @@ export {
317
317
  computeIdentity,
318
318
  normalizeProjectDirectory,
319
319
  computeIdentityProjection,
320
+ createProjectScopeMatcher,
320
321
  createProjectScopeMatcherFromIdentity,
321
322
  matchesProjectScope,
322
323
  filterSessionsByProjectScope,
323
324
  normalizeProjectScopePath,
324
325
  buildProjectGroups
325
326
  };
326
- //# sourceMappingURL=chunk-3SXCTDD6.js.map
327
+ //# sourceMappingURL=chunk-XKZSX5BM.js.map
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ appLogger
4
+ } from "./chunk-PAP2Q3WV.js";
5
+
6
+ // src/worker-log-drain.ts
7
+ import { randomUUID } from "crypto";
8
+ var WORKER_LOG_DRAIN_REQUEST_TYPE = "codesesh.worker-log-drain";
9
+ var WORKER_LOG_DRAIN_ACK_TYPE = "codesesh.worker-log-drained";
10
+ var WORKER_LOG_DRAIN_TIMEOUT_MS = 100;
11
+ var terminations = /* @__PURE__ */ new WeakMap();
12
+ function isRecord(value) {
13
+ return value != null && typeof value === "object" && !Array.isArray(value);
14
+ }
15
+ function isWorkerLogDrainRequest(message) {
16
+ return isRecord(message) && message.type === WORKER_LOG_DRAIN_REQUEST_TYPE && typeof message.requestId === "string";
17
+ }
18
+ function isWorkerLogDrainAck(message, requestId) {
19
+ return isRecord(message) && message.type === WORKER_LOG_DRAIN_ACK_TYPE && message.requestId === requestId;
20
+ }
21
+ function acknowledgeWorkerLogDrain(port, message, after = Promise.resolve()) {
22
+ if (!isWorkerLogDrainRequest(message)) return false;
23
+ const acknowledge = () => {
24
+ try {
25
+ port.postMessage({
26
+ type: WORKER_LOG_DRAIN_ACK_TYPE,
27
+ requestId: message.requestId
28
+ });
29
+ } catch {
30
+ return;
31
+ }
32
+ };
33
+ void Promise.resolve(after).then(acknowledge, acknowledge);
34
+ return true;
35
+ }
36
+ function reportDrainTimeout(worker) {
37
+ try {
38
+ appLogger.warn("worker.log_drain_timeout", {
39
+ timeout_ms: WORKER_LOG_DRAIN_TIMEOUT_MS,
40
+ worker_thread_id: worker.threadId
41
+ });
42
+ } catch {
43
+ return;
44
+ }
45
+ }
46
+ function requestWorkerLogDrain(worker) {
47
+ return new Promise((resolve) => {
48
+ const requestId = randomUUID();
49
+ let settled = false;
50
+ const finish = (exitCode) => {
51
+ if (settled) return;
52
+ settled = true;
53
+ clearTimeout(timeout);
54
+ worker.off("message", onMessage);
55
+ worker.off("exit", onExit);
56
+ resolve(exitCode);
57
+ };
58
+ const onMessage = (message) => {
59
+ if (isWorkerLogDrainAck(message, requestId)) finish();
60
+ };
61
+ const onExit = (code) => finish(code);
62
+ const timeout = setTimeout(() => {
63
+ reportDrainTimeout(worker);
64
+ finish();
65
+ }, WORKER_LOG_DRAIN_TIMEOUT_MS);
66
+ worker.on("message", onMessage);
67
+ worker.once("exit", onExit);
68
+ try {
69
+ worker.postMessage({ type: WORKER_LOG_DRAIN_REQUEST_TYPE, requestId });
70
+ } catch {
71
+ finish(worker.threadId === -1 ? 0 : void 0);
72
+ }
73
+ });
74
+ }
75
+ function terminateWorkerAfterLogDrain(worker) {
76
+ const existing = terminations.get(worker);
77
+ if (existing) return existing;
78
+ const termination = requestWorkerLogDrain(worker).then(
79
+ (exitCode) => exitCode === void 0 ? worker.terminate() : exitCode
80
+ );
81
+ terminations.set(worker, termination);
82
+ return termination;
83
+ }
84
+
85
+ export {
86
+ acknowledgeWorkerLogDrain,
87
+ terminateWorkerAfterLogDrain
88
+ };
89
+ //# sourceMappingURL=chunk-YQFEGFWD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/worker-log-drain.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { MessagePort, Worker } from \"node:worker_threads\";\nimport { appLogger } from \"./logging.js\";\n\nconst WORKER_LOG_DRAIN_REQUEST_TYPE = \"codesesh.worker-log-drain\";\nconst WORKER_LOG_DRAIN_ACK_TYPE = \"codesesh.worker-log-drained\";\nconst WORKER_LOG_DRAIN_TIMEOUT_MS = 100;\n\ninterface WorkerLogDrainRequest {\n type: typeof WORKER_LOG_DRAIN_REQUEST_TYPE;\n requestId: string;\n}\n\ninterface WorkerLogDrainAck {\n type: typeof WORKER_LOG_DRAIN_ACK_TYPE;\n requestId: string;\n}\n\nconst terminations = new WeakMap<Worker, Promise<number>>();\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isWorkerLogDrainRequest(message: unknown): boolean {\n return (\n isRecord(message) &&\n message.type === WORKER_LOG_DRAIN_REQUEST_TYPE &&\n typeof message.requestId === \"string\"\n );\n}\n\nfunction isWorkerLogDrainAck(message: unknown, requestId: string): boolean {\n return (\n isRecord(message) &&\n message.type === WORKER_LOG_DRAIN_ACK_TYPE &&\n message.requestId === requestId\n );\n}\n\nexport function acknowledgeWorkerLogDrain(\n port: MessagePort,\n message: unknown,\n after: PromiseLike<unknown> = Promise.resolve(),\n): boolean {\n if (!isWorkerLogDrainRequest(message)) return false;\n const acknowledge = () => {\n try {\n port.postMessage({\n type: WORKER_LOG_DRAIN_ACK_TYPE,\n requestId: (message as WorkerLogDrainRequest).requestId,\n } satisfies WorkerLogDrainAck);\n } catch {\n return;\n }\n };\n void Promise.resolve(after).then(acknowledge, acknowledge);\n return true;\n}\n\nfunction reportDrainTimeout(worker: Worker): void {\n try {\n appLogger.warn(\"worker.log_drain_timeout\", {\n timeout_ms: WORKER_LOG_DRAIN_TIMEOUT_MS,\n worker_thread_id: worker.threadId,\n });\n } catch {\n return;\n }\n}\n\nfunction requestWorkerLogDrain(worker: Worker): Promise<number | undefined> {\n return new Promise((resolve) => {\n const requestId = randomUUID();\n let settled = false;\n const finish = (exitCode?: number) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n worker.off(\"message\", onMessage);\n worker.off(\"exit\", onExit);\n resolve(exitCode);\n };\n const onMessage = (message: unknown) => {\n if (isWorkerLogDrainAck(message, requestId)) finish();\n };\n const onExit = (code: number) => finish(code);\n const timeout = setTimeout(() => {\n reportDrainTimeout(worker);\n finish();\n }, WORKER_LOG_DRAIN_TIMEOUT_MS);\n\n worker.on(\"message\", onMessage);\n worker.once(\"exit\", onExit);\n try {\n worker.postMessage({ type: WORKER_LOG_DRAIN_REQUEST_TYPE, requestId });\n } catch {\n finish(worker.threadId === -1 ? 0 : undefined);\n }\n });\n}\n\nexport function terminateWorkerAfterLogDrain(worker: Worker): Promise<number> {\n const existing = terminations.get(worker);\n if (existing) return existing;\n\n const termination = requestWorkerLogDrain(worker).then((exitCode) =>\n exitCode === undefined ? worker.terminate() : exitCode,\n );\n terminations.set(worker, termination);\n return termination;\n}\n"],"mappings":";;;;;;AAAA,SAAS,kBAAkB;AAI3B,IAAM,gCAAgC;AACtC,IAAM,4BAA4B;AAClC,IAAM,8BAA8B;AAYpC,IAAM,eAAe,oBAAI,QAAiC;AAE1D,SAAS,SAAS,OAAkD;AAClE,SAAO,SAAS,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAC3E;AAEA,SAAS,wBAAwB,SAA2B;AAC1D,SACE,SAAS,OAAO,KAChB,QAAQ,SAAS,iCACjB,OAAO,QAAQ,cAAc;AAEjC;AAEA,SAAS,oBAAoB,SAAkB,WAA4B;AACzE,SACE,SAAS,OAAO,KAChB,QAAQ,SAAS,6BACjB,QAAQ,cAAc;AAE1B;AAEO,SAAS,0BACd,MACA,SACA,QAA8B,QAAQ,QAAQ,GACrC;AACT,MAAI,CAAC,wBAAwB,OAAO,EAAG,QAAO;AAC9C,QAAM,cAAc,MAAM;AACxB,QAAI;AACF,WAAK,YAAY;AAAA,QACf,MAAM;AAAA,QACN,WAAY,QAAkC;AAAA,MAChD,CAA6B;AAAA,IAC/B,QAAQ;AACN;AAAA,IACF;AAAA,EACF;AACA,OAAK,QAAQ,QAAQ,KAAK,EAAE,KAAK,aAAa,WAAW;AACzD,SAAO;AACT;AAEA,SAAS,mBAAmB,QAAsB;AAChD,MAAI;AACF,cAAU,KAAK,4BAA4B;AAAA,MACzC,YAAY;AAAA,MACZ,kBAAkB,OAAO;AAAA,IAC3B,CAAC;AAAA,EACH,QAAQ;AACN;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,QAA6C;AAC1E,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,YAAY,WAAW;AAC7B,QAAI,UAAU;AACd,UAAM,SAAS,CAAC,aAAsB;AACpC,UAAI,QAAS;AACb,gBAAU;AACV,mBAAa,OAAO;AACpB,aAAO,IAAI,WAAW,SAAS;AAC/B,aAAO,IAAI,QAAQ,MAAM;AACzB,cAAQ,QAAQ;AAAA,IAClB;AACA,UAAM,YAAY,CAAC,YAAqB;AACtC,UAAI,oBAAoB,SAAS,SAAS,EAAG,QAAO;AAAA,IACtD;AACA,UAAM,SAAS,CAAC,SAAiB,OAAO,IAAI;AAC5C,UAAM,UAAU,WAAW,MAAM;AAC/B,yBAAmB,MAAM;AACzB,aAAO;AAAA,IACT,GAAG,2BAA2B;AAE9B,WAAO,GAAG,WAAW,SAAS;AAC9B,WAAO,KAAK,QAAQ,MAAM;AAC1B,QAAI;AACF,aAAO,YAAY,EAAE,MAAM,+BAA+B,UAAU,CAAC;AAAA,IACvE,QAAQ;AACN,aAAO,OAAO,aAAa,KAAK,IAAI,MAAS;AAAA,IAC/C;AAAA,EACF,CAAC;AACH;AAEO,SAAS,6BAA6B,QAAiC;AAC5E,QAAM,WAAW,aAAa,IAAI,MAAM;AACxC,MAAI,SAAU,QAAO;AAErB,QAAM,cAAc,sBAAsB,MAAM,EAAE;AAAA,IAAK,CAAC,aACtD,aAAa,SAAY,OAAO,UAAU,IAAI;AAAA,EAChD;AACA,eAAa,IAAI,QAAQ,WAAW;AACpC,SAAO;AACT;","names":[]}
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  attachMissingProjectIdentities,
4
+ beginAgentRefresh,
4
5
  buildAgentCacheMeta,
5
6
  buildSessionPersistenceDiff,
6
7
  clearCache,
@@ -25,6 +26,8 @@ import {
25
26
  markAgentFullSyncCompleted,
26
27
  markAgentFullSyncProgress,
27
28
  markAgentFullSyncStarted,
29
+ matchesSessionQueryScope,
30
+ materializeCachedSessionDetailResponse,
28
31
  materializeSessionDetailResponse,
29
32
  mergeSearchQueryOptions,
30
33
  planAgentScan,
@@ -42,18 +45,19 @@ import {
42
45
  sortSessions,
43
46
  syncSessionSearchIndex,
44
47
  syncSessionSearchIndexChanges
45
- } from "./chunk-BYB77UAJ.js";
46
- import "./chunk-3SXCTDD6.js";
47
- import "./chunk-YCUN52HA.js";
48
+ } from "./chunk-TS3IWH5U.js";
49
+ import "./chunk-XKZSX5BM.js";
50
+ import "./chunk-WUYSZAYR.js";
48
51
  import {
49
52
  SMART_TAGS,
50
53
  filterSessionTreeByActivityWindow,
51
54
  isSmartTag,
52
55
  mergeSortedSessions
53
- } from "./chunk-W4PZHL2C.js";
56
+ } from "./chunk-NBJJGH5P.js";
54
57
  export {
55
58
  SMART_TAGS,
56
59
  attachMissingProjectIdentities,
60
+ beginAgentRefresh,
57
61
  buildAgentCacheMeta,
58
62
  buildSessionPersistenceDiff,
59
63
  clearCache,
@@ -80,6 +84,8 @@ export {
80
84
  markAgentFullSyncCompleted,
81
85
  markAgentFullSyncProgress,
82
86
  markAgentFullSyncStarted,
87
+ matchesSessionQueryScope,
88
+ materializeCachedSessionDetailResponse,
83
89
  materializeSessionDetailResponse,
84
90
  mergeSearchQueryOptions,
85
91
  mergeSortedSessions,
@@ -99,4 +105,4 @@ export {
99
105
  syncSessionSearchIndex,
100
106
  syncSessionSearchIndexChanges
101
107
  };
102
- //# sourceMappingURL=discovery-K3GLISI6.js.map
108
+ //# sourceMappingURL=discovery-D23RV7FY.js.map