@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
@@ -0,0 +1,136 @@
1
+ /**
2
+ * `mountHiveGraphApi` — the handler-attachment module for the `/api/hive-graph`
3
+ * group (PRD-008b + PRD-008c + the PRD-012b endpoint contract).
4
+ *
5
+ * Modeled on honeycomb's `mountGraphApi`
6
+ * (`honeycomb/src/daemon/runtime/codebase/api.ts:304-347`): resolve the group
7
+ * once via `daemon.group("/api/hive-graph")`, no-op when the group is unknown
8
+ * (AC-008a.3.1), and attach handlers at paths RELATIVE to the group. Every
9
+ * handler resolves scope per-request, delegates to an injected mechanic, and
10
+ * surfaces failure as a data body — never an unhandled throw. The daemon is the
11
+ * only DeepLake client: no handler opens storage directly; each takes an
12
+ * injected function that reaches storage through the daemon's client
13
+ * (`honeycomb/src/daemon/runtime/server.ts:13-16` FR-6).
14
+ *
15
+ * The search endpoint (008b) and the `nectar search` CLI (012b) are two clients
16
+ * of the ONE engine (012a `searchHiveGraph`) and return the identical result
17
+ * shape, so the dashboard and the terminal render identically.
18
+ *
19
+ * **Tenancy scope (PRD-018j / NEC-029).** The per-request `?project=` override
20
+ * was dropped: every endpoint resolves the daemon's configured default scope
21
+ * only. A foreign `?project=` on `POST /build` is rejected with 403; on read
22
+ * endpoints it is ignored so a caller cannot reach another project's tenancy.
23
+ */
24
+ import type { RouteContext, RouteGroup } from "./router.js";
25
+ import { type HiveGraphStatus } from "./status-query.js";
26
+ import type { HiveGraphSearchResult, QueryScope } from "../hive-graph/search-types.js";
27
+ import { type BroodGuard } from "../brood-guard.js";
28
+ /** The `group()` accessor surface `mountHiveGraphApi` needs (a subset of `AssembledDaemon`). */
29
+ export interface RouteGroupProvider {
30
+ group(path: string): RouteGroup | undefined;
31
+ }
32
+ /** The 400 body for a request with no resolvable tenant scope (mirrors honeycomb's `NO_ORG_BODY`). */
33
+ export declare const NO_ORG_BODY: {
34
+ readonly error: "no_org";
35
+ readonly message: "No resolvable tenant scope for this request.";
36
+ };
37
+ /** The 403 body when `POST /build` carries a foreign `?project=` override (PRD-018j). */
38
+ export declare const FOREIGN_PROJECT_BODY: {
39
+ readonly error: "foreign_project";
40
+ readonly message: "The ?project= tenancy override is not permitted on POST /build.";
41
+ };
42
+ /** Args passed to the injected brood runner by the `/build` handler. */
43
+ export interface BuildArgs {
44
+ readonly scope: QueryScope;
45
+ readonly force: boolean;
46
+ readonly limit: number | undefined;
47
+ readonly model: string | undefined;
48
+ }
49
+ /** The projection rebuild result the `/projection/rebuild` handler returns (PRD-011 shape). */
50
+ export interface ProjectionRebuildResult {
51
+ readonly regenerated: boolean;
52
+ readonly nectarsCount: number;
53
+ readonly generatedAt: string;
54
+ }
55
+ /**
56
+ * The injected mechanics + scope-resolution contract for the `/api/hive-graph`
57
+ * handlers. Every mechanic is optional: when a mechanic is not wired, its
58
+ * endpoint answers a structured, honest error rather than crashing (the group
59
+ * stays mounted + protected regardless). Production wiring (`src/cli.ts`)
60
+ * supplies the real delegates; tests inject fakes.
61
+ */
62
+ export interface MountHiveGraphOptions {
63
+ /**
64
+ * The daemon's resolved default tenant scope, used by the default
65
+ * {@link resolveScope}. `null`/absent means no scope resolves and every
66
+ * endpoint returns the `NO_ORG_BODY` 400.
67
+ */
68
+ readonly defaultScope?: QueryScope | null;
69
+ /**
70
+ * Override per-request scope resolution (mirrors `mountGraphApi`'s
71
+ * `resolveScope`, `honeycomb/src/daemon/runtime/codebase/api.ts:309-310`).
72
+ * The default resolves the daemon's `defaultScope` only; the `?project=`
73
+ * override was dropped (PRD-018j / NEC-029).
74
+ */
75
+ readonly resolveScope?: (ctx: RouteContext) => QueryScope | null;
76
+ /** PRD-012a engine, bound to the daemon's own store + embed deps. */
77
+ readonly searchHiveGraph?: (query: string, scope: QueryScope, limit: number | undefined) => Promise<HiveGraphSearchResult>;
78
+ /** PRD-007 brood pipeline trigger. Runs in the background behind the 202 `/build` contract (AC-018a.7). */
79
+ readonly runBrood?: (args: BuildArgs) => Promise<unknown>;
80
+ /**
81
+ * Observe a background build failure (AC-018a.7). Because `/build` now returns
82
+ * 202 and runs the brood in the background, a brood rejection can no longer
83
+ * surface in the HTTP response; it is forwarded here instead of being
84
+ * swallowed. Absent -> the failure is dropped after the guard clears (the
85
+ * durable `/status` surface still reflects the brood's effect on Deep Lake).
86
+ */
87
+ readonly onBuildError?: (err: unknown) => void;
88
+ /**
89
+ * The SHARED brood guard (PRD-018g / NEC-011 AC-018g.2). When supplied, the
90
+ * `/build` handler acquires/releases this guard so the API and the daemon's
91
+ * boot auto-brood cannot run two broods at once. Absent (tests) -> a private
92
+ * guard is created so the endpoint's own single-flight contract still holds.
93
+ */
94
+ readonly broodGuard?: BroodGuard;
95
+ /** PRD-008c/016 status read (queue depth + describe_status counts + cost). */
96
+ readonly readStatus?: (scope: QueryScope) => Promise<HiveGraphStatus>;
97
+ /** PRD-011 projection read (`.honeycomb/nectars.json`). */
98
+ readonly readProjection?: (scope: QueryScope) => Promise<unknown>;
99
+ /** PRD-011 atomic projection regeneration. */
100
+ readonly rebuildProjection?: (scope: QueryScope) => Promise<ProjectionRebuildResult>;
101
+ }
102
+ /**
103
+ * Raised by {@link parseSearchRequest} / {@link parseBuildRequest} when a
104
+ * `limit` is present but not a positive integer (NEC-042 item 12 / AC-018l.19):
105
+ * `0`, a negative, a float (`2.9`), or a non-numeric string. A distinct type so
106
+ * the handler answers 400 at the boundary instead of silently clamping. The
107
+ * engine's own `resolveRecallLimit` clamp stays as a backstop for internal
108
+ * callers that bypass this parser.
109
+ */
110
+ export declare class InvalidLimitError extends Error {
111
+ constructor(raw: unknown);
112
+ }
113
+ /**
114
+ * The search request contract (008b / 012b), from a POST JSON body
115
+ * (`{ query, limit }`) or a GET query string (`?q=&limit=`). A missing query is
116
+ * treated as the empty string, so the engine returns its empty/degraded floor.
117
+ */
118
+ export declare function parseSearchRequest(ctx: RouteContext): {
119
+ query: string;
120
+ limit: number | undefined;
121
+ };
122
+ /** The build request contract (008c): `{ force, limit, model }` from the POST body. */
123
+ export declare function parseBuildRequest(ctx: RouteContext): {
124
+ force: boolean;
125
+ limit: number | undefined;
126
+ model: string | undefined;
127
+ };
128
+ /**
129
+ * Attach the `/api/hive-graph` handlers to the group 008a scaffolds. Mirrors
130
+ * `mountGraphApi`'s one-line group resolution + no-op-on-unknown-group guard
131
+ * (`honeycomb/src/daemon/runtime/codebase/api.ts:304-306`): safe to call
132
+ * against a daemon whose `ROUTE_GROUPS` list does not include the group (it
133
+ * attaches nothing rather than throwing). Called once after `assembleDaemon(...)`.
134
+ */
135
+ export declare function mountHiveGraphApi(daemon: RouteGroupProvider, options: MountHiveGraphOptions): void;
136
+ //# sourceMappingURL=hive-graph-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hive-graph-api.d.ts","sourceRoot":"","sources":["../../src/api/hive-graph-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ import { HIVE_GRAPH_GROUP, MalformedJsonError } from "./router.js";
2
+ import { emptyDescribeStatusCounts } from "./status-query.js";
3
+ import { createBroodGuard } from "../brood-guard.js";
4
+ /** The 400 body for a request with no resolvable tenant scope (mirrors honeycomb's `NO_ORG_BODY`). */
5
+ export const NO_ORG_BODY = {
6
+ error: "no_org",
7
+ message: "No resolvable tenant scope for this request.",
8
+ };
9
+ /** The 403 body when `POST /build` carries a foreign `?project=` override (PRD-018j). */
10
+ export const FOREIGN_PROJECT_BODY = {
11
+ error: "foreign_project",
12
+ message: "The ?project= tenancy override is not permitted on POST /build.",
13
+ };
14
+ function errorReason(err) {
15
+ return err instanceof Error ? err.message : String(err);
16
+ }
17
+ /**
18
+ * Raised by {@link parseSearchRequest} / {@link parseBuildRequest} when a
19
+ * `limit` is present but not a positive integer (NEC-042 item 12 / AC-018l.19):
20
+ * `0`, a negative, a float (`2.9`), or a non-numeric string. A distinct type so
21
+ * the handler answers 400 at the boundary instead of silently clamping. The
22
+ * engine's own `resolveRecallLimit` clamp stays as a backstop for internal
23
+ * callers that bypass this parser.
24
+ */
25
+ export class InvalidLimitError extends Error {
26
+ constructor(raw) {
27
+ super(`limit must be a positive integer, got ${JSON.stringify(raw)}`);
28
+ this.name = "InvalidLimitError";
29
+ }
30
+ }
31
+ /**
32
+ * Parse an optional `limit`. Absent/blank -> undefined (the engine applies its
33
+ * default). Present but not a positive integer -> throws {@link InvalidLimitError}
34
+ * so the handler returns 400 (AC-018l.19); the engine clamp remains a backstop.
35
+ */
36
+ function parseLimit(raw) {
37
+ if (raw === undefined || raw === null || raw === "")
38
+ return undefined;
39
+ const n = typeof raw === "number" ? raw : Number(raw);
40
+ if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1)
41
+ throw new InvalidLimitError(raw);
42
+ return n;
43
+ }
44
+ /**
45
+ * The search request contract (008b / 012b), from a POST JSON body
46
+ * (`{ query, limit }`) or a GET query string (`?q=&limit=`). A missing query is
47
+ * treated as the empty string, so the engine returns its empty/degraded floor.
48
+ */
49
+ export function parseSearchRequest(ctx) {
50
+ if (ctx.method === "GET") {
51
+ const query = ctx.query.get("q") ?? ctx.query.get("query") ?? "";
52
+ return { query, limit: parseLimit(ctx.query.get("limit")) };
53
+ }
54
+ const body = ctx.body();
55
+ if (body === undefined || body === null || typeof body !== "object") {
56
+ return { query: "", limit: undefined };
57
+ }
58
+ const rec = body;
59
+ const query = typeof rec["query"] === "string" ? rec["query"] : "";
60
+ return { query, limit: parseLimit(rec["limit"]) };
61
+ }
62
+ /** The build request contract (008c): `{ force, limit, model }` from the POST body. */
63
+ export function parseBuildRequest(ctx) {
64
+ const body = ctx.body();
65
+ if (body === undefined || body === null || typeof body !== "object") {
66
+ return { force: false, limit: undefined, model: undefined };
67
+ }
68
+ const rec = body;
69
+ return {
70
+ force: rec["force"] === true,
71
+ limit: parseLimit(rec["limit"]),
72
+ model: typeof rec["model"] === "string" && rec["model"] !== "" ? rec["model"] : undefined,
73
+ };
74
+ }
75
+ /** Build the default per-request scope resolver from the daemon's default scope (no `?project=` override). */
76
+ function defaultScopeResolver(defaultScope) {
77
+ return (_ctx) => {
78
+ if (defaultScope === null || defaultScope === undefined)
79
+ return null;
80
+ return defaultScope;
81
+ };
82
+ }
83
+ /** Trimmed `?project=` query value, or null when absent/blank. */
84
+ function projectQueryOverride(ctx) {
85
+ const raw = ctx.query.get("project");
86
+ if (raw === null || raw.trim() === "")
87
+ return null;
88
+ return raw.trim();
89
+ }
90
+ /**
91
+ * Attach the `/api/hive-graph` handlers to the group 008a scaffolds. Mirrors
92
+ * `mountGraphApi`'s one-line group resolution + no-op-on-unknown-group guard
93
+ * (`honeycomb/src/daemon/runtime/codebase/api.ts:304-306`): safe to call
94
+ * against a daemon whose `ROUTE_GROUPS` list does not include the group (it
95
+ * attaches nothing rather than throwing). Called once after `assembleDaemon(...)`.
96
+ */
97
+ export function mountHiveGraphApi(daemon, options) {
98
+ const group = daemon.group(HIVE_GRAPH_GROUP);
99
+ if (group === undefined)
100
+ return; // unknown daemon shape -> no-op attach (AC-008a.3.1)
101
+ const resolveScope = options.resolveScope ?? defaultScopeResolver(options.defaultScope);
102
+ // In-flight guard so a second /build while one is running reports already-running
103
+ // rather than launching a concurrent brood (the resumability contract, PRD-007c).
104
+ // PRD-018g / NEC-011 AC-018g.2: when the daemon supplies its shared guard, the
105
+ // boot auto-brood participates in the SAME single-flight, so a `/build` during
106
+ // the boot brood is refused and no two broods (or double-mints) ever overlap.
107
+ const broodGuard = options.broodGuard ?? createBroodGuard();
108
+ // ── 008b + 012b: POST/GET /api/hive-graph/search ────────────────────────────
109
+ const searchHandler = async (ctx) => {
110
+ const scope = resolveScope(ctx);
111
+ if (scope === null)
112
+ return ctx.json(NO_ORG_BODY, 400);
113
+ if (options.searchHiveGraph === undefined) {
114
+ return ctx.json({ error: "search_unavailable", reason: "the search engine is not wired on this daemon" }, 501);
115
+ }
116
+ try {
117
+ const { query, limit } = parseSearchRequest(ctx);
118
+ const result = await options.searchHiveGraph(query, scope, limit);
119
+ return ctx.json(result);
120
+ }
121
+ catch (err) {
122
+ // Client errors at the request boundary are 400, not the generic 500.
123
+ if (err instanceof MalformedJsonError)
124
+ return ctx.json({ error: "invalid_json", reason: errorReason(err) }, 400);
125
+ if (err instanceof InvalidLimitError)
126
+ return ctx.json({ error: "invalid_limit", reason: errorReason(err) }, 400);
127
+ return ctx.json({ error: "search_failed", reason: errorReason(err) }, 500);
128
+ }
129
+ };
130
+ group.post("/search", searchHandler);
131
+ group.get("/search", searchHandler);
132
+ // ── 008c: POST /api/hive-graph/build (async, PRD-018a AC-018a.7) ─────────────
133
+ // A brood on a real repo takes minutes; awaiting it inside the handler let a
134
+ // shutdown during a brood hang until the supervisor SIGKILLed the process
135
+ // (NEC-021). The endpoint now accepts the build (202) and runs the brood in the
136
+ // BACKGROUND; the existing `broodInFlight` guard keeps a second build at 409
137
+ // until this one settles, and GET /api/hive-graph/status is the poll surface.
138
+ group.post("/build", async (ctx) => {
139
+ const foreignProject = projectQueryOverride(ctx);
140
+ if (foreignProject !== null &&
141
+ options.defaultScope !== null &&
142
+ options.defaultScope !== undefined &&
143
+ foreignProject !== options.defaultScope.projectId) {
144
+ return ctx.json(FOREIGN_PROJECT_BODY, 403);
145
+ }
146
+ const scope = resolveScope(ctx);
147
+ if (scope === null)
148
+ return ctx.json(NO_ORG_BODY, 400);
149
+ if (options.runBrood === undefined) {
150
+ return ctx.json({ error: "build_unavailable", reason: "the brood pipeline is not wired on this daemon" }, 501);
151
+ }
152
+ // AC-018g.2: acquire the shared guard. A brood already in flight (from this
153
+ // endpoint OR the boot auto-brood) is refused with 409.
154
+ if (!broodGuard.tryAcquire()) {
155
+ return ctx.json({ status: "already_running", message: "a brood is already in progress" }, 409);
156
+ }
157
+ let args;
158
+ try {
159
+ const parsed = parseBuildRequest(ctx);
160
+ args = { scope, force: parsed.force, limit: parsed.limit, model: parsed.model };
161
+ }
162
+ catch (err) {
163
+ broodGuard.release();
164
+ if (err instanceof MalformedJsonError)
165
+ return ctx.json({ error: "invalid_json", reason: errorReason(err) }, 400);
166
+ if (err instanceof InvalidLimitError)
167
+ return ctx.json({ error: "invalid_limit", reason: errorReason(err) }, 400);
168
+ return ctx.json({ error: "build_failed", reason: errorReason(err) }, 500);
169
+ }
170
+ const runBrood = options.runBrood;
171
+ // Run in the background; the request returns 202 immediately below. The catch
172
+ // forwards the failure to the optional observer (not swallowed): the request
173
+ // already returned, so it cannot surface here.
174
+ void (async () => {
175
+ try {
176
+ await runBrood(args);
177
+ }
178
+ catch (err) {
179
+ options.onBuildError?.(err);
180
+ }
181
+ finally {
182
+ broodGuard.release();
183
+ }
184
+ })();
185
+ return ctx.json({ status: "accepted", message: "brood accepted; poll GET /api/hive-graph/status for progress" }, 202);
186
+ });
187
+ // ── 008c: GET /api/hive-graph/status ────────────────────────────────────────
188
+ group.get("/status", async (ctx) => {
189
+ const scope = resolveScope(ctx);
190
+ if (scope === null)
191
+ return ctx.json(NO_ORG_BODY, 400);
192
+ if (options.readStatus === undefined) {
193
+ // No status mechanic wired: report a degraded empty status (never a 500).
194
+ return ctx.json({ queueDepth: 0, describeStatus: emptyDescribeStatusCounts(), costSpentUsd: 0, degraded: true }, 200);
195
+ }
196
+ try {
197
+ return ctx.json(await options.readStatus(scope));
198
+ }
199
+ catch (err) {
200
+ return ctx.json({ error: "status_failed", reason: errorReason(err) }, 500);
201
+ }
202
+ });
203
+ // ── 008c: GET /api/hive-graph/projection ────────────────────────────────────
204
+ group.get("/projection", async (ctx) => {
205
+ const scope = resolveScope(ctx);
206
+ if (scope === null)
207
+ return ctx.json(NO_ORG_BODY, 400);
208
+ if (options.readProjection === undefined) {
209
+ return ctx.json({ error: "projection_unavailable", reason: "projection read is not wired on this daemon" }, 501);
210
+ }
211
+ try {
212
+ return ctx.json(await options.readProjection(scope));
213
+ }
214
+ catch (err) {
215
+ return ctx.json({ error: "projection_read_failed", reason: errorReason(err) }, 500);
216
+ }
217
+ });
218
+ // ── 008c: POST /api/hive-graph/projection/rebuild ───────────────────────────
219
+ group.post("/projection/rebuild", async (ctx) => {
220
+ const scope = resolveScope(ctx);
221
+ if (scope === null)
222
+ return ctx.json(NO_ORG_BODY, 400);
223
+ if (options.rebuildProjection === undefined) {
224
+ return ctx.json({ error: "projection_unavailable", reason: "projection rebuild is not wired on this daemon" }, 501);
225
+ }
226
+ try {
227
+ return ctx.json(await options.rebuildProjection(scope));
228
+ }
229
+ catch (err) {
230
+ return ctx.json({ error: "regenerate_failed", reason: errorReason(err) }, 500);
231
+ }
232
+ });
233
+ }
234
+ //# sourceMappingURL=hive-graph-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hive-graph-api.js","sourceRoot":"","sources":["../../src/api/hive-graph-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { HiveGraphSearchResult } from "../hive-graph/search-types.js";
2
+ /** Raised when the loopback request cannot reach the daemon (not running / refused / timed out). */
3
+ export declare class DaemonUnreachableError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ /** Raised when the daemon answered but with a non-2xx status or an unparseable body. */
7
+ export declare class DaemonSearchError extends Error {
8
+ readonly status: number;
9
+ constructor(message: string, status: number);
10
+ }
11
+ export interface LoopbackSearchOptions {
12
+ readonly host: string;
13
+ readonly port: number;
14
+ readonly query: string;
15
+ readonly limit?: number | undefined;
16
+ /** Per-request timeout; defaults to 15s (the transport's default statement timeout). */
17
+ readonly timeoutMs?: number;
18
+ }
19
+ /**
20
+ * POST the search request to the daemon's `/api/hive-graph/search` endpoint and
21
+ * return the engine's result shape verbatim (byte-identical to what the
22
+ * endpoint emits, so the CLI's `--json` output equals a raw `curl`). A
23
+ * connection-level failure (daemon down) throws {@link DaemonUnreachableError};
24
+ * a non-2xx response throws {@link DaemonSearchError}.
25
+ */
26
+ export declare function searchViaDaemon(options: LoopbackSearchOptions): Promise<HiveGraphSearchResult>;
27
+ //# sourceMappingURL=loopback-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback-client.d.ts","sourceRoot":"","sources":["../../src/api/loopback-client.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,oGAAoG;AACpG,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,wFAAwF;AACxF,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAiD9F"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * The thin loopback HTTP client for `nectar search` (PRD-012b).
3
+ *
4
+ * AC-012b.3.1: `nectar search` is a THIN client that reaches the running daemon
5
+ * over loopback (`127.0.0.1:3854`) and NEVER imports the search engine
6
+ * (`hive-graph/search.ts`) or any DeepLake path. This module depends only on
7
+ * `node:http` (a Node built-in, no runtime dependency) plus a TYPE-ONLY import
8
+ * of the result shape (erased at compile time under `verbatimModuleSyntax`), so
9
+ * the CLI process carries none of the engine's or storage layer's runtime code.
10
+ *
11
+ * AC-012b.3.2: when the daemon is not running, a connection failure surfaces as
12
+ * {@link DaemonUnreachableError} — the CLI reports it clearly and exits
13
+ * non-zero, with NO local fallback (search reflects the daemon's live state or
14
+ * nothing).
15
+ */
16
+ import { request } from "node:http";
17
+ /** Raised when the loopback request cannot reach the daemon (not running / refused / timed out). */
18
+ export class DaemonUnreachableError extends Error {
19
+ constructor(message) {
20
+ super(message);
21
+ this.name = "DaemonUnreachableError";
22
+ }
23
+ }
24
+ /** Raised when the daemon answered but with a non-2xx status or an unparseable body. */
25
+ export class DaemonSearchError extends Error {
26
+ status;
27
+ constructor(message, status) {
28
+ super(message);
29
+ this.name = "DaemonSearchError";
30
+ this.status = status;
31
+ }
32
+ }
33
+ const DEFAULT_TIMEOUT_MS = 15_000;
34
+ const SEARCH_PATH = "/api/hive-graph/search";
35
+ /**
36
+ * POST the search request to the daemon's `/api/hive-graph/search` endpoint and
37
+ * return the engine's result shape verbatim (byte-identical to what the
38
+ * endpoint emits, so the CLI's `--json` output equals a raw `curl`). A
39
+ * connection-level failure (daemon down) throws {@link DaemonUnreachableError};
40
+ * a non-2xx response throws {@link DaemonSearchError}.
41
+ */
42
+ export function searchViaDaemon(options) {
43
+ const payload = JSON.stringify({
44
+ query: options.query,
45
+ ...(options.limit !== undefined ? { limit: options.limit } : {}),
46
+ });
47
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
48
+ return new Promise((resolve, reject) => {
49
+ const req = request({
50
+ host: options.host,
51
+ port: options.port,
52
+ method: "POST",
53
+ path: SEARCH_PATH,
54
+ headers: {
55
+ "content-type": "application/json; charset=utf-8",
56
+ "content-length": Buffer.byteLength(payload),
57
+ },
58
+ timeout: timeoutMs,
59
+ }, (res) => {
60
+ const chunks = [];
61
+ res.on("data", (c) => chunks.push(c));
62
+ res.on("end", () => {
63
+ const text = Buffer.concat(chunks).toString("utf8");
64
+ const status = res.statusCode ?? 0;
65
+ if (status < 200 || status >= 300) {
66
+ reject(new DaemonSearchError(`daemon returned HTTP ${status}: ${text.slice(0, 200)}`, status));
67
+ return;
68
+ }
69
+ try {
70
+ resolve(JSON.parse(text));
71
+ }
72
+ catch {
73
+ reject(new DaemonSearchError("daemon returned a non-JSON response", status));
74
+ }
75
+ });
76
+ });
77
+ req.on("error", (err) => {
78
+ // ECONNREFUSED / ENOTFOUND / ECONNRESET all mean "no daemon there".
79
+ reject(new DaemonUnreachableError(err.message));
80
+ });
81
+ req.on("timeout", () => {
82
+ req.destroy(new DaemonUnreachableError(`request to ${options.host}:${options.port} timed out after ${timeoutMs}ms`));
83
+ });
84
+ req.end(payload);
85
+ });
86
+ }
87
+ //# sourceMappingURL=loopback-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback-client.js","sourceRoot":"","sources":["../../src/api/loopback-client.ts"],"names":[],"mappings":"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"}