xtctx 0.3.2 → 0.11.1

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 (300) hide show
  1. package/CHANGELOG.md +267 -122
  2. package/LICENSE +21 -21
  3. package/README.md +154 -121
  4. package/dist/src/cli/disconnect.d.ts +8 -0
  5. package/dist/src/cli/disconnect.d.ts.map +1 -0
  6. package/dist/src/cli/disconnect.js +42 -0
  7. package/dist/src/cli/disconnect.js.map +1 -0
  8. package/dist/src/cli/hook.d.ts +7 -0
  9. package/dist/src/cli/hook.d.ts.map +1 -0
  10. package/dist/src/cli/hook.js +21 -0
  11. package/dist/src/cli/hook.js.map +1 -0
  12. package/dist/src/cli/index.d.ts.map +1 -1
  13. package/dist/src/cli/index.js +71 -33
  14. package/dist/src/cli/index.js.map +1 -1
  15. package/dist/src/cli/setup.d.ts +8 -0
  16. package/dist/src/cli/setup.d.ts.map +1 -0
  17. package/dist/src/cli/setup.js +77 -0
  18. package/dist/src/cli/setup.js.map +1 -0
  19. package/dist/src/cli/status.d.ts +7 -0
  20. package/dist/src/cli/status.d.ts.map +1 -0
  21. package/dist/src/cli/status.js +84 -0
  22. package/dist/src/cli/status.js.map +1 -0
  23. package/dist/src/config/disconnect.d.ts +32 -0
  24. package/dist/src/config/disconnect.d.ts.map +1 -0
  25. package/dist/src/config/disconnect.js +304 -0
  26. package/dist/src/config/disconnect.js.map +1 -0
  27. package/dist/src/config/mcp-config.d.ts +91 -0
  28. package/dist/src/config/mcp-config.d.ts.map +1 -0
  29. package/dist/src/config/mcp-config.js +462 -0
  30. package/dist/src/config/mcp-config.js.map +1 -0
  31. package/dist/src/config/setup.d.ts +37 -0
  32. package/dist/src/config/setup.d.ts.map +1 -0
  33. package/dist/src/config/setup.js +338 -0
  34. package/dist/src/config/setup.js.map +1 -0
  35. package/dist/src/config/skills.d.ts +73 -0
  36. package/dist/src/config/skills.d.ts.map +1 -0
  37. package/dist/src/config/skills.js +427 -0
  38. package/dist/src/config/skills.js.map +1 -0
  39. package/dist/src/handoff/embeddings.d.ts +15 -0
  40. package/dist/src/handoff/embeddings.d.ts.map +1 -0
  41. package/dist/src/handoff/embeddings.js +63 -0
  42. package/dist/src/handoff/embeddings.js.map +1 -0
  43. package/dist/src/handoff/sqlite-index.d.ts +43 -0
  44. package/dist/src/handoff/sqlite-index.d.ts.map +1 -0
  45. package/dist/src/handoff/sqlite-index.js +718 -0
  46. package/dist/src/handoff/sqlite-index.js.map +1 -0
  47. package/dist/src/handoff/types.d.ts +57 -0
  48. package/dist/src/handoff/types.d.ts.map +1 -0
  49. package/dist/src/handoff/types.js +2 -0
  50. package/dist/src/handoff/types.js.map +1 -0
  51. package/dist/src/handoff/vector.d.ts +4 -0
  52. package/dist/src/handoff/vector.d.ts.map +1 -0
  53. package/dist/src/handoff/vector.js +31 -0
  54. package/dist/src/handoff/vector.js.map +1 -0
  55. package/dist/src/mcp/server.d.ts +2 -19
  56. package/dist/src/mcp/server.d.ts.map +1 -1
  57. package/dist/src/mcp/server.js +75 -199
  58. package/dist/src/mcp/server.js.map +1 -1
  59. package/dist/src/mcp/tools/continuity.d.ts +3 -0
  60. package/dist/src/mcp/tools/continuity.d.ts.map +1 -0
  61. package/dist/src/mcp/tools/continuity.js +30 -0
  62. package/dist/src/mcp/tools/continuity.js.map +1 -0
  63. package/dist/src/mcp/tools/manifest.d.ts +40 -0
  64. package/dist/src/mcp/tools/manifest.d.ts.map +1 -0
  65. package/dist/src/mcp/tools/manifest.js +96 -0
  66. package/dist/src/mcp/tools/manifest.js.map +1 -0
  67. package/dist/src/mcp/tools/sessions.d.ts +11 -32
  68. package/dist/src/mcp/tools/sessions.d.ts.map +1 -1
  69. package/dist/src/mcp/tools/sessions.js +47 -13
  70. package/dist/src/mcp/tools/sessions.js.map +1 -1
  71. package/dist/src/runtime/services.d.ts +11 -38
  72. package/dist/src/runtime/services.d.ts.map +1 -1
  73. package/dist/src/runtime/services.js +43 -202
  74. package/dist/src/runtime/services.js.map +1 -1
  75. package/dist/src/scrapers/antigravity.d.ts +41 -0
  76. package/dist/src/scrapers/antigravity.d.ts.map +1 -0
  77. package/dist/src/scrapers/antigravity.js +858 -0
  78. package/dist/src/scrapers/antigravity.js.map +1 -0
  79. package/dist/src/scrapers/base.d.ts +53 -1
  80. package/dist/src/scrapers/base.d.ts.map +1 -1
  81. package/dist/src/scrapers/base.js +89 -3
  82. package/dist/src/scrapers/base.js.map +1 -1
  83. package/dist/src/scrapers/claude-code.d.ts +20 -6
  84. package/dist/src/scrapers/claude-code.d.ts.map +1 -1
  85. package/dist/src/scrapers/claude-code.js +144 -26
  86. package/dist/src/scrapers/claude-code.js.map +1 -1
  87. package/dist/src/scrapers/codex.d.ts +36 -6
  88. package/dist/src/scrapers/codex.d.ts.map +1 -1
  89. package/dist/src/scrapers/codex.js +256 -46
  90. package/dist/src/scrapers/codex.js.map +1 -1
  91. package/dist/src/scrapers/copilot-cli.d.ts +33 -0
  92. package/dist/src/scrapers/copilot-cli.d.ts.map +1 -0
  93. package/dist/src/scrapers/copilot-cli.js +257 -0
  94. package/dist/src/scrapers/copilot-cli.js.map +1 -0
  95. package/dist/src/scrapers/copilot.d.ts +41 -8
  96. package/dist/src/scrapers/copilot.d.ts.map +1 -1
  97. package/dist/src/scrapers/copilot.js +256 -118
  98. package/dist/src/scrapers/copilot.js.map +1 -1
  99. package/dist/src/scrapers/cursor.d.ts +24 -9
  100. package/dist/src/scrapers/cursor.d.ts.map +1 -1
  101. package/dist/src/scrapers/cursor.js +247 -151
  102. package/dist/src/scrapers/cursor.js.map +1 -1
  103. package/dist/src/scrapers/index.d.ts +18 -0
  104. package/dist/src/scrapers/index.d.ts.map +1 -0
  105. package/dist/src/scrapers/index.js +17 -0
  106. package/dist/src/scrapers/index.js.map +1 -0
  107. package/dist/src/scrapers/opencode.d.ts +36 -0
  108. package/dist/src/scrapers/opencode.d.ts.map +1 -0
  109. package/dist/src/scrapers/opencode.js +248 -0
  110. package/dist/src/scrapers/opencode.js.map +1 -0
  111. package/dist/src/scrapers/registry.d.ts +1 -0
  112. package/dist/src/scrapers/registry.d.ts.map +1 -1
  113. package/dist/src/scrapers/registry.js +3 -0
  114. package/dist/src/scrapers/registry.js.map +1 -1
  115. package/dist/src/tools/sources.d.ts +28 -0
  116. package/dist/src/tools/sources.d.ts.map +1 -0
  117. package/dist/src/tools/sources.js +149 -0
  118. package/dist/src/tools/sources.js.map +1 -0
  119. package/dist/src/types/config.d.ts +24 -37
  120. package/dist/src/types/config.d.ts.map +1 -1
  121. package/dist/src/types/index.d.ts +0 -2
  122. package/dist/src/types/index.d.ts.map +1 -1
  123. package/dist/src/types/index.js +0 -2
  124. package/dist/src/types/index.js.map +1 -1
  125. package/dist/src/types/scraper.d.ts +34 -5
  126. package/dist/src/types/scraper.d.ts.map +1 -1
  127. package/dist/src/utils/errors.d.ts +2 -0
  128. package/dist/src/utils/errors.d.ts.map +1 -0
  129. package/dist/src/utils/errors.js +7 -0
  130. package/dist/src/utils/errors.js.map +1 -0
  131. package/dist/src/utils/package-info.d.ts +11 -0
  132. package/dist/src/utils/package-info.d.ts.map +1 -0
  133. package/dist/src/utils/package-info.js +30 -0
  134. package/dist/src/utils/package-info.js.map +1 -0
  135. package/dist/src/utils/project-scope.d.ts +3 -0
  136. package/dist/src/utils/project-scope.d.ts.map +1 -0
  137. package/dist/src/utils/project-scope.js +45 -0
  138. package/dist/src/utils/project-scope.js.map +1 -0
  139. package/package.json +70 -66
  140. package/dist/src/api/routes/config.d.ts +0 -4
  141. package/dist/src/api/routes/config.d.ts.map +0 -1
  142. package/dist/src/api/routes/config.js +0 -61
  143. package/dist/src/api/routes/config.js.map +0 -1
  144. package/dist/src/api/routes/knowledge.d.ts +0 -4
  145. package/dist/src/api/routes/knowledge.d.ts.map +0 -1
  146. package/dist/src/api/routes/knowledge.js +0 -40
  147. package/dist/src/api/routes/knowledge.js.map +0 -1
  148. package/dist/src/api/routes/search.d.ts +0 -7
  149. package/dist/src/api/routes/search.d.ts.map +0 -1
  150. package/dist/src/api/routes/search.js +0 -108
  151. package/dist/src/api/routes/search.js.map +0 -1
  152. package/dist/src/api/routes/sources.d.ts +0 -12
  153. package/dist/src/api/routes/sources.d.ts.map +0 -1
  154. package/dist/src/api/routes/sources.js +0 -70
  155. package/dist/src/api/routes/sources.js.map +0 -1
  156. package/dist/src/api/server.d.ts +0 -26
  157. package/dist/src/api/server.d.ts.map +0 -1
  158. package/dist/src/api/server.js +0 -312
  159. package/dist/src/api/server.js.map +0 -1
  160. package/dist/src/cli/ingest.d.ts +0 -6
  161. package/dist/src/cli/ingest.d.ts.map +0 -1
  162. package/dist/src/cli/ingest.js +0 -11
  163. package/dist/src/cli/ingest.js.map +0 -1
  164. package/dist/src/cli/init.d.ts +0 -6
  165. package/dist/src/cli/init.d.ts.map +0 -1
  166. package/dist/src/cli/init.js +0 -105
  167. package/dist/src/cli/init.js.map +0 -1
  168. package/dist/src/cli/serve.d.ts +0 -7
  169. package/dist/src/cli/serve.d.ts.map +0 -1
  170. package/dist/src/cli/serve.js +0 -100
  171. package/dist/src/cli/serve.js.map +0 -1
  172. package/dist/src/cli/sync.d.ts +0 -5
  173. package/dist/src/cli/sync.d.ts.map +0 -1
  174. package/dist/src/cli/sync.js +0 -13
  175. package/dist/src/cli/sync.js.map +0 -1
  176. package/dist/src/compaction/pipeline.d.ts +0 -19
  177. package/dist/src/compaction/pipeline.d.ts.map +0 -1
  178. package/dist/src/compaction/pipeline.js +0 -37
  179. package/dist/src/compaction/pipeline.js.map +0 -1
  180. package/dist/src/compaction/providers/cli.d.ts +0 -13
  181. package/dist/src/compaction/providers/cli.d.ts.map +0 -1
  182. package/dist/src/compaction/providers/cli.js +0 -60
  183. package/dist/src/compaction/providers/cli.js.map +0 -1
  184. package/dist/src/compaction/rule-based.d.ts +0 -8
  185. package/dist/src/compaction/rule-based.d.ts.map +0 -1
  186. package/dist/src/compaction/rule-based.js +0 -120
  187. package/dist/src/compaction/rule-based.js.map +0 -1
  188. package/dist/src/config/loader.d.ts +0 -12
  189. package/dist/src/config/loader.d.ts.map +0 -1
  190. package/dist/src/config/loader.js +0 -76
  191. package/dist/src/config/loader.js.map +0 -1
  192. package/dist/src/config/mappings/claude-code.d.ts +0 -3
  193. package/dist/src/config/mappings/claude-code.d.ts.map +0 -1
  194. package/dist/src/config/mappings/claude-code.js +0 -31
  195. package/dist/src/config/mappings/claude-code.js.map +0 -1
  196. package/dist/src/config/mappings/codex.d.ts +0 -3
  197. package/dist/src/config/mappings/codex.d.ts.map +0 -1
  198. package/dist/src/config/mappings/codex.js +0 -31
  199. package/dist/src/config/mappings/codex.js.map +0 -1
  200. package/dist/src/config/mappings/copilot.d.ts +0 -3
  201. package/dist/src/config/mappings/copilot.d.ts.map +0 -1
  202. package/dist/src/config/mappings/copilot.js +0 -33
  203. package/dist/src/config/mappings/copilot.js.map +0 -1
  204. package/dist/src/config/mappings/cursor.d.ts +0 -3
  205. package/dist/src/config/mappings/cursor.d.ts.map +0 -1
  206. package/dist/src/config/mappings/cursor.js +0 -29
  207. package/dist/src/config/mappings/cursor.js.map +0 -1
  208. package/dist/src/config/sync.d.ts +0 -13
  209. package/dist/src/config/sync.d.ts.map +0 -1
  210. package/dist/src/config/sync.js +0 -96
  211. package/dist/src/config/sync.js.map +0 -1
  212. package/dist/src/ingestion/coordinator.d.ts +0 -37
  213. package/dist/src/ingestion/coordinator.d.ts.map +0 -1
  214. package/dist/src/ingestion/coordinator.js +0 -127
  215. package/dist/src/ingestion/coordinator.js.map +0 -1
  216. package/dist/src/ingestion/daemon.d.ts +0 -17
  217. package/dist/src/ingestion/daemon.d.ts.map +0 -1
  218. package/dist/src/ingestion/daemon.js +0 -35
  219. package/dist/src/ingestion/daemon.js.map +0 -1
  220. package/dist/src/ingestion/watcher.d.ts +0 -19
  221. package/dist/src/ingestion/watcher.d.ts.map +0 -1
  222. package/dist/src/ingestion/watcher.js +0 -70
  223. package/dist/src/ingestion/watcher.js.map +0 -1
  224. package/dist/src/knowledge/autotag.d.ts +0 -3
  225. package/dist/src/knowledge/autotag.d.ts.map +0 -1
  226. package/dist/src/knowledge/autotag.js +0 -24
  227. package/dist/src/knowledge/autotag.js.map +0 -1
  228. package/dist/src/knowledge/dedup.d.ts +0 -7
  229. package/dist/src/knowledge/dedup.d.ts.map +0 -1
  230. package/dist/src/knowledge/dedup.js +0 -15
  231. package/dist/src/knowledge/dedup.js.map +0 -1
  232. package/dist/src/knowledge/repository.d.ts +0 -12
  233. package/dist/src/knowledge/repository.d.ts.map +0 -1
  234. package/dist/src/knowledge/repository.js +0 -74
  235. package/dist/src/knowledge/repository.js.map +0 -1
  236. package/dist/src/mcp/tools/config.d.ts +0 -36
  237. package/dist/src/mcp/tools/config.d.ts.map +0 -1
  238. package/dist/src/mcp/tools/config.js +0 -54
  239. package/dist/src/mcp/tools/config.js.map +0 -1
  240. package/dist/src/mcp/tools/knowledge.d.ts +0 -17
  241. package/dist/src/mcp/tools/knowledge.d.ts.map +0 -1
  242. package/dist/src/mcp/tools/knowledge.js +0 -46
  243. package/dist/src/mcp/tools/knowledge.js.map +0 -1
  244. package/dist/src/mcp/tools/search.d.ts +0 -22
  245. package/dist/src/mcp/tools/search.d.ts.map +0 -1
  246. package/dist/src/mcp/tools/search.js +0 -30
  247. package/dist/src/mcp/tools/search.js.map +0 -1
  248. package/dist/src/mcp/tools/write.d.ts +0 -38
  249. package/dist/src/mcp/tools/write.d.ts.map +0 -1
  250. package/dist/src/mcp/tools/write.js +0 -97
  251. package/dist/src/mcp/tools/write.js.map +0 -1
  252. package/dist/src/runtime/ingestion.d.ts +0 -17
  253. package/dist/src/runtime/ingestion.d.ts.map +0 -1
  254. package/dist/src/runtime/ingestion.js +0 -106
  255. package/dist/src/runtime/ingestion.js.map +0 -1
  256. package/dist/src/scrapers/gemini.d.ts +0 -17
  257. package/dist/src/scrapers/gemini.d.ts.map +0 -1
  258. package/dist/src/scrapers/gemini.js +0 -245
  259. package/dist/src/scrapers/gemini.js.map +0 -1
  260. package/dist/src/store/embeddings.d.ts +0 -9
  261. package/dist/src/store/embeddings.d.ts.map +0 -1
  262. package/dist/src/store/embeddings.js +0 -28
  263. package/dist/src/store/embeddings.js.map +0 -1
  264. package/dist/src/store/lance.d.ts +0 -25
  265. package/dist/src/store/lance.d.ts.map +0 -1
  266. package/dist/src/store/lance.js +0 -74
  267. package/dist/src/store/lance.js.map +0 -1
  268. package/dist/src/store/search.d.ts +0 -18
  269. package/dist/src/store/search.d.ts.map +0 -1
  270. package/dist/src/store/search.js +0 -55
  271. package/dist/src/store/search.js.map +0 -1
  272. package/dist/src/types/compaction.d.ts +0 -29
  273. package/dist/src/types/compaction.d.ts.map +0 -1
  274. package/dist/src/types/compaction.js +0 -2
  275. package/dist/src/types/compaction.js.map +0 -1
  276. package/dist/src/types/context.d.ts +0 -33
  277. package/dist/src/types/context.d.ts.map +0 -1
  278. package/dist/src/types/context.js +0 -18
  279. package/dist/src/types/context.js.map +0 -1
  280. package/dist/src/utils/retry.d.ts +0 -11
  281. package/dist/src/utils/retry.d.ts.map +0 -1
  282. package/dist/src/utils/retry.js +0 -46
  283. package/dist/src/utils/retry.js.map +0 -1
  284. package/dist/src/utils/shutdown.d.ts +0 -25
  285. package/dist/src/utils/shutdown.d.ts.map +0 -1
  286. package/dist/src/utils/shutdown.js +0 -56
  287. package/dist/src/utils/shutdown.js.map +0 -1
  288. package/dist/web/apple-touch-icon.png +0 -0
  289. package/dist/web/assets/index-Nuadr5ox.css +0 -1
  290. package/dist/web/assets/index-aA0u8eXA.js +0 -3504
  291. package/dist/web/assets/primeicons-C6QP2o4f.woff2 +0 -0
  292. package/dist/web/assets/primeicons-DMOk5skT.eot +0 -0
  293. package/dist/web/assets/primeicons-Dr5RGzOO.svg +0 -345
  294. package/dist/web/assets/primeicons-MpK4pl85.ttf +0 -0
  295. package/dist/web/assets/primeicons-WjwUDZjB.woff +0 -0
  296. package/dist/web/favicon.ico +0 -0
  297. package/dist/web/favicon.svg +0 -21
  298. package/dist/web/index.html +0 -21
  299. package/dist/web/site.webmanifest +0 -19
  300. package/dist/web/vite.svg +0 -1
@@ -1,8 +1,38 @@
1
1
  import { createReadStream } from "node:fs";
2
- import { readdir, stat } from "node:fs/promises";
3
- import { basename, join } from "node:path";
2
+ import { stat } from "node:fs/promises";
3
+ import { basename } from "node:path";
4
4
  import { createInterface } from "node:readline";
5
- import { estimateTokens, ScraperStateManager } from "./base.js";
5
+ import { glob } from "glob";
6
+ import { AbstractScraper, estimateTokens, toDate } from "./base.js";
7
+ import { pathMatchesProject } from "../utils/project-scope.js";
8
+ const SCRAPER_NAME = "codex";
9
+ /**
10
+ * Mutation shapes the codex scraper tolerates silently. Anything outside
11
+ * this whitelist that causes records to be dropped must warn.
12
+ */
13
+ export const ACCEPTED_DEGRADATIONS = {
14
+ /** Sessions path missing — codex CLI simply not installed. */
15
+ missingSessionsPath: "codex sessions directory absent",
16
+ /** Blank / malformed JSONL line — we warn but keep reading. */
17
+ malformedJsonlLine: "JSONL line not parseable — warned, not fatal",
18
+ /** Event types we intentionally ignore (tool calls, meta-only events). */
19
+ nonMessageEventType: "event is not a conversation message",
20
+ /** response_item that carries a non-assistant role (system-injected context). */
21
+ systemInjectedUserRole: "response_item with role != assistant",
22
+ /** Forward-compat unknown siblings on a known event. */
23
+ unknownFieldsAlongside: "extra keys alongside known event schema",
24
+ };
25
+ const KNOWN_EVENT_TYPES = new Set([
26
+ "session_meta",
27
+ "turn_context",
28
+ "event_msg",
29
+ "response_item",
30
+ "compacted",
31
+ ]);
32
+ function warnDrift(sourcePath, surprise, recordsAffected) {
33
+ console.warn(`[${SCRAPER_NAME}] schema-drift surprise at ${sourcePath}: ${surprise} ` +
34
+ `(records affected: ${recordsAffected})`);
35
+ }
6
36
  const ROLE_MAP = {
7
37
  user: "user",
8
38
  human: "user",
@@ -10,13 +40,14 @@ const ROLE_MAP = {
10
40
  system: "system",
11
41
  tool: "tool",
12
42
  };
13
- export class CodexCliScraper {
43
+ export class CodexCliScraper extends AbstractScraper {
14
44
  codexSessionsPath;
45
+ projectRoot;
15
46
  tool = "codex";
16
- stateManager;
17
- constructor(codexSessionsPath, stateDir) {
47
+ constructor(codexSessionsPath, stateDir, projectRoot) {
48
+ super(stateDir);
18
49
  this.codexSessionsPath = codexSessionsPath;
19
- this.stateManager = new ScraperStateManager(stateDir);
50
+ this.projectRoot = projectRoot;
20
51
  }
21
52
  async detect() {
22
53
  try {
@@ -54,66 +85,256 @@ export class CodexCliScraper {
54
85
  referencedFiles: [],
55
86
  approvalMode: normalizeApprovalMode(toStringValue(value.approvalMode)),
56
87
  sandboxed: toBoolean(value.sandboxed),
88
+ layer: toMessageIndex(value.layer),
57
89
  },
58
90
  };
59
91
  }
60
- async getLastScrapedPosition() {
61
- return this.stateManager.load(this.tool);
62
- }
63
- async saveScrapedPosition(state) {
64
- await this.stateManager.save(this.tool, state);
65
- }
92
+ /**
93
+ * Processes Codex JSONL session files, which use an event-stream format.
94
+ *
95
+ * Each line is a JSON event with `type` ∈ {session_meta, turn_context,
96
+ * response_item, event_msg, compacted}. Conversation messages live inside
97
+ * `response_item` events where `payload.type === "message"`.
98
+ *
99
+ * Session-level state (session ID, approval mode, sandbox flag) is tracked
100
+ * across events so that every message chunk carries accurate metadata.
101
+ */
66
102
  async *readAllSessions(since) {
67
103
  const files = await this.resolveJsonlFiles();
68
104
  for (const filePath of files) {
69
- const sessionId = inferSessionId(filePath);
105
+ const sessionIdFromFile = inferSessionId(filePath);
70
106
  const reader = createInterface({
71
107
  input: createReadStream(filePath, { encoding: "utf8" }),
72
108
  crlfDelay: Infinity,
73
109
  });
110
+ // Session-level state, updated as we encounter meta/context events.
111
+ let sessionId = sessionIdFromFile;
112
+ let approvalMode = "suggest";
113
+ let sandboxed = false;
74
114
  let messageIndex = 0;
115
+ let projectMatched = this.projectRoot ? false : true;
75
116
  for await (const line of reader) {
76
117
  if (!line.trim()) {
77
118
  continue;
78
119
  }
120
+ let parsed;
79
121
  try {
80
- const parsed = JSON.parse(line);
122
+ parsed = JSON.parse(line);
123
+ }
124
+ catch (err) {
125
+ warnDrift(filePath, `JSONL line not parseable: ${err.message}`, 1);
126
+ continue;
127
+ }
128
+ const eventType = toStringValue(parsed.type);
129
+ // Strict-mode drift detection: an event with no readable 'type' is a
130
+ // surprise — Codex always stamps one. A null/missing/renamed 'type'
131
+ // means we cannot route the event and will silently lose data
132
+ // otherwise.
133
+ if (eventType === undefined) {
134
+ warnDrift(filePath, `event has no readable 'type' field (got ${describeType(parsed.type)})`, 1);
135
+ continue;
136
+ }
137
+ if (!KNOWN_EVENT_TYPES.has(eventType)) {
138
+ // Unknown event type — could be a new event kind added by a newer
139
+ // codex version. Warn so drift is observable; continue reading.
140
+ warnDrift(filePath, `unknown event type '${eventType}'`, 1);
141
+ continue;
142
+ }
143
+ // session_meta carries the canonical session UUID.
144
+ if (eventType === "session_meta") {
145
+ const payload = parsed.payload;
146
+ if (isRecord(payload)) {
147
+ sessionId = toStringValue(payload.id) ?? sessionIdFromFile;
148
+ const match = this.matchesProject(payload.cwd);
149
+ if (match === false) {
150
+ break;
151
+ }
152
+ projectMatched = match ?? projectMatched;
153
+ }
154
+ continue;
155
+ }
156
+ // turn_context carries the approval policy and sandbox mode.
157
+ if (eventType === "turn_context") {
158
+ const payload = parsed.payload;
159
+ if (isRecord(payload)) {
160
+ const match = this.matchesProject(payload.cwd);
161
+ if (match === false) {
162
+ break;
163
+ }
164
+ projectMatched = match ?? projectMatched;
165
+ approvalMode =
166
+ normalizeApprovalMode(toStringValue(payload.approval_policy)) ?? approvalMode;
167
+ const sandboxPolicy = payload.sandbox_policy;
168
+ sandboxed =
169
+ isRecord(sandboxPolicy) && toStringValue(sandboxPolicy.type) !== "none";
170
+ }
171
+ continue;
172
+ }
173
+ if (!projectMatched) {
174
+ continue;
175
+ }
176
+ // Actual user messages arrive as event_msg with type "user_message".
177
+ // response_item events with role "user" are system-injected context
178
+ // (AGENTS.md, permissions, environment) and are intentionally skipped.
179
+ if (eventType === "event_msg") {
180
+ const payload = parsed.payload;
181
+ if (!isRecord(payload)) {
182
+ warnDrift(filePath, `event_msg payload is not an object (got ${describeType(payload)})`, 1);
183
+ continue;
184
+ }
185
+ if (payload.type !== "user_message") {
186
+ // Could be a new message sub-type — warn so drift is visible.
187
+ if (!("type" in payload)) {
188
+ warnDrift(filePath, "event_msg payload missing 'type' key — likely renamed", 1);
189
+ }
190
+ continue;
191
+ }
192
+ const content = toStringValue(payload.message);
193
+ if (!content) {
194
+ messageIndex++;
195
+ continue;
196
+ }
81
197
  const timestamp = toDate(parsed.timestamp ?? parsed.created_at ?? parsed.createdAt);
82
198
  if (timestamp <= since) {
83
- messageIndex += 1;
199
+ messageIndex++;
84
200
  continue;
85
201
  }
86
202
  yield this.parseRaw({
87
- ...parsed,
88
- sessionId: parsed.sessionId ?? parsed.session_id ?? sessionId,
203
+ sessionId,
89
204
  messageIndex,
90
205
  timestamp,
91
- approvalMode: parsed.approvalMode ?? parsed.approval_mode,
206
+ role: "user",
207
+ content,
208
+ approvalMode,
209
+ sandboxed,
92
210
  });
93
- messageIndex += 1;
211
+ messageIndex++;
212
+ continue;
94
213
  }
95
- catch {
96
- // Skip malformed lines.
214
+ // compacted events hold AI-generated summaries of prior turns that were
215
+ // removed from the active context window to save space. They represent
216
+ // a higher-abstraction view of the conversation (layer 1).
217
+ if (eventType === "compacted") {
218
+ const payload = parsed.payload;
219
+ const content = isRecord(payload)
220
+ ? (toStringValue(payload.summary) ??
221
+ toStringValue(payload.content) ??
222
+ toStringValue(payload.text))
223
+ : undefined;
224
+ if (content) {
225
+ const timestamp = toDate(parsed.timestamp ?? parsed.created_at ?? parsed.createdAt);
226
+ if (timestamp > since) {
227
+ yield this.parseRaw({
228
+ sessionId,
229
+ messageIndex,
230
+ timestamp,
231
+ role: "assistant",
232
+ content,
233
+ approvalMode,
234
+ sandboxed,
235
+ layer: 1,
236
+ });
237
+ messageIndex++;
238
+ }
239
+ }
240
+ continue;
97
241
  }
242
+ // Only assistant messages from response_item events are conversation turns.
243
+ if (eventType !== "response_item")
244
+ continue;
245
+ const payload = parsed.payload;
246
+ if (!isRecord(payload)) {
247
+ warnDrift(filePath, `response_item payload is not an object (got ${describeType(payload)})`, 1);
248
+ continue;
249
+ }
250
+ if (payload.type !== "message") {
251
+ if (!("type" in payload)) {
252
+ warnDrift(filePath, "response_item payload missing 'type' key — likely renamed", 1);
253
+ }
254
+ continue;
255
+ }
256
+ // Skip system-injected context which Codex sends as "user" role items.
257
+ const role = toStringValue(payload.role);
258
+ if (role !== "assistant") {
259
+ if (!("role" in payload)) {
260
+ warnDrift(filePath, "response_item message payload missing 'role' key", 1);
261
+ }
262
+ messageIndex++;
263
+ continue;
264
+ }
265
+ // Extract text from the content-part array (or plain string fallback).
266
+ const content = extractContent(payload.content);
267
+ if (!content) {
268
+ messageIndex++;
269
+ continue;
270
+ }
271
+ const timestamp = toDate(parsed.timestamp ?? parsed.created_at ?? parsed.createdAt);
272
+ if (timestamp <= since) {
273
+ messageIndex++;
274
+ continue;
275
+ }
276
+ yield this.parseRaw({
277
+ sessionId,
278
+ messageIndex,
279
+ timestamp,
280
+ role,
281
+ content,
282
+ approvalMode,
283
+ sandboxed,
284
+ });
285
+ messageIndex++;
98
286
  }
99
287
  }
100
288
  }
289
+ matchesProject(value) {
290
+ if (!this.projectRoot) {
291
+ return true;
292
+ }
293
+ const cwd = toStringValue(value);
294
+ return cwd ? pathMatchesProject(cwd, this.projectRoot) : undefined;
295
+ }
296
+ /**
297
+ * Recursively resolves JSONL files under the sessions directory.
298
+ * Codex stores sessions in year/month/day subdirectories.
299
+ */
101
300
  async resolveJsonlFiles() {
102
301
  try {
103
302
  const target = await stat(this.codexSessionsPath);
104
303
  if (target.isFile()) {
105
304
  return this.codexSessionsPath.endsWith(".jsonl") ? [this.codexSessionsPath] : [];
106
305
  }
107
- const files = await readdir(this.codexSessionsPath);
108
- return files
109
- .filter((file) => file.endsWith(".jsonl"))
110
- .map((file) => join(this.codexSessionsPath, file));
306
+ if (!target.isDirectory()) {
307
+ return [];
308
+ }
309
+ return await glob("**/*.jsonl", {
310
+ cwd: this.codexSessionsPath,
311
+ absolute: true,
312
+ nodir: true,
313
+ });
111
314
  }
112
315
  catch {
113
316
  return [];
114
317
  }
115
318
  }
116
319
  }
320
+ /**
321
+ * Extracts text from a Codex content-part value.
322
+ * Content is an array of {type, text} objects or a plain string.
323
+ */
324
+ function extractContent(value) {
325
+ if (typeof value === "string") {
326
+ const trimmed = value.trim();
327
+ return trimmed.length > 0 ? trimmed : undefined;
328
+ }
329
+ if (Array.isArray(value)) {
330
+ const texts = value
331
+ .map((item) => (isRecord(item) ? toStringValue(item.text) : undefined))
332
+ .filter((t) => t !== undefined);
333
+ const joined = texts.join("\n").trim();
334
+ return joined.length > 0 ? joined : undefined;
335
+ }
336
+ return undefined;
337
+ }
117
338
  function normalizeRole(value) {
118
339
  if (!value) {
119
340
  return "system";
@@ -155,25 +376,14 @@ function toBoolean(value) {
155
376
  }
156
377
  return false;
157
378
  }
158
- function toDate(value) {
159
- if (value instanceof Date) {
160
- return value;
161
- }
162
- if (typeof value === "number" && Number.isFinite(value)) {
163
- const millis = value > 10_000_000_000 ? value : value * 1000;
164
- return new Date(millis);
165
- }
166
- if (typeof value === "string") {
167
- const numeric = Number(value);
168
- if (Number.isFinite(numeric) && value.trim() !== "") {
169
- const millis = numeric > 10_000_000_000 ? numeric : numeric * 1000;
170
- return new Date(millis);
171
- }
172
- const parsed = new Date(value);
173
- if (!Number.isNaN(parsed.getTime())) {
174
- return parsed;
175
- }
176
- }
177
- return new Date(0);
379
+ function isRecord(value) {
380
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
381
+ }
382
+ function describeType(value) {
383
+ if (value === null)
384
+ return "null";
385
+ if (Array.isArray(value))
386
+ return "array";
387
+ return typeof value;
178
388
  }
179
389
  //# sourceMappingURL=codex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/scrapers/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/scrapers/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { CopilotCliChunk } from "../types/scraper.js";
2
+ import { AbstractScraper } from "./base.js";
3
+ /**
4
+ * Mutation shapes the copilot-cli scraper tolerates silently. Anything
5
+ * outside this whitelist that drops records must warn.
6
+ */
7
+ export declare const ACCEPTED_DEGRADATIONS: {
8
+ /** Sessions root missing — Copilot CLI not installed. */
9
+ missingSessionRoot: string;
10
+ /** Session directory has no events.jsonl file yet — fresh session. */
11
+ missingEventsJsonl: string;
12
+ /** Blank line in events.jsonl. */
13
+ blankJsonlLine: string;
14
+ /** Event with no extractable role — many event types (status, tool_call,
15
+ * subagent meta, etc.) legitimately have no role. */
16
+ noRole: string;
17
+ /** Event with no extractable text content. */
18
+ noContent: string;
19
+ /** Forward-compat unknown keys alongside known fields. */
20
+ unknownFieldsAlongside: string;
21
+ };
22
+ export declare class CopilotCliScraper extends AbstractScraper<CopilotCliChunk> {
23
+ private readonly sessionStateDir;
24
+ readonly tool = "copilot-cli";
25
+ constructor(sessionStateDir: string, stateDir: string);
26
+ detect(): Promise<boolean>;
27
+ getStorePaths(): string[];
28
+ scrape(since?: Date): AsyncIterable<CopilotCliChunk>;
29
+ fullSync(): AsyncIterable<CopilotCliChunk>;
30
+ private readAllSessions;
31
+ private readEventsFile;
32
+ }
33
+ //# sourceMappingURL=copilot-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-cli.d.ts","sourceRoot":"","sources":["../../../src/scrapers/copilot-cli.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAA0B,MAAM,WAAW,CAAC;AAIpE;;;GAGG;AACH,eAAO,MAAM,qBAAqB;IAChC,yDAAyD;;IAEzD,sEAAsE;;IAEtE,kCAAkC;;IAElC;0DACsD;;IAEtD,8CAA8C;;IAE9C,0DAA0D;;CAE3D,CAAC;AAkBF,qBAAa,iBAAkB,SAAQ,eAAe,CAAC,eAAe,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,eAAe;IAHlC,QAAQ,CAAC,IAAI,iBAAiB;gBAGX,eAAe,EAAE,MAAM,EACxC,QAAQ,EAAE,MAAM;IAKZ,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAShC,aAAa,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC,eAAe,CAAC;IAMpD,QAAQ,IAAI,aAAa,CAAC,eAAe,CAAC;YAIlC,eAAe;YAgCf,cAAc;CA4G9B"}