xtctx 0.3.2 → 0.11.3

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 (308) hide show
  1. package/CHANGELOG.md +317 -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 +32 -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 +86 -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 +76 -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 +133 -0
  22. package/dist/src/cli/status.js.map +1 -0
  23. package/dist/src/config/disconnect.d.ts +34 -0
  24. package/dist/src/config/disconnect.d.ts.map +1 -0
  25. package/dist/src/config/disconnect.js +386 -0
  26. package/dist/src/config/disconnect.js.map +1 -0
  27. package/dist/src/config/managed-block.d.ts +29 -0
  28. package/dist/src/config/managed-block.d.ts.map +1 -0
  29. package/dist/src/config/managed-block.js +67 -0
  30. package/dist/src/config/managed-block.js.map +1 -0
  31. package/dist/src/config/mcp-config.d.ts +93 -0
  32. package/dist/src/config/mcp-config.d.ts.map +1 -0
  33. package/dist/src/config/mcp-config.js +556 -0
  34. package/dist/src/config/mcp-config.js.map +1 -0
  35. package/dist/src/config/setup.d.ts +39 -0
  36. package/dist/src/config/setup.d.ts.map +1 -0
  37. package/dist/src/config/setup.js +379 -0
  38. package/dist/src/config/setup.js.map +1 -0
  39. package/dist/src/config/skills.d.ts +73 -0
  40. package/dist/src/config/skills.d.ts.map +1 -0
  41. package/dist/src/config/skills.js +427 -0
  42. package/dist/src/config/skills.js.map +1 -0
  43. package/dist/src/handoff/embeddings.d.ts +26 -0
  44. package/dist/src/handoff/embeddings.d.ts.map +1 -0
  45. package/dist/src/handoff/embeddings.js +132 -0
  46. package/dist/src/handoff/embeddings.js.map +1 -0
  47. package/dist/src/handoff/sqlite-index.d.ts +52 -0
  48. package/dist/src/handoff/sqlite-index.d.ts.map +1 -0
  49. package/dist/src/handoff/sqlite-index.js +905 -0
  50. package/dist/src/handoff/sqlite-index.js.map +1 -0
  51. package/dist/src/handoff/types.d.ts +63 -0
  52. package/dist/src/handoff/types.d.ts.map +1 -0
  53. package/dist/src/handoff/types.js +2 -0
  54. package/dist/src/handoff/types.js.map +1 -0
  55. package/dist/src/handoff/vector.d.ts +4 -0
  56. package/dist/src/handoff/vector.d.ts.map +1 -0
  57. package/dist/src/handoff/vector.js +31 -0
  58. package/dist/src/handoff/vector.js.map +1 -0
  59. package/dist/src/mcp/server.d.ts +3 -20
  60. package/dist/src/mcp/server.d.ts.map +1 -1
  61. package/dist/src/mcp/server.js +90 -205
  62. package/dist/src/mcp/server.js.map +1 -1
  63. package/dist/src/mcp/tools/continuity.d.ts +21 -0
  64. package/dist/src/mcp/tools/continuity.d.ts.map +1 -0
  65. package/dist/src/mcp/tools/continuity.js +55 -0
  66. package/dist/src/mcp/tools/continuity.js.map +1 -0
  67. package/dist/src/mcp/tools/manifest.d.ts +40 -0
  68. package/dist/src/mcp/tools/manifest.d.ts.map +1 -0
  69. package/dist/src/mcp/tools/manifest.js +105 -0
  70. package/dist/src/mcp/tools/manifest.js.map +1 -0
  71. package/dist/src/mcp/tools/sessions.d.ts +18 -31
  72. package/dist/src/mcp/tools/sessions.d.ts.map +1 -1
  73. package/dist/src/mcp/tools/sessions.js +109 -16
  74. package/dist/src/mcp/tools/sessions.js.map +1 -1
  75. package/dist/src/runtime/services.d.ts +11 -38
  76. package/dist/src/runtime/services.d.ts.map +1 -1
  77. package/dist/src/runtime/services.js +61 -200
  78. package/dist/src/runtime/services.js.map +1 -1
  79. package/dist/src/scrapers/antigravity.d.ts +52 -0
  80. package/dist/src/scrapers/antigravity.d.ts.map +1 -0
  81. package/dist/src/scrapers/antigravity.js +869 -0
  82. package/dist/src/scrapers/antigravity.js.map +1 -0
  83. package/dist/src/scrapers/base.d.ts +53 -1
  84. package/dist/src/scrapers/base.d.ts.map +1 -1
  85. package/dist/src/scrapers/base.js +93 -4
  86. package/dist/src/scrapers/base.js.map +1 -1
  87. package/dist/src/scrapers/claude-code.d.ts +37 -6
  88. package/dist/src/scrapers/claude-code.d.ts.map +1 -1
  89. package/dist/src/scrapers/claude-code.js +214 -40
  90. package/dist/src/scrapers/claude-code.js.map +1 -1
  91. package/dist/src/scrapers/codex.d.ts +36 -6
  92. package/dist/src/scrapers/codex.d.ts.map +1 -1
  93. package/dist/src/scrapers/codex.js +283 -60
  94. package/dist/src/scrapers/codex.js.map +1 -1
  95. package/dist/src/scrapers/copilot-cli.d.ts +34 -0
  96. package/dist/src/scrapers/copilot-cli.d.ts.map +1 -0
  97. package/dist/src/scrapers/copilot-cli.js +342 -0
  98. package/dist/src/scrapers/copilot-cli.js.map +1 -0
  99. package/dist/src/scrapers/copilot.d.ts +41 -8
  100. package/dist/src/scrapers/copilot.d.ts.map +1 -1
  101. package/dist/src/scrapers/copilot.js +256 -118
  102. package/dist/src/scrapers/copilot.js.map +1 -1
  103. package/dist/src/scrapers/cursor.d.ts +24 -9
  104. package/dist/src/scrapers/cursor.d.ts.map +1 -1
  105. package/dist/src/scrapers/cursor.js +259 -152
  106. package/dist/src/scrapers/cursor.js.map +1 -1
  107. package/dist/src/scrapers/index.d.ts +23 -0
  108. package/dist/src/scrapers/index.d.ts.map +1 -0
  109. package/dist/src/scrapers/index.js +22 -0
  110. package/dist/src/scrapers/index.js.map +1 -0
  111. package/dist/src/scrapers/opencode.d.ts +37 -0
  112. package/dist/src/scrapers/opencode.d.ts.map +1 -0
  113. package/dist/src/scrapers/opencode.js +277 -0
  114. package/dist/src/scrapers/opencode.js.map +1 -0
  115. package/dist/src/scrapers/registry.d.ts +1 -0
  116. package/dist/src/scrapers/registry.d.ts.map +1 -1
  117. package/dist/src/scrapers/registry.js +3 -0
  118. package/dist/src/scrapers/registry.js.map +1 -1
  119. package/dist/src/tools/sources.d.ts +28 -0
  120. package/dist/src/tools/sources.d.ts.map +1 -0
  121. package/dist/src/tools/sources.js +149 -0
  122. package/dist/src/tools/sources.js.map +1 -0
  123. package/dist/src/types/config.d.ts +24 -37
  124. package/dist/src/types/config.d.ts.map +1 -1
  125. package/dist/src/types/index.d.ts +0 -2
  126. package/dist/src/types/index.d.ts.map +1 -1
  127. package/dist/src/types/index.js +0 -2
  128. package/dist/src/types/index.js.map +1 -1
  129. package/dist/src/types/scraper.d.ts +34 -5
  130. package/dist/src/types/scraper.d.ts.map +1 -1
  131. package/dist/src/utils/atomic-file.d.ts +8 -0
  132. package/dist/src/utils/atomic-file.d.ts.map +1 -0
  133. package/dist/src/utils/atomic-file.js +15 -0
  134. package/dist/src/utils/atomic-file.js.map +1 -0
  135. package/dist/src/utils/errors.d.ts +7 -0
  136. package/dist/src/utils/errors.d.ts.map +1 -0
  137. package/dist/src/utils/errors.js +16 -0
  138. package/dist/src/utils/errors.js.map +1 -0
  139. package/dist/src/utils/package-info.d.ts +11 -0
  140. package/dist/src/utils/package-info.d.ts.map +1 -0
  141. package/dist/src/utils/package-info.js +30 -0
  142. package/dist/src/utils/package-info.js.map +1 -0
  143. package/dist/src/utils/project-scope.d.ts +19 -0
  144. package/dist/src/utils/project-scope.d.ts.map +1 -0
  145. package/dist/src/utils/project-scope.js +61 -0
  146. package/dist/src/utils/project-scope.js.map +1 -0
  147. package/package.json +70 -66
  148. package/dist/src/api/routes/config.d.ts +0 -4
  149. package/dist/src/api/routes/config.d.ts.map +0 -1
  150. package/dist/src/api/routes/config.js +0 -61
  151. package/dist/src/api/routes/config.js.map +0 -1
  152. package/dist/src/api/routes/knowledge.d.ts +0 -4
  153. package/dist/src/api/routes/knowledge.d.ts.map +0 -1
  154. package/dist/src/api/routes/knowledge.js +0 -40
  155. package/dist/src/api/routes/knowledge.js.map +0 -1
  156. package/dist/src/api/routes/search.d.ts +0 -7
  157. package/dist/src/api/routes/search.d.ts.map +0 -1
  158. package/dist/src/api/routes/search.js +0 -108
  159. package/dist/src/api/routes/search.js.map +0 -1
  160. package/dist/src/api/routes/sources.d.ts +0 -12
  161. package/dist/src/api/routes/sources.d.ts.map +0 -1
  162. package/dist/src/api/routes/sources.js +0 -70
  163. package/dist/src/api/routes/sources.js.map +0 -1
  164. package/dist/src/api/server.d.ts +0 -26
  165. package/dist/src/api/server.d.ts.map +0 -1
  166. package/dist/src/api/server.js +0 -312
  167. package/dist/src/api/server.js.map +0 -1
  168. package/dist/src/cli/ingest.d.ts +0 -6
  169. package/dist/src/cli/ingest.d.ts.map +0 -1
  170. package/dist/src/cli/ingest.js +0 -11
  171. package/dist/src/cli/ingest.js.map +0 -1
  172. package/dist/src/cli/init.d.ts +0 -6
  173. package/dist/src/cli/init.d.ts.map +0 -1
  174. package/dist/src/cli/init.js +0 -105
  175. package/dist/src/cli/init.js.map +0 -1
  176. package/dist/src/cli/serve.d.ts +0 -7
  177. package/dist/src/cli/serve.d.ts.map +0 -1
  178. package/dist/src/cli/serve.js +0 -100
  179. package/dist/src/cli/serve.js.map +0 -1
  180. package/dist/src/cli/sync.d.ts +0 -5
  181. package/dist/src/cli/sync.d.ts.map +0 -1
  182. package/dist/src/cli/sync.js +0 -13
  183. package/dist/src/cli/sync.js.map +0 -1
  184. package/dist/src/compaction/pipeline.d.ts +0 -19
  185. package/dist/src/compaction/pipeline.d.ts.map +0 -1
  186. package/dist/src/compaction/pipeline.js +0 -37
  187. package/dist/src/compaction/pipeline.js.map +0 -1
  188. package/dist/src/compaction/providers/cli.d.ts +0 -13
  189. package/dist/src/compaction/providers/cli.d.ts.map +0 -1
  190. package/dist/src/compaction/providers/cli.js +0 -60
  191. package/dist/src/compaction/providers/cli.js.map +0 -1
  192. package/dist/src/compaction/rule-based.d.ts +0 -8
  193. package/dist/src/compaction/rule-based.d.ts.map +0 -1
  194. package/dist/src/compaction/rule-based.js +0 -120
  195. package/dist/src/compaction/rule-based.js.map +0 -1
  196. package/dist/src/config/loader.d.ts +0 -12
  197. package/dist/src/config/loader.d.ts.map +0 -1
  198. package/dist/src/config/loader.js +0 -76
  199. package/dist/src/config/loader.js.map +0 -1
  200. package/dist/src/config/mappings/claude-code.d.ts +0 -3
  201. package/dist/src/config/mappings/claude-code.d.ts.map +0 -1
  202. package/dist/src/config/mappings/claude-code.js +0 -31
  203. package/dist/src/config/mappings/claude-code.js.map +0 -1
  204. package/dist/src/config/mappings/codex.d.ts +0 -3
  205. package/dist/src/config/mappings/codex.d.ts.map +0 -1
  206. package/dist/src/config/mappings/codex.js +0 -31
  207. package/dist/src/config/mappings/codex.js.map +0 -1
  208. package/dist/src/config/mappings/copilot.d.ts +0 -3
  209. package/dist/src/config/mappings/copilot.d.ts.map +0 -1
  210. package/dist/src/config/mappings/copilot.js +0 -33
  211. package/dist/src/config/mappings/copilot.js.map +0 -1
  212. package/dist/src/config/mappings/cursor.d.ts +0 -3
  213. package/dist/src/config/mappings/cursor.d.ts.map +0 -1
  214. package/dist/src/config/mappings/cursor.js +0 -29
  215. package/dist/src/config/mappings/cursor.js.map +0 -1
  216. package/dist/src/config/sync.d.ts +0 -13
  217. package/dist/src/config/sync.d.ts.map +0 -1
  218. package/dist/src/config/sync.js +0 -96
  219. package/dist/src/config/sync.js.map +0 -1
  220. package/dist/src/ingestion/coordinator.d.ts +0 -37
  221. package/dist/src/ingestion/coordinator.d.ts.map +0 -1
  222. package/dist/src/ingestion/coordinator.js +0 -127
  223. package/dist/src/ingestion/coordinator.js.map +0 -1
  224. package/dist/src/ingestion/daemon.d.ts +0 -17
  225. package/dist/src/ingestion/daemon.d.ts.map +0 -1
  226. package/dist/src/ingestion/daemon.js +0 -35
  227. package/dist/src/ingestion/daemon.js.map +0 -1
  228. package/dist/src/ingestion/watcher.d.ts +0 -19
  229. package/dist/src/ingestion/watcher.d.ts.map +0 -1
  230. package/dist/src/ingestion/watcher.js +0 -70
  231. package/dist/src/ingestion/watcher.js.map +0 -1
  232. package/dist/src/knowledge/autotag.d.ts +0 -3
  233. package/dist/src/knowledge/autotag.d.ts.map +0 -1
  234. package/dist/src/knowledge/autotag.js +0 -24
  235. package/dist/src/knowledge/autotag.js.map +0 -1
  236. package/dist/src/knowledge/dedup.d.ts +0 -7
  237. package/dist/src/knowledge/dedup.d.ts.map +0 -1
  238. package/dist/src/knowledge/dedup.js +0 -15
  239. package/dist/src/knowledge/dedup.js.map +0 -1
  240. package/dist/src/knowledge/repository.d.ts +0 -12
  241. package/dist/src/knowledge/repository.d.ts.map +0 -1
  242. package/dist/src/knowledge/repository.js +0 -74
  243. package/dist/src/knowledge/repository.js.map +0 -1
  244. package/dist/src/mcp/tools/config.d.ts +0 -36
  245. package/dist/src/mcp/tools/config.d.ts.map +0 -1
  246. package/dist/src/mcp/tools/config.js +0 -54
  247. package/dist/src/mcp/tools/config.js.map +0 -1
  248. package/dist/src/mcp/tools/knowledge.d.ts +0 -17
  249. package/dist/src/mcp/tools/knowledge.d.ts.map +0 -1
  250. package/dist/src/mcp/tools/knowledge.js +0 -46
  251. package/dist/src/mcp/tools/knowledge.js.map +0 -1
  252. package/dist/src/mcp/tools/search.d.ts +0 -22
  253. package/dist/src/mcp/tools/search.d.ts.map +0 -1
  254. package/dist/src/mcp/tools/search.js +0 -30
  255. package/dist/src/mcp/tools/search.js.map +0 -1
  256. package/dist/src/mcp/tools/write.d.ts +0 -38
  257. package/dist/src/mcp/tools/write.d.ts.map +0 -1
  258. package/dist/src/mcp/tools/write.js +0 -97
  259. package/dist/src/mcp/tools/write.js.map +0 -1
  260. package/dist/src/runtime/ingestion.d.ts +0 -17
  261. package/dist/src/runtime/ingestion.d.ts.map +0 -1
  262. package/dist/src/runtime/ingestion.js +0 -106
  263. package/dist/src/runtime/ingestion.js.map +0 -1
  264. package/dist/src/scrapers/gemini.d.ts +0 -17
  265. package/dist/src/scrapers/gemini.d.ts.map +0 -1
  266. package/dist/src/scrapers/gemini.js +0 -245
  267. package/dist/src/scrapers/gemini.js.map +0 -1
  268. package/dist/src/store/embeddings.d.ts +0 -9
  269. package/dist/src/store/embeddings.d.ts.map +0 -1
  270. package/dist/src/store/embeddings.js +0 -28
  271. package/dist/src/store/embeddings.js.map +0 -1
  272. package/dist/src/store/lance.d.ts +0 -25
  273. package/dist/src/store/lance.d.ts.map +0 -1
  274. package/dist/src/store/lance.js +0 -74
  275. package/dist/src/store/lance.js.map +0 -1
  276. package/dist/src/store/search.d.ts +0 -18
  277. package/dist/src/store/search.d.ts.map +0 -1
  278. package/dist/src/store/search.js +0 -55
  279. package/dist/src/store/search.js.map +0 -1
  280. package/dist/src/types/compaction.d.ts +0 -29
  281. package/dist/src/types/compaction.d.ts.map +0 -1
  282. package/dist/src/types/compaction.js +0 -2
  283. package/dist/src/types/compaction.js.map +0 -1
  284. package/dist/src/types/context.d.ts +0 -33
  285. package/dist/src/types/context.d.ts.map +0 -1
  286. package/dist/src/types/context.js +0 -18
  287. package/dist/src/types/context.js.map +0 -1
  288. package/dist/src/utils/retry.d.ts +0 -11
  289. package/dist/src/utils/retry.d.ts.map +0 -1
  290. package/dist/src/utils/retry.js +0 -46
  291. package/dist/src/utils/retry.js.map +0 -1
  292. package/dist/src/utils/shutdown.d.ts +0 -25
  293. package/dist/src/utils/shutdown.d.ts.map +0 -1
  294. package/dist/src/utils/shutdown.js +0 -56
  295. package/dist/src/utils/shutdown.js.map +0 -1
  296. package/dist/web/apple-touch-icon.png +0 -0
  297. package/dist/web/assets/index-Nuadr5ox.css +0 -1
  298. package/dist/web/assets/index-aA0u8eXA.js +0 -3504
  299. package/dist/web/assets/primeicons-C6QP2o4f.woff2 +0 -0
  300. package/dist/web/assets/primeicons-DMOk5skT.eot +0 -0
  301. package/dist/web/assets/primeicons-Dr5RGzOO.svg +0 -345
  302. package/dist/web/assets/primeicons-MpK4pl85.ttf +0 -0
  303. package/dist/web/assets/primeicons-WjwUDZjB.woff +0 -0
  304. package/dist/web/favicon.ico +0 -0
  305. package/dist/web/favicon.svg +0 -21
  306. package/dist/web/index.html +0 -21
  307. package/dist/web/site.webmanifest +0 -19
  308. package/dist/web/vite.svg +0 -1
@@ -1,76 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { join, resolve } from "node:path";
3
- import { parse as parseYaml } from "yaml";
4
- export function getSharedToolConfigPath(projectPath) {
5
- const projectRoot = resolve(projectPath ?? process.cwd());
6
- return join(projectRoot, ".xtctx", "tool-config", "shared.yaml");
7
- }
8
- export async function loadSharedToolConfig(projectPath) {
9
- const filePath = getSharedToolConfigPath(projectPath);
10
- try {
11
- const raw = await readFile(filePath, "utf-8");
12
- const parsed = parseYaml(raw);
13
- return normalizeSharedConfig(parsed);
14
- }
15
- catch {
16
- return createDefaultSharedConfig();
17
- }
18
- }
19
- function normalizeSharedConfig(input) {
20
- if (!input || typeof input !== "object" || Array.isArray(input)) {
21
- return createDefaultSharedConfig();
22
- }
23
- const parsed = input;
24
- const shared = normalizeSharedSection(parsed.shared);
25
- const toolPreferences = normalizeToolPreferences(parsed.toolPreferences);
26
- return {
27
- shared,
28
- toolPreferences,
29
- };
30
- }
31
- function normalizeSharedSection(input) {
32
- if (!input || typeof input !== "object" || Array.isArray(input)) {
33
- return {
34
- skills: [],
35
- commands: [],
36
- agents: [],
37
- };
38
- }
39
- const shared = input;
40
- return {
41
- skills: normalizeStringList(shared.skills),
42
- commands: normalizeStringList(shared.commands),
43
- agents: normalizeStringList(shared.agents),
44
- };
45
- }
46
- function normalizeToolPreferences(input) {
47
- if (!input || typeof input !== "object" || Array.isArray(input)) {
48
- return {};
49
- }
50
- const source = input;
51
- const output = {};
52
- for (const [tool, value] of Object.entries(source)) {
53
- if (!value || typeof value !== "object" || Array.isArray(value)) {
54
- continue;
55
- }
56
- output[tool] = { ...value };
57
- }
58
- return output;
59
- }
60
- function normalizeStringList(input) {
61
- if (!Array.isArray(input)) {
62
- return [];
63
- }
64
- return input.filter((entry) => typeof entry === "string" && entry.length > 0);
65
- }
66
- function createDefaultSharedConfig() {
67
- return {
68
- shared: {
69
- skills: [],
70
- commands: [],
71
- agents: [],
72
- },
73
- toolPreferences: {},
74
- };
75
- }
76
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { SharedToolConfig } from "../loader.js";
2
- export declare function renderClaudeConfig(config: SharedToolConfig): string;
3
- //# sourceMappingURL=claude-code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../../src/config/mappings/claude-code.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAwBnE"}
@@ -1,31 +0,0 @@
1
- import { stringify as stringifyYaml } from "yaml";
2
- export function renderClaudeConfig(config) {
3
- const lines = [
4
- "## xtctx Shared Context",
5
- "",
6
- "### Skills",
7
- ...formatMarkdownList(config.shared.skills),
8
- "",
9
- "### Commands",
10
- ...formatMarkdownList(config.shared.commands),
11
- "",
12
- "### Agents",
13
- ...formatMarkdownList(config.shared.agents),
14
- ];
15
- const preferences = config.toolPreferences["claude-code"];
16
- if (preferences && Object.keys(preferences).length > 0) {
17
- lines.push("");
18
- lines.push("### Tool Preferences (`claude-code`)");
19
- lines.push("```yaml");
20
- lines.push(stringifyYaml(preferences).trimEnd());
21
- lines.push("```");
22
- }
23
- return lines.join("\n").trimEnd();
24
- }
25
- function formatMarkdownList(values) {
26
- if (values.length === 0) {
27
- return ["- none"];
28
- }
29
- return values.map((value) => `- ${value}`);
30
- }
31
- //# sourceMappingURL=claude-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../../src/config/mappings/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAGlD,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,MAAM,KAAK,GAAa;QACtB,yBAAyB;QACzB,EAAE;QACF,YAAY;QACZ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,EAAE;QACF,cAAc;QACd,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7C,EAAE;QACF,YAAY;QACZ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC5C,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC1D,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { SharedToolConfig } from "../loader.js";
2
- export declare function renderCodexConfig(config: SharedToolConfig): string;
3
- //# sourceMappingURL=codex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../src/config/mappings/codex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAwBlE"}
@@ -1,31 +0,0 @@
1
- import { stringify as stringifyYaml } from "yaml";
2
- export function renderCodexConfig(config) {
3
- const lines = [
4
- "## xtctx Shared Context",
5
- "",
6
- "### Agents",
7
- ...formatMarkdownList(config.shared.agents),
8
- "",
9
- "### Skills",
10
- ...formatMarkdownList(config.shared.skills),
11
- "",
12
- "### Commands",
13
- ...formatMarkdownList(config.shared.commands),
14
- ];
15
- const preferences = config.toolPreferences.codex;
16
- if (preferences && Object.keys(preferences).length > 0) {
17
- lines.push("");
18
- lines.push("### Tool Preferences (`codex`)");
19
- lines.push("```yaml");
20
- lines.push(stringifyYaml(preferences).trimEnd());
21
- lines.push("```");
22
- }
23
- return lines.join("\n").trimEnd();
24
- }
25
- function formatMarkdownList(values) {
26
- if (values.length === 0) {
27
- return ["- none"];
28
- }
29
- return values.map((value) => `- ${value}`);
30
- }
31
- //# sourceMappingURL=codex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/config/mappings/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAGlD,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,KAAK,GAAa;QACtB,yBAAyB;QACzB,EAAE;QACF,YAAY;QACZ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,EAAE;QACF,YAAY;QACZ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,EAAE;QACF,cAAc;QACd,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC9C,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;IACjD,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { SharedToolConfig } from "../loader.js";
2
- export declare function renderCopilotInstructions(config: SharedToolConfig): string;
3
- //# sourceMappingURL=copilot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../../src/config/mappings/copilot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA0B1E"}
@@ -1,33 +0,0 @@
1
- import { stringify as stringifyYaml } from "yaml";
2
- export function renderCopilotInstructions(config) {
3
- const lines = [
4
- "## xtctx Shared Context",
5
- "",
6
- "Use these shared project conventions before proposing changes.",
7
- "",
8
- "### Commands To Run",
9
- ...formatMarkdownList(config.shared.commands),
10
- "",
11
- "### Skills",
12
- ...formatMarkdownList(config.shared.skills),
13
- "",
14
- "### Agents",
15
- ...formatMarkdownList(config.shared.agents),
16
- ];
17
- const preferences = config.toolPreferences.copilot;
18
- if (preferences && Object.keys(preferences).length > 0) {
19
- lines.push("");
20
- lines.push("### Tool Preferences (`copilot`)");
21
- lines.push("```yaml");
22
- lines.push(stringifyYaml(preferences).trimEnd());
23
- lines.push("```");
24
- }
25
- return lines.join("\n").trimEnd();
26
- }
27
- function formatMarkdownList(values) {
28
- if (values.length === 0) {
29
- return ["- none"];
30
- }
31
- return values.map((value) => `- ${value}`);
32
- }
33
- //# sourceMappingURL=copilot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../../src/config/mappings/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAGlD,MAAM,UAAU,yBAAyB,CAAC,MAAwB;IAChE,MAAM,KAAK,GAAa;QACtB,yBAAyB;QACzB,EAAE;QACF,gEAAgE;QAChE,EAAE;QACF,qBAAqB;QACrB,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7C,EAAE;QACF,YAAY;QACZ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,EAAE;QACF,YAAY;QACZ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC5C,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;IACnD,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { SharedToolConfig } from "../loader.js";
2
- export declare function renderCursorRules(config: SharedToolConfig): string;
3
- //# sourceMappingURL=cursor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/config/mappings/cursor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAsBlE"}
@@ -1,29 +0,0 @@
1
- import { stringify as stringifyYaml } from "yaml";
2
- export function renderCursorRules(config) {
3
- const lines = [
4
- "xtctx shared configuration",
5
- "",
6
- "Skills:",
7
- ...formatList(config.shared.skills),
8
- "",
9
- "Commands:",
10
- ...formatList(config.shared.commands),
11
- "",
12
- "Agents:",
13
- ...formatList(config.shared.agents),
14
- ];
15
- const preferences = config.toolPreferences.cursor;
16
- if (preferences && Object.keys(preferences).length > 0) {
17
- lines.push("");
18
- lines.push("Cursor Preferences:");
19
- lines.push(stringifyYaml(preferences).trimEnd());
20
- }
21
- return lines.join("\n").trimEnd();
22
- }
23
- function formatList(values) {
24
- if (values.length === 0) {
25
- return ["- none"];
26
- }
27
- return values.map((value) => `- ${value}`);
28
- }
29
- //# sourceMappingURL=cursor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/config/mappings/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAGlD,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,KAAK,GAAa;QACtB,4BAA4B;QAC5B,EAAE;QACF,SAAS;QACT,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,EAAE;QACF,WAAW;QACX,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,EAAE;QACF,SAAS;QACT,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KACpC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;IAClD,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,UAAU,CAAC,MAAgB;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,13 +0,0 @@
1
- export interface SyncedFileResult {
2
- path: string;
3
- updated: boolean;
4
- created: boolean;
5
- }
6
- export interface SyncToolConfigResult {
7
- updated: number;
8
- created: number;
9
- unchanged: number;
10
- files: SyncedFileResult[];
11
- }
12
- export declare function syncToolConfigs(projectPath?: string): Promise<SyncToolConfigResult>;
13
- //# sourceMappingURL=sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/config/sync.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,wBAAsB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0DzF"}
@@ -1,96 +0,0 @@
1
- import { mkdir, readFile, writeFile } from "node:fs/promises";
2
- import { dirname, join, resolve } from "node:path";
3
- import { loadSharedToolConfig } from "./loader.js";
4
- import { renderClaudeConfig } from "./mappings/claude-code.js";
5
- import { renderCopilotInstructions } from "./mappings/copilot.js";
6
- import { renderCodexConfig } from "./mappings/codex.js";
7
- import { renderCursorRules } from "./mappings/cursor.js";
8
- const MARKERS = {
9
- markdown: {
10
- begin: "<!-- xtctx:begin -->",
11
- end: "<!-- xtctx:end -->",
12
- },
13
- text: {
14
- begin: "# xtctx:begin",
15
- end: "# xtctx:end",
16
- },
17
- };
18
- export async function syncToolConfigs(projectPath) {
19
- const projectRoot = resolve(projectPath ?? process.cwd());
20
- const sharedConfig = await loadSharedToolConfig(projectRoot);
21
- const targets = [
22
- {
23
- path: join(projectRoot, ".cursorrules"),
24
- content: renderCursorRules(sharedConfig),
25
- markers: MARKERS.text,
26
- },
27
- {
28
- path: join(projectRoot, "CLAUDE.md"),
29
- content: renderClaudeConfig(sharedConfig),
30
- markers: MARKERS.markdown,
31
- },
32
- {
33
- path: join(projectRoot, "AGENTS.md"),
34
- content: renderCodexConfig(sharedConfig),
35
- markers: MARKERS.markdown,
36
- },
37
- {
38
- path: join(projectRoot, ".github", "copilot-instructions.md"),
39
- content: renderCopilotInstructions(sharedConfig),
40
- markers: MARKERS.markdown,
41
- },
42
- ];
43
- const files = [];
44
- for (const target of targets) {
45
- await mkdir(dirname(target.path), { recursive: true });
46
- const existing = await readUtf8IfExists(target.path);
47
- const next = existing
48
- ? upsertManagedSection(existing, target.content, target.markers)
49
- : renderManagedSection(target.content, target.markers);
50
- const shouldWrite = !existing || normalizeNewlines(existing) !== normalizeNewlines(next);
51
- if (shouldWrite) {
52
- await writeFile(target.path, next, "utf-8");
53
- }
54
- files.push({
55
- path: target.path,
56
- updated: shouldWrite,
57
- created: !existing,
58
- });
59
- }
60
- const updated = files.filter((file) => file.updated).length;
61
- const created = files.filter((file) => file.created).length;
62
- return {
63
- updated,
64
- created,
65
- unchanged: files.length - updated,
66
- files,
67
- };
68
- }
69
- function upsertManagedSection(existing, blockContent, markers) {
70
- const normalized = normalizeNewlines(existing);
71
- const sectionPattern = new RegExp(`${escapeRegExp(markers.begin)}[\\s\\S]*?${escapeRegExp(markers.end)}\\n?`, "g");
72
- const withoutManagedSection = normalized.replace(sectionPattern, "").trimEnd();
73
- const managedSection = renderManagedSection(blockContent, markers).trimEnd();
74
- if (withoutManagedSection.length === 0) {
75
- return `${managedSection}\n`;
76
- }
77
- return `${withoutManagedSection}\n\n${managedSection}\n`;
78
- }
79
- function renderManagedSection(blockContent, markers) {
80
- return [markers.begin, "Generated by xtctx sync. Do not edit inside this block.", "", blockContent, markers.end, ""].join("\n");
81
- }
82
- function normalizeNewlines(input) {
83
- return input.replace(/\r\n/g, "\n");
84
- }
85
- function escapeRegExp(value) {
86
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
87
- }
88
- async function readUtf8IfExists(filePath) {
89
- try {
90
- return await readFile(filePath, "utf-8");
91
- }
92
- catch {
93
- return null;
94
- }
95
- }
96
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/config/sync.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import type { VectorRecord } from "../store/lance.js";
2
- import type { ConversationScraper } from "../types/scraper.js";
3
- export interface ScraperRegistryLike {
4
- detectAvailable(): Promise<ConversationScraper[]>;
5
- }
6
- export interface EmbeddingProvider {
7
- embedBatch(texts: string[]): Promise<number[][]>;
8
- }
9
- export interface VectorStoreLike {
10
- upsert(tableName: string, records: VectorRecord[]): Promise<void>;
11
- }
12
- export interface IngestionCoordinatorDependencies {
13
- registry: ScraperRegistryLike;
14
- embeddings: EmbeddingProvider;
15
- store: VectorStoreLike;
16
- }
17
- export interface IngestionCoordinatorOptions {
18
- tableName?: string;
19
- }
20
- export interface IngestionCycleResult {
21
- processedScrapers: number;
22
- processedChunks: number;
23
- }
24
- export declare class IngestionCoordinator {
25
- private readonly deps;
26
- private readonly tableName;
27
- private timer;
28
- private cycleInFlight;
29
- private rerunQueued;
30
- constructor(deps: IngestionCoordinatorDependencies, options?: IngestionCoordinatorOptions);
31
- runCycle(): Promise<IngestionCycleResult>;
32
- fullSync(): Promise<IngestionCycleResult>;
33
- start(intervalMs: number): void;
34
- stop(): void;
35
- private toVectorRecords;
36
- }
37
- //# sourceMappingURL=coordinator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../src/ingestion/coordinator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAElF,MAAM,WAAW,mBAAmB;IAClC,eAAe,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;gBAGT,IAAI,EAAE,gCAAgC,EACvD,OAAO,GAAE,2BAAgC;IAKrC,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC;IA6BzC,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC;IA6B/C,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA4B/B,IAAI,IAAI,IAAI;YAOE,eAAe;CAiB9B"}
@@ -1,127 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- export class IngestionCoordinator {
3
- deps;
4
- tableName;
5
- timer = null;
6
- cycleInFlight = false;
7
- rerunQueued = false;
8
- constructor(deps, options = {}) {
9
- this.deps = deps;
10
- this.tableName = options.tableName ?? "context";
11
- }
12
- async runCycle() {
13
- const available = await this.deps.registry.detectAvailable();
14
- let processedChunks = 0;
15
- let processedScrapers = 0;
16
- for (const scraper of available) {
17
- const state = await scraper.getLastScrapedPosition();
18
- const chunks = await collectChunks(scraper.scrape(state.lastTimestamp));
19
- if (chunks.length === 0) {
20
- continue;
21
- }
22
- const records = await this.toVectorRecords(chunks);
23
- if (records.length > 0) {
24
- await this.deps.store.upsert(this.tableName, records);
25
- }
26
- await scraper.saveScrapedPosition({
27
- ...state,
28
- lastTimestamp: maxTimestamp(chunks),
29
- });
30
- processedScrapers += 1;
31
- processedChunks += chunks.length;
32
- }
33
- return { processedScrapers, processedChunks };
34
- }
35
- async fullSync() {
36
- const available = await this.deps.registry.detectAvailable();
37
- let processedChunks = 0;
38
- let processedScrapers = 0;
39
- for (const scraper of available) {
40
- const chunks = await collectChunks(scraper.fullSync());
41
- if (chunks.length === 0) {
42
- continue;
43
- }
44
- const records = await this.toVectorRecords(chunks);
45
- if (records.length > 0) {
46
- await this.deps.store.upsert(this.tableName, records);
47
- }
48
- const state = await scraper.getLastScrapedPosition();
49
- await scraper.saveScrapedPosition({
50
- ...state,
51
- lastTimestamp: maxTimestamp(chunks),
52
- });
53
- processedScrapers += 1;
54
- processedChunks += chunks.length;
55
- }
56
- return { processedScrapers, processedChunks };
57
- }
58
- start(intervalMs) {
59
- if (this.timer) {
60
- return;
61
- }
62
- const tick = async () => {
63
- if (this.cycleInFlight) {
64
- this.rerunQueued = true;
65
- return;
66
- }
67
- this.cycleInFlight = true;
68
- try {
69
- await this.runCycle();
70
- }
71
- finally {
72
- this.cycleInFlight = false;
73
- if (this.rerunQueued) {
74
- this.rerunQueued = false;
75
- void tick();
76
- }
77
- }
78
- };
79
- this.timer = setInterval(() => {
80
- void tick();
81
- }, intervalMs);
82
- }
83
- stop() {
84
- if (this.timer) {
85
- clearInterval(this.timer);
86
- this.timer = null;
87
- }
88
- }
89
- async toVectorRecords(chunks) {
90
- const vectors = await this.deps.embeddings.embedBatch(chunks.map((chunk) => chunk.content));
91
- return chunks.map((chunk, index) => ({
92
- id: createChunkId(chunk),
93
- text: chunk.content,
94
- vector: vectors[index] ?? [],
95
- metadata: JSON.stringify({
96
- source_tool: chunk.tool,
97
- source_session: chunk.sessionId,
98
- role: chunk.role,
99
- timestamp: chunk.timestamp.toISOString(),
100
- messageIndex: chunk.metadata.messageIndex,
101
- referenced_files: chunk.metadata.referencedFiles ?? [],
102
- }),
103
- }));
104
- }
105
- }
106
- async function collectChunks(iterable) {
107
- const chunks = [];
108
- for await (const chunk of iterable) {
109
- chunks.push(chunk);
110
- }
111
- return chunks;
112
- }
113
- function createChunkId(chunk) {
114
- const hash = createHash("sha256");
115
- hash.update(`${chunk.tool}|${chunk.sessionId}|${chunk.timestamp.toISOString()}|${chunk.role}|${chunk.content}`);
116
- return hash.digest("hex").slice(0, 24);
117
- }
118
- function maxTimestamp(chunks) {
119
- let max = chunks[0]?.timestamp ?? new Date(0);
120
- for (const chunk of chunks) {
121
- if (chunk.timestamp > max) {
122
- max = chunk.timestamp;
123
- }
124
- }
125
- return max;
126
- }
127
- //# sourceMappingURL=coordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/ingestion/coordinator.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { IngestionCoordinator } from "./coordinator.js";
2
- import { type IngestionWatcherOptions } from "./watcher.js";
3
- export interface IngestionDaemonOptions {
4
- pollIntervalMs: number;
5
- watchPaths: string[];
6
- watcher?: IngestionWatcherOptions;
7
- }
8
- export declare class IngestionDaemon {
9
- private readonly coordinator;
10
- private readonly options;
11
- private watcher;
12
- private started;
13
- constructor(coordinator: IngestionCoordinator, options: IngestionDaemonOptions);
14
- start(): Promise<void>;
15
- stop(): Promise<void>;
16
- }
17
- //# sourceMappingURL=daemon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/ingestion/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE9E,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC;AAED,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,OAAO,CAAS;gBAGL,WAAW,EAAE,oBAAoB,EACjC,OAAO,EAAE,sBAAsB;IAG5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAY5B"}
@@ -1,35 +0,0 @@
1
- import { IngestionWatcher } from "./watcher.js";
2
- export class IngestionDaemon {
3
- coordinator;
4
- options;
5
- watcher = null;
6
- started = false;
7
- constructor(coordinator, options) {
8
- this.coordinator = coordinator;
9
- this.options = options;
10
- }
11
- async start() {
12
- if (this.started) {
13
- return;
14
- }
15
- this.started = true;
16
- await this.coordinator.runCycle();
17
- this.coordinator.start(this.options.pollIntervalMs);
18
- this.watcher = new IngestionWatcher(this.options.watchPaths, async () => {
19
- await this.coordinator.runCycle();
20
- }, this.options.watcher);
21
- await this.watcher.start();
22
- }
23
- async stop() {
24
- if (!this.started) {
25
- return;
26
- }
27
- this.started = false;
28
- this.coordinator.stop();
29
- if (this.watcher) {
30
- await this.watcher.stop();
31
- this.watcher = null;
32
- }
33
- }
34
- }
35
- //# sourceMappingURL=daemon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/ingestion/daemon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAgC,MAAM,cAAc,CAAC;AAQ9E,MAAM,OAAO,eAAe;IAKP;IACA;IALX,OAAO,GAA4B,IAAI,CAAC;IACxC,OAAO,GAAG,KAAK,CAAC;IAExB,YACmB,WAAiC,EACjC,OAA+B;QAD/B,gBAAW,GAAX,WAAW,CAAsB;QACjC,YAAO,GAAP,OAAO,CAAwB;IAC/C,CAAC;IAEJ,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CACjC,IAAI,CAAC,OAAO,CAAC,UAAU,EACvB,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC,EACD,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;QAEF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}