lance-context 0.1.0 → 1.0.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 (237) hide show
  1. package/README.md +232 -23
  2. package/dist/__tests__/ast-chunker.test.d.ts +2 -0
  3. package/dist/__tests__/ast-chunker.test.d.ts.map +1 -0
  4. package/dist/__tests__/ast-chunker.test.js +307 -0
  5. package/dist/__tests__/ast-chunker.test.js.map +1 -0
  6. package/dist/__tests__/config.test.d.ts +2 -0
  7. package/dist/__tests__/config.test.d.ts.map +1 -0
  8. package/dist/__tests__/config.test.js +242 -0
  9. package/dist/__tests__/config.test.js.map +1 -0
  10. package/dist/__tests__/dashboard/beads.test.d.ts +2 -0
  11. package/dist/__tests__/dashboard/beads.test.d.ts.map +1 -0
  12. package/dist/__tests__/dashboard/beads.test.js +151 -0
  13. package/dist/__tests__/dashboard/beads.test.js.map +1 -0
  14. package/dist/__tests__/dashboard/index.test.d.ts +2 -0
  15. package/dist/__tests__/dashboard/index.test.d.ts.map +1 -0
  16. package/dist/__tests__/dashboard/index.test.js +116 -0
  17. package/dist/__tests__/dashboard/index.test.js.map +1 -0
  18. package/dist/__tests__/dashboard/routes.test.d.ts +2 -0
  19. package/dist/__tests__/dashboard/routes.test.d.ts.map +1 -0
  20. package/dist/__tests__/dashboard/routes.test.js +125 -0
  21. package/dist/__tests__/dashboard/routes.test.js.map +1 -0
  22. package/dist/__tests__/dashboard/server.test.d.ts +2 -0
  23. package/dist/__tests__/dashboard/server.test.d.ts.map +1 -0
  24. package/dist/__tests__/dashboard/server.test.js +75 -0
  25. package/dist/__tests__/dashboard/server.test.js.map +1 -0
  26. package/dist/__tests__/dashboard/state.test.d.ts +2 -0
  27. package/dist/__tests__/dashboard/state.test.d.ts.map +1 -0
  28. package/dist/__tests__/dashboard/state.test.js +124 -0
  29. package/dist/__tests__/dashboard/state.test.js.map +1 -0
  30. package/dist/__tests__/embeddings/factory.test.d.ts +2 -0
  31. package/dist/__tests__/embeddings/factory.test.d.ts.map +1 -0
  32. package/dist/__tests__/embeddings/factory.test.js +100 -0
  33. package/dist/__tests__/embeddings/factory.test.js.map +1 -0
  34. package/dist/__tests__/embeddings/jina.test.d.ts +2 -0
  35. package/dist/__tests__/embeddings/jina.test.d.ts.map +1 -0
  36. package/dist/__tests__/embeddings/jina.test.js +156 -0
  37. package/dist/__tests__/embeddings/jina.test.js.map +1 -0
  38. package/dist/__tests__/embeddings/ollama.test.d.ts +2 -0
  39. package/dist/__tests__/embeddings/ollama.test.d.ts.map +1 -0
  40. package/dist/__tests__/embeddings/ollama.test.js +172 -0
  41. package/dist/__tests__/embeddings/ollama.test.js.map +1 -0
  42. package/dist/__tests__/embeddings/rate-limiter.test.d.ts +2 -0
  43. package/dist/__tests__/embeddings/rate-limiter.test.d.ts.map +1 -0
  44. package/dist/__tests__/embeddings/rate-limiter.test.js +163 -0
  45. package/dist/__tests__/embeddings/rate-limiter.test.js.map +1 -0
  46. package/dist/__tests__/embeddings/retry.test.d.ts +2 -0
  47. package/dist/__tests__/embeddings/retry.test.d.ts.map +1 -0
  48. package/dist/__tests__/embeddings/retry.test.js +260 -0
  49. package/dist/__tests__/embeddings/retry.test.js.map +1 -0
  50. package/dist/__tests__/embeddings/types.test.d.ts +2 -0
  51. package/dist/__tests__/embeddings/types.test.d.ts.map +1 -0
  52. package/dist/__tests__/embeddings/types.test.js +31 -0
  53. package/dist/__tests__/embeddings/types.test.js.map +1 -0
  54. package/dist/__tests__/mocks/embedding-backend.mock.d.ts +10 -0
  55. package/dist/__tests__/mocks/embedding-backend.mock.d.ts.map +1 -0
  56. package/dist/__tests__/mocks/embedding-backend.mock.js +39 -0
  57. package/dist/__tests__/mocks/embedding-backend.mock.js.map +1 -0
  58. package/dist/__tests__/mocks/fetch.mock.d.ts +38 -0
  59. package/dist/__tests__/mocks/fetch.mock.d.ts.map +1 -0
  60. package/dist/__tests__/mocks/fetch.mock.js +74 -0
  61. package/dist/__tests__/mocks/fetch.mock.js.map +1 -0
  62. package/dist/__tests__/mocks/lancedb.mock.d.ts +38 -0
  63. package/dist/__tests__/mocks/lancedb.mock.d.ts.map +1 -0
  64. package/dist/__tests__/mocks/lancedb.mock.js +63 -0
  65. package/dist/__tests__/mocks/lancedb.mock.js.map +1 -0
  66. package/dist/__tests__/search/clustering.test.d.ts +2 -0
  67. package/dist/__tests__/search/clustering.test.d.ts.map +1 -0
  68. package/dist/__tests__/search/clustering.test.js +230 -0
  69. package/dist/__tests__/search/clustering.test.js.map +1 -0
  70. package/dist/__tests__/search/hybrid-search.test.d.ts +2 -0
  71. package/dist/__tests__/search/hybrid-search.test.d.ts.map +1 -0
  72. package/dist/__tests__/search/hybrid-search.test.js +186 -0
  73. package/dist/__tests__/search/hybrid-search.test.js.map +1 -0
  74. package/dist/__tests__/search/indexer.test.d.ts +2 -0
  75. package/dist/__tests__/search/indexer.test.d.ts.map +1 -0
  76. package/dist/__tests__/search/indexer.test.js +878 -0
  77. package/dist/__tests__/search/indexer.test.js.map +1 -0
  78. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts +2 -0
  79. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts.map +1 -0
  80. package/dist/__tests__/search/tree-sitter-chunker.test.js +228 -0
  81. package/dist/__tests__/search/tree-sitter-chunker.test.js.map +1 -0
  82. package/dist/__tests__/setup.d.ts +2 -0
  83. package/dist/__tests__/setup.d.ts.map +1 -0
  84. package/dist/__tests__/setup.js +11 -0
  85. package/dist/__tests__/setup.js.map +1 -0
  86. package/dist/__tests__/utils/concurrency.test.d.ts +2 -0
  87. package/dist/__tests__/utils/concurrency.test.d.ts.map +1 -0
  88. package/dist/__tests__/utils/concurrency.test.js +83 -0
  89. package/dist/__tests__/utils/concurrency.test.js.map +1 -0
  90. package/dist/__tests__/utils/errors.test.d.ts +2 -0
  91. package/dist/__tests__/utils/errors.test.d.ts.map +1 -0
  92. package/dist/__tests__/utils/errors.test.js +136 -0
  93. package/dist/__tests__/utils/errors.test.js.map +1 -0
  94. package/dist/__tests__/utils/type-guards.test.d.ts +2 -0
  95. package/dist/__tests__/utils/type-guards.test.d.ts.map +1 -0
  96. package/dist/__tests__/utils/type-guards.test.js +80 -0
  97. package/dist/__tests__/utils/type-guards.test.js.map +1 -0
  98. package/dist/__tests__/worktree/worktree-manager.test.d.ts +2 -0
  99. package/dist/__tests__/worktree/worktree-manager.test.d.ts.map +1 -0
  100. package/dist/__tests__/worktree/worktree-manager.test.js +403 -0
  101. package/dist/__tests__/worktree/worktree-manager.test.js.map +1 -0
  102. package/dist/config.d.ts +122 -0
  103. package/dist/config.d.ts.map +1 -0
  104. package/dist/config.js +508 -0
  105. package/dist/config.js.map +1 -0
  106. package/dist/dashboard/beads.d.ts +35 -0
  107. package/dist/dashboard/beads.d.ts.map +1 -0
  108. package/dist/dashboard/beads.js +102 -0
  109. package/dist/dashboard/beads.js.map +1 -0
  110. package/dist/dashboard/events.d.ts +46 -0
  111. package/dist/dashboard/events.d.ts.map +1 -0
  112. package/dist/dashboard/events.js +141 -0
  113. package/dist/dashboard/events.js.map +1 -0
  114. package/dist/dashboard/index.d.ts +67 -0
  115. package/dist/dashboard/index.d.ts.map +1 -0
  116. package/dist/dashboard/index.js +90 -0
  117. package/dist/dashboard/index.js.map +1 -0
  118. package/dist/dashboard/routes.d.ts +6 -0
  119. package/dist/dashboard/routes.d.ts.map +1 -0
  120. package/dist/dashboard/routes.js +244 -0
  121. package/dist/dashboard/routes.js.map +1 -0
  122. package/dist/dashboard/server.d.ts +27 -0
  123. package/dist/dashboard/server.d.ts.map +1 -0
  124. package/dist/dashboard/server.js +72 -0
  125. package/dist/dashboard/server.js.map +1 -0
  126. package/dist/dashboard/state.d.ts +116 -0
  127. package/dist/dashboard/state.d.ts.map +1 -0
  128. package/dist/dashboard/state.js +251 -0
  129. package/dist/dashboard/state.js.map +1 -0
  130. package/dist/dashboard/ui.d.ts +6 -0
  131. package/dist/dashboard/ui.d.ts.map +1 -0
  132. package/dist/dashboard/ui.js +1407 -0
  133. package/dist/dashboard/ui.js.map +1 -0
  134. package/dist/embeddings/index.d.ts +20 -2
  135. package/dist/embeddings/index.d.ts.map +1 -1
  136. package/dist/embeddings/index.js +49 -6
  137. package/dist/embeddings/index.js.map +1 -1
  138. package/dist/embeddings/jina.d.ts +9 -0
  139. package/dist/embeddings/jina.d.ts.map +1 -1
  140. package/dist/embeddings/jina.js +42 -2
  141. package/dist/embeddings/jina.js.map +1 -1
  142. package/dist/embeddings/ollama.d.ts +2 -0
  143. package/dist/embeddings/ollama.d.ts.map +1 -1
  144. package/dist/embeddings/ollama.js +21 -5
  145. package/dist/embeddings/ollama.js.map +1 -1
  146. package/dist/embeddings/rate-limiter.d.ts +75 -0
  147. package/dist/embeddings/rate-limiter.d.ts.map +1 -0
  148. package/dist/embeddings/rate-limiter.js +145 -0
  149. package/dist/embeddings/rate-limiter.js.map +1 -0
  150. package/dist/embeddings/retry.d.ts +14 -0
  151. package/dist/embeddings/retry.d.ts.map +1 -0
  152. package/dist/embeddings/retry.js +89 -0
  153. package/dist/embeddings/retry.js.map +1 -0
  154. package/dist/embeddings/types.d.ts +56 -2
  155. package/dist/embeddings/types.d.ts.map +1 -1
  156. package/dist/embeddings/types.js +16 -0
  157. package/dist/embeddings/types.js.map +1 -1
  158. package/dist/index.js +1870 -44
  159. package/dist/index.js.map +1 -1
  160. package/dist/memory/index.d.ts +63 -0
  161. package/dist/memory/index.d.ts.map +1 -0
  162. package/dist/memory/index.js +168 -0
  163. package/dist/memory/index.js.map +1 -0
  164. package/dist/search/ast-chunker.d.ts +34 -0
  165. package/dist/search/ast-chunker.d.ts.map +1 -0
  166. package/dist/search/ast-chunker.js +261 -0
  167. package/dist/search/ast-chunker.js.map +1 -0
  168. package/dist/search/clustering.d.ts +77 -0
  169. package/dist/search/clustering.d.ts.map +1 -0
  170. package/dist/search/clustering.js +455 -0
  171. package/dist/search/clustering.js.map +1 -0
  172. package/dist/search/indexer.d.ts +239 -3
  173. package/dist/search/indexer.d.ts.map +1 -1
  174. package/dist/search/indexer.js +941 -45
  175. package/dist/search/indexer.js.map +1 -1
  176. package/dist/search/tree-sitter-chunker.d.ts +69 -0
  177. package/dist/search/tree-sitter-chunker.d.ts.map +1 -0
  178. package/dist/search/tree-sitter-chunker.js +436 -0
  179. package/dist/search/tree-sitter-chunker.js.map +1 -0
  180. package/dist/symbols/index.d.ts +14 -0
  181. package/dist/symbols/index.d.ts.map +1 -0
  182. package/dist/symbols/index.js +19 -0
  183. package/dist/symbols/index.js.map +1 -0
  184. package/dist/symbols/name-path.d.ts +113 -0
  185. package/dist/symbols/name-path.d.ts.map +1 -0
  186. package/dist/symbols/name-path.js +194 -0
  187. package/dist/symbols/name-path.js.map +1 -0
  188. package/dist/symbols/pattern-search.d.ts +14 -0
  189. package/dist/symbols/pattern-search.d.ts.map +1 -0
  190. package/dist/symbols/pattern-search.js +224 -0
  191. package/dist/symbols/pattern-search.js.map +1 -0
  192. package/dist/symbols/reference-finder.d.ts +38 -0
  193. package/dist/symbols/reference-finder.d.ts.map +1 -0
  194. package/dist/symbols/reference-finder.js +376 -0
  195. package/dist/symbols/reference-finder.js.map +1 -0
  196. package/dist/symbols/symbol-editor.d.ts +81 -0
  197. package/dist/symbols/symbol-editor.d.ts.map +1 -0
  198. package/dist/symbols/symbol-editor.js +257 -0
  199. package/dist/symbols/symbol-editor.js.map +1 -0
  200. package/dist/symbols/symbol-extractor.d.ts +49 -0
  201. package/dist/symbols/symbol-extractor.d.ts.map +1 -0
  202. package/dist/symbols/symbol-extractor.js +593 -0
  203. package/dist/symbols/symbol-extractor.js.map +1 -0
  204. package/dist/symbols/symbol-renamer.d.ts +81 -0
  205. package/dist/symbols/symbol-renamer.d.ts.map +1 -0
  206. package/dist/symbols/symbol-renamer.js +204 -0
  207. package/dist/symbols/symbol-renamer.js.map +1 -0
  208. package/dist/symbols/types.d.ts +234 -0
  209. package/dist/symbols/types.d.ts.map +1 -0
  210. package/dist/symbols/types.js +106 -0
  211. package/dist/symbols/types.js.map +1 -0
  212. package/dist/utils/concurrency.d.ts +32 -0
  213. package/dist/utils/concurrency.d.ts.map +1 -0
  214. package/dist/utils/concurrency.js +57 -0
  215. package/dist/utils/concurrency.js.map +1 -0
  216. package/dist/utils/errors.d.ts +36 -0
  217. package/dist/utils/errors.d.ts.map +1 -0
  218. package/dist/utils/errors.js +91 -0
  219. package/dist/utils/errors.js.map +1 -0
  220. package/dist/utils/type-guards.d.ts +17 -0
  221. package/dist/utils/type-guards.d.ts.map +1 -0
  222. package/dist/utils/type-guards.js +25 -0
  223. package/dist/utils/type-guards.js.map +1 -0
  224. package/dist/worktree/index.d.ts +6 -0
  225. package/dist/worktree/index.d.ts.map +1 -0
  226. package/dist/worktree/index.js +6 -0
  227. package/dist/worktree/index.js.map +1 -0
  228. package/dist/worktree/types.d.ts +101 -0
  229. package/dist/worktree/types.d.ts.map +1 -0
  230. package/dist/worktree/types.js +6 -0
  231. package/dist/worktree/types.js.map +1 -0
  232. package/dist/worktree/worktree-manager.d.ts +80 -0
  233. package/dist/worktree/worktree-manager.d.ts.map +1 -0
  234. package/dist/worktree/worktree-manager.js +407 -0
  235. package/dist/worktree/worktree-manager.js.map +1 -0
  236. package/package.json +39 -5
  237. package/scripts/postinstall.js +48 -0
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Process items in parallel with controlled concurrency.
3
+ * Unlike Promise.all which starts all promises at once, this limits
4
+ * how many are running at any time.
5
+ *
6
+ * @param items - Items to process
7
+ * @param fn - Async function to apply to each item
8
+ * @param concurrency - Maximum number of concurrent operations (default: 10)
9
+ * @returns Promise resolving to results in the same order as items
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const results = await mapWithConcurrency(
14
+ * files,
15
+ * async (file) => processFile(file),
16
+ * 10 // max 10 concurrent file operations
17
+ * );
18
+ * ```
19
+ */
20
+ export declare function mapWithConcurrency<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, concurrency?: number): Promise<R[]>;
21
+ /**
22
+ * Process items in batches, where each batch is processed in parallel.
23
+ * Useful when you want to process groups at a time with progress reporting.
24
+ *
25
+ * @param items - Items to process
26
+ * @param fn - Async function to apply to each item
27
+ * @param batchSize - Number of items per batch
28
+ * @param onBatchComplete - Optional callback after each batch completes
29
+ * @returns Promise resolving to results in the same order as items
30
+ */
31
+ export declare function mapInBatches<T, R>(items: T[], fn: (item: T, index: number) => Promise<R>, batchSize?: number, onBatchComplete?: (completedCount: number, totalCount: number) => void): Promise<R[]>;
32
+ //# sourceMappingURL=concurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/utils/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,EAAE,CAAC,EAAE,EACV,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,CAAC,EAAE,CAAC,CAkBd;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,CAAC,EACrC,KAAK,EAAE,CAAC,EAAE,EACV,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,SAAS,GAAE,MAAW,EACtB,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GACrE,OAAO,CAAC,CAAC,EAAE,CAAC,CAcd"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Process items in parallel with controlled concurrency.
3
+ * Unlike Promise.all which starts all promises at once, this limits
4
+ * how many are running at any time.
5
+ *
6
+ * @param items - Items to process
7
+ * @param fn - Async function to apply to each item
8
+ * @param concurrency - Maximum number of concurrent operations (default: 10)
9
+ * @returns Promise resolving to results in the same order as items
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const results = await mapWithConcurrency(
14
+ * files,
15
+ * async (file) => processFile(file),
16
+ * 10 // max 10 concurrent file operations
17
+ * );
18
+ * ```
19
+ */
20
+ export async function mapWithConcurrency(items, fn, concurrency = 10) {
21
+ const results = new Array(items.length);
22
+ let currentIndex = 0;
23
+ async function processNext() {
24
+ while (currentIndex < items.length) {
25
+ const index = currentIndex++;
26
+ results[index] = await fn(items[index], index);
27
+ }
28
+ }
29
+ // Start 'concurrency' number of workers
30
+ const workers = Array(Math.min(concurrency, items.length))
31
+ .fill(null)
32
+ .map(() => processNext());
33
+ await Promise.all(workers);
34
+ return results;
35
+ }
36
+ /**
37
+ * Process items in batches, where each batch is processed in parallel.
38
+ * Useful when you want to process groups at a time with progress reporting.
39
+ *
40
+ * @param items - Items to process
41
+ * @param fn - Async function to apply to each item
42
+ * @param batchSize - Number of items per batch
43
+ * @param onBatchComplete - Optional callback after each batch completes
44
+ * @returns Promise resolving to results in the same order as items
45
+ */
46
+ export async function mapInBatches(items, fn, batchSize = 10, onBatchComplete) {
47
+ const results = [];
48
+ for (let i = 0; i < items.length; i += batchSize) {
49
+ const batch = items.slice(i, i + batchSize);
50
+ const batchStartIndex = i;
51
+ const batchResults = await Promise.all(batch.map((item, idx) => fn(item, batchStartIndex + idx)));
52
+ results.push(...batchResults);
53
+ onBatchComplete?.(results.length, items.length);
54
+ }
55
+ return results;
56
+ }
57
+ //# sourceMappingURL=concurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../src/utils/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAU,EACV,EAA0C,EAC1C,cAAsB,EAAE;IAExB,MAAM,OAAO,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,UAAU,WAAW;QACxB,OAAO,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;SACvD,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAE5B,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAU,EACV,EAA0C,EAC1C,YAAoB,EAAE,EACtB,eAAsE;IAEtE,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,GAAG,GAAG,CAAC,CAAC,CAC1D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAC9B,eAAe,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Error handling utilities for lance-context MCP server.
3
+ *
4
+ * Provides structured error types, server-side logging, and debug mode support.
5
+ */
6
+ /**
7
+ * Error categories for different failure modes
8
+ */
9
+ export type ErrorCategory = 'validation' | 'indexing' | 'search' | 'embedding' | 'config' | 'git' | 'worktree' | 'internal';
10
+ /**
11
+ * Structured error with category and context
12
+ */
13
+ export declare class LanceContextError extends Error {
14
+ readonly category: ErrorCategory;
15
+ readonly context?: Record<string, unknown>;
16
+ constructor(message: string, category: ErrorCategory, context?: Record<string, unknown>, cause?: Error);
17
+ }
18
+ /**
19
+ * Check if debug mode is enabled via environment variable
20
+ */
21
+ export declare function isDebugMode(): boolean;
22
+ /**
23
+ * Log an error server-side with full context.
24
+ * Always logs to stderr for debugging purposes.
25
+ */
26
+ export declare function logError(error: unknown, toolName?: string): void;
27
+ /**
28
+ * Format an error for client response.
29
+ * In debug mode, includes stack traces. Otherwise, just the message.
30
+ */
31
+ export declare function formatErrorResponse(error: unknown): string;
32
+ /**
33
+ * Wrap an error with additional context, preserving the original error.
34
+ */
35
+ export declare function wrapError(message: string, category: ErrorCategory, cause: unknown, context?: Record<string, unknown>): LanceContextError;
36
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,KAAK,GACL,UAAU,GACV,UAAU,CAAC;AAEf;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;CAchB;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAmBhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAyB1D;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,iBAAiB,CAGnB"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Error handling utilities for lance-context MCP server.
3
+ *
4
+ * Provides structured error types, server-side logging, and debug mode support.
5
+ */
6
+ /**
7
+ * Structured error with category and context
8
+ */
9
+ export class LanceContextError extends Error {
10
+ category;
11
+ context;
12
+ constructor(message, category, context, cause) {
13
+ super(message);
14
+ this.name = 'LanceContextError';
15
+ this.category = category;
16
+ this.context = context;
17
+ if (cause) {
18
+ this.cause = cause;
19
+ // Preserve original stack if available
20
+ if (cause.stack) {
21
+ this.stack = `${this.stack}\nCaused by: ${cause.stack}`;
22
+ }
23
+ }
24
+ }
25
+ }
26
+ /**
27
+ * Check if debug mode is enabled via environment variable
28
+ */
29
+ export function isDebugMode() {
30
+ return process.env.LANCE_CONTEXT_DEBUG === '1' || process.env.LANCE_CONTEXT_DEBUG === 'true';
31
+ }
32
+ /**
33
+ * Log an error server-side with full context.
34
+ * Always logs to stderr for debugging purposes.
35
+ */
36
+ export function logError(error, toolName) {
37
+ const prefix = toolName ? `[lance-context] [${toolName}]` : '[lance-context]';
38
+ if (error instanceof LanceContextError) {
39
+ console.error(`${prefix} ${error.category} error: ${error.message}`);
40
+ if (error.context) {
41
+ console.error(`${prefix} Context:`, JSON.stringify(error.context, null, 2));
42
+ }
43
+ if (error.stack) {
44
+ console.error(`${prefix} Stack trace:\n${error.stack}`);
45
+ }
46
+ }
47
+ else if (error instanceof Error) {
48
+ console.error(`${prefix} Error: ${error.message}`);
49
+ if (error.stack) {
50
+ console.error(`${prefix} Stack trace:\n${error.stack}`);
51
+ }
52
+ }
53
+ else {
54
+ console.error(`${prefix} Unknown error:`, error);
55
+ }
56
+ }
57
+ /**
58
+ * Format an error for client response.
59
+ * In debug mode, includes stack traces. Otherwise, just the message.
60
+ */
61
+ export function formatErrorResponse(error) {
62
+ const debug = isDebugMode();
63
+ if (error instanceof LanceContextError) {
64
+ let response = `Error [${error.category}]: ${error.message}`;
65
+ if (debug) {
66
+ if (error.context) {
67
+ response += `\n\nContext: ${JSON.stringify(error.context, null, 2)}`;
68
+ }
69
+ if (error.stack) {
70
+ response += `\n\nStack trace:\n${error.stack}`;
71
+ }
72
+ }
73
+ return response;
74
+ }
75
+ if (error instanceof Error) {
76
+ let response = `Error: ${error.message}`;
77
+ if (debug && error.stack) {
78
+ response += `\n\nStack trace:\n${error.stack}`;
79
+ }
80
+ return response;
81
+ }
82
+ return `Error: ${String(error)}`;
83
+ }
84
+ /**
85
+ * Wrap an error with additional context, preserving the original error.
86
+ */
87
+ export function wrapError(message, category, cause, context) {
88
+ const causeError = cause instanceof Error ? cause : new Error(String(cause));
89
+ return new LanceContextError(message, category, context, causeError);
90
+ }
91
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Type guard for string arrays
3
+ */
4
+ export declare function isStringArray(value: unknown): value is string[];
5
+ /**
6
+ * Type guard for strings
7
+ */
8
+ export declare function isString(value: unknown): value is string;
9
+ /**
10
+ * Type guard for numbers
11
+ */
12
+ export declare function isNumber(value: unknown): value is number;
13
+ /**
14
+ * Type guard for booleans
15
+ */
16
+ export declare function isBoolean(value: unknown): value is boolean;
17
+ //# sourceMappingURL=type-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Type guard for string arrays
3
+ */
4
+ export function isStringArray(value) {
5
+ return Array.isArray(value) && value.every((v) => typeof v === 'string');
6
+ }
7
+ /**
8
+ * Type guard for strings
9
+ */
10
+ export function isString(value) {
11
+ return typeof value === 'string';
12
+ }
13
+ /**
14
+ * Type guard for numbers
15
+ */
16
+ export function isNumber(value) {
17
+ return typeof value === 'number' && !isNaN(value);
18
+ }
19
+ /**
20
+ * Type guard for booleans
21
+ */
22
+ export function isBoolean(value) {
23
+ return typeof value === 'boolean';
24
+ }
25
+ //# sourceMappingURL=type-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;AACpC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Git worktree management module for parallel agent isolation.
3
+ */
4
+ export type { BranchPrefix, PackageManager, WorktreeInfo, CreateWorktreeOptions, CreateWorktreeResult, RemoveWorktreeOptions, RemoveWorktreeResult, ListWorktreesResult, } from './types.js';
5
+ export { WorktreeManager, formatWorktreeInfo, formatWorktreeList } from './worktree-manager.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/worktree/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Git worktree management module for parallel agent isolation.
3
+ */
4
+ // Manager
5
+ export { WorktreeManager, formatWorktreeInfo, formatWorktreeList } from './worktree-manager.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worktree/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,UAAU;AACV,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Types and interfaces for git worktree management.
3
+ * Enables parallel agent isolation through automatic worktree creation.
4
+ */
5
+ /**
6
+ * Branch prefix types that follow .claude/rules.md conventions.
7
+ */
8
+ export type BranchPrefix = 'feature' | 'fix' | 'refactor' | 'docs' | 'test';
9
+ /**
10
+ * Package manager types for dependency installation.
11
+ */
12
+ export type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun';
13
+ /**
14
+ * Information about a git worktree.
15
+ */
16
+ export interface WorktreeInfo {
17
+ /** Worktree name (directory name within .git/agent-worktrees/) */
18
+ name: string;
19
+ /** Full path to the worktree directory */
20
+ path: string;
21
+ /** Branch name the worktree is on */
22
+ branch: string;
23
+ /** Current HEAD commit hash (short) */
24
+ commit: string;
25
+ /** Whether the worktree is valid/exists */
26
+ valid: boolean;
27
+ /** Whether there are uncommitted changes */
28
+ dirty: boolean;
29
+ /** Number of commits ahead of base branch */
30
+ ahead: number;
31
+ /** Number of commits behind base branch */
32
+ behind: number;
33
+ /** Timestamp when the worktree was created */
34
+ createdAt?: Date;
35
+ }
36
+ /**
37
+ * Options for creating a new worktree.
38
+ */
39
+ export interface CreateWorktreeOptions {
40
+ /** Issue ID (e.g., "bd-123") - optional, used for naming */
41
+ issueId?: string;
42
+ /** Short descriptive name (e.g., "add-auth") - required */
43
+ shortName: string;
44
+ /** Branch prefix (default: "feature") */
45
+ prefix?: BranchPrefix;
46
+ /** Base branch to create from (default: current branch or main) */
47
+ baseBranch?: string;
48
+ /** Whether to install dependencies after creation (default: true) */
49
+ installDeps?: boolean;
50
+ /** Package manager to use (default: auto-detect) */
51
+ packageManager?: PackageManager;
52
+ }
53
+ /**
54
+ * Result from creating a worktree.
55
+ */
56
+ export interface CreateWorktreeResult {
57
+ /** Whether the operation succeeded */
58
+ success: boolean;
59
+ /** Worktree info if successful */
60
+ worktree?: WorktreeInfo;
61
+ /** Error message if failed */
62
+ error?: string;
63
+ /** Whether dependencies were installed */
64
+ depsInstalled?: boolean;
65
+ /** Time taken to install dependencies (ms) */
66
+ depsInstallTime?: number;
67
+ }
68
+ /**
69
+ * Options for removing a worktree.
70
+ */
71
+ export interface RemoveWorktreeOptions {
72
+ /** Worktree name to remove */
73
+ name: string;
74
+ /** Whether to also delete the branch (default: false) */
75
+ deleteBranch?: boolean;
76
+ /** Force removal even if dirty (default: false) */
77
+ force?: boolean;
78
+ }
79
+ /**
80
+ * Result from removing a worktree.
81
+ */
82
+ export interface RemoveWorktreeResult {
83
+ /** Whether the operation succeeded */
84
+ success: boolean;
85
+ /** Branch name that was associated */
86
+ branch?: string;
87
+ /** Whether the branch was deleted */
88
+ branchDeleted?: boolean;
89
+ /** Error message if failed */
90
+ error?: string;
91
+ }
92
+ /**
93
+ * Result from listing worktrees.
94
+ */
95
+ export interface ListWorktreesResult {
96
+ /** List of worktrees */
97
+ worktrees: WorktreeInfo[];
98
+ /** Total count */
99
+ count: number;
100
+ }
101
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/worktree/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Types and interfaces for git worktree management.
3
+ * Enables parallel agent isolation through automatic worktree creation.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/worktree/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Git worktree management for parallel agent isolation.
3
+ *
4
+ * Creates isolated workspaces in .git/agent-worktrees/ to allow multiple
5
+ * agents to work simultaneously without file conflicts.
6
+ */
7
+ import type { PackageManager, WorktreeInfo, CreateWorktreeOptions, CreateWorktreeResult, RemoveWorktreeOptions, RemoveWorktreeResult, ListWorktreesResult } from './types.js';
8
+ /**
9
+ * Manages git worktrees for parallel agent isolation.
10
+ */
11
+ export declare class WorktreeManager {
12
+ private readonly projectPath;
13
+ private readonly worktreesDir;
14
+ constructor(projectPath: string);
15
+ /**
16
+ * Ensure the worktrees directory exists.
17
+ */
18
+ private ensureWorktreesDir;
19
+ /**
20
+ * Generate a worktree name from options.
21
+ */
22
+ private generateName;
23
+ /**
24
+ * Generate a branch name from options.
25
+ */
26
+ private generateBranchName;
27
+ /**
28
+ * Detect the package manager used in a directory.
29
+ */
30
+ detectPackageManager(dir: string): Promise<PackageManager | null>;
31
+ /**
32
+ * Install dependencies in a directory.
33
+ */
34
+ installDependencies(dir: string, packageManager?: PackageManager): Promise<{
35
+ success: boolean;
36
+ time: number;
37
+ error?: string;
38
+ }>;
39
+ /**
40
+ * Get the current branch name.
41
+ */
42
+ getCurrentBranch(): Promise<string>;
43
+ /**
44
+ * Get the default base branch (main or master).
45
+ */
46
+ getDefaultBaseBranch(): Promise<string>;
47
+ /**
48
+ * Check if a branch exists.
49
+ */
50
+ branchExists(branchName: string): Promise<boolean>;
51
+ /**
52
+ * Create a new worktree for isolated agent work.
53
+ */
54
+ createWorktree(options: CreateWorktreeOptions): Promise<CreateWorktreeResult>;
55
+ /**
56
+ * Get information about a specific worktree.
57
+ */
58
+ getWorktreeInfo(name: string): Promise<WorktreeInfo | null>;
59
+ /**
60
+ * List all agent worktrees.
61
+ */
62
+ listWorktrees(): Promise<ListWorktreesResult>;
63
+ /**
64
+ * Remove a worktree.
65
+ */
66
+ removeWorktree(options: RemoveWorktreeOptions): Promise<RemoveWorktreeResult>;
67
+ /**
68
+ * Prune stale worktree entries from git.
69
+ */
70
+ pruneWorktrees(): Promise<void>;
71
+ }
72
+ /**
73
+ * Format worktree info for display.
74
+ */
75
+ export declare function formatWorktreeInfo(info: WorktreeInfo): string;
76
+ /**
77
+ * Format list of worktrees for display.
78
+ */
79
+ export declare function formatWorktreeList(result: ListWorktreesResult): string;
80
+ //# sourceMappingURL=worktree-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-manager.d.ts","sourceRoot":"","sources":["../../src/worktree/worktree-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,WAAW,EAAE,MAAM;IAK/B;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACG,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAuBvE;;OAEG;IACG,mBAAmB,CACvB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2B9D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IASzC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB7C;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuEnF;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAmFjE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA4BnD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyDnF;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAkB7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAgBtE"}