@legioncodeinc/nectar 0.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 (467) hide show
  1. package/LICENSE.md +662 -0
  2. package/README.md +307 -0
  3. package/dist/api/daemon-api-wiring.d.ts +72 -0
  4. package/dist/api/daemon-api-wiring.d.ts.map +1 -0
  5. package/dist/api/daemon-api-wiring.js +150 -0
  6. package/dist/api/daemon-api-wiring.js.map +1 -0
  7. package/dist/api/hive-graph-api.d.ts +136 -0
  8. package/dist/api/hive-graph-api.d.ts.map +1 -0
  9. package/dist/api/hive-graph-api.js +234 -0
  10. package/dist/api/hive-graph-api.js.map +1 -0
  11. package/dist/api/loopback-client.d.ts +27 -0
  12. package/dist/api/loopback-client.d.ts.map +1 -0
  13. package/dist/api/loopback-client.js +87 -0
  14. package/dist/api/loopback-client.js.map +1 -0
  15. package/dist/api/router.d.ts +172 -0
  16. package/dist/api/router.d.ts.map +1 -0
  17. package/dist/api/router.js +212 -0
  18. package/dist/api/router.js.map +1 -0
  19. package/dist/api/status-query.d.ts +49 -0
  20. package/dist/api/status-query.d.ts.map +1 -0
  21. package/dist/api/status-query.js +103 -0
  22. package/dist/api/status-query.js.map +1 -0
  23. package/dist/brood-guard.d.ts +24 -0
  24. package/dist/brood-guard.d.ts.map +1 -0
  25. package/dist/brood-guard.js +19 -0
  26. package/dist/brood-guard.js.map +1 -0
  27. package/dist/brood-prereqs.d.ts +62 -0
  28. package/dist/brood-prereqs.d.ts.map +1 -0
  29. package/dist/brood-prereqs.js +87 -0
  30. package/dist/brood-prereqs.js.map +1 -0
  31. package/dist/brooding/bucketing.d.ts +68 -0
  32. package/dist/brooding/bucketing.d.ts.map +1 -0
  33. package/dist/brooding/bucketing.js +122 -0
  34. package/dist/brooding/bucketing.js.map +1 -0
  35. package/dist/brooding/cli.d.ts +78 -0
  36. package/dist/brooding/cli.d.ts.map +1 -0
  37. package/dist/brooding/cli.js +140 -0
  38. package/dist/brooding/cli.js.map +1 -0
  39. package/dist/brooding/constants.d.ts +75 -0
  40. package/dist/brooding/constants.d.ts.map +1 -0
  41. package/dist/brooding/constants.js +91 -0
  42. package/dist/brooding/constants.js.map +1 -0
  43. package/dist/brooding/cost.d.ts +110 -0
  44. package/dist/brooding/cost.d.ts.map +1 -0
  45. package/dist/brooding/cost.js +96 -0
  46. package/dist/brooding/cost.js.map +1 -0
  47. package/dist/brooding/describe.d.ts +152 -0
  48. package/dist/brooding/describe.d.ts.map +1 -0
  49. package/dist/brooding/describe.js +281 -0
  50. package/dist/brooding/describe.js.map +1 -0
  51. package/dist/brooding/discovery.d.ts +116 -0
  52. package/dist/brooding/discovery.d.ts.map +1 -0
  53. package/dist/brooding/discovery.js +179 -0
  54. package/dist/brooding/discovery.js.map +1 -0
  55. package/dist/brooding/index.d.ts +23 -0
  56. package/dist/brooding/index.d.ts.map +1 -0
  57. package/dist/brooding/index.js +33 -0
  58. package/dist/brooding/index.js.map +1 -0
  59. package/dist/brooding/pipeline-async.d.ts +97 -0
  60. package/dist/brooding/pipeline-async.d.ts.map +1 -0
  61. package/dist/brooding/pipeline-async.js +364 -0
  62. package/dist/brooding/pipeline-async.js.map +1 -0
  63. package/dist/brooding/pipeline.d.ts +198 -0
  64. package/dist/brooding/pipeline.d.ts.map +1 -0
  65. package/dist/brooding/pipeline.js +454 -0
  66. package/dist/brooding/pipeline.js.map +1 -0
  67. package/dist/brooding/precheck.d.ts +52 -0
  68. package/dist/brooding/precheck.d.ts.map +1 -0
  69. package/dist/brooding/precheck.js +143 -0
  70. package/dist/brooding/precheck.js.map +1 -0
  71. package/dist/brooding/resumability.d.ts +57 -0
  72. package/dist/brooding/resumability.d.ts.map +1 -0
  73. package/dist/brooding/resumability.js +46 -0
  74. package/dist/brooding/resumability.js.map +1 -0
  75. package/dist/cli.d.ts +139 -0
  76. package/dist/cli.d.ts.map +1 -0
  77. package/dist/cli.js +912 -0
  78. package/dist/cli.js.map +1 -0
  79. package/dist/config-file.d.ts +52 -0
  80. package/dist/config-file.d.ts.map +1 -0
  81. package/dist/config-file.js +130 -0
  82. package/dist/config-file.js.map +1 -0
  83. package/dist/config.d.ts +49 -0
  84. package/dist/config.d.ts.map +1 -0
  85. package/dist/config.js +98 -0
  86. package/dist/config.js.map +1 -0
  87. package/dist/daemon.d.ts +265 -0
  88. package/dist/daemon.d.ts.map +1 -0
  89. package/dist/daemon.js +664 -0
  90. package/dist/daemon.js.map +1 -0
  91. package/dist/doctor-registry.d.ts +134 -0
  92. package/dist/doctor-registry.d.ts.map +1 -0
  93. package/dist/doctor-registry.js +173 -0
  94. package/dist/doctor-registry.js.map +1 -0
  95. package/dist/embeddings/cohere-portkey.d.ts +67 -0
  96. package/dist/embeddings/cohere-portkey.d.ts.map +1 -0
  97. package/dist/embeddings/cohere-portkey.js +171 -0
  98. package/dist/embeddings/cohere-portkey.js.map +1 -0
  99. package/dist/embeddings/config.d.ts +74 -0
  100. package/dist/embeddings/config.d.ts.map +1 -0
  101. package/dist/embeddings/config.js +131 -0
  102. package/dist/embeddings/config.js.map +1 -0
  103. package/dist/embeddings/guard.d.ts +34 -0
  104. package/dist/embeddings/guard.d.ts.map +1 -0
  105. package/dist/embeddings/guard.js +67 -0
  106. package/dist/embeddings/guard.js.map +1 -0
  107. package/dist/embeddings/hosted-portkey.d.ts +73 -0
  108. package/dist/embeddings/hosted-portkey.d.ts.map +1 -0
  109. package/dist/embeddings/hosted-portkey.js +179 -0
  110. package/dist/embeddings/hosted-portkey.js.map +1 -0
  111. package/dist/embeddings/http.d.ts +33 -0
  112. package/dist/embeddings/http.d.ts.map +1 -0
  113. package/dist/embeddings/http.js +19 -0
  114. package/dist/embeddings/http.js.map +1 -0
  115. package/dist/embeddings/index.d.ts +17 -0
  116. package/dist/embeddings/index.d.ts.map +1 -0
  117. package/dist/embeddings/index.js +17 -0
  118. package/dist/embeddings/index.js.map +1 -0
  119. package/dist/embeddings/local-nomic.d.ts +78 -0
  120. package/dist/embeddings/local-nomic.d.ts.map +1 -0
  121. package/dist/embeddings/local-nomic.js +126 -0
  122. package/dist/embeddings/local-nomic.js.map +1 -0
  123. package/dist/embeddings/provider.d.ts +79 -0
  124. package/dist/embeddings/provider.d.ts.map +1 -0
  125. package/dist/embeddings/provider.js +50 -0
  126. package/dist/embeddings/provider.js.map +1 -0
  127. package/dist/enricher/config.d.ts +43 -0
  128. package/dist/enricher/config.d.ts.map +1 -0
  129. package/dist/enricher/config.js +34 -0
  130. package/dist/enricher/config.js.map +1 -0
  131. package/dist/enricher/content-cache.d.ts +29 -0
  132. package/dist/enricher/content-cache.d.ts.map +1 -0
  133. package/dist/enricher/content-cache.js +24 -0
  134. package/dist/enricher/content-cache.js.map +1 -0
  135. package/dist/enricher/cycle.d.ts +71 -0
  136. package/dist/enricher/cycle.d.ts.map +1 -0
  137. package/dist/enricher/cycle.js +319 -0
  138. package/dist/enricher/cycle.js.map +1 -0
  139. package/dist/enricher/describe.d.ts +61 -0
  140. package/dist/enricher/describe.d.ts.map +1 -0
  141. package/dist/enricher/describe.js +175 -0
  142. package/dist/enricher/describe.js.map +1 -0
  143. package/dist/enricher/failure.d.ts +25 -0
  144. package/dist/enricher/failure.d.ts.map +1 -0
  145. package/dist/enricher/failure.js +46 -0
  146. package/dist/enricher/failure.js.map +1 -0
  147. package/dist/enricher/index.d.ts +22 -0
  148. package/dist/enricher/index.d.ts.map +1 -0
  149. package/dist/enricher/index.js +22 -0
  150. package/dist/enricher/index.js.map +1 -0
  151. package/dist/enricher/jaccard.d.ts +11 -0
  152. package/dist/enricher/jaccard.d.ts.map +1 -0
  153. package/dist/enricher/jaccard.js +29 -0
  154. package/dist/enricher/jaccard.js.map +1 -0
  155. package/dist/enricher/loop.d.ts +22 -0
  156. package/dist/enricher/loop.d.ts.map +1 -0
  157. package/dist/enricher/loop.js +34 -0
  158. package/dist/enricher/loop.js.map +1 -0
  159. package/dist/enricher/meaningful-change.d.ts +28 -0
  160. package/dist/enricher/meaningful-change.d.ts.map +1 -0
  161. package/dist/enricher/meaningful-change.js +41 -0
  162. package/dist/enricher/meaningful-change.js.map +1 -0
  163. package/dist/enricher/observability.d.ts +22 -0
  164. package/dist/enricher/observability.d.ts.map +1 -0
  165. package/dist/enricher/observability.js +55 -0
  166. package/dist/enricher/observability.js.map +1 -0
  167. package/dist/enricher/pending-query.d.ts +35 -0
  168. package/dist/enricher/pending-query.d.ts.map +1 -0
  169. package/dist/enricher/pending-query.js +54 -0
  170. package/dist/enricher/pending-query.js.map +1 -0
  171. package/dist/enricher/sql-update.d.ts +7 -0
  172. package/dist/enricher/sql-update.d.ts.map +1 -0
  173. package/dist/enricher/sql-update.js +22 -0
  174. package/dist/enricher/sql-update.js.map +1 -0
  175. package/dist/enricher/store-adapter.d.ts +98 -0
  176. package/dist/enricher/store-adapter.d.ts.map +1 -0
  177. package/dist/enricher/store-adapter.js +129 -0
  178. package/dist/enricher/store-adapter.js.map +1 -0
  179. package/dist/enricher/store.d.ts +58 -0
  180. package/dist/enricher/store.d.ts.map +1 -0
  181. package/dist/enricher/store.js +126 -0
  182. package/dist/enricher/store.js.map +1 -0
  183. package/dist/enricher/tokenize.d.ts +10 -0
  184. package/dist/enricher/tokenize.d.ts.map +1 -0
  185. package/dist/enricher/tokenize.js +28 -0
  186. package/dist/enricher/tokenize.js.map +1 -0
  187. package/dist/errors.d.ts +41 -0
  188. package/dist/errors.d.ts.map +1 -0
  189. package/dist/errors.js +56 -0
  190. package/dist/errors.js.map +1 -0
  191. package/dist/health.d.ts +147 -0
  192. package/dist/health.d.ts.map +1 -0
  193. package/dist/health.js +168 -0
  194. package/dist/health.js.map +1 -0
  195. package/dist/hive-graph/deeplake-credentials.d.ts +68 -0
  196. package/dist/hive-graph/deeplake-credentials.d.ts.map +1 -0
  197. package/dist/hive-graph/deeplake-credentials.js +135 -0
  198. package/dist/hive-graph/deeplake-credentials.js.map +1 -0
  199. package/dist/hive-graph/deeplake-heal.d.ts +63 -0
  200. package/dist/hive-graph/deeplake-heal.d.ts.map +1 -0
  201. package/dist/hive-graph/deeplake-heal.js +118 -0
  202. package/dist/hive-graph/deeplake-heal.js.map +1 -0
  203. package/dist/hive-graph/deeplake-store.d.ts +199 -0
  204. package/dist/hive-graph/deeplake-store.d.ts.map +1 -0
  205. package/dist/hive-graph/deeplake-store.js +541 -0
  206. package/dist/hive-graph/deeplake-store.js.map +1 -0
  207. package/dist/hive-graph/deeplake-transport.d.ts +89 -0
  208. package/dist/hive-graph/deeplake-transport.d.ts.map +1 -0
  209. package/dist/hive-graph/deeplake-transport.js +145 -0
  210. package/dist/hive-graph/deeplake-transport.js.map +1 -0
  211. package/dist/hive-graph/hash.d.ts +3 -0
  212. package/dist/hive-graph/hash.d.ts.map +1 -0
  213. package/dist/hive-graph/hash.js +12 -0
  214. package/dist/hive-graph/hash.js.map +1 -0
  215. package/dist/hive-graph/memory-store.d.ts +39 -0
  216. package/dist/hive-graph/memory-store.d.ts.map +1 -0
  217. package/dist/hive-graph/memory-store.js +125 -0
  218. package/dist/hive-graph/memory-store.js.map +1 -0
  219. package/dist/hive-graph/model.d.ts +109 -0
  220. package/dist/hive-graph/model.d.ts.map +1 -0
  221. package/dist/hive-graph/model.js +36 -0
  222. package/dist/hive-graph/model.js.map +1 -0
  223. package/dist/hive-graph/paths.d.ts +7 -0
  224. package/dist/hive-graph/paths.d.ts.map +1 -0
  225. package/dist/hive-graph/paths.js +26 -0
  226. package/dist/hive-graph/paths.js.map +1 -0
  227. package/dist/hive-graph/project-scope.d.ts +99 -0
  228. package/dist/hive-graph/project-scope.d.ts.map +1 -0
  229. package/dist/hive-graph/project-scope.js +286 -0
  230. package/dist/hive-graph/project-scope.js.map +1 -0
  231. package/dist/hive-graph/schema.d.ts +53 -0
  232. package/dist/hive-graph/schema.d.ts.map +1 -0
  233. package/dist/hive-graph/schema.js +139 -0
  234. package/dist/hive-graph/schema.js.map +1 -0
  235. package/dist/hive-graph/search-types.d.ts +82 -0
  236. package/dist/hive-graph/search-types.d.ts.map +1 -0
  237. package/dist/hive-graph/search-types.js +2 -0
  238. package/dist/hive-graph/search-types.js.map +1 -0
  239. package/dist/hive-graph/search.d.ts +51 -0
  240. package/dist/hive-graph/search.d.ts.map +1 -0
  241. package/dist/hive-graph/search.js +417 -0
  242. package/dist/hive-graph/search.js.map +1 -0
  243. package/dist/hive-graph/sql-guards.d.ts +99 -0
  244. package/dist/hive-graph/sql-guards.d.ts.map +1 -0
  245. package/dist/hive-graph/sql-guards.js +129 -0
  246. package/dist/hive-graph/sql-guards.js.map +1 -0
  247. package/dist/hive-graph/store.d.ts +151 -0
  248. package/dist/hive-graph/store.d.ts.map +1 -0
  249. package/dist/hive-graph/store.js +2 -0
  250. package/dist/hive-graph/store.js.map +1 -0
  251. package/dist/hive-graph/ulid.d.ts +14 -0
  252. package/dist/hive-graph/ulid.d.ts.map +1 -0
  253. package/dist/hive-graph/ulid.js +109 -0
  254. package/dist/hive-graph/ulid.js.map +1 -0
  255. package/dist/hivedoctor-registry.d.ts +111 -0
  256. package/dist/hivedoctor-registry.d.ts.map +1 -0
  257. package/dist/hivedoctor-registry.js +143 -0
  258. package/dist/hivedoctor-registry.js.map +1 -0
  259. package/dist/index.d.ts +106 -0
  260. package/dist/index.d.ts.map +1 -0
  261. package/dist/index.js +78 -0
  262. package/dist/index.js.map +1 -0
  263. package/dist/lock.d.ts +66 -0
  264. package/dist/lock.d.ts.map +1 -0
  265. package/dist/lock.js +282 -0
  266. package/dist/lock.js.map +1 -0
  267. package/dist/poll-loop.d.ts +71 -0
  268. package/dist/poll-loop.d.ts.map +1 -0
  269. package/dist/poll-loop.js +130 -0
  270. package/dist/poll-loop.js.map +1 -0
  271. package/dist/portkey/config.d.ts +46 -0
  272. package/dist/portkey/config.d.ts.map +1 -0
  273. package/dist/portkey/config.js +68 -0
  274. package/dist/portkey/config.js.map +1 -0
  275. package/dist/portkey/describe-model.d.ts +53 -0
  276. package/dist/portkey/describe-model.d.ts.map +1 -0
  277. package/dist/portkey/describe-model.js +56 -0
  278. package/dist/portkey/describe-model.js.map +1 -0
  279. package/dist/portkey/headers.d.ts +31 -0
  280. package/dist/portkey/headers.d.ts.map +1 -0
  281. package/dist/portkey/headers.js +37 -0
  282. package/dist/portkey/headers.js.map +1 -0
  283. package/dist/portkey/transport.d.ts +89 -0
  284. package/dist/portkey/transport.d.ts.map +1 -0
  285. package/dist/portkey/transport.js +167 -0
  286. package/dist/portkey/transport.js.map +1 -0
  287. package/dist/projection/format.d.ts +51 -0
  288. package/dist/projection/format.d.ts.map +1 -0
  289. package/dist/projection/format.js +81 -0
  290. package/dist/projection/format.js.map +1 -0
  291. package/dist/projection/generate.d.ts +31 -0
  292. package/dist/projection/generate.d.ts.map +1 -0
  293. package/dist/projection/generate.js +83 -0
  294. package/dist/projection/generate.js.map +1 -0
  295. package/dist/projection/inherit.d.ts +27 -0
  296. package/dist/projection/inherit.d.ts.map +1 -0
  297. package/dist/projection/inherit.js +128 -0
  298. package/dist/projection/inherit.js.map +1 -0
  299. package/dist/projection/load.d.ts +47 -0
  300. package/dist/projection/load.d.ts.map +1 -0
  301. package/dist/projection/load.js +258 -0
  302. package/dist/projection/load.js.map +1 -0
  303. package/dist/projection/store-adapter.d.ts +42 -0
  304. package/dist/projection/store-adapter.d.ts.map +1 -0
  305. package/dist/projection/store-adapter.js +42 -0
  306. package/dist/projection/store-adapter.js.map +1 -0
  307. package/dist/projection/write.d.ts +79 -0
  308. package/dist/projection/write.d.ts.map +1 -0
  309. package/dist/projection/write.js +122 -0
  310. package/dist/projection/write.js.map +1 -0
  311. package/dist/registration/classify.d.ts +33 -0
  312. package/dist/registration/classify.d.ts.map +1 -0
  313. package/dist/registration/classify.js +32 -0
  314. package/dist/registration/classify.js.map +1 -0
  315. package/dist/registration/copy-detect.d.ts +22 -0
  316. package/dist/registration/copy-detect.d.ts.map +1 -0
  317. package/dist/registration/copy-detect.js +12 -0
  318. package/dist/registration/copy-detect.js.map +1 -0
  319. package/dist/registration/disk-fs.d.ts +41 -0
  320. package/dist/registration/disk-fs.d.ts.map +1 -0
  321. package/dist/registration/disk-fs.js +175 -0
  322. package/dist/registration/disk-fs.js.map +1 -0
  323. package/dist/registration/fs-watch.d.ts +114 -0
  324. package/dist/registration/fs-watch.d.ts.map +1 -0
  325. package/dist/registration/fs-watch.js +266 -0
  326. package/dist/registration/fs-watch.js.map +1 -0
  327. package/dist/registration/ignore.d.ts +77 -0
  328. package/dist/registration/ignore.d.ts.map +1 -0
  329. package/dist/registration/ignore.js +249 -0
  330. package/dist/registration/ignore.js.map +1 -0
  331. package/dist/registration/ladder.d.ts +211 -0
  332. package/dist/registration/ladder.d.ts.map +1 -0
  333. package/dist/registration/ladder.js +378 -0
  334. package/dist/registration/ladder.js.map +1 -0
  335. package/dist/registration/paths-safe.d.ts +21 -0
  336. package/dist/registration/paths-safe.d.ts.map +1 -0
  337. package/dist/registration/paths-safe.js +88 -0
  338. package/dist/registration/paths-safe.js.map +1 -0
  339. package/dist/registration/prune-cli.d.ts +48 -0
  340. package/dist/registration/prune-cli.d.ts.map +1 -0
  341. package/dist/registration/prune-cli.js +57 -0
  342. package/dist/registration/prune-cli.js.map +1 -0
  343. package/dist/registration/review-cli.d.ts +42 -0
  344. package/dist/registration/review-cli.d.ts.map +1 -0
  345. package/dist/registration/review-cli.js +110 -0
  346. package/dist/registration/review-cli.js.map +1 -0
  347. package/dist/registration/review-store.d.ts +73 -0
  348. package/dist/registration/review-store.d.ts.map +1 -0
  349. package/dist/registration/review-store.js +243 -0
  350. package/dist/registration/review-store.js.map +1 -0
  351. package/dist/registration/service.d.ts +196 -0
  352. package/dist/registration/service.d.ts.map +1 -0
  353. package/dist/registration/service.js +384 -0
  354. package/dist/registration/service.js.map +1 -0
  355. package/dist/registration/store-bridge.d.ts +133 -0
  356. package/dist/registration/store-bridge.d.ts.map +1 -0
  357. package/dist/registration/store-bridge.js +159 -0
  358. package/dist/registration/store-bridge.js.map +1 -0
  359. package/dist/registration/tlsh.d.ts +125 -0
  360. package/dist/registration/tlsh.d.ts.map +1 -0
  361. package/dist/registration/tlsh.js +274 -0
  362. package/dist/registration/tlsh.js.map +1 -0
  363. package/dist/server.d.ts +26 -0
  364. package/dist/server.d.ts.map +1 -0
  365. package/dist/server.js +156 -0
  366. package/dist/server.js.map +1 -0
  367. package/dist/service/argv.d.ts +52 -0
  368. package/dist/service/argv.d.ts.map +1 -0
  369. package/dist/service/argv.js +127 -0
  370. package/dist/service/argv.js.map +1 -0
  371. package/dist/service/command-runner.d.ts +54 -0
  372. package/dist/service/command-runner.d.ts.map +1 -0
  373. package/dist/service/command-runner.js +55 -0
  374. package/dist/service/command-runner.js.map +1 -0
  375. package/dist/service/index.d.ts +83 -0
  376. package/dist/service/index.d.ts.map +1 -0
  377. package/dist/service/index.js +270 -0
  378. package/dist/service/index.js.map +1 -0
  379. package/dist/service/platform.d.ts +110 -0
  380. package/dist/service/platform.d.ts.map +1 -0
  381. package/dist/service/platform.js +157 -0
  382. package/dist/service/platform.js.map +1 -0
  383. package/dist/service/templates.d.ts +88 -0
  384. package/dist/service/templates.d.ts.map +1 -0
  385. package/dist/service/templates.js +212 -0
  386. package/dist/service/templates.js.map +1 -0
  387. package/dist/source-graph/deeplake-credentials.d.ts +57 -0
  388. package/dist/source-graph/deeplake-credentials.d.ts.map +1 -0
  389. package/dist/source-graph/deeplake-credentials.js +109 -0
  390. package/dist/source-graph/deeplake-credentials.js.map +1 -0
  391. package/dist/source-graph/deeplake-heal.d.ts +53 -0
  392. package/dist/source-graph/deeplake-heal.d.ts.map +1 -0
  393. package/dist/source-graph/deeplake-heal.js +41 -0
  394. package/dist/source-graph/deeplake-heal.js.map +1 -0
  395. package/dist/source-graph/deeplake-store.d.ts +151 -0
  396. package/dist/source-graph/deeplake-store.d.ts.map +1 -0
  397. package/dist/source-graph/deeplake-store.js +389 -0
  398. package/dist/source-graph/deeplake-store.js.map +1 -0
  399. package/dist/source-graph/deeplake-transport.d.ts +74 -0
  400. package/dist/source-graph/deeplake-transport.d.ts.map +1 -0
  401. package/dist/source-graph/deeplake-transport.js +107 -0
  402. package/dist/source-graph/deeplake-transport.js.map +1 -0
  403. package/dist/source-graph/hash.d.ts +3 -0
  404. package/dist/source-graph/hash.d.ts.map +1 -0
  405. package/dist/source-graph/hash.js +12 -0
  406. package/dist/source-graph/hash.js.map +1 -0
  407. package/dist/source-graph/memory-store.d.ts +32 -0
  408. package/dist/source-graph/memory-store.d.ts.map +1 -0
  409. package/dist/source-graph/memory-store.js +81 -0
  410. package/dist/source-graph/memory-store.js.map +1 -0
  411. package/dist/source-graph/model.d.ts +102 -0
  412. package/dist/source-graph/model.d.ts.map +1 -0
  413. package/dist/source-graph/model.js +36 -0
  414. package/dist/source-graph/model.js.map +1 -0
  415. package/dist/source-graph/paths.d.ts +7 -0
  416. package/dist/source-graph/paths.d.ts.map +1 -0
  417. package/dist/source-graph/paths.js +26 -0
  418. package/dist/source-graph/paths.js.map +1 -0
  419. package/dist/source-graph/schema.d.ts +44 -0
  420. package/dist/source-graph/schema.d.ts.map +1 -0
  421. package/dist/source-graph/schema.js +123 -0
  422. package/dist/source-graph/schema.js.map +1 -0
  423. package/dist/source-graph/sql-guards.d.ts +99 -0
  424. package/dist/source-graph/sql-guards.d.ts.map +1 -0
  425. package/dist/source-graph/sql-guards.js +129 -0
  426. package/dist/source-graph/sql-guards.js.map +1 -0
  427. package/dist/source-graph/store.d.ts +101 -0
  428. package/dist/source-graph/store.d.ts.map +1 -0
  429. package/dist/source-graph/store.js +2 -0
  430. package/dist/source-graph/store.js.map +1 -0
  431. package/dist/source-graph/ulid.d.ts +9 -0
  432. package/dist/source-graph/ulid.d.ts.map +1 -0
  433. package/dist/source-graph/ulid.js +61 -0
  434. package/dist/source-graph/ulid.js.map +1 -0
  435. package/dist/telemetry/checkin.d.ts +66 -0
  436. package/dist/telemetry/checkin.d.ts.map +1 -0
  437. package/dist/telemetry/checkin.js +142 -0
  438. package/dist/telemetry/checkin.js.map +1 -0
  439. package/dist/telemetry/db.d.ts +34 -0
  440. package/dist/telemetry/db.d.ts.map +1 -0
  441. package/dist/telemetry/db.js +122 -0
  442. package/dist/telemetry/db.js.map +1 -0
  443. package/dist/telemetry/index.d.ts +76 -0
  444. package/dist/telemetry/index.d.ts.map +1 -0
  445. package/dist/telemetry/index.js +98 -0
  446. package/dist/telemetry/index.js.map +1 -0
  447. package/dist/telemetry/logs.d.ts +83 -0
  448. package/dist/telemetry/logs.d.ts.map +1 -0
  449. package/dist/telemetry/logs.js +110 -0
  450. package/dist/telemetry/logs.js.map +1 -0
  451. package/dist/telemetry/metrics.d.ts +82 -0
  452. package/dist/telemetry/metrics.d.ts.map +1 -0
  453. package/dist/telemetry/metrics.js +148 -0
  454. package/dist/telemetry/metrics.js.map +1 -0
  455. package/dist/telemetry-usage/emit.d.ts +105 -0
  456. package/dist/telemetry-usage/emit.d.ts.map +1 -0
  457. package/dist/telemetry-usage/emit.js +267 -0
  458. package/dist/telemetry-usage/emit.js.map +1 -0
  459. package/dist/telemetry-usage/posthog-key.d.ts +22 -0
  460. package/dist/telemetry-usage/posthog-key.d.ts.map +1 -0
  461. package/dist/telemetry-usage/posthog-key.js +22 -0
  462. package/dist/telemetry-usage/posthog-key.js.map +1 -0
  463. package/dist/worker.d.ts +69 -0
  464. package/dist/worker.d.ts.map +1 -0
  465. package/dist/worker.js +91 -0
  466. package/dist/worker.js.map +1 -0
  467. package/package.json +44 -0
package/README.md ADDED
@@ -0,0 +1,307 @@
1
+ <!-- ─────────────────────────────── HERO ─────────────────────────────── -->
2
+
3
+ <p align="center">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: dark)" srcset="assets/brand/nectar-wordmark-on-dark.svg">
6
+ <img src="assets/brand/nectar-wordmark-black.svg" alt="Nectar" height="84">
7
+ </picture>
8
+ </p>
9
+
10
+ <h1 align="center">Nectar</h1>
11
+
12
+ <p align="center">
13
+ <strong>Every file in your repo gets a stable identity and a meaning your agents can recall.</strong>
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="https://www.npmjs.com/package/@legioncodeinc/nectar"><img src="https://img.shields.io/npm/v/@legioncodeinc/nectar?style=flat-square&color=FFD048&label=version" alt="npm version"></a>
18
+ <img src="https://img.shields.io/badge/harnesses-6-FFD048?style=flat-square" alt="6 harnesses">
19
+ <img src="https://img.shields.io/badge/OS-windows%20%7C%20macos%20%7C%20linux-6E6A62?style=flat-square" alt="Windows, macOS, Linux">
20
+ </p>
21
+
22
+ <p align="center">
23
+ <a href="https://linktr.ee/marioaldayuz"><img src="https://img.shields.io/badge/designed%20by-Mario%20Aldayuz-8B7CF0?style=flat-square" alt="Designed by Mario Aldayuz"></a>
24
+ <a href="https://www.legioncodeinc.com"><img src="https://img.shields.io/badge/built%20by-Legion%20Code%20Inc.-111111?style=flat-square" alt="Built by Legion Code Inc."></a>
25
+ <a href="https://deeplake.ai"><img src="https://img.shields.io/badge/powered%20by-Deeplake-ff5a1f?style=flat-square" alt="Powered by Deeplake"></a>
26
+ </p>
27
+
28
+ <p align="center">
29
+ <a href="https://github.com/legioncodeinc/nectar"><img src="https://img.shields.io/github/stars/legioncodeinc/nectar?style=flat-square&color=FFD048" alt="GitHub stars"></a>
30
+ <a href="https://discord.gg/GX95YTQypQ"><img src="https://img.shields.io/badge/discord-find%20us-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a>
31
+ </p>
32
+
33
+ <!-- ────────────────────────────── PARTNERS ────────────────────────────── -->
34
+
35
+ <p align="center">
36
+ <a href="https://github.com/legioncodeinc">
37
+ <picture>
38
+ <source media="(prefers-color-scheme: dark)" srcset="assets/brand/legion-logo-dark.svg">
39
+ <img src="assets/brand/legion-logo-light.svg" alt="Legion Code" height="34">
40
+ </picture>
41
+ </a>
42
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
43
+ <a href="https://github.com/activeloopai">
44
+ <picture>
45
+ <source media="(prefers-color-scheme: dark)" srcset="assets/brand/activeloop-full-mark-logo-on-dark.svg">
46
+ <img src="assets/brand/activeloop-full-mark-logo.svg" alt="Activeloop" height="26">
47
+ </picture>
48
+ </a>
49
+ </p>
50
+
51
+ <p align="center"><em>A <a href="https://github.com/legioncodeinc">Legion Code Inc.</a> × <a href="https://github.com/activeloopai">Activeloop</a> collaboration.</em></p>
52
+
53
+ <img src="assets/brand/divider-major.svg" width="100%" height="6">
54
+
55
+ Files get renamed and agents lose the thread. You refactor, a file moves three directories over, and every memory keyed to its old path is dead weight. Grep finds strings, not meaning, so *"where is the login logic"* comes back empty when the file is called `session-refresh.ts`. **Nectar fixes that.** The daemon mints every file a stable 26-character identity (a *nectar*) plus an LLM-minted description of what the file is for, then tracks that identity through renames, moves, edits, and copy-paste. Ask *"what is this file and why does it exist"* and get an answer. Ask *"everything associated with logins"* and get files scattered across directories that are not named `login-*`. Recall that keys off paths breaks on every refactor; recall that keys off identity does not break at all.
56
+
57
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
58
+
59
+ > **New here?** One command and you're on a dashboard. [Jump to Install](#-install-one-command). · **Want the docs?** Everything lives at **[theapiary.sh](https://theapiary.sh)**.
60
+
61
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
62
+
63
+ <table>
64
+ <tr>
65
+ <td width="50%" valign="top">
66
+
67
+ #### 🛹 For AI Augmented Devs
68
+ Your agents finally know what every file *means*, not just what it's named. Rename it, move it, gut it and rewrite half of it: the identity and the description follow the file, so recall keeps working after every refactor instead of quietly going stale.
69
+
70
+ </td>
71
+ <td width="50%" valign="top">
72
+
73
+ #### 🏢 For Enterprise Teams
74
+ Provenance-tracked file identity across repos and teams. Every file's history chain is append-only and auditable: when it was minted, where it moved, what it was forked from, and who described it. A fresh clone inherits the whole thing from a committed projection.
75
+
76
+ </td>
77
+ </tr>
78
+ </table>
79
+
80
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
81
+
82
+ ## ✨ What makes Nectar different
83
+
84
+ - **Identity never lives in your source.** No serial numbers in comments, no sidecar files bolted next to your code. [ADR-0001](library/knowledge/private/architecture/ADR-0001-minted-nectar-over-source-embedded-serial.md) kills that idea for four concrete reasons; read it before arguing about serials-in-source.
85
+ - **Daemon-minted ULIDs.** A nectar is a 26-character ULID minted once by the daemon and persisted in Deeplake. It is not derived from content, so edits don't churn it. It is not derived from path, so moves don't kill it.
86
+ - **The re-association ladder.** Five steps, first match wins: path/mtime/size fast path, path match with changed content, exact content-hash match for clean moves, TLSH fuzzy match for move-and-edit, mint fresh. Low-confidence fuzzy matches go to human review, never auto-claimed, because a mis-association corrupts the history chain.
87
+ - **Copy-paste as provenance, not ambiguity.** Copy a file and the copy gets a fresh nectar with a `derived_from_nectar` edge back to the original. The fork relationship survives forever, even after the copy diverges.
88
+ - **A committed lockfile, not a sidecar.** `.honeycomb/nectars.json` is a regenerable projection of Deeplake state. A fresh clone re-derives identity from it with zero LLM calls and zero network.
89
+ - **Hybrid recall you can run today.** `nectar search` runs a per-arm guarded lexical + vector query over described files, fused by Reciprocal Rank Fusion. Folding those hits into Honeycomb's cross-memory recall as a 4th arm alongside sessions, memories, and skills is future work (PRD-013, out of repo).
90
+
91
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
92
+
93
+ ## 🍯 Features
94
+
95
+ - 🪪 **Stable file identity.** 26-char ULID per file, minted by the daemon, never reused, never deleted by the ladder. *(registration protocol shipped, PRD-006)*
96
+ - 🪜 **5-step re-association ladder.** Survives renames, moves, offline edits, and cold catch-up after your laptop was closed. TLSH fuzzy matching with a confidence-scored review surface. *(mechanics implemented and tested; durable-store wiring lands with daemon integration)*
97
+ - 🧬 **Copy-paste provenance.** `derived_from_nectar` + `fork_content_hash` record every fork as a first-class edge.
98
+ - 🗄️ **Two Deeplake tables.** `hive_graph` (one row per logical file) + append-only `hive_graph_versions` (one row per observed state, carrying 768-dim embeddings). *(shipped, PRD-005)*
99
+ - 🛡️ **Supervised daemon.** `nectar daemon` binds `127.0.0.1:3854`, serves `/health`, registers with Doctor, and installs as an OS service on launchd, systemd, and Windows. *(shipped, PRD-002/003/004)*
100
+ - ✍️ **LLM-minted descriptions.** Lazy, batched, cheap: a long-context model describes files on demand, not eagerly, so a full pass on a 2000-file repo lands at about $3.05 and a committed projection makes every subsequent clone free. *(shipped, PRD-007/010/016)*
101
+ - 🔒 **Portable projection.** `.honeycomb/nectars.json`, regenerated from Deeplake after every brood and enrich. *(shipped, PRD-011)*
102
+ - 🔀 **Hybrid recall.** `nectar search` (and `POST /api/hive-graph/search`) run a per-arm guarded lexical + vector query over described files, fused by Reciprocal Rank Fusion, with a silent BM25 fallback when embeddings are off. Folding these hits into Honeycomb's cross-memory recall as a 4th arm is future work (PRD-013, out of repo). *(search shipped, PRD-012)*
103
+
104
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
105
+
106
+ ## 🚀 Install (one command)
107
+
108
+ No Node? No npm? No problem. The installer detects and sets up everything, then **opens a dashboard in your browser**. The terminal is just a progress log; the product is the first thing you touch.
109
+
110
+ ```bash
111
+ # macOS / Linux
112
+ curl -fsSL https://get.theapiary.sh | sh
113
+ ```
114
+
115
+ ```powershell
116
+ # Windows (PowerShell)
117
+ irm https://get.theapiary.sh/install.ps1 | iex
118
+ ```
119
+
120
+ That single line installs the Apiary stack and brings the **nectar daemon** up on `127.0.0.1:3854`, supervised by Doctor so it survives crashes and reboots without you thinking about it.
121
+
122
+ <details>
123
+ <summary><strong>Prefer to build from source?</strong></summary>
124
+
125
+ ```bash
126
+ git clone https://github.com/legioncodeinc/nectar.git
127
+ cd nectar
128
+ npm install
129
+ npm run build # tsc → dist/
130
+
131
+ npm start # start the daemon (node dist/cli.js daemon)
132
+ node dist/cli.js install # register the OS service unit + the Doctor registry entry
133
+ ```
134
+
135
+ Requires Node ≥ 22. `npm run typecheck` and `npm test` are the local gates.
136
+
137
+ </details>
138
+
139
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
140
+
141
+ ## 🖥️ Using the dashboard
142
+
143
+ <!-- screenshot pending: drop nectar dashboard capture into assets/screenshots/dashboard.png -->
144
+ <img src="assets/screenshots/dashboard.png" alt="Nectar dashboard" width="100%">
145
+
146
+ Straight talk: Nectar does not ship its own dashboard, and that is by design. The always-on **hive portal** owns the unified dashboard for the whole Apiary and aggregates from each daemon's API, fail-soft per daemon ([ADR-0004](library/knowledge/private/architecture/ADR-0004-hive-portal-daemon-role-and-boundaries.md)). The **Hive Graph page** (PRD-015, spec stage) renders your file graph, identity search, and brood status by fetching Nectar's `/api/hive-graph/*` endpoints through the portal. If the Nectar daemon is down, that page degrades gracefully instead of taking the whole dashboard with it.
147
+
148
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
149
+
150
+ ## ⌨️ Using the CLI
151
+
152
+ The `nectar` binary ships with the package. What works today:
153
+
154
+ ```bash
155
+ nectar daemon # start the daemon (127.0.0.1:3854, /health)
156
+ nectar install # register the OS service unit + Doctor registry entry
157
+ nectar uninstall # deregister the OS service unit
158
+ nectar service-status # report the OS service unit's running state
159
+ nectar brood --dry-run # preview a full-codebase brood's cost locally (no LLM call, no writes)
160
+ nectar brood # run a full-codebase brood against Deeplake (needs the prerequisites below)
161
+ nectar search <query> # hybrid recall over described files. Flags: --limit N, --json
162
+ nectar rebuild-projection # regenerate .honeycomb/nectars.json from Deeplake
163
+ nectar prune --confirm # prune long-missing nectars from the durable store
164
+ nectar review-matches # review low-confidence identity matches against the durable store
165
+ nectar --help
166
+ ```
167
+
168
+ `nectar search` reaches a running `nectar daemon` over loopback, so start the daemon first.
169
+
170
+ ### Brood prerequisites
171
+
172
+ A mutating `nectar brood` (and the boot auto-brood) describes files only when **both** prerequisites are in place:
173
+
174
+ - `~/.deeplake/credentials.json`, the shared Deeplake credentials `hivemind login` writes.
175
+ - Portkey, enabled via `NECTAR_PORTKEY_ENABLED=1`, `NECTAR_PORTKEY_API_KEY`, and `NECTAR_PORTKEY_CONFIG`.
176
+
177
+ Without them the daemon still boots and serves `/health`, but brooding stays dormant and says so: a startup log line names the missing pieces, `/health` reports `brooding.reason` (for example `credentials_missing` or `portkey_disabled`), and on an interactive terminal the daemon prints the exact configuration steps. `nectar brood --dry-run` and `nectar search` do not need Portkey.
178
+
179
+ ### Telemetry
180
+
181
+ Nectar sends anonymous, aggregate usage telemetry (install, first run, and version updates) by default, never file contents or paths. Opt out with `NECTAR_TELEMETRY=0` (it also accepts `off` and `false`, case-insensitive) or the cross-tool `DO_NOT_TRACK` standard.
182
+
183
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
184
+
185
+ ## 🐝 Identity that survives the refactor
186
+
187
+ ```bash
188
+ # The daemon minted src/auth/session-refresh.ts a nectar and described it.
189
+ # Now gut your directory structure:
190
+ git mv src/auth/session-refresh.ts src/middleware/token-lifecycle.ts
191
+
192
+ # …then ask recall about it:
193
+ nectar search "where do we refresh login sessions"
194
+ # → src/middleware/token-lifecycle.ts
195
+ # "refreshes JWT claims on each authenticated request,
196
+ # part of the login session lifecycle"
197
+ ```
198
+
199
+ Same nectar, same description, new path. The identity followed the file, so the memory never went stale. `nectar search` runs the recall over described files today; folding it into your agent's cross-memory recall as a 4th arm is future work (PRD-013).
200
+
201
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
202
+
203
+ ## 🏗️ How it works
204
+
205
+ ```mermaid
206
+ flowchart TD
207
+ W["watcher + hiveantennae daemon<br/>127.0.0.1:3854"] --> M["mint 26-char ULID<br/>+ LLM-minted description"]
208
+ W --> L["re-association ladder<br/>path/mtime/size → hash → TLSH → mint"]
209
+ M --> DL["Deeplake<br/>hive_graph + hive_graph_versions<br/>768-dim embeddings, append-only history"]
210
+ L --> DL
211
+ DL --> P[".honeycomb/nectars.json<br/>committed projection (lockfile)"]
212
+ DL --> R["Honeycomb hybrid recall<br/>4th arm · BM25 + vector · RRF"]
213
+ ```
214
+
215
+ The daemon watches your source tree. New file: mint a nectar, queue a description. Known file: run the ladder, append a version row, keep the chain. Everything durable lands in Deeplake first; the projection is regenerated from it after every pass; recall unions over the described files alongside sessions, memories, and skills.
216
+
217
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
218
+
219
+ ## 🧭 Why identity beats paths
220
+
221
+ Path-keyed memory is a bet that your repo never changes shape. That bet loses every single sprint. Every rename orphans a memory, every directory reshuffle silently detonates the recall your agents depend on, and nobody notices until an agent confidently cites a file that has not existed for three weeks.
222
+
223
+ Stable identity flips the failure mode. The nectar is the anchor; the path is just the latest observation attached to it. The file can move, get edited offline, or get forked into a new module, and the daemon re-associates it and keeps writing to the same history chain. Memory attached to identity does not rot when the tree churns.
224
+
225
+ Meaning is the other half. Structural tools can tell you a symbol named `authenticate` exists; they cannot tell you that `session-refresh.ts` is a critical piece of login behavior. An LLM-minted description per file gives your agents the *what is this for* layer that grep and AST graphs structurally cannot provide. Identity keeps the answer alive; meaning makes it worth recalling.
226
+
227
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
228
+
229
+ ## 💎 Why Deeplake makes the difference
230
+
231
+ Most code-indexing tools bolt onto a vector-only store, which forces every access pattern through a similarity engine. Nectar needs exact identity joins **and** semantic search, and [**Deeplake**](https://deeplake.ai), the database for AI, gives it both natively:
232
+
233
+ - **SQL + vector in one engine.** "Latest version row for this nectar" is a deterministic SQL join; "files that mean login" is a vector search over 768-dim embeddings. One store serves both. No second database, no sync problem, no sidecar.
234
+ - **Versioned and append-only.** `hive_graph_versions` never overwrites: every observed state of every file stays on disk. That is what makes re-association *auditable*: you can trace exactly when a nectar was carried across a move, at what confidence, and what the file looked like on both sides.
235
+ - **Identity table + versions table, cleanly split.** `hive_graph` anchors the stable key; `hive_graph_versions` carries the history. Collapsing them forces you to lose either history or the stable key. Deeplake makes the split cheap.
236
+ - **Graceful degradation.** Embeddings off? The embedding column stays NULL and recall falls back to BM25 over titles and descriptions. No error, no quality cliff.
237
+
238
+ > Nectar stands on the same two shoulders as the rest of the Apiary: **[Deeplake](https://deeplake.ai)** gives identity somewhere durable and queryable to live, and **[Hivemind](https://github.com/activeloopai/hivemind)**, Activeloop's open-source agent-memory project, is the foundation Legion Code extended into Honeycomb.
239
+
240
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
241
+
242
+ ## 🔌 Supported harnesses
243
+
244
+ Nectar's file identity and descriptions reach every harness through Honeycomb's recall integration: same daemon boundary, same shared memory, no per-harness wiring of its own.
245
+
246
+ | | | |
247
+ |---|---|---|
248
+ | **Claude Code** | **Cursor** | **Codex** |
249
+ | **Hermes** | **pi** | **OpenClaw** |
250
+
251
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
252
+
253
+ ## 🎛️ Other interfaces
254
+
255
+ - **Dashboard.** The hive portal's Hive Graph page (PRD-015, spec stage), fed by Nectar's `/api/hive-graph/*` endpoints (PRD-008). Nectar deliberately owns no dashboard of its own.
256
+ - **MCP server.** Nectar does not ship a separate MCP server; its results surface through Honeycomb's existing MCP recall tools once the recall arm (PRD-013) lands. One boundary, not two.
257
+ - **TypeScript SDK.** `@legioncodeinc/nectar` ships a typed `dist/index` entry today. It is early: the daemon and service lifecycle are the real surface right now, and the SDK grows as the API endpoints (PRD-008) land.
258
+
259
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
260
+
261
+ <h2 align="center"><a href="https://ideas.theapiary.sh">📍 Status & Roadmap</a></h2>
262
+
263
+ Nectar is **v0.0.1** with a PRD program in flight. Shipped: the daemon, health, single-instance lock, OS service install, Doctor supervision, the Deeplake catalog tables, and the file registration protocol (PRD-001 through 006). In work: the Portkey gateway, the portable projection, embeddings provider switching, and service check-in telemetry. Spec stage: brooding, the API endpoints, the recall arm, and the dashboard page. We document what's real and flag what isn't; the spec came before the code on purpose.
264
+
265
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
266
+
267
+ ## 🛠️ Development
268
+
269
+ ```bash
270
+ npm install
271
+ npm run build # tsc → dist/
272
+ npm run typecheck # tsc --noEmit
273
+ npm test # build + node --experimental-sqlite --test test/**/*.test.ts
274
+ npm run daemon # run the daemon from dist/
275
+ npm run clean # rm -rf dist
276
+ ```
277
+
278
+ Requires Node ≥ 22. Every change passes typecheck and the test suite before it lands.
279
+
280
+ <img src="assets/brand/divider-major.svg" width="100%" height="6">
281
+
282
+ ## 🙏 Credits
283
+
284
+ Nectar exists because two halves fit together:
285
+
286
+ - **[Activeloop](https://activeloop.ai/)** brings **[Deeplake](https://deeplake.ai/)** (the versioned, multi-modal database for AI with native vector + columnar indexing and hybrid search) and **[Hivemind](https://github.com/activeloopai/hivemind)**, the open-source agent-memory project Honeycomb is built upon.
287
+ - **[Legion Code Inc](https://github.com/legioncodeinc)** brings the **multi-tier memory system** (Tier 1 / 2 / 3 keys, summaries, raw), **code base atlas memory architecture**, **auto healing service**, **session priming**, **automatic skill development & propagation**, the **pollinating loop**, the **knowledge graph**, **cross device cross repository cross team skill sharing**, and the daemon architecture that turns Deeplake into a shared brain your coding agents read and write on every turn.
288
+
289
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
290
+
291
+ ## License
292
+
293
+ Nectar is licensed under the **GNU Affero General Public License v3.0 or later** ([AGPL-3.0-or-later](LICENSE.md)).
294
+
295
+ Use it commercially or privately, free of charge. In return: keep the copyright and license notices intact, and if you modify it, your changes ship under the same AGPL license with source available. The "Affero" part is the point: run a modified version as a network service and you owe its source to the users who interact with it. No locking a fork behind a SaaS wall.
296
+
297
+ © 2026 Legion Code Inc.
298
+
299
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
300
+
301
+ <p align="center">
302
+ <sub><strong>Built by <a href="https://github.com/legioncodeinc">Legion Code Inc</a></strong> · <strong>Powered by <a href="https://deeplake.ai/">Activeloop Deeplake</a></strong> · <strong><a href="https://theapiary.sh/">theapiary.sh</a></strong></sub>
303
+ </p>
304
+
305
+ <p align="center"><strong>I am Legion. We are Legion.</strong></p>
306
+
307
+ <p align="center">#vibewithlegion</p>
@@ -0,0 +1,72 @@
1
+ import { type EmbedProvider } from "../embeddings/provider.js";
2
+ import type { BroodGuard } from "../brood-guard.js";
3
+ import type { DescribeFn } from "../brooding/describe.js";
4
+ import type { GitLsFiles } from "../brooding/discovery.js";
5
+ import type { PackBatchesOptions } from "../brooding/bucketing.js";
6
+ import type { PipelineMetricsSink } from "../telemetry/metrics.js";
7
+ import type { MountHiveGraphOptions } from "./hive-graph-api.js";
8
+ import type { AsyncHiveGraphStore } from "../hive-graph/store.js";
9
+ import type { DeepLakeCredentials } from "../hive-graph/deeplake-credentials.js";
10
+ import type { Tenancy } from "../hive-graph/model.js";
11
+ import type { RegistrationFs } from "../registration/service.js";
12
+ import type { PortkeyRuntimeConfig } from "../portkey/config.js";
13
+ import type { PortkeyFetch } from "../portkey/transport.js";
14
+ /**
15
+ * The brood-wiring seam for the live `POST /api/hive-graph/build` endpoint. When
16
+ * {@link portkey} is enabled the build endpoint runs the real async brood
17
+ * (bridged by `runBroodAsync`); when it is disabled the brood mechanic is left
18
+ * unwired so the endpoint honestly answers 501 `build_unavailable`.
19
+ */
20
+ export interface DaemonBroodWiring {
21
+ /** Portkey creds. The live build path is wired only when `portkey.enabled`. */
22
+ readonly portkey: PortkeyRuntimeConfig;
23
+ /** Metrics sink so live brood writes move the PRD-017 counters (default: none). */
24
+ readonly metrics?: PipelineMetricsSink;
25
+ /** Filesystem seam (default: `createDiskRegistrationFs(projectRoot)`). Tests inject a fake. */
26
+ readonly fs?: RegistrationFs;
27
+ /** git-ls-files seam (default: spawns git). Tests inject a fake. */
28
+ readonly gitLsFiles?: GitLsFiles;
29
+ /** Test seam: inject the describe transport directly (bypasses the Portkey HTTP path). */
30
+ readonly describe?: DescribeFn;
31
+ /** Injectable fetch for the default Portkey describe transport (tests). */
32
+ readonly fetch?: PortkeyFetch;
33
+ /** Embedding provider (default: resolved from the embeddings config). */
34
+ readonly embedProvider?: EmbedProvider;
35
+ /** Dynamic batch-packing overrides (default: the decision #22 constants). */
36
+ readonly packOptions?: PackBatchesOptions;
37
+ }
38
+ /** The context the live daemon supplies to build its `/api/hive-graph` mechanics. */
39
+ export interface DaemonHiveGraphWiring {
40
+ readonly credentials: DeepLakeCredentials;
41
+ readonly tenancy: Tenancy;
42
+ readonly projectRoot: string;
43
+ readonly store: AsyncHiveGraphStore;
44
+ /** Reads the daemon's cumulative brood cost for the status endpoint (there is no durable cost table). */
45
+ readonly costSpentUsd: () => number;
46
+ /**
47
+ * The recall RRF multiplier loaded from `~/.honeycomb/nectar.json` (PRD-018k /
48
+ * NEC-041 AC-018k.7), threaded into the search engine's deps so the knob
49
+ * reaches the live recall path. Fusion does not yet weight by it (PRD-012a).
50
+ */
51
+ readonly recallMultiplier?: number;
52
+ /**
53
+ * Brood wiring for the live build endpoint. Absent, or present with Portkey
54
+ * disabled, keeps the endpoint at 501 `build_unavailable` (honest creds gate).
55
+ */
56
+ readonly brood?: DaemonBroodWiring;
57
+ /**
58
+ * The daemon's shared brood guard (PRD-018g / NEC-011 AC-018g.2) so the API
59
+ * `/build` handler and the boot auto-brood share one single-flight.
60
+ */
61
+ readonly broodGuard?: BroodGuard;
62
+ }
63
+ /**
64
+ * Build the {@link MountHiveGraphOptions} for the live daemon. Search delegates
65
+ * to the PRD-012a engine over a {@link StorageQuery} wrapping the daemon's Deep
66
+ * Lake transport (org/workspace ride the transport headers; `project_id` is in
67
+ * the SQL the engine builds), with the configured embed provider adapted to the
68
+ * engine's single-text {@link EmbedClient} contract. Status/projection are wired
69
+ * to the real fail-soft mechanics.
70
+ */
71
+ export declare function buildHiveGraphApiOptions(wiring: DaemonHiveGraphWiring): MountHiveGraphOptions;
72
+ //# sourceMappingURL=daemon-api-wiring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-api-wiring.d.ts","sourceRoot":"","sources":["../../src/api/daemon-api-wiring.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAUpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,KAAK,EAAa,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,mFAAmF;IACnF,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC3C;AAED,qFAAqF;AACrF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,yGAAyG;IACzG,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,CAqD7F"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Production wiring for the `/api/hive-graph` handlers (PRD-008b/008c).
3
+ *
4
+ * Builds the {@link MountHiveGraphOptions} the live `nectar daemon` mounts:
5
+ * the injected mechanics bound to the daemon's OWN store + embed deps, reaching
6
+ * Deep Lake solely through nectar's client (FR-6). This is where the daemon
7
+ * imports the PRD-012a engine (`searchHiveGraph`) — the DAEMON is the engine's
8
+ * client; the `nectar search` CLI stays a thin loopback client that never
9
+ * imports it (AC-012b.3.1).
10
+ *
11
+ * LIVE brood (the Wave D dormancy closure): `POST /api/hive-graph/build` now
12
+ * invokes {@link runBroodAsync} against the daemon's durable async store when a
13
+ * describe transport is wired (Portkey enabled). The sync/async split is bridged
14
+ * by `runBroodAsync` (`brooding/pipeline-async.ts`), the async-native twin of
15
+ * `runBrood`. When Portkey is NOT configured the brood mechanic is left unwired
16
+ * so the endpoint keeps answering a structured 501 `build_unavailable` (an
17
+ * LLM-less daemon genuinely cannot brood) - an honest creds-absent gate, never a
18
+ * silent success. The handler itself (in-flight guard, already-running 409,
19
+ * failure-as-data) is unchanged.
20
+ */
21
+ import { HttpDeepLakeTransport } from "../hive-graph/deeplake-transport.js";
22
+ import { searchHiveGraph } from "../hive-graph/search.js";
23
+ import { activeEmbedModelId, resolveEmbeddingsConfig } from "../embeddings/config.js";
24
+ import { resolveEmbedProvider } from "../embeddings/provider.js";
25
+ import { stderrDimRejectionSink } from "../embeddings/guard.js";
26
+ import { rebuildProjectionAsync, projectionFinalPath } from "../projection/write.js";
27
+ import { loadProjectionFromFile } from "../projection/load.js";
28
+ import { DEFAULT_PROJECTION_REL_PATH } from "../projection/format.js";
29
+ import { createDiskRegistrationFs } from "../registration/disk-fs.js";
30
+ import { runBroodAsync, } from "../brooding/pipeline-async.js";
31
+ import { wrapAsyncStoreWithMetrics } from "../telemetry/metrics.js";
32
+ import { readHiveGraphStatusOverStorage } from "./status-query.js";
33
+ /**
34
+ * Build the {@link MountHiveGraphOptions} for the live daemon. Search delegates
35
+ * to the PRD-012a engine over a {@link StorageQuery} wrapping the daemon's Deep
36
+ * Lake transport (org/workspace ride the transport headers; `project_id` is in
37
+ * the SQL the engine builds), with the configured embed provider adapted to the
38
+ * engine's single-text {@link EmbedClient} contract. Status/projection are wired
39
+ * to the real fail-soft mechanics.
40
+ */
41
+ export function buildHiveGraphApiOptions(wiring) {
42
+ const transport = new HttpDeepLakeTransport({
43
+ endpoint: wiring.credentials.apiUrl,
44
+ token: wiring.credentials.token,
45
+ orgId: wiring.credentials.orgId,
46
+ workspaceId: wiring.credentials.workspaceId,
47
+ });
48
+ const storage = { query: (sql) => transport.query(sql) };
49
+ const embeddingsConfig = resolveEmbeddingsConfig({});
50
+ // AC-018i.8: wire the stderr dim-rejection sink so a wrong-dimension vector is
51
+ // observable in production instead of silently nulled by the no-op default.
52
+ const embedProvider = resolveEmbedProvider(embeddingsConfig, { onDimRejected: stderrDimRejectionSink });
53
+ const activeEmbedModel = activeEmbedModelId(embeddingsConfig) ?? undefined;
54
+ // Adapt the batch EmbedProvider to the engine's single-text EmbedClient. When
55
+ // embeddings are off, omit the client entirely so the engine runs lexical-only.
56
+ const embed = embeddingsConfig.selector === "off"
57
+ ? undefined
58
+ : { embed: async (text) => (await embedProvider.embed([text]))[0] ?? null };
59
+ // AC-018i.3: mismatched-embed-model rows are excluded from the vector arm and
60
+ // requeued for re-embed so the index converges back to the active space.
61
+ const onReembedNeeded = (nectars) => {
62
+ void requeueReembed(wiring.store, wiring.tenancy, nectars).catch(() => {
63
+ // fail-soft: re-embed requeue is best-effort and never breaks a search.
64
+ });
65
+ };
66
+ const rrfMultiplierDep = wiring.recallMultiplier !== undefined ? { rrfMultiplier: wiring.recallMultiplier } : {};
67
+ const searchDeps = embed !== undefined
68
+ ? { storage, embed, ...(activeEmbedModel !== undefined ? { activeEmbedModel } : {}), onReembedNeeded, ...rrfMultiplierDep }
69
+ : { storage, ...rrfMultiplierDep };
70
+ const runBrood = resolveLiveBrood(wiring, embedProvider, activeEmbedModel ?? null);
71
+ return {
72
+ defaultScope: wiring.tenancy,
73
+ ...(wiring.broodGuard !== undefined ? { broodGuard: wiring.broodGuard } : {}),
74
+ searchHiveGraph: (query, scope, limit) => searchHiveGraph(query, scope, limit, searchDeps),
75
+ ...(runBrood !== undefined ? { runBrood } : {}),
76
+ readStatus: (scope) => readHiveGraphStatusOverStorage(storage, scope, { costSpentUsd: wiring.costSpentUsd() }),
77
+ readProjection: async (scope) => {
78
+ const path = projectionFinalPath(wiring.projectRoot, DEFAULT_PROJECTION_REL_PATH);
79
+ const result = loadProjectionFromFile(path, { tenancy: scope });
80
+ return result.ok ? result.doc : { present: false, reason: result.reason };
81
+ },
82
+ rebuildProjection: async (scope) => {
83
+ const { doc } = await rebuildProjectionAsync(wiring.store, scope, { projectRoot: wiring.projectRoot });
84
+ return { regenerated: true, nectarsCount: Object.keys(doc.files).length, generatedAt: doc.generated_at };
85
+ },
86
+ };
87
+ }
88
+ /**
89
+ * Build the live `runBrood` mechanic for the build endpoint, or `undefined` when
90
+ * no describe transport is configured (Portkey disabled / no brood wiring), in
91
+ * which case the endpoint stays at its honest 501 `build_unavailable`. When
92
+ * wired, each `/build` request runs {@link runBroodAsync} against the daemon's
93
+ * durable async store - wrapped with the telemetry metrics sink so the PRD-017
94
+ * counters move on the live path - scoped to the per-request tenancy.
95
+ */
96
+ function resolveLiveBrood(wiring, defaultEmbedProvider, embedModelId) {
97
+ const brood = wiring.brood;
98
+ if (brood === undefined || !brood.portkey.enabled)
99
+ return undefined;
100
+ const portkey = brood.portkey; // narrowed to PortkeyEnabled
101
+ return async (args) => {
102
+ const baseStore = brood.metrics !== undefined ? wrapAsyncStoreWithMetrics(wiring.store, brood.metrics) : wiring.store;
103
+ const config = {
104
+ store: baseStore,
105
+ tenancy: args.scope,
106
+ root: wiring.projectRoot,
107
+ fs: brood.fs ?? createDiskRegistrationFs(wiring.projectRoot),
108
+ ...(brood.gitLsFiles !== undefined ? { gitLsFiles: brood.gitLsFiles } : {}),
109
+ ...(brood.packOptions !== undefined ? { packOptions: brood.packOptions } : {}),
110
+ };
111
+ const deps = {
112
+ portkey,
113
+ embedProvider: brood.embedProvider ?? defaultEmbedProvider,
114
+ // AC-018i.1: stamp embed_model on brood-embedded rows.
115
+ embedModelId,
116
+ ...(brood.describe !== undefined ? { describe: brood.describe } : {}),
117
+ ...(brood.fetch !== undefined ? { fetch: brood.fetch } : {}),
118
+ };
119
+ return runBroodAsync(config, deps, { force: args.force, limit: args.limit, model: args.model });
120
+ };
121
+ }
122
+ /**
123
+ * Requeue described rows for re-embedding (PRD-018i / NEC-018 AC-018i.3): append
124
+ * a `pending` version-bump for each nectar that preserves the title/description/
125
+ * concepts but drops the embedding + embed_model, so the enricher's re-embed path
126
+ * computes a fresh vector under the active provider. Best-effort and fail-soft.
127
+ */
128
+ async function requeueReembed(store, tenancy, nectars) {
129
+ const now = new Date().toISOString();
130
+ for (const nectar of nectars) {
131
+ const latest = await store.latestVersion(nectar);
132
+ if (latest === undefined || latest.describeStatus !== "described")
133
+ continue;
134
+ const seq = await store.nextSeq(nectar);
135
+ const requeued = {
136
+ ...latest,
137
+ seq,
138
+ embedding: null,
139
+ embedModel: null,
140
+ describeStatus: "pending",
141
+ observedAt: now,
142
+ lastUpdateDate: now,
143
+ orgId: tenancy.orgId,
144
+ workspaceId: tenancy.workspaceId,
145
+ projectId: tenancy.projectId,
146
+ };
147
+ await store.appendVersion(requeued);
148
+ }
149
+ }
150
+ //# sourceMappingURL=daemon-api-wiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-api-wiring.js","sourceRoot":"","sources":["../../src/api/daemon-api-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAsB,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,aAAa,GAGd,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AA6DnE;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA6B;IACpE,MAAM,SAAS,GAAG,IAAI,qBAAqB,CAAC;QAC1C,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;QACnC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;QAC/B,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW;KAC5C,CAAC,CAAC;IACH,MAAM,OAAO,GAAiB,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAEvE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACrD,+EAA+E;IAC/E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACxG,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC;IAC3E,8EAA8E;IAC9E,gFAAgF;IAChF,MAAM,KAAK,GACT,gBAAgB,CAAC,QAAQ,KAAK,KAAK;QACjC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAExF,8EAA8E;IAC9E,yEAAyE;IACzE,MAAM,eAAe,GAAG,CAAC,OAA0B,EAAQ,EAAE;QAC3D,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACpE,wEAAwE;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjH,MAAM,UAAU,GACd,KAAK,KAAK,SAAS;QACjB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,gBAAgB,EAAE;QAC3H,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,IAAI,IAAI,CAAC,CAAC;IAEnF,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;QAC1F,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QAC9G,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;YAClF,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5E,CAAC;QACD,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACvG,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;QAC3G,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,MAA6B,EAC7B,oBAAmC,EACnC,YAA2B;IAE3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,6BAA6B;IAE5D,OAAO,KAAK,EAAE,IAAe,EAAoB,EAAE;QACjD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACtH,MAAM,MAAM,GAAqB;YAC/B,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,IAAI,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,wBAAwB,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/E,CAAC;QACF,MAAM,IAAI,GAA0B;YAClC,OAAO;YACP,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,oBAAoB;YAC1D,uDAAuD;YACvD,YAAY;YACZ,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC;QACF,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,cAAc,CAC3B,KAA0B,EAC1B,OAAgB,EAChB,OAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,WAAW;YAAE,SAAS;QAC5E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAwB;YACpC,GAAG,MAAM;YACT,GAAG;YACH,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,SAAS;YACzB,UAAU,EAAE,GAAG;YACf,cAAc,EAAE,GAAG;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;QACF,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}