@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,98 @@
1
+ /**
2
+ * A durable-backed {@link EnricherStore} for the daemon's enricher loop (PRD-016
3
+ * daemon wiring, hardened by PRD-018g).
4
+ *
5
+ * The enricher cycle consumes the SYNCHRONOUS reads of the {@link EnricherStore}
6
+ * seam (`store.ts`): `listPendingWork`, `countPending`, `getVersion`,
7
+ * `listVersions`, `priorDescribedVersion`, and the mirror-only `updateVersion`
8
+ * are all called with no `await` inside `runEnricherCycle`. The durable substrate
9
+ * (`DeepLakeHiveGraphStore`) is asynchronous, so a store cannot honor the sync
10
+ * read contract AND do real HTTP I/O at the same time - the exact sync/async
11
+ * split documented on `AsyncHiveGraphStore` (`hive-graph/store.ts`).
12
+ *
13
+ * This adapter bridges the two by holding an in-memory mirror
14
+ * ({@link EnricherInMemoryStore}) as the working set the cycle reads from, and:
15
+ *
16
+ * - **Durable describe write-back is a VERSION-BUMP APPEND (PRD-018g / NEC-017,
17
+ * user-confirmed decision).** `commitVersion` appends a NEW row at `seq+1`
18
+ * carrying the description through the injected {@link EnricherHydrateSeam}
19
+ * `appendVersion` (collision-safe seq allocation), and is AWAITED by the
20
+ * cycle: only on a CONFIRMED durable write does the mirror gain the described
21
+ * row (so the latest-is-pending selector stops re-selecting the nectar) and
22
+ * the cycle count the file. On failure the mirror is untouched (the nectar
23
+ * stays selectable) and `commitVersion` resolves `false`. The retired
24
+ * fire-and-forget in-place `UPDATE` (`sql-update.ts`) is no longer used.
25
+ *
26
+ * - **Mirror-only status patches** (`failed`, `skipped-deleted`) go through
27
+ * `updateVersion` and write ONLY the mirror: the durable row stays `pending`,
28
+ * so a failed row is re-selected after a restart re-hydrates.
29
+ *
30
+ * - **Working-set freshness (PRD-018g / NEC-016):** `refresh` re-seeds the
31
+ * mirror from the durable store so version rows appended after boot (a
32
+ * `POST /build` brood's `failed`/`pending` rows, teammate-synced rows, the
33
+ * watcher's appends) become visible without a daemon restart.
34
+ */
35
+ import type { HiveGraphVersionRow, Tenancy } from "../hive-graph/model.js";
36
+ import type { PortableProjection } from "../projection/format.js";
37
+ import { type EnricherStore, type EnricherWorkItem } from "./store.js";
38
+ /** The async seams the durable adapter needs: load a tenancy's rows, and append one row back. */
39
+ export interface EnricherHydrateSeam {
40
+ /** Load EVERY version row for the tenancy (full history, not latest-per-nectar) to seed the mirror. */
41
+ loadVersions(tenancy: Tenancy): Promise<readonly HiveGraphVersionRow[]>;
42
+ /**
43
+ * Durably append `row` as a version-bump at the next collision-safe seq for
44
+ * its nectar (PRD-018g / NEC-017), resolving the seq actually written. Wired
45
+ * to `DeepLakeHiveGraphStore.appendVersionAtNextSeq`.
46
+ */
47
+ appendVersion(row: HiveGraphVersionRow): Promise<number>;
48
+ /** Optional fail-soft sink for a durable append rejection (default: swallow). */
49
+ onWriteBackError?(err: unknown): void;
50
+ }
51
+ /**
52
+ * A {@link EnricherStore} backed by an in-memory mirror with durable
53
+ * version-bump append. Construct, `await hydrate(tenancy)` once before starting
54
+ * the loop (and `refresh(tenancy)` periodically), then hand it to
55
+ * `createEnricherLoop`.
56
+ */
57
+ export declare class DeepLakeEnricherStore implements EnricherStore {
58
+ private readonly mirror;
59
+ private readonly seam;
60
+ private hydrated;
61
+ constructor(seam: EnricherHydrateSeam);
62
+ /** Seed the mirror from the durable store. Idempotent; a second call re-seeds. */
63
+ hydrate(tenancy: Tenancy): Promise<void>;
64
+ /**
65
+ * Re-seed the mirror from the durable store so post-boot rows become visible
66
+ * without a restart (PRD-018g / NEC-016 AC-018g.6). Fail-soft: a load failure
67
+ * is routed to the write-back error sink and leaves the mirror unchanged.
68
+ */
69
+ refresh(tenancy: Tenancy): Promise<void>;
70
+ /** True once {@link hydrate} has seeded the mirror at least once. */
71
+ get isHydrated(): boolean;
72
+ listPendingWork(tenancy: Tenancy, batchSize: number): EnricherWorkItem[];
73
+ countPending(tenancy: Tenancy): number;
74
+ getVersion(nectar: string, seq: number): HiveGraphVersionRow | undefined;
75
+ listVersions(nectar: string): readonly HiveGraphVersionRow[];
76
+ priorDescribedVersion(nectar: string, beforeSeq: number): HiveGraphVersionRow | undefined;
77
+ /** Mirror-only status patch (failed / skipped-deleted); no durable write (NEC-017). */
78
+ updateVersion(row: HiveGraphVersionRow): void;
79
+ /**
80
+ * Durable version-bump append (PRD-018g / NEC-017 AC-018g.7/.8): append the
81
+ * described row at the next collision-safe seq, and ONLY on a confirmed durable
82
+ * write add it to the mirror (so the nectar drops out of the latest-is-pending
83
+ * selection). A durable failure leaves the mirror untouched - the nectar's
84
+ * latest stays `pending` and is re-selected next cycle - and resolves `false`.
85
+ */
86
+ commitVersion(row: HiveGraphVersionRow): Promise<boolean>;
87
+ /**
88
+ * Build a portable projection document from the mirror's latest-described rows
89
+ * (PRD-018g / NEC-031 trigger #2). Identity rows are synthesized from the
90
+ * version rows (nectar + tenancy), which is all the projection generator needs;
91
+ * derived-from provenance is not carried in the enricher mirror and defaults to
92
+ * absent (a steady-state description update never changes fork provenance).
93
+ */
94
+ buildProjectionDoc(tenancy: Tenancy): PortableProjection;
95
+ private mirrorNectars;
96
+ private latestDescribed;
97
+ }
98
+ //# sourceMappingURL=store-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-adapter.d.ts","sourceRoot":"","sources":["../../src/enricher/store-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAgB,mBAAmB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAyB,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9F,iGAAiG;AACjG,MAAM,WAAW,mBAAmB;IAClC,uGAAuG;IACvG,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;IACxE;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,iFAAiF;IACjF,gBAAgB,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CACvC;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,mBAAmB;IAIrC,kFAAkF;IAC5E,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9C,qEAAqE;IACrE,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIxE,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAItC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIxE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,mBAAmB,EAAE;IAI5D,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIzF,uFAAuF;IACvF,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAI7C;;;;;;OAMG;IACG,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAW/D;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB;IAUxD,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;CAWxB"}
@@ -0,0 +1,129 @@
1
+ import { nectarCreatedAt } from "../hive-graph/ulid.js";
2
+ import { buildProjection } from "../projection/generate.js";
3
+ import { EnricherInMemoryStore } from "./store.js";
4
+ /**
5
+ * A {@link EnricherStore} backed by an in-memory mirror with durable
6
+ * version-bump append. Construct, `await hydrate(tenancy)` once before starting
7
+ * the loop (and `refresh(tenancy)` periodically), then hand it to
8
+ * `createEnricherLoop`.
9
+ */
10
+ export class DeepLakeEnricherStore {
11
+ mirror = new EnricherInMemoryStore();
12
+ seam;
13
+ hydrated = false;
14
+ constructor(seam) {
15
+ this.seam = seam;
16
+ }
17
+ /** Seed the mirror from the durable store. Idempotent; a second call re-seeds. */
18
+ async hydrate(tenancy) {
19
+ const rows = await this.seam.loadVersions(tenancy);
20
+ this.mirror.seedVersions(rows);
21
+ this.hydrated = true;
22
+ }
23
+ /**
24
+ * Re-seed the mirror from the durable store so post-boot rows become visible
25
+ * without a restart (PRD-018g / NEC-016 AC-018g.6). Fail-soft: a load failure
26
+ * is routed to the write-back error sink and leaves the mirror unchanged.
27
+ */
28
+ async refresh(tenancy) {
29
+ try {
30
+ const rows = await this.seam.loadVersions(tenancy);
31
+ this.mirror.seedVersions(rows);
32
+ }
33
+ catch (err) {
34
+ this.seam.onWriteBackError?.(err);
35
+ }
36
+ }
37
+ /** True once {@link hydrate} has seeded the mirror at least once. */
38
+ get isHydrated() {
39
+ return this.hydrated;
40
+ }
41
+ listPendingWork(tenancy, batchSize) {
42
+ return this.mirror.listPendingWork(tenancy, batchSize);
43
+ }
44
+ countPending(tenancy) {
45
+ return this.mirror.countPending(tenancy);
46
+ }
47
+ getVersion(nectar, seq) {
48
+ return this.mirror.getVersion(nectar, seq);
49
+ }
50
+ listVersions(nectar) {
51
+ return this.mirror.listVersions(nectar);
52
+ }
53
+ priorDescribedVersion(nectar, beforeSeq) {
54
+ return this.mirror.priorDescribedVersion(nectar, beforeSeq);
55
+ }
56
+ /** Mirror-only status patch (failed / skipped-deleted); no durable write (NEC-017). */
57
+ updateVersion(row) {
58
+ this.mirror.updateVersion(row);
59
+ }
60
+ /**
61
+ * Durable version-bump append (PRD-018g / NEC-017 AC-018g.7/.8): append the
62
+ * described row at the next collision-safe seq, and ONLY on a confirmed durable
63
+ * write add it to the mirror (so the nectar drops out of the latest-is-pending
64
+ * selection). A durable failure leaves the mirror untouched - the nectar's
65
+ * latest stays `pending` and is re-selected next cycle - and resolves `false`.
66
+ */
67
+ async commitVersion(row) {
68
+ try {
69
+ const seq = await this.seam.appendVersion(row);
70
+ this.mirror.seedVersion({ ...row, seq });
71
+ return true;
72
+ }
73
+ catch (err) {
74
+ this.seam.onWriteBackError?.(err);
75
+ return false;
76
+ }
77
+ }
78
+ /**
79
+ * Build a portable projection document from the mirror's latest-described rows
80
+ * (PRD-018g / NEC-031 trigger #2). Identity rows are synthesized from the
81
+ * version rows (nectar + tenancy), which is all the projection generator needs;
82
+ * derived-from provenance is not carried in the enricher mirror and defaults to
83
+ * absent (a steady-state description update never changes fork provenance).
84
+ */
85
+ buildProjectionDoc(tenancy) {
86
+ const sources = [];
87
+ for (const nectar of this.mirrorNectars()) {
88
+ const described = this.latestDescribed(nectar, tenancy);
89
+ if (described === undefined)
90
+ continue;
91
+ sources.push({ identity: synthesizeIdentity(described), version: described });
92
+ }
93
+ return buildProjection(tenancy, sources);
94
+ }
95
+ mirrorNectars() {
96
+ // listVersions works per nectar; enumerate via the mirror's pending+described
97
+ // reach by scanning through a wide pending call is not enough, so expose the
98
+ // set from the mirror directly.
99
+ return this.mirror.nectars();
100
+ }
101
+ latestDescribed(nectar, tenancy) {
102
+ let best;
103
+ for (const row of this.mirror.listVersions(nectar)) {
104
+ if (row.orgId !== tenancy.orgId || row.workspaceId !== tenancy.workspaceId || row.projectId !== tenancy.projectId) {
105
+ continue;
106
+ }
107
+ if (row.describeStatus !== "described")
108
+ continue;
109
+ if (best === undefined || row.seq > best.seq)
110
+ best = row;
111
+ }
112
+ return best;
113
+ }
114
+ }
115
+ /** Synthesize an identity row for a version row (enricher mirror has no identity table). */
116
+ function synthesizeIdentity(version) {
117
+ return {
118
+ nectar: version.nectar,
119
+ kind: "file",
120
+ createdAt: nectarCreatedAt(version.nectar),
121
+ derivedFromNectar: "",
122
+ forkContentHash: "",
123
+ orgId: version.orgId,
124
+ workspaceId: version.workspaceId,
125
+ projectId: version.projectId,
126
+ lastUpdateDate: version.lastUpdateDate,
127
+ };
128
+ }
129
+ //# sourceMappingURL=store-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-adapter.js","sourceRoot":"","sources":["../../src/enricher/store-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Enricher store seam: pending-work selection + version row updates (PRD-016).
3
+ */
4
+ import type { HiveGraphVersionRow, Tenancy } from "../hive-graph/model.js";
5
+ export interface EnricherWorkItem {
6
+ readonly nectar: string;
7
+ readonly seq: number;
8
+ readonly row: HiveGraphVersionRow;
9
+ /** True when retrying a `failed` row solo (PRD-016c). */
10
+ readonly solo: boolean;
11
+ }
12
+ export interface EnricherStore {
13
+ listPendingWork(tenancy: Tenancy, batchSize: number): EnricherWorkItem[];
14
+ countPending(tenancy: Tenancy): number;
15
+ getVersion(nectar: string, seq: number): HiveGraphVersionRow | undefined;
16
+ listVersions(nectar: string): readonly HiveGraphVersionRow[];
17
+ priorDescribedVersion(nectar: string, beforeSeq: number): HiveGraphVersionRow | undefined;
18
+ /**
19
+ * Mirror-only, synchronous status patch for a `failed` or `skipped-deleted`
20
+ * outcome (PRD-018g / NEC-017): updates the in-memory working set in place so
21
+ * the running cycle sees the new status, WITHOUT a durable write. A failed row
22
+ * stays `pending` in the durable store so it is re-selected after a restart
23
+ * (the fire-and-forget in-place durable UPDATE is retired).
24
+ */
25
+ updateVersion(row: HiveGraphVersionRow): void;
26
+ /**
27
+ * Durable version-bump append for a `described` (or cosmetic-inherited /
28
+ * re-embedded) row (PRD-018g / NEC-017 AC-018g.7/.8). Appends a NEW row at
29
+ * `seq+1` carrying the description; `row.seq` is ignored (the store owns seq
30
+ * allocation, collision-safe). Resolves `true` only when the durable write is
31
+ * CONFIRMED; on a durable failure it resolves `false`, the working set is left
32
+ * unchanged (the nectar stays selectable), and the caller must NOT count the
33
+ * file described.
34
+ */
35
+ commitVersion(row: HiveGraphVersionRow): Promise<boolean>;
36
+ }
37
+ /** In-memory enricher store for tests and local dev. */
38
+ export declare class EnricherInMemoryStore implements EnricherStore {
39
+ /** nectar -> version rows in seq order. */
40
+ private readonly versions;
41
+ seedVersion(row: HiveGraphVersionRow): void;
42
+ seedVersions(rows: readonly HiveGraphVersionRow[]): void;
43
+ listPendingWork(tenancy: Tenancy, batchSize: number): EnricherWorkItem[];
44
+ countPending(tenancy: Tenancy): number;
45
+ getVersion(nectar: string, seq: number): HiveGraphVersionRow | undefined;
46
+ listVersions(nectar: string): readonly HiveGraphVersionRow[];
47
+ /** Every nectar with at least one version row in the mirror (projection scan). */
48
+ nectars(): readonly string[];
49
+ priorDescribedVersion(nectar: string, beforeSeq: number): HiveGraphVersionRow | undefined;
50
+ updateVersion(row: HiveGraphVersionRow): void;
51
+ /**
52
+ * Version-bump append: allocate `MAX(seq)+1` for the nectar and append `row`
53
+ * there (PRD-018g / NEC-017). The in-memory store never fails a durable write,
54
+ * so this always resolves `true`.
55
+ */
56
+ commitVersion(row: HiveGraphVersionRow): Promise<boolean>;
57
+ }
58
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/enricher/store.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAI3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IACzE,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;IACvC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACzE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,mBAAmB,EAAE,CAAC;IAC7D,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC1F;;;;;;OAMG;IACH,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC9C;;;;;;;;OAQG;IACH,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,wDAAwD;AACxD,qBAAa,qBAAsB,YAAW,aAAa;IACzD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;IAErE,WAAW,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAU3C,YAAY,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI;IAIxD,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAkCxE,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAkBtC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAOxE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,mBAAmB,EAAE;IAK5D,kFAAkF;IAClF,OAAO,IAAI,SAAS,MAAM,EAAE;IAI5B,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAYzF,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAQ7C;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAO1D"}
@@ -0,0 +1,126 @@
1
+ import { inTenancy } from "../hive-graph/model.js";
2
+ import { selectPendingWorkInMemory } from "./pending-query.js";
3
+ /** In-memory enricher store for tests and local dev. */
4
+ export class EnricherInMemoryStore {
5
+ /** nectar -> version rows in seq order. */
6
+ versions = new Map();
7
+ seedVersion(row) {
8
+ const list = this.versions.get(row.nectar) ?? [];
9
+ const idx = list.findIndex((v) => v.seq === row.seq);
10
+ const copy = { ...row };
11
+ if (idx >= 0)
12
+ list[idx] = copy;
13
+ else
14
+ list.push(copy);
15
+ list.sort((a, b) => a.seq - b.seq);
16
+ this.versions.set(row.nectar, list);
17
+ }
18
+ seedVersions(rows) {
19
+ for (const row of rows)
20
+ this.seedVersion(row);
21
+ }
22
+ listPendingWork(tenancy, batchSize) {
23
+ const flat = [];
24
+ for (const rows of this.versions.values()) {
25
+ for (const row of rows) {
26
+ if (inTenancy(row, tenancy))
27
+ flat.push(row);
28
+ }
29
+ }
30
+ const pendingRows = selectPendingWorkInMemory(flat.map((r) => ({
31
+ nectar: r.nectar,
32
+ seq: r.seq,
33
+ describeStatus: r.describeStatus,
34
+ observedAt: r.observedAt,
35
+ orgId: r.orgId,
36
+ workspaceId: r.workspaceId,
37
+ projectId: r.projectId,
38
+ })), tenancy, batchSize);
39
+ const items = [];
40
+ for (const p of pendingRows) {
41
+ const row = this.getVersion(p.nectar, p.seq);
42
+ if (row === undefined)
43
+ continue;
44
+ items.push({
45
+ nectar: p.nectar,
46
+ seq: p.seq,
47
+ row,
48
+ solo: row.describeStatus === "failed",
49
+ });
50
+ }
51
+ return items;
52
+ }
53
+ countPending(tenancy) {
54
+ // Count nectars whose LATEST row is pending/failed, matching the
55
+ // latest-is-pending selection (PRD-018g / NEC-017) so the depth cannot count
56
+ // a superseded lower-seq pending row a version-bump append left behind.
57
+ let count = 0;
58
+ for (const rows of this.versions.values()) {
59
+ let latest;
60
+ for (const row of rows) {
61
+ if (!inTenancy(row, tenancy))
62
+ continue;
63
+ if (latest === undefined || row.seq > latest.seq)
64
+ latest = row;
65
+ }
66
+ if (latest !== undefined && (latest.describeStatus === "pending" || latest.describeStatus === "failed")) {
67
+ count += 1;
68
+ }
69
+ }
70
+ return count;
71
+ }
72
+ getVersion(nectar, seq) {
73
+ const list = this.versions.get(nectar);
74
+ if (list === undefined)
75
+ return undefined;
76
+ const row = list.find((v) => v.seq === seq);
77
+ return row !== undefined ? { ...row } : undefined;
78
+ }
79
+ listVersions(nectar) {
80
+ const list = this.versions.get(nectar);
81
+ return list !== undefined ? list.map((v) => ({ ...v })) : [];
82
+ }
83
+ /** Every nectar with at least one version row in the mirror (projection scan). */
84
+ nectars() {
85
+ return [...this.versions.keys()];
86
+ }
87
+ priorDescribedVersion(nectar, beforeSeq) {
88
+ const list = this.versions.get(nectar);
89
+ if (list === undefined)
90
+ return undefined;
91
+ let best;
92
+ for (const row of list) {
93
+ if (row.seq >= beforeSeq)
94
+ continue;
95
+ if (row.describeStatus !== "described")
96
+ continue;
97
+ if (best === undefined || row.seq > best.seq)
98
+ best = row;
99
+ }
100
+ return best !== undefined ? { ...best } : undefined;
101
+ }
102
+ updateVersion(row) {
103
+ const list = this.versions.get(row.nectar);
104
+ if (list === undefined)
105
+ return;
106
+ const idx = list.findIndex((v) => v.seq === row.seq);
107
+ if (idx < 0)
108
+ return;
109
+ list[idx] = { ...row };
110
+ }
111
+ /**
112
+ * Version-bump append: allocate `MAX(seq)+1` for the nectar and append `row`
113
+ * there (PRD-018g / NEC-017). The in-memory store never fails a durable write,
114
+ * so this always resolves `true`.
115
+ */
116
+ commitVersion(row) {
117
+ const list = this.versions.get(row.nectar) ?? [];
118
+ let max = -1;
119
+ for (const v of list)
120
+ if (v.seq > max)
121
+ max = v.seq;
122
+ this.seedVersion({ ...row, seq: max + 1 });
123
+ return Promise.resolve(true);
124
+ }
125
+ }
126
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/enricher/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Lightweight language-aware token stream for the meaningful-change heuristic
3
+ * (PRD-016a). Not a full AST: identifiers, literals, and punctuation are split
4
+ * into coarse tokens suitable for multiset Jaccard comparison.
5
+ */
6
+ /** Tokenize source text into a multiset-friendly token list (lowercased). */
7
+ export declare function tokenizeSource(text: string): string[];
8
+ /** Build a multiset frequency map from tokens. */
9
+ export declare function tokenMultiset(tokens: readonly string[]): Map<string, number>;
10
+ //# sourceMappingURL=tokenize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../src/enricher/tokenize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASrD;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAM5E"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Lightweight language-aware token stream for the meaningful-change heuristic
3
+ * (PRD-016a). Not a full AST: identifiers, literals, and punctuation are split
4
+ * into coarse tokens suitable for multiset Jaccard comparison.
5
+ */
6
+ const TOKEN_RE = /[A-Za-z_][A-Za-z0-9_]*|\d+(?:\.\d+)?|[^\s\w]+/g;
7
+ /** Tokenize source text into a multiset-friendly token list (lowercased). */
8
+ export function tokenizeSource(text) {
9
+ const tokens = [];
10
+ const matches = text.match(TOKEN_RE);
11
+ if (matches === null)
12
+ return tokens;
13
+ for (const raw of matches) {
14
+ const t = raw.trim().toLowerCase();
15
+ if (t.length > 0)
16
+ tokens.push(t);
17
+ }
18
+ return tokens;
19
+ }
20
+ /** Build a multiset frequency map from tokens. */
21
+ export function tokenMultiset(tokens) {
22
+ const map = new Map();
23
+ for (const token of tokens) {
24
+ map.set(token, (map.get(token) ?? 0) + 1);
25
+ }
26
+ return map;
27
+ }
28
+ //# sourceMappingURL=tokenize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../src/enricher/tokenize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,QAAQ,GAAG,gDAAgD,CAAC;AAElE,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAC,MAAyB;IACrD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Error types for the nectar daemon.
3
+ *
4
+ * Mirrors honeycomb's `DaemonAlreadyRunningError` contract
5
+ * (honeycomb/src/daemon/runtime/assemble.ts:672-685) per PRD-002d: a second
6
+ * `nectar daemon` start throws this BEFORE the socket bind, so port 3854 is
7
+ * never double-bound. The error carries the PID of the already-running daemon.
8
+ */
9
+ export declare class DaemonAlreadyRunningError extends Error {
10
+ readonly existingPid: number;
11
+ constructor(existingPid: number, lockPath: string);
12
+ }
13
+ /**
14
+ * Thrown by `start()` when a concurrent `shutdown()` won the race between lock
15
+ * acquisition and the socket bind completing (daemon-api review M6). The start
16
+ * unwinds: it closes the socket it just bound and releases the lock it acquired,
17
+ * so the daemon never ends up listening without holding the lock. The rollback
18
+ * path treats this as an ordinary start failure.
19
+ */
20
+ export declare class DaemonStartAbortedError extends Error {
21
+ constructor();
22
+ }
23
+ /**
24
+ * Thrown when a runtime configuration value is malformed or out of range
25
+ * (daemon-api review L6): e.g. `NECTAR_PORT=3854abc` (trailing garbage), a port
26
+ * outside 1-65535, or a poll interval below the safe floor. Surfaced as a clear
27
+ * startup error instead of an opaque bind failure or a 1 ms tight poll.
28
+ */
29
+ export declare class ConfigError extends Error {
30
+ constructor(message: string);
31
+ }
32
+ /**
33
+ * Thrown when `start()` would bind off loopback with {@link allowAllPermission}
34
+ * as the active gate (PRD-018j / NEC-029): without a real permission gate the API
35
+ * would be network-reachable with no authentication.
36
+ */
37
+ export declare class NonLoopbackOpenApiError extends Error {
38
+ readonly host: string;
39
+ constructor(host: string);
40
+ }
41
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAOlD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;;CAKjD;AAED;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM;CAQzB"}
package/dist/errors.js ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Error types for the nectar daemon.
3
+ *
4
+ * Mirrors honeycomb's `DaemonAlreadyRunningError` contract
5
+ * (honeycomb/src/daemon/runtime/assemble.ts:672-685) per PRD-002d: a second
6
+ * `nectar daemon` start throws this BEFORE the socket bind, so port 3854 is
7
+ * never double-bound. The error carries the PID of the already-running daemon.
8
+ */
9
+ export class DaemonAlreadyRunningError extends Error {
10
+ existingPid;
11
+ constructor(existingPid, lockPath) {
12
+ super(`nectar daemon is already running (pid ${existingPid}); lock held at ${lockPath}`);
13
+ this.name = "DaemonAlreadyRunningError";
14
+ this.existingPid = existingPid;
15
+ }
16
+ }
17
+ /**
18
+ * Thrown by `start()` when a concurrent `shutdown()` won the race between lock
19
+ * acquisition and the socket bind completing (daemon-api review M6). The start
20
+ * unwinds: it closes the socket it just bound and releases the lock it acquired,
21
+ * so the daemon never ends up listening without holding the lock. The rollback
22
+ * path treats this as an ordinary start failure.
23
+ */
24
+ export class DaemonStartAbortedError extends Error {
25
+ constructor() {
26
+ super("nectar daemon start was aborted by a concurrent shutdown");
27
+ this.name = "DaemonStartAbortedError";
28
+ }
29
+ }
30
+ /**
31
+ * Thrown when a runtime configuration value is malformed or out of range
32
+ * (daemon-api review L6): e.g. `NECTAR_PORT=3854abc` (trailing garbage), a port
33
+ * outside 1-65535, or a poll interval below the safe floor. Surfaced as a clear
34
+ * startup error instead of an opaque bind failure or a 1 ms tight poll.
35
+ */
36
+ export class ConfigError extends Error {
37
+ constructor(message) {
38
+ super(message);
39
+ this.name = "ConfigError";
40
+ }
41
+ }
42
+ /**
43
+ * Thrown when `start()` would bind off loopback with {@link allowAllPermission}
44
+ * as the active gate (PRD-018j / NEC-029): without a real permission gate the API
45
+ * would be network-reachable with no authentication.
46
+ */
47
+ export class NonLoopbackOpenApiError extends Error {
48
+ host;
49
+ constructor(host) {
50
+ super(`refusing to start: NECTAR_HOST=${host} binds off loopback but no permission gate is configured; ` +
51
+ "the API would be reachable without authentication. Use 127.0.0.1 or configure a PermissionGate.");
52
+ this.name = "NonLoopbackOpenApiError";
53
+ this.host = host;
54
+ }
55
+ }
56
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,WAAW,CAAS;IAE7B,YAAY,WAAmB,EAAE,QAAgB;QAC/C,KAAK,CACH,yCAAyC,WAAW,mBAAmB,QAAQ,EAAE,CAClF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD;QACE,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,CAAS;IAEtB,YAAY,IAAY;QACtB,KAAK,CACH,kCAAkC,IAAI,4DAA4D;YAChG,iGAAiG,CACpG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}