@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,249 @@
1
+ /**
2
+ * The workspace ignore contract for the file-registration intake (PRD-006a),
3
+ * extended by PRD-018c (NEC-007) into the ONE shared predicate every leg of
4
+ * the mission consults.
5
+ *
6
+ * Nectar does not maintain its own bespoke ignore list. Per PRD-006a
7
+ * ("Workspace scope and the ignore contract") and brooding-pipeline.md, the
8
+ * live-watch intake honors the SAME ignore contract the CodeGraph discovery
9
+ * uses: git-tracked-set semantics plus a per-repo ignore file. The daemon can
10
+ * later inject the real CodeGraph predicate; this module provides a pragmatic,
11
+ * dependency-free default so the intake is correct before that wiring lands.
12
+ *
13
+ * The default ({@link createDefaultIgnore}):
14
+ * - always skips the version-control and dependency dirs every CodeGraph
15
+ * discovery skips (`.git/`, `node_modules/`), and the daemon runtime dir
16
+ * (`.honeycomb/`) so the projection/lock/pid churn never triggers a cycle,
17
+ * - honors a `.honeycomb/graph-ignore.json`-style per-repo ignore file if one
18
+ * is present at the workspace root, matching the CodeGraph's own ignore-file
19
+ * convention (no nectar-specific list is invented).
20
+ *
21
+ * PRD-018c NEC-007 adds {@link createSharedIgnore}: the default UNION
22
+ * `.gitignore` semantics, so brooding discovery, the watch intake, and the
23
+ * resync path all exclude exactly the same set (AC-018c.1). Gitignore
24
+ * semantics are approximated by a cached `git ls-files --cached --others
25
+ * --exclude-standard` snapshot (the same "tracked + untracked-but-not-ignored"
26
+ * set brooding discovery already uses), refreshed on resync rather than
27
+ * spawned per event, with `git check-ignore` as the per-path fallback for a
28
+ * cache miss (a path created since the last refresh). Git genuinely absent
29
+ * degrades to the segment/graph-ignore-only default (silent, matches the walk
30
+ * fallback); git present but ERRORING is surfaced through `onGitError`,
31
+ * never silently collapsed (NEC-039).
32
+ *
33
+ * `isIgnored` takes a repo-relative, forward-slashed path.
34
+ */
35
+ import { readFileSync } from "node:fs";
36
+ import { join } from "node:path";
37
+ import { spawnSync } from "node:child_process";
38
+ /** Path segments always dropped, independent of any ignore file. */
39
+ export const ALWAYS_IGNORED_SEGMENTS = [".git", "node_modules", ".honeycomb"];
40
+ /** The per-repo ignore file the CodeGraph discovery convention uses (relative to the workspace root). */
41
+ export const GRAPH_IGNORE_FILE = ".honeycomb/graph-ignore.json";
42
+ function normalize(relPath) {
43
+ // Trim a trailing slash too, so a declared prefix like "dist/" matches "dist"
44
+ // and "dist/x" whether or not the ignore file wrote the trailing slash.
45
+ return relPath
46
+ .replace(/\\/g, "/")
47
+ .replace(/^\.\//, "")
48
+ .replace(/^\/+/, "")
49
+ .replace(/\/+$/, "");
50
+ }
51
+ /** True if any path segment equals one of the always-ignored dir names. */
52
+ function hasIgnoredSegment(relPath) {
53
+ const segments = relPath.split("/");
54
+ for (const seg of segments) {
55
+ if (ALWAYS_IGNORED_SEGMENTS.includes(seg))
56
+ return true;
57
+ }
58
+ return false;
59
+ }
60
+ /**
61
+ * Read the per-repo ignore file (a JSON array of prefixes, or `{ "ignore": [...] }`).
62
+ * Missing or malformed files yield an empty list (fail-open to the built-in
63
+ * segment rules); a hard read error other than "not found" is swallowed so the
64
+ * intake never crashes on a bad ignore file.
65
+ */
66
+ export function loadIgnorePrefixes(root, readFile = defaultReadFile) {
67
+ let raw;
68
+ try {
69
+ raw = readFile(join(root, GRAPH_IGNORE_FILE));
70
+ }
71
+ catch {
72
+ return [];
73
+ }
74
+ if (raw === null)
75
+ return [];
76
+ let parsed;
77
+ try {
78
+ parsed = JSON.parse(raw);
79
+ }
80
+ catch {
81
+ return [];
82
+ }
83
+ const list = Array.isArray(parsed)
84
+ ? parsed
85
+ : typeof parsed === "object" && parsed !== null && Array.isArray(parsed.ignore)
86
+ ? parsed.ignore
87
+ : [];
88
+ return list.filter((entry) => typeof entry === "string" && entry.length > 0).map(normalize);
89
+ }
90
+ function defaultReadFile(p) {
91
+ try {
92
+ return readFileSync(p, "utf8");
93
+ }
94
+ catch (err) {
95
+ if (typeof err === "object" && err !== null && err.code === "ENOENT")
96
+ return null;
97
+ throw err;
98
+ }
99
+ }
100
+ /**
101
+ * Build the default ignore predicate for a workspace root. Combines the built-in
102
+ * segment rules with any prefixes declared in the repo's `graph-ignore.json`.
103
+ * A path is ignored if it (a) contains an always-ignored segment, or (b) equals
104
+ * or sits under one of the declared ignore prefixes.
105
+ */
106
+ export function createDefaultIgnore(root, readFile = defaultReadFile) {
107
+ const prefixes = loadIgnorePrefixes(root, readFile);
108
+ return (relPath) => {
109
+ const p = normalize(relPath);
110
+ if (p === "")
111
+ return true;
112
+ if (hasIgnoredSegment(p))
113
+ return true;
114
+ for (const prefix of prefixes) {
115
+ if (p === prefix || p.startsWith(`${prefix}/`))
116
+ return true;
117
+ }
118
+ return false;
119
+ };
120
+ }
121
+ // ── PRD-018c NEC-007/NEC-039: the git side of the shared ignore predicate ────
122
+ /** Args for the tracked+untracked-but-not-ignored snapshot (the same set brooding discovery enumerates). */
123
+ const GIT_SNAPSHOT_ARGS = ["ls-files", "--cached", "--others", "--exclude-standard", "-z"];
124
+ /** Guards a pathological repo's `ls-files` output. */
125
+ const GIT_SNAPSHOT_MAX_BUFFER = 64 * 1024 * 1024;
126
+ /** The real `git ls-files` runner: spawns synchronously, never throws. */
127
+ export const runGitLsFiles = (root) => {
128
+ let res;
129
+ try {
130
+ res = spawnSync("git", [...GIT_SNAPSHOT_ARGS], {
131
+ cwd: root,
132
+ encoding: "buffer",
133
+ maxBuffer: GIT_SNAPSHOT_MAX_BUFFER,
134
+ windowsHide: true,
135
+ });
136
+ }
137
+ catch (err) {
138
+ return { status: "error", reason: err instanceof Error ? err.message : String(err) };
139
+ }
140
+ if (res.error !== undefined) {
141
+ const code = res.error.code;
142
+ if (code === "ENOENT")
143
+ return { status: "absent" }; // git not on PATH
144
+ // ENOBUFS (output exceeded maxBuffer) and any other spawn-level error mean
145
+ // git IS present but the call itself failed: loud, never silent (NEC-039).
146
+ return { status: "error", reason: res.error.message };
147
+ }
148
+ if (res.status !== 0) {
149
+ const stderr = Buffer.isBuffer(res.stderr) ? res.stderr.toString("utf8") : String(res.stderr ?? "");
150
+ if (/not a git repository/i.test(stderr))
151
+ return { status: "absent" };
152
+ return { status: "error", reason: stderr.trim() || `git exited with status ${String(res.status)}` };
153
+ }
154
+ if (res.stdout === null)
155
+ return { status: "error", reason: "git ls-files produced no stdout" };
156
+ const stdout = Buffer.isBuffer(res.stdout) ? res.stdout.toString("utf8") : String(res.stdout);
157
+ const paths = stdout
158
+ .split("\0")
159
+ .map((p) => p.replace(/\\/g, "/"))
160
+ .filter((p) => p.length > 0);
161
+ return { status: "ok", paths };
162
+ };
163
+ export const runGitCheckIgnore = (root, relPath) => {
164
+ let res;
165
+ try {
166
+ res = spawnSync("git", ["check-ignore", "-q", "--", relPath], { cwd: root, windowsHide: true });
167
+ }
168
+ catch {
169
+ return null;
170
+ }
171
+ if (res.error !== undefined)
172
+ return null;
173
+ // check-ignore: exit 0 = ignored, 1 = not ignored, >1 (typically 128) = fatal error.
174
+ if (res.status === 0)
175
+ return true;
176
+ if (res.status === 1)
177
+ return false;
178
+ return null;
179
+ };
180
+ /**
181
+ * Build the ONE shared ignore predicate for a workspace (PRD-018c AC-018c.1):
182
+ * {@link createDefaultIgnore}'s segments+graph-ignore UNION gitignore
183
+ * semantics, approximated by a cached `git ls-files` snapshot with a
184
+ * per-path `git check-ignore` fallback for cache misses. Call {@link
185
+ * SharedIgnore.refresh} once per resync to keep the snapshot warm without
186
+ * spawning git on every watch event.
187
+ */
188
+ export function createSharedIgnore(root, opts = {}) {
189
+ const base = createDefaultIgnore(root, opts.readFile);
190
+ const gitLsFiles = opts.gitLsFiles ?? runGitLsFiles;
191
+ const gitCheckIgnore = opts.gitCheckIgnore ?? runGitCheckIgnore;
192
+ const onGitError = opts.onGitError ?? (() => { });
193
+ /** Tracked+untracked-not-ignored snapshot; null when git is absent or no snapshot has ever succeeded. */
194
+ let eligible = null;
195
+ let gitAvailable = false;
196
+ let lastError = null;
197
+ function refresh() {
198
+ const probe = gitLsFiles(root);
199
+ switch (probe.status) {
200
+ case "ok":
201
+ eligible = new Set(probe.paths);
202
+ gitAvailable = true;
203
+ lastError = null;
204
+ return;
205
+ case "absent":
206
+ eligible = null;
207
+ gitAvailable = false;
208
+ lastError = null;
209
+ return;
210
+ case "error":
211
+ // Git IS present but errored (NEC-039): the failure is ALWAYS
212
+ // surfaced loudly via `onGitError`, regardless of caching. Whether
213
+ // gitignore semantics stay "available" depends on whether a prior
214
+ // successful snapshot is still cached: a still-useful (if stale)
215
+ // snapshot is never abandoned just because the LATEST refresh failed,
216
+ // but a workspace with no snapshot at all never silently claims full
217
+ // gitignore coverage by spawning `check-ignore` for every single
218
+ // path - it degrades to the segment/graph-ignore-only base instead.
219
+ gitAvailable = eligible !== null;
220
+ lastError = probe.reason;
221
+ onGitError(probe.reason);
222
+ return;
223
+ default: {
224
+ const _exhaustive = probe;
225
+ return _exhaustive;
226
+ }
227
+ }
228
+ }
229
+ refresh(); // NEC-007 point 1: warm the cache once at construction.
230
+ function isGitIgnored(relPath) {
231
+ if (eligible === null)
232
+ return false; // no usable snapshot (git absent, or errored with nothing cached yet)
233
+ if (eligible.has(relPath))
234
+ return false; // definitely NOT ignored
235
+ // Cache miss against a real (possibly stale) snapshot: either genuinely
236
+ // ignored, or created since the last refresh. The per-path fallback keeps
237
+ // this correct without spawning git for every single event (NEC-007
238
+ // point 1) - it only runs for paths the last known-good snapshot didn't
239
+ // already resolve.
240
+ return gitCheckIgnore(root, relPath) === true;
241
+ }
242
+ return {
243
+ isIgnored: (relPath) => base(relPath) || isGitIgnored(relPath),
244
+ refresh,
245
+ isGitAvailable: () => gitAvailable,
246
+ lastGitError: () => lastError,
247
+ };
248
+ }
249
+ //# sourceMappingURL=ignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/registration/ignore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * The 5-step re-association ladder (PRD-006d), from ai/identity-and-reassociation.md.
3
+ *
4
+ * Evaluated top-down per observed file, first match wins:
5
+ * 1. (path, mtime, size) exact -> same nectar, no-op (no content read).
6
+ * 2. path match, content changed -> same nectar, append a version row.
7
+ * 3. exact content-hash match to a MISSING file -> carry the nectar (move).
8
+ * 4. TLSH fuzzy match to a missing file above a threshold -> carry, flag confidence;
9
+ * below the high band -> surface for review, do NOT claim, fall through to mint.
10
+ * 5. nothing matches -> mint a fresh nectar (or a copy, with provenance).
11
+ *
12
+ * DELIBERATE SPEC GAP preserved: the fuzzy confidence threshold is NOT pinned
13
+ * here. Step 4 runs only if a `fuzzy` step is injected, and that injected step
14
+ * owns the (deliberately unpinned, "tuned during brooding") threshold. The ladder
15
+ * itself hardcodes no number. Nectars are never deleted or reused (pruning is a
16
+ * separate, explicit operation, `prune --confirm`, PRD-006d / prune-cli.ts).
17
+ */
18
+ import type { Tenancy } from "../hive-graph/model.js";
19
+ import type { LatestVersion, HiveGraphStore } from "../hive-graph/store.js";
20
+ /** A file observed on disk, ready to feed the ladder. `readContent` is called only when hashing is needed (not on the step-1 fast path). */
21
+ export interface ObservedFile {
22
+ readonly relPath: string;
23
+ readonly sizeBytes: number;
24
+ readonly mtimeObserved: string;
25
+ readContent(): string | Uint8Array;
26
+ }
27
+ /**
28
+ * A missing-file candidate the fuzzy step (step 4) consults. It is a superset of
29
+ * {@link LatestVersion} (so it still carries `.identity` and `.version`, keeping
30
+ * every existing injected fuzzy step working) plus the missing nectar's latest
31
+ * TLSH fingerprint. The fingerprint is read from the PERSISTED
32
+ * `hive_graph_versions.fingerprint` column of the candidate's latest version,
33
+ * so step 4 can match against a now-gone file without re-reading it AND survive a
34
+ * daemon restart: this is how the missing-files set "carries each missing
35
+ * nectar's latest content hash AND its TLSH fingerprint" (PRD-006b AC /
36
+ * identity-and-reassociation.md Step 3).
37
+ */
38
+ export interface FuzzyCandidate extends LatestVersion {
39
+ /** The candidate's latest TLSH fingerprint, or null when none was cached. */
40
+ readonly fingerprint: string | null;
41
+ }
42
+ /**
43
+ * The injected fuzzy-match step (step 4). It owns fingerprinting, distance, the
44
+ * +/-20% size-bucket optimization, and the deliberately-unpinned confidence
45
+ * threshold. Given the new content and the missing candidates (each carrying a
46
+ * fingerprint), it returns a confident carry, a low-confidence review, or none.
47
+ */
48
+ export interface FuzzyStep {
49
+ match(content: string | Uint8Array, candidates: readonly FuzzyCandidate[]): FuzzyOutcome;
50
+ }
51
+ export type FuzzyOutcome = {
52
+ readonly kind: "match";
53
+ readonly nectar: string;
54
+ readonly confidence: number;
55
+ readonly distance?: number;
56
+ } | {
57
+ readonly kind: "review";
58
+ readonly nectar: string;
59
+ readonly confidence: number;
60
+ readonly distance?: number;
61
+ } | {
62
+ readonly kind: "none";
63
+ };
64
+ /** A low-confidence step-4 candidate surfaced to `review-matches` (AC-18). Carries everything an accept needs. */
65
+ export interface ReviewCandidate {
66
+ /** The candidate MISSING nectar a human may confirm the new path is. */
67
+ readonly nectar: string;
68
+ /** The new path (already minted fresh at review time; accept re-associates it). */
69
+ readonly relPath: string;
70
+ readonly confidence: number;
71
+ readonly distance: number | null;
72
+ /** The new file's content hash (so accept can append the carried version row without re-reading disk). */
73
+ readonly contentHash: string;
74
+ readonly sizeBytes: number;
75
+ readonly mtimeObserved: string;
76
+ /** The fresh nectar minted for `relPath` when the review was raised. */
77
+ readonly mintedNectar: string;
78
+ }
79
+ /**
80
+ * The fast-path stat cache (PRD-018c NEC-035 / AC-018c.9): a side structure
81
+ * (never a hive-graph column) recording each path's freshest observed
82
+ * mtime/size when step 2 finds the content UNCHANGED (a touch, a branch-switch
83
+ * mtime bump). `hive_graph_versions.mtimeObserved`/`sizeBytes` are documented
84
+ * as "not authoritative; a fast-path cache key only" (model.ts) - the version
85
+ * ROW is never rewritten (append-only stays append-only); this cache is the
86
+ * "cheap side column" the PRD's fix direction offers as the alternative to an
87
+ * in-place UPDATE, so it carries no PRD-018g NEC-017 precedent. Step 1 prefers
88
+ * a cache hit over the stored version row's stat so a touch is remembered
89
+ * without a new version row, keeping the step-1 fast path fast forever
90
+ * instead of degrading to a full re-hash on every future observation.
91
+ */
92
+ export interface StatCache {
93
+ get(relPath: string): {
94
+ readonly mtimeObserved: string;
95
+ readonly sizeBytes: number;
96
+ } | undefined;
97
+ set(relPath: string, stat: {
98
+ readonly mtimeObserved: string;
99
+ readonly sizeBytes: number;
100
+ }): void;
101
+ delete(relPath: string): void;
102
+ }
103
+ /** A simple `Map`-backed {@link StatCache}. One instance persists for the lifetime of a `RegistrationService` (across cycles, not across a daemon restart - a restart re-warms via the store's own version-row stat, just without the touch optimization until the next touch). */
104
+ export declare function createInMemoryStatCache(): StatCache;
105
+ export interface LadderDeps {
106
+ readonly store: HiveGraphStore;
107
+ readonly tenancy: Tenancy;
108
+ /** ISO 8601 "now"; injectable for deterministic tests. */
109
+ now(): string;
110
+ /** Whether a repo-relative path currently exists on disk. Distinguishes move (source gone) from copy (source present). */
111
+ existsOnDisk(relPath: string): boolean;
112
+ /** Optional step 4. Omit to disable fuzzy matching entirely (then an edited-moved file mints). */
113
+ readonly fuzzy?: FuzzyStep;
114
+ /** Called with a low-confidence step-4 candidate (surfaced to `review-matches`); the ladder then mints. */
115
+ onReviewNeeded?(candidate: ReviewCandidate): void;
116
+ /** Called when a version row is appended and warrants (re)description. */
117
+ onEnrichQueued?(nectar: string): void;
118
+ /**
119
+ * PRD-018c NEC-035 / AC-018c.9: the fast-path stat cache. Omit to preserve
120
+ * pre-018c behavior (a step-2 touch is never remembered, so every future
121
+ * observation re-hashes).
122
+ */
123
+ readonly statCache?: StatCache;
124
+ /**
125
+ * PRD-018c NEC-034 / AC-018c.8: true when the workspace filesystem is
126
+ * case-insensitive (probed once per workspace, never guessed from
127
+ * `process.platform`). Enables the step-3 case-only-rename guard below.
128
+ * Omit/false preserves pre-018c case-sensitive behavior exactly.
129
+ */
130
+ readonly caseInsensitive?: boolean;
131
+ /**
132
+ * PRD-018c EX-4 (change-detection review M7): the set of KNOWN paths
133
+ * currently missing from disk, computed ONCE per resync/settle cycle
134
+ * (`service.ts`'s `runCycle`) and passed in here so step 4's candidate scan
135
+ * is an O(1) set lookup instead of an `existsOnDisk` stat per known path per
136
+ * new file. Omit to fall back to the pre-018c per-candidate `existsOnDisk`
137
+ * stat (unit tests calling `reassociate` directly need no change).
138
+ */
139
+ readonly missingPaths?: ReadonlySet<string>;
140
+ }
141
+ export type LadderStep = 1 | 2 | 3 | 4 | 5;
142
+ export type LadderAction = "noop" | "append-version" | "carry-nectar" | "mint" | "copy";
143
+ export interface LadderResult {
144
+ readonly step: LadderStep;
145
+ readonly action: LadderAction;
146
+ readonly nectar: string;
147
+ }
148
+ /** Run the ladder for one observed file. Returns which step fired and the nectar it resolved to. */
149
+ export declare function reassociate(file: ObservedFile, deps: LadderDeps): LadderResult;
150
+ /**
151
+ * Carry an existing nectar onto a new path (the `review-matches` accept path,
152
+ * AC-18): append a carried version row for `sourceNectar` at `target`. Returns
153
+ * false if the source nectar no longer exists. This is exactly what a
154
+ * high-confidence step 4 does, applied on human confirmation instead.
155
+ *
156
+ * The carried row's `fingerprint` is left NULL here: the accept path works from
157
+ * the persisted pending-candidate metadata (hash/size/mtime), not the file
158
+ * content, so there is nothing to fingerprint. It self-heals on the next
159
+ * observation of the file (a step-2 edit persists a fresh fingerprint), per the
160
+ * nullable-column contract.
161
+ */
162
+ export declare function carryNectar(store: HiveGraphStore, tenancy: Tenancy, now: string, sourceNectar: string, target: {
163
+ relPath: string;
164
+ contentHash: string;
165
+ sizeBytes: number;
166
+ mtimeObserved: string;
167
+ }, confidence: number | null): boolean;
168
+ /**
169
+ * PRD-018d (NEC-036): the idempotent crash-repair sweep for the ladder's
170
+ * multi-write actions.
171
+ *
172
+ * Every ladder action that mutates the store is a SEQUENCE of two writes
173
+ * (mint = `insertIdentity` + `appendVersion`; edit/carry = `appendVersion` +
174
+ * `touchIdentity`; review-accept = carry + `deleteNectar` of the placeholder,
175
+ * `review-cli.ts`), with no atomicity across a crash between them (the
176
+ * sync/async store bridge that would let these be one transaction is
177
+ * PRD-018b's construction, a Non-Goal here). This sweep heals the three
178
+ * resulting invariant violations instead, and is idempotent: running it again
179
+ * on an already-healed store finds nothing to do.
180
+ *
181
+ * 1. An orphan identity (a mint that crashed after `insertIdentity`, before
182
+ * `appendVersion`): zero version rows. There is no content to construct a
183
+ * version from, so the only sound repair is deleting the orphan (the same
184
+ * `deleteNectar` review-accept already uses to retire a placeholder -
185
+ * this sweep is not a new deletion path, just a new caller of the
186
+ * existing one). Requires the OPTIONAL `store.listIdentities` (skipped,
187
+ * not guessed at, when the adapter omits it).
188
+ * 2. A stale `identity.lastUpdateDate` (an edit/carry that crashed after
189
+ * `appendVersion`, before `touchIdentity`): the identity's timestamp
190
+ * predates its own latest version's `lastUpdateDate`, which feeds prune
191
+ * eligibility directly (`prune-cli.ts`). Healed by re-running
192
+ * `touchIdentity` with the version's own timestamp.
193
+ * 3. Two identities both claiming one path as their latest version's `path`
194
+ * (a review-accept that crashed after the carry landed, before the
195
+ * placeholder delete ran): under normal ladder operation a carry only
196
+ * ever targets a path with NO existing identity, so this can only be a
197
+ * crash artifact. The carried identity's version always has a strictly
198
+ * later `observedAt` than the placeholder's original mint, so the
199
+ * survivor is the entry with the latest `observedAt`; every other
200
+ * claimant is deleted.
201
+ */
202
+ export declare function repairLadderState(store: HiveGraphStore, tenancy: Tenancy): RepairReport;
203
+ /** What {@link repairLadderState} healed in one sweep pass. */
204
+ export interface RepairReport {
205
+ readonly healedOrphanIdentities: number;
206
+ /** Orphan version rows (no matching identity) healed by reconstructing a minimal identity (CodeRabbit PR-18 finding #8). */
207
+ readonly healedOrphanVersions: number;
208
+ readonly healedStaleLastUpdate: number;
209
+ readonly healedDuplicatePaths: number;
210
+ }
211
+ //# sourceMappingURL=ladder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../../src/registration/ladder.ts"],"names":[],"mappings":"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"}