@harperfast/harper 5.1.20 → 5.2.0-alpha.5

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 (395) hide show
  1. package/agent/operations.ts +13 -16
  2. package/components/Application.ts +188 -7
  3. package/components/ApplicationScope.ts +3 -0
  4. package/components/Scope.ts +12 -0
  5. package/components/anthropic/index.ts +9 -2
  6. package/components/bedrock/index.ts +25 -2
  7. package/components/componentLoader.ts +56 -7
  8. package/components/componentSecrets.ts +451 -0
  9. package/components/deploymentRecorder.ts +7 -1
  10. package/components/mcp/adapters/fastify.ts +3 -0
  11. package/components/mcp/adapters/harperHttp.ts +3 -0
  12. package/components/mcp/audit.ts +21 -6
  13. package/components/mcp/customResourceRegistry.ts +17 -38
  14. package/components/mcp/listChanged.ts +37 -20
  15. package/components/mcp/quota.ts +145 -0
  16. package/components/mcp/rateLimit.ts +152 -14
  17. package/components/mcp/resources.ts +2 -4
  18. package/components/mcp/toolRegistry.ts +73 -4
  19. package/components/mcp/tools/application.ts +77 -8
  20. package/components/mcp/tools/operations.ts +106 -36
  21. package/components/mcp/tools/schemas/operationDescriptions.ts +4 -4
  22. package/components/mcp/tools/schemas/operations.ts +5 -0
  23. package/components/mcp/transport.ts +55 -4
  24. package/components/ollama/index.ts +6 -2
  25. package/components/openai/index.ts +9 -2
  26. package/components/operations.js +204 -10
  27. package/components/operationsValidation.js +173 -0
  28. package/components/secretOperations.ts +498 -0
  29. package/config/configUtils.ts +25 -1
  30. package/config-app.schema.json +81 -0
  31. package/config-root.schema.json +8 -1
  32. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -3
  33. package/dataLayer/readAuditLog.ts +14 -0
  34. package/dataLayer/schemaDescribe.ts +1 -0
  35. package/dist/agent/operations.d.ts +7 -4
  36. package/dist/agent/operations.js +13 -15
  37. package/dist/agent/operations.js.map +1 -1
  38. package/dist/components/Application.d.ts +25 -2
  39. package/dist/components/Application.js +166 -7
  40. package/dist/components/Application.js.map +1 -1
  41. package/dist/components/ApplicationScope.d.ts +2 -0
  42. package/dist/components/ApplicationScope.js +3 -0
  43. package/dist/components/ApplicationScope.js.map +1 -1
  44. package/dist/components/Scope.d.ts +8 -0
  45. package/dist/components/Scope.js +11 -0
  46. package/dist/components/Scope.js.map +1 -1
  47. package/dist/components/anthropic/index.d.ts +4 -1
  48. package/dist/components/anthropic/index.js +4 -2
  49. package/dist/components/anthropic/index.js.map +1 -1
  50. package/dist/components/bedrock/index.d.ts +4 -1
  51. package/dist/components/bedrock/index.js +22 -2
  52. package/dist/components/bedrock/index.js.map +1 -1
  53. package/dist/components/componentLoader.d.ts +2 -0
  54. package/dist/components/componentLoader.js +52 -10
  55. package/dist/components/componentLoader.js.map +1 -1
  56. package/dist/components/componentSecrets.d.ts +63 -0
  57. package/dist/components/componentSecrets.js +405 -0
  58. package/dist/components/componentSecrets.js.map +1 -0
  59. package/dist/components/deploymentRecorder.d.ts +3 -0
  60. package/dist/components/deploymentRecorder.js +4 -3
  61. package/dist/components/deploymentRecorder.js.map +1 -1
  62. package/dist/components/mcp/adapters/fastify.d.ts +2 -0
  63. package/dist/components/mcp/adapters/fastify.js +1 -0
  64. package/dist/components/mcp/adapters/fastify.js.map +1 -1
  65. package/dist/components/mcp/adapters/harperHttp.d.ts +2 -0
  66. package/dist/components/mcp/adapters/harperHttp.js +1 -0
  67. package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
  68. package/dist/components/mcp/audit.d.ts +2 -2
  69. package/dist/components/mcp/audit.js +20 -5
  70. package/dist/components/mcp/audit.js.map +1 -1
  71. package/dist/components/mcp/customResourceRegistry.d.ts +5 -12
  72. package/dist/components/mcp/customResourceRegistry.js +15 -30
  73. package/dist/components/mcp/customResourceRegistry.js.map +1 -1
  74. package/dist/components/mcp/listChanged.d.ts +7 -2
  75. package/dist/components/mcp/listChanged.js +28 -0
  76. package/dist/components/mcp/listChanged.js.map +1 -1
  77. package/dist/components/mcp/quota.d.ts +31 -0
  78. package/dist/components/mcp/quota.js +155 -0
  79. package/dist/components/mcp/quota.js.map +1 -0
  80. package/dist/components/mcp/rateLimit.d.ts +19 -3
  81. package/dist/components/mcp/rateLimit.js +129 -13
  82. package/dist/components/mcp/rateLimit.js.map +1 -1
  83. package/dist/components/mcp/resources.js.map +1 -1
  84. package/dist/components/mcp/toolRegistry.d.ts +39 -1
  85. package/dist/components/mcp/toolRegistry.js +60 -5
  86. package/dist/components/mcp/toolRegistry.js.map +1 -1
  87. package/dist/components/mcp/tools/application.d.ts +8 -1
  88. package/dist/components/mcp/tools/application.js +65 -5
  89. package/dist/components/mcp/tools/application.js.map +1 -1
  90. package/dist/components/mcp/tools/operations.d.ts +15 -3
  91. package/dist/components/mcp/tools/operations.js +99 -38
  92. package/dist/components/mcp/tools/operations.js.map +1 -1
  93. package/dist/components/mcp/tools/schemas/operationDescriptions.js +4 -4
  94. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  95. package/dist/components/mcp/tools/schemas/operations.js +4 -0
  96. package/dist/components/mcp/tools/schemas/operations.js.map +1 -1
  97. package/dist/components/mcp/transport.d.ts +6 -0
  98. package/dist/components/mcp/transport.js +47 -3
  99. package/dist/components/mcp/transport.js.map +1 -1
  100. package/dist/components/ollama/index.d.ts +4 -1
  101. package/dist/components/ollama/index.js +4 -2
  102. package/dist/components/ollama/index.js.map +1 -1
  103. package/dist/components/openai/index.d.ts +4 -1
  104. package/dist/components/openai/index.js +4 -2
  105. package/dist/components/openai/index.js.map +1 -1
  106. package/dist/components/operations.d.ts +39 -0
  107. package/dist/components/operations.js +194 -2
  108. package/dist/components/operations.js.map +1 -1
  109. package/dist/components/operationsValidation.d.ts +38 -0
  110. package/dist/components/operationsValidation.js +155 -0
  111. package/dist/components/operationsValidation.js.map +1 -1
  112. package/dist/components/secretOperations.d.ts +113 -0
  113. package/dist/components/secretOperations.js +475 -0
  114. package/dist/components/secretOperations.js.map +1 -0
  115. package/dist/config/configUtils.d.ts +4 -1
  116. package/dist/config/configUtils.js +18 -1
  117. package/dist/config/configUtils.js.map +1 -1
  118. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -3
  119. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
  120. package/dist/dataLayer/readAuditLog.js +11 -0
  121. package/dist/dataLayer/readAuditLog.js.map +1 -1
  122. package/dist/dataLayer/schemaDescribe.js +2 -0
  123. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  124. package/dist/globals.d.ts +1 -1
  125. package/dist/globals.js +1 -0
  126. package/dist/globals.js.map +1 -1
  127. package/dist/index.d.ts +3 -0
  128. package/dist/index.js +1 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/json/systemSchema.json +38 -0
  131. package/dist/resources/DatabaseTransaction.d.ts +31 -3
  132. package/dist/resources/DatabaseTransaction.js +190 -29
  133. package/dist/resources/DatabaseTransaction.js.map +1 -1
  134. package/dist/resources/LMDBTransaction.d.ts +1 -1
  135. package/dist/resources/LMDBTransaction.js +43 -5
  136. package/dist/resources/LMDBTransaction.js.map +1 -1
  137. package/dist/resources/PrimaryRocksDatabase.d.ts +51 -0
  138. package/dist/resources/PrimaryRocksDatabase.js +194 -0
  139. package/dist/resources/PrimaryRocksDatabase.js.map +1 -0
  140. package/dist/resources/RecordEncoder.d.ts +1 -0
  141. package/dist/resources/RecordEncoder.js +81 -75
  142. package/dist/resources/RecordEncoder.js.map +1 -1
  143. package/dist/resources/RequestTarget.d.ts +19 -0
  144. package/dist/resources/RequestTarget.js.map +1 -1
  145. package/dist/resources/Resource.d.ts +0 -1
  146. package/dist/resources/Resource.js +103 -16
  147. package/dist/resources/Resource.js.map +1 -1
  148. package/dist/resources/ResourceInterface.d.ts +6 -2
  149. package/dist/resources/ResourceInterface.js.map +1 -1
  150. package/dist/resources/Resources.js.map +1 -1
  151. package/dist/resources/Table.d.ts +6 -4
  152. package/dist/resources/Table.js +247 -24
  153. package/dist/resources/Table.js.map +1 -1
  154. package/dist/resources/analytics/read.js +25 -28
  155. package/dist/resources/analytics/read.js.map +1 -1
  156. package/dist/resources/blob.js +165 -22
  157. package/dist/resources/blob.js.map +1 -1
  158. package/dist/resources/crdt.d.ts +2 -0
  159. package/dist/resources/crdt.js +45 -36
  160. package/dist/resources/crdt.js.map +1 -1
  161. package/dist/resources/databases.d.ts +1 -0
  162. package/dist/resources/databases.js +134 -7
  163. package/dist/resources/databases.js.map +1 -1
  164. package/dist/resources/graphql.js +8 -0
  165. package/dist/resources/graphql.js.map +1 -1
  166. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +35 -5
  167. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +239 -14
  168. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  169. package/dist/resources/jsResource.js +6 -0
  170. package/dist/resources/jsResource.js.map +1 -1
  171. package/dist/resources/loadEnv.js +30 -3
  172. package/dist/resources/loadEnv.js.map +1 -1
  173. package/dist/resources/login.js +2 -2
  174. package/dist/resources/login.js.map +1 -1
  175. package/dist/resources/models/Models.js +14 -3
  176. package/dist/resources/models/Models.js.map +1 -1
  177. package/dist/resources/models/embedHook.js +10 -2
  178. package/dist/resources/models/embedHook.js.map +1 -1
  179. package/dist/resources/models/openaiStream.d.ts +56 -0
  180. package/dist/resources/models/openaiStream.js +94 -0
  181. package/dist/resources/models/openaiStream.js.map +1 -0
  182. package/dist/resources/replayLogs.js +4 -3
  183. package/dist/resources/replayLogs.js.map +1 -1
  184. package/dist/resources/search.d.ts +1 -1
  185. package/dist/resources/search.js +104 -11
  186. package/dist/resources/search.js.map +1 -1
  187. package/dist/resources/secretDecryptor.d.ts +54 -0
  188. package/dist/resources/secretDecryptor.js +131 -0
  189. package/dist/resources/secretDecryptor.js.map +1 -0
  190. package/dist/resources/tracked.js +15 -5
  191. package/dist/resources/tracked.js.map +1 -1
  192. package/dist/security/auth.js +71 -8
  193. package/dist/security/auth.js.map +1 -1
  194. package/dist/security/jsLoader.js +11 -0
  195. package/dist/security/jsLoader.js.map +1 -1
  196. package/dist/security/tokenAuthentication.d.ts +9 -1
  197. package/dist/security/tokenAuthentication.js +31 -1
  198. package/dist/security/tokenAuthentication.js.map +1 -1
  199. package/dist/server/DurableSubscriptionsSession.d.ts +1 -1
  200. package/dist/server/DurableSubscriptionsSession.js +8 -4
  201. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  202. package/dist/server/REST.js +28 -9
  203. package/dist/server/REST.js.map +1 -1
  204. package/dist/server/fastifyRoutes.js +11 -1
  205. package/dist/server/fastifyRoutes.js.map +1 -1
  206. package/dist/server/graphqlQuerying.js +4 -3
  207. package/dist/server/graphqlQuerying.js.map +1 -1
  208. package/dist/server/http.d.ts +40 -2
  209. package/dist/server/http.js +560 -77
  210. package/dist/server/http.js.map +1 -1
  211. package/dist/server/itc/serverHandlers.js +64 -0
  212. package/dist/server/itc/serverHandlers.js.map +1 -1
  213. package/dist/server/liveSubscriptionAuth.d.ts +12 -0
  214. package/dist/server/liveSubscriptionAuth.js +140 -0
  215. package/dist/server/liveSubscriptionAuth.js.map +1 -0
  216. package/dist/server/loadRootComponents.js +2 -1
  217. package/dist/server/loadRootComponents.js.map +1 -1
  218. package/dist/server/middlewareChain.d.ts +44 -1
  219. package/dist/server/middlewareChain.js +86 -10
  220. package/dist/server/middlewareChain.js.map +1 -1
  221. package/dist/server/mqtt.js +2 -1
  222. package/dist/server/mqtt.js.map +1 -1
  223. package/dist/server/operationsServer.js +1 -1
  224. package/dist/server/operationsServer.js.map +1 -1
  225. package/dist/server/serverHelpers/Headers.d.ts +9 -0
  226. package/dist/server/serverHelpers/Headers.js +22 -0
  227. package/dist/server/serverHelpers/Headers.js.map +1 -1
  228. package/dist/server/serverHelpers/JSONStream.js +3 -3
  229. package/dist/server/serverHelpers/JSONStream.js.map +1 -1
  230. package/dist/server/serverHelpers/Request.d.ts +52 -1
  231. package/dist/server/serverHelpers/Request.js +122 -1
  232. package/dist/server/serverHelpers/Request.js.map +1 -1
  233. package/dist/server/serverHelpers/contentTypes.js +3 -8
  234. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  235. package/dist/server/serverHelpers/progressEmitter.d.ts +19 -0
  236. package/dist/server/serverHelpers/progressEmitter.js +52 -4
  237. package/dist/server/serverHelpers/progressEmitter.js.map +1 -1
  238. package/dist/server/serverHelpers/registeredOperations.d.ts +40 -0
  239. package/dist/server/serverHelpers/registeredOperations.js +286 -0
  240. package/dist/server/serverHelpers/registeredOperations.js.map +1 -0
  241. package/dist/server/serverHelpers/serverHandlers.js +11 -5
  242. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  243. package/dist/server/serverHelpers/serverUtilities.d.ts +1 -0
  244. package/dist/server/serverHelpers/serverUtilities.js +67 -5
  245. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  246. package/dist/server/serverHelpers/uwsServer.d.ts +80 -0
  247. package/dist/server/serverHelpers/uwsServer.js +433 -0
  248. package/dist/server/serverHelpers/uwsServer.js.map +1 -0
  249. package/dist/server/static.d.ts +0 -15
  250. package/dist/server/static.js +161 -2
  251. package/dist/server/static.js.map +1 -1
  252. package/dist/server/status/index.d.ts +4 -1
  253. package/dist/server/status/index.js +64 -4
  254. package/dist/server/status/index.js.map +1 -1
  255. package/dist/server/threads/manageThreads.d.ts +10 -0
  256. package/dist/server/threads/manageThreads.js +107 -4
  257. package/dist/server/threads/manageThreads.js.map +1 -1
  258. package/dist/server/threads/socketRouter.js +5 -1
  259. package/dist/server/threads/socketRouter.js.map +1 -1
  260. package/dist/server/threads/threadServer.js +92 -14
  261. package/dist/server/threads/threadServer.js.map +1 -1
  262. package/dist/upgrade/directives/5-2-0.d.ts +7 -0
  263. package/dist/upgrade/directives/5-2-0.js +108 -0
  264. package/dist/upgrade/directives/5-2-0.js.map +1 -0
  265. package/dist/upgrade/directives/directivesController.js +2 -1
  266. package/dist/upgrade/directives/directivesController.js.map +1 -1
  267. package/dist/utility/common_utils.js +5 -0
  268. package/dist/utility/common_utils.js.map +1 -1
  269. package/dist/utility/envFile.d.ts +41 -0
  270. package/dist/utility/envFile.js +221 -0
  271. package/dist/utility/envFile.js.map +1 -0
  272. package/dist/utility/globalSchema.d.ts +9 -0
  273. package/dist/utility/hdbTerms.d.ts +25 -0
  274. package/dist/utility/hdbTerms.js +31 -0
  275. package/dist/utility/hdbTerms.js.map +1 -1
  276. package/dist/utility/logging/harper_logger.d.ts +21 -0
  277. package/dist/utility/logging/harper_logger.js +160 -8
  278. package/dist/utility/logging/harper_logger.js.map +1 -1
  279. package/dist/utility/logging/logRotator.js +29 -17
  280. package/dist/utility/logging/logRotator.js.map +1 -1
  281. package/dist/utility/logging/readLog.d.ts +1 -1
  282. package/dist/utility/logging/readLog.js +305 -2
  283. package/dist/utility/logging/readLog.js.map +1 -1
  284. package/dist/utility/operationPermissions.d.ts +18 -0
  285. package/dist/utility/operationPermissions.js +35 -1
  286. package/dist/utility/operationPermissions.js.map +1 -1
  287. package/dist/utility/operation_authorization.d.ts +17 -0
  288. package/dist/utility/operation_authorization.js +38 -0
  289. package/dist/utility/operation_authorization.js.map +1 -1
  290. package/dist/utility/secretEnvelope.d.ts +30 -0
  291. package/dist/utility/secretEnvelope.js +94 -0
  292. package/dist/utility/secretEnvelope.js.map +1 -0
  293. package/dist/utility/signalling.d.ts +7 -0
  294. package/dist/utility/signalling.js +16 -0
  295. package/dist/utility/signalling.js.map +1 -1
  296. package/dist/validation/configValidator.js +70 -24
  297. package/dist/validation/configValidator.js.map +1 -1
  298. package/index.ts +4 -0
  299. package/json/systemSchema.json +38 -0
  300. package/npm-shrinkwrap.json +15066 -9347
  301. package/package.json +14 -9
  302. package/resources/DESIGN.md +15 -12
  303. package/resources/DatabaseTransaction.ts +206 -37
  304. package/resources/LMDBTransaction.ts +43 -9
  305. package/resources/PrimaryRocksDatabase.ts +201 -0
  306. package/resources/RecordEncoder.ts +81 -69
  307. package/resources/RequestTarget.ts +21 -0
  308. package/resources/Resource.ts +109 -25
  309. package/resources/ResourceInterface.ts +6 -2
  310. package/resources/Resources.ts +1 -3
  311. package/resources/Table.ts +238 -29
  312. package/resources/analytics/read.ts +25 -30
  313. package/resources/blob.ts +159 -23
  314. package/resources/crdt.ts +37 -31
  315. package/resources/databases.ts +143 -6
  316. package/resources/graphql.ts +8 -0
  317. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +251 -17
  318. package/resources/jsResource.ts +6 -0
  319. package/resources/loadEnv.ts +34 -3
  320. package/resources/login.ts +2 -2
  321. package/resources/models/Models.ts +19 -3
  322. package/resources/models/embedHook.ts +13 -2
  323. package/resources/models/openaiStream.ts +133 -0
  324. package/resources/replayLogs.ts +4 -3
  325. package/resources/search.ts +113 -11
  326. package/resources/secretDecryptor.ts +159 -0
  327. package/resources/tracked.ts +24 -17
  328. package/security/auth.ts +70 -10
  329. package/security/jsLoader.ts +12 -0
  330. package/security/tokenAuthentication.ts +42 -1
  331. package/server/DESIGN.md +10 -0
  332. package/server/DurableSubscriptionsSession.ts +8 -4
  333. package/server/REST.ts +26 -9
  334. package/server/fastifyRoutes.ts +10 -1
  335. package/server/graphqlQuerying.ts +4 -3
  336. package/server/http.ts +563 -77
  337. package/server/itc/serverHandlers.js +70 -0
  338. package/server/liveSubscriptionAuth.ts +152 -0
  339. package/server/loadRootComponents.js +2 -1
  340. package/server/middlewareChain.ts +107 -17
  341. package/server/mqtt.ts +2 -1
  342. package/server/operationsServer.ts +2 -2
  343. package/server/serverHelpers/Headers.ts +24 -0
  344. package/server/serverHelpers/JSONStream.ts +3 -3
  345. package/server/serverHelpers/Request.ts +127 -0
  346. package/server/serverHelpers/contentTypes.ts +3 -8
  347. package/server/serverHelpers/progressEmitter.ts +55 -5
  348. package/server/serverHelpers/registeredOperations.ts +259 -0
  349. package/server/serverHelpers/serverHandlers.js +11 -5
  350. package/server/serverHelpers/serverUtilities.ts +88 -5
  351. package/server/serverHelpers/uwsServer.ts +488 -0
  352. package/server/static.ts +180 -2
  353. package/server/status/index.ts +72 -4
  354. package/server/threads/manageThreads.js +102 -4
  355. package/server/threads/socketRouter.ts +5 -1
  356. package/server/threads/threadServer.js +93 -10
  357. package/studio/web/assets/{Chat-SdD1EZca.js → Chat-Cv_2paZE.js} +2 -2
  358. package/studio/web/assets/{Chat-SdD1EZca.js.map → Chat-Cv_2paZE.js.map} +1 -1
  359. package/studio/web/assets/{FloatingChat-GMq6tHK9.js → FloatingChat-CPyPIcVR.js} +4 -4
  360. package/studio/web/assets/{FloatingChat-GMq6tHK9.js.map → FloatingChat-CPyPIcVR.js.map} +1 -1
  361. package/studio/web/assets/{applications-B5hhv7uA.js → applications-C0jT2vdZ.js} +2 -2
  362. package/studio/web/assets/{applications-B5hhv7uA.js.map → applications-C0jT2vdZ.js.map} +1 -1
  363. package/studio/web/assets/{index-VFcpNWgq.js → index-D_GKOkhn.js} +6 -6
  364. package/studio/web/assets/index-D_GKOkhn.js.map +1 -0
  365. package/studio/web/assets/{index.lazy-DgcJojIA.js → index.lazy-CAmCIA65.js} +4 -4
  366. package/studio/web/assets/{index.lazy-DgcJojIA.js.map → index.lazy-CAmCIA65.js.map} +1 -1
  367. package/studio/web/assets/{profile-BqN-8vzm.js → profile-CaF-4aZe.js} +2 -2
  368. package/studio/web/assets/{profile-BqN-8vzm.js.map → profile-CaF-4aZe.js.map} +1 -1
  369. package/studio/web/assets/{setComponentFile-CHFvFq9u.js → setComponentFile-DLW1DHCt.js} +2 -2
  370. package/studio/web/assets/{setComponentFile-CHFvFq9u.js.map → setComponentFile-DLW1DHCt.js.map} +1 -1
  371. package/studio/web/assets/{setup-CQ3vWJSr.js → setup-TGCErIhq.js} +2 -2
  372. package/studio/web/assets/{setup-CQ3vWJSr.js.map → setup-TGCErIhq.js.map} +1 -1
  373. package/studio/web/assets/{status-BsW5fjuh.js → status-DG0Maoao.js} +2 -2
  374. package/studio/web/assets/{status-BsW5fjuh.js.map → status-DG0Maoao.js.map} +1 -1
  375. package/studio/web/assets/{swagger-ui-react-DITdeB9-.js → swagger-ui-react-8T4SgQ1m.js} +2 -2
  376. package/studio/web/assets/{swagger-ui-react-DITdeB9-.js.map → swagger-ui-react-8T4SgQ1m.js.map} +1 -1
  377. package/studio/web/assets/{tsMode-Dyph-OUs.js → tsMode-DJ6Sl24Q.js} +2 -2
  378. package/studio/web/assets/{tsMode-Dyph-OUs.js.map → tsMode-DJ6Sl24Q.js.map} +1 -1
  379. package/studio/web/assets/{useEntityRestURL-D0QTUqex.js → useEntityRestURL-JO2mfWTQ.js} +2 -2
  380. package/studio/web/assets/{useEntityRestURL-D0QTUqex.js.map → useEntityRestURL-JO2mfWTQ.js.map} +1 -1
  381. package/studio/web/index.html +1 -1
  382. package/upgrade/directives/5-2-0.ts +82 -0
  383. package/upgrade/directives/directivesController.ts +2 -1
  384. package/utility/common_utils.ts +5 -0
  385. package/utility/envFile.ts +218 -0
  386. package/utility/hdbTerms.ts +31 -0
  387. package/utility/logging/harper_logger.ts +156 -8
  388. package/utility/logging/logRotator.ts +24 -14
  389. package/utility/logging/readLog.ts +323 -2
  390. package/utility/operationPermissions.ts +35 -1
  391. package/utility/operation_authorization.ts +74 -1
  392. package/utility/secretEnvelope.ts +113 -0
  393. package/utility/signalling.ts +15 -0
  394. package/validation/configValidator.ts +78 -25
  395. package/studio/web/assets/index-VFcpNWgq.js.map +0 -1
@@ -12,6 +12,7 @@ import type { Id } from '../../resources/ResourceInterface.ts';
12
12
  export declare class HierarchicalNavigableSmallWorld {
13
13
  static useObjectStore: boolean;
14
14
  static searchOnlyOptions: string[];
15
+ filteredSearch: boolean;
15
16
  indexStore: any;
16
17
  M: number;
17
18
  efConstruction: number;
@@ -19,6 +20,7 @@ export declare class HierarchicalNavigableSmallWorld {
19
20
  mL: number;
20
21
  optimizeRouting: number;
21
22
  nodesVisitedCount: number;
23
+ filterExpansion: number;
22
24
  idIncrementer: BigInt64Array | undefined;
23
25
  distance: (a: number[], b: number[]) => number;
24
26
  int8: boolean;
@@ -26,6 +28,29 @@ export declare class HierarchicalNavigableSmallWorld {
26
28
  private convertedNodes;
27
29
  constructor(indexStore: any, options: any);
28
30
  index(primaryKey: Id, vector: number[], existingVector?: number[], options?: any): void;
31
+ /**
32
+ * After a delete, a neighbor that lost an edge can be severed from the entry point even with
33
+ * non-empty connection lists: a locally-connected cluster whose only bridges ran through the
34
+ * deleted node becomes a disconnected island, unreachable by search at any ef (#1712). The
35
+ * empty-list orphan check in index() can't see this, so probe each edge-losing neighbor's
36
+ * connectivity and reindex the ones that are cut off.
37
+ *
38
+ * The probe is a level-prioritized best-first traversal (hubs first, since the entry point is
39
+ * a high-level node), treating edges as undirected — the same assumption validateConnectivity
40
+ * makes. Note the direction difference: the probe walks source→entry-point over stored
41
+ * (outgoing) edges while search walks entry-point→outward, so an asymmetric edge could make
42
+ * the probe claim connectivity that search doesn't have. Edges are bidirectional by
43
+ * construction (checkSymmetry logs violations), and reverse-reachability from the entry point
44
+ * would be O(N) per delete, so this is a deliberate residual. In a connected component the
45
+ * probe reaches the known-connected set within a few hops; in an island it exhausts the
46
+ * island quickly. If it exceeds PROBE_VISIT_LIMIT without an answer (pathologically distant
47
+ * entry point — or an island larger than the budget), reinsert just the probe source: a
48
+ * wasted reinsert in the connected case, and in the oversized-island case a partial repair
49
+ * (the source relinks to the live graph, the rest of the island stays severed — reindexing
50
+ * replaces the source's edges rather than bridging through them, and reindexing all 256+
51
+ * probed nodes on what is usually just a distant entry point would be far too expensive).
52
+ */
53
+ private repairSeveredNeighbors;
29
54
  private safeGetSync;
30
55
  private getEntryPoint;
31
56
  /**
@@ -42,6 +67,13 @@ export declare class HierarchicalNavigableSmallWorld {
42
67
  * @private
43
68
  */
44
69
  private searchLayer;
70
+ /**
71
+ * Evaluate the traversal predicate for one node, counting the evaluation for `explain`. Kept as a
72
+ * tiny helper so both the entry-point seed and the neighbor loop share the counting path. The filter
73
+ * itself memoizes verdicts per query (a node can be reached from multiple neighbors), so this stays
74
+ * cheap even when the predicate loads a record.
75
+ */
76
+ private admit;
45
77
  /**
46
78
  * This the main entry from Harper's query functionality, where we actually search for an ordered list of nearest
47
79
  * neighbors, using the provided sort/order definition object and performing the multi-layer skip-list search.
@@ -53,17 +85,15 @@ export declare class HierarchicalNavigableSmallWorld {
53
85
  * @param comparator
54
86
  * @param context
55
87
  */
56
- search({ target, value, descending, distance, comparator, ef, }: {
88
+ search({ target, value, descending, distance, comparator, ef, filterExpansion, }: {
57
89
  target: number[];
58
90
  value: number;
59
91
  descending: boolean;
60
92
  distance: string;
61
93
  comparator: string;
62
94
  ef?: number;
63
- }, context: any): {
64
- key: string;
65
- distance: number;
66
- }[];
95
+ filterExpansion?: number;
96
+ }, context: any, filter?: (primaryKey: Id) => boolean): any[];
67
97
  /**
68
98
  * Exact distance between a query and a record's FULL-precision vector, mirroring search()'s metric
69
99
  * selection. Used to rerank quantized (int8) results: graph traversal navigates on approximate
@@ -117,6 +117,10 @@ function bisectInsert(arr, distance) {
117
117
  const ENTRY_POINT = Symbol.for('entryPoint');
118
118
  const KEY_PREFIX = Symbol.for('key');
119
119
  const MAX_LEVEL = 10; // should give good high-level skip list performance up to trillions of nodes
120
+ // Visit budget for the post-delete connectivity probe (repairSeveredNeighbors, #1712). Severed
121
+ // islands are small (bounded by the deleted node's neighborhood), so a probe that visits this many
122
+ // nodes without reaching the entry point is treated as connected-but-far and repaired conservatively.
123
+ const PROBE_VISIT_LIMIT = 256;
120
124
  /**
121
125
  * Represents a Hierarchical Navigable Small World (HNSW) index for approximate nearest neighbor search.
122
126
  * This implementation is based on hierarchical graph navigation to efficiently index and search high-dimensional vectors.
@@ -132,7 +136,12 @@ class HierarchicalNavigableSmallWorld {
132
136
  // Index options that only affect search, not the stored graph — changing them must not trigger a
133
137
  // reindex (databases.ts persists the new value but skips rebuilding). efConstructionSearch is the
134
138
  // search-time candidate-list size; the build uses efConstruction/M/distance, which are structural.
135
- static searchOnlyOptions = ['efConstructionSearch'];
139
+ // filterExpansion is the visit-budget multiplier for predicate-aware (filtered) traversal.
140
+ static searchOnlyOptions = ['efConstructionSearch', 'filterExpansion'];
141
+ // Signals to search.ts that this index accepts a per-record predicate in search() and applies it
142
+ // during traversal (predicate-aware / ACORN-style filtering), so companion conditions and RBAC can
143
+ // be pushed down instead of post-filtering an under-filled candidate set (#1241).
144
+ filteredSearch = true;
136
145
  indexStore;
137
146
  M = 16; // max number of connections per layer
138
147
  efConstruction = 100; // size of dynamic candidate list
@@ -142,6 +151,17 @@ class HierarchicalNavigableSmallWorld {
142
151
  // a value of 1 is extremely aggressive.
143
152
  optimizeRouting = 0.5;
144
153
  nodesVisitedCount = 0;
154
+ // Visit-budget multiplier for predicate-aware traversal (#1241). When a filter is selective enough
155
+ // that layer-0 results never fill `ef`, the "closest candidate worse than worst result" stop rule
156
+ // never triggers, so maxVisits = ef * filterExpansion caps how many nodes an under-filled filtered
157
+ // search visits before returning what it has (approximate, like all ANN). It does NOT bound a filter
158
+ // that fills `ef` — that terminates naturally. Default 24 (not the 8 the design sketch assumed):
159
+ // this HNSW visits a large fraction of the graph per query, so filling `ef` at selectivity `s` needs
160
+ // ~ef/s visits; a multiplier of 24 fills down to ~4% selectivity before the budget bites, keeping
161
+ // recall at or above post-filtering across the range the query planner routes to traversal. Raising
162
+ // it is nearly free for condition-derived filters (they fill and self-terminate); it mainly trades
163
+ // latency for recall on selective *function* predicates. Per-query override via the search options.
164
+ filterExpansion = 24;
145
165
  idIncrementer;
146
166
  distance;
147
167
  int8 = true; // store vectors as int8-quantized bins by default; opt out with `quantization: "none"`
@@ -180,6 +200,8 @@ class HierarchicalNavigableSmallWorld {
180
200
  this.mL = options.mL;
181
201
  if (options.optimizeRouting !== undefined)
182
202
  this.optimizeRouting = options.optimizeRouting;
203
+ if (options.filterExpansion !== undefined)
204
+ this.filterExpansion = options.filterExpansion;
183
205
  }
184
206
  }
185
207
  index(primaryKey, vector, existingVector, options = {}) {
@@ -485,6 +507,10 @@ class HierarchicalNavigableSmallWorld {
485
507
  this.indexStore.remove(safeKey, options);
486
508
  }
487
509
  const needsReindexing = new Map();
510
+ // On DELETE, track every neighbor that loses an edge: the empty-list check below only
511
+ // catches fully-orphaned nodes, but a cluster can stay internally connected while losing
512
+ // its only bridges to the entry point — see repairSeveredNeighbors (#1712).
513
+ const edgeLosingNeighborIds = vector ? undefined : new Set();
488
514
  // remove connections to this node that are no longer valid
489
515
  if (oldNode.level !== undefined) {
490
516
  for (let l = 0; l <= oldNode.level; l++) {
@@ -494,6 +520,7 @@ class HierarchicalNavigableSmallWorld {
494
520
  const neighborNode = updateNode(neighborId, this.safeGetSync(neighborId, options));
495
521
  if (!neighborNode)
496
522
  continue;
523
+ edgeLosingNeighborIds?.add(neighborId);
497
524
  // On an UPDATE (vector != null), only remove the reverse edge at
498
525
  // the exact level l where the old connection existed. Sweeping 0..l would destroy reverse
499
526
  // edges at lower levels that were just re-added by addConnection or preserved by the
@@ -567,8 +594,101 @@ class HierarchicalNavigableSmallWorld {
567
594
  }
568
595
  this.index(key, orphanVector, orphanVector, options);
569
596
  }
597
+ if (edgeLosingNeighborIds?.size)
598
+ this.repairSeveredNeighbors(edgeLosingNeighborIds, options);
570
599
  this.checkSymmetry(nodeId, this.safeGetSync(nodeId, options), options);
571
600
  }
601
+ /**
602
+ * After a delete, a neighbor that lost an edge can be severed from the entry point even with
603
+ * non-empty connection lists: a locally-connected cluster whose only bridges ran through the
604
+ * deleted node becomes a disconnected island, unreachable by search at any ef (#1712). The
605
+ * empty-list orphan check in index() can't see this, so probe each edge-losing neighbor's
606
+ * connectivity and reindex the ones that are cut off.
607
+ *
608
+ * The probe is a level-prioritized best-first traversal (hubs first, since the entry point is
609
+ * a high-level node), treating edges as undirected — the same assumption validateConnectivity
610
+ * makes. Note the direction difference: the probe walks source→entry-point over stored
611
+ * (outgoing) edges while search walks entry-point→outward, so an asymmetric edge could make
612
+ * the probe claim connectivity that search doesn't have. Edges are bidirectional by
613
+ * construction (checkSymmetry logs violations), and reverse-reachability from the entry point
614
+ * would be O(N) per delete, so this is a deliberate residual. In a connected component the
615
+ * probe reaches the known-connected set within a few hops; in an island it exhausts the
616
+ * island quickly. If it exceeds PROBE_VISIT_LIMIT without an answer (pathologically distant
617
+ * entry point — or an island larger than the budget), reinsert just the probe source: a
618
+ * wasted reinsert in the connected case, and in the oversized-island case a partial repair
619
+ * (the source relinks to the live graph, the rest of the island stays severed — reindexing
620
+ * replaces the source's edges rather than bridging through them, and reindexing all 256+
621
+ * probed nodes on what is usually just a distant entry point would be far too expensive).
622
+ */
623
+ repairSeveredNeighbors(neighborIds, options) {
624
+ const entryPointId = this.indexStore.getSync(ENTRY_POINT, options);
625
+ if (entryPointId === undefined)
626
+ return;
627
+ const knownConnected = new Set([entryPointId]);
628
+ for (const sourceId of neighborIds) {
629
+ if (knownConnected.has(sourceId))
630
+ continue;
631
+ const sourceNode = this.safeGetSync(sourceId, options);
632
+ if (!sourceNode || sourceNode.level === undefined)
633
+ continue; // already removed or stale reference
634
+ const visited = new Map([[sourceId, sourceNode]]);
635
+ const frontier = new MinHeap();
636
+ frontier.push({ id: sourceId, distance: -sourceNode.level, node: sourceNode });
637
+ let verdict = 'island';
638
+ probe: for (;;) {
639
+ const current = frontier.pop();
640
+ if (!current)
641
+ break; // exhausted the reachable set without touching the connected component
642
+ for (let l = 0; l <= current.node.level; l++) {
643
+ for (const { id: neighborId } of current.node[l] || []) {
644
+ if (neighborId === undefined)
645
+ continue;
646
+ if (knownConnected.has(neighborId)) {
647
+ verdict = 'connected';
648
+ break probe;
649
+ }
650
+ if (visited.has(neighborId))
651
+ continue;
652
+ const node = this.safeGetSync(neighborId, options);
653
+ if (!node || node.level === undefined)
654
+ continue; // stale reference
655
+ visited.set(neighborId, node);
656
+ frontier.push({ id: neighborId, distance: -node.level, node });
657
+ }
658
+ }
659
+ if (visited.size > PROBE_VISIT_LIMIT) {
660
+ verdict = 'inconclusive';
661
+ break;
662
+ }
663
+ }
664
+ if (verdict === 'connected') {
665
+ // every visited node connects to the source, which reaches the connected component
666
+ for (const id of visited.keys())
667
+ knownConnected.add(id);
668
+ }
669
+ else {
670
+ // island: reinsert every member so the whole cluster relinks to the live graph;
671
+ // inconclusive: reinsert only the source (partial repair — see docstring)
672
+ if (verdict === 'inconclusive') {
673
+ logger.warn?.('connectivity probe exceeded visit budget after a delete, reinserting only', sourceId);
674
+ }
675
+ const toReindex = verdict === 'island' ? visited.values() : [sourceNode];
676
+ logger.debug?.('reindexing nodes severed from the entry point by a delete', sourceId);
677
+ for (const node of toReindex) {
678
+ const nodeVector = node.scale !== undefined ? dequantizeInt8(node.vector, node.scale) : node.vector;
679
+ this.index(node.primaryKey, nodeVector, nodeVector, options);
680
+ }
681
+ if (verdict === 'island') {
682
+ // the whole reindexed island is now relinked; skip re-probing its members
683
+ for (const id of visited.keys())
684
+ knownConnected.add(id);
685
+ }
686
+ else {
687
+ knownConnected.add(sourceId);
688
+ }
689
+ }
690
+ }
691
+ }
572
692
  safeGetSync(key, options) {
573
693
  try {
574
694
  let node = this.indexStore.getSync(key, options);
@@ -626,7 +746,12 @@ class HierarchicalNavigableSmallWorld {
626
746
  * @param options
627
747
  * @private
628
748
  */
629
- searchLayer(queryVector, entryPointId, entryPoint, ef, level, options = {}, distanceFunction = this.distance) {
749
+ searchLayer(queryVector, entryPointId, entryPoint, ef, level, options = {}, distanceFunction = this.distance,
750
+ // Predicate-aware traversal (#1241, layer 0 only). `filter` decides result admission by primary
751
+ // key; non-matching nodes still route (they stay in the candidate/visited sets) so the graph
752
+ // remains navigable under selective filters (ACORN). `filterState` carries the visit budget and
753
+ // per-query counters. Both are undefined for routing layers and for unfiltered searches.
754
+ filter, filterState) {
630
755
  // Pre-compute query magnitude for cosine; use cached invMag on stored nodes to skip sqrt per neighbor.
631
756
  // Asymmetric distance: the query stays full-precision float; a stored neighbor may be int8
632
757
  // (with per-vector `scaleB`) or float (`scaleB` undefined).
@@ -688,11 +813,62 @@ class HierarchicalNavigableSmallWorld {
688
813
  };
689
814
  const candidates = new MinHeap();
690
815
  candidates.push(initialCandidate);
691
- const results = [initialCandidate];
816
+ if (!filter) {
817
+ // Unfiltered path (unchanged): results are seeded with the entry point and every visited
818
+ // node is admitted; the stop rule is "closest remaining candidate worse than worst result".
819
+ const results = [initialCandidate];
820
+ while (candidates.size > 0) {
821
+ const current = candidates.pop();
822
+ const furthestDistance = results[results.length - 1].distance;
823
+ if (current.distance > furthestDistance)
824
+ break;
825
+ for (const { id: neighborId } of current.node[level] || []) {
826
+ if (visited.has(neighborId) || neighborId === undefined)
827
+ continue;
828
+ visited.add(neighborId);
829
+ const neighbor = this.safeGetSync(neighborId, options);
830
+ if (!neighbor)
831
+ continue;
832
+ this.nodesVisitedCount++;
833
+ const distance = computeDistance(neighbor.vector, neighbor.invMag, neighbor.scale);
834
+ if (distance < furthestDistance || results.length < ef) {
835
+ const candidate = { id: neighborId, distance, node: neighbor };
836
+ candidates.push(candidate);
837
+ results.splice(bisectInsert(results, distance), 0, candidate);
838
+ if (results.length > ef)
839
+ results.pop();
840
+ }
841
+ }
842
+ }
843
+ results.visited = visited.size;
844
+ return results;
845
+ }
846
+ // Predicate-aware path (#1241). `results` holds only nodes the filter admits, but every visited
847
+ // node still routes: it enters the candidate heap and can be expanded, preserving connectivity
848
+ // through non-matching regions. Because matches accrue slower than visits, the distance stop rule
849
+ // only applies once `ef` matches are in hand; until then we keep expanding.
850
+ //
851
+ // maxVisits = ef * filterExpansion is a hard ceiling on layer-0 node visits. It has to be
852
+ // generous enough NOT to truncate a non-selective filter before it fills `ef` (filling at
853
+ // selectivity `s` costs ~ef/s visits) — that is why the default filterExpansion is larger than a
854
+ // standard-HNSW rule of thumb, since this index visits a large fraction of the graph per query.
855
+ // It matters as a genuine bound in two cases: a selective filter that can never fill `ef` (where
856
+ // the alternative is crawling the whole graph — the same regime the planner diverts to the exact
857
+ // brute-force path for condition filters, leaving function predicates the real beneficiary), and
858
+ // a filter that fills `ef` with distant matches (a loose worst-match bound would otherwise let
859
+ // the distance rule explore almost everything).
860
+ // search() always supplies filterState alongside filter; default one for any direct caller that doesn't.
861
+ if (!filterState)
862
+ filterState = { maxVisits: Infinity, nodesVisited: 0, filterEvaluations: 0 };
863
+ const results = [];
864
+ if (this.admit(filter, filterState, entryPoint.primaryKey))
865
+ results.push(initialCandidate);
866
+ let budgetExhausted = false;
692
867
  while (candidates.size > 0) {
693
868
  const current = candidates.pop();
694
- const furthestDistance = results[results.length - 1].distance;
695
- if (current.distance > furthestDistance)
869
+ // Once we have ef matches, the worst of them bounds useful exploration; before that, keep going.
870
+ const furthestDistance = results.length >= ef ? results[results.length - 1].distance : Infinity;
871
+ if (results.length >= ef && current.distance > furthestDistance)
696
872
  break;
697
873
  for (const { id: neighborId } of current.node[level] || []) {
698
874
  if (visited.has(neighborId) || neighborId === undefined)
@@ -702,19 +878,41 @@ class HierarchicalNavigableSmallWorld {
702
878
  if (!neighbor)
703
879
  continue;
704
880
  this.nodesVisitedCount++;
881
+ filterState.nodesVisited++;
705
882
  const distance = computeDistance(neighbor.vector, neighbor.invMag, neighbor.scale);
883
+ // Route through any node that could still improve the result set (under-filled or nearer
884
+ // than the current worst match) — filtering does not prune the graph, only admission.
706
885
  if (distance < furthestDistance || results.length < ef) {
707
886
  const candidate = { id: neighborId, distance, node: neighbor };
708
887
  candidates.push(candidate);
709
- results.splice(bisectInsert(results, distance), 0, candidate);
710
- if (results.length > ef)
711
- results.pop();
888
+ if (this.admit(filter, filterState, neighbor.primaryKey)) {
889
+ results.splice(bisectInsert(results, distance), 0, candidate);
890
+ if (results.length > ef)
891
+ results.pop();
892
+ }
893
+ }
894
+ if (filterState.nodesVisited >= filterState.maxVisits) {
895
+ budgetExhausted = true;
896
+ break;
712
897
  }
713
898
  }
899
+ if (budgetExhausted)
900
+ break;
714
901
  }
715
902
  results.visited = visited.size;
716
903
  return results;
717
904
  }
905
+ /**
906
+ * Evaluate the traversal predicate for one node, counting the evaluation for `explain`. Kept as a
907
+ * tiny helper so both the entry-point seed and the neighbor loop share the counting path. The filter
908
+ * itself memoizes verdicts per query (a node can be reached from multiple neighbors), so this stays
909
+ * cheap even when the predicate loads a record.
910
+ */
911
+ admit(filter, filterState, primaryKey) {
912
+ if (filterState)
913
+ filterState.filterEvaluations++;
914
+ return filter(primaryKey);
915
+ }
718
916
  /**
719
917
  * This the main entry from Harper's query functionality, where we actually search for an ordered list of nearest
720
918
  * neighbors, using the provided sort/order definition object and performing the multi-layer skip-list search.
@@ -726,7 +924,12 @@ class HierarchicalNavigableSmallWorld {
726
924
  * @param comparator
727
925
  * @param context
728
926
  */
729
- search({ target, value, descending, distance, comparator, ef, }, context) {
927
+ search({ target, value, descending, distance, comparator, ef, filterExpansion, }, context,
928
+ // Predicate-aware traversal (#1241). When provided, only nodes for which `filter(primaryKey)`
929
+ // returns true are admitted to the result list at layer 0; routing is unaffected. Composed by
930
+ // search.ts from companion AND conditions, a caller-supplied `vectorFilter`, and record-level
931
+ // RBAC. Must be synchronous and side-effect free. JS-API only (never from a REST query string).
932
+ filter) {
730
933
  let limit; // only set for threshold comparators; 0 is a valid threshold (e.g. dotProduct)
731
934
  let limitInclusive = false; // true for `le`, false for `lt`
732
935
  switch (comparator) {
@@ -774,15 +977,25 @@ class HierarchicalNavigableSmallWorld {
774
977
  : (this.indexStore.getStats?.()?.entryCount ?? 0);
775
978
  effectiveEf = autoScaleEf(nodeCount);
776
979
  }
980
+ // Predicate-aware traversal budget (#1241): matches accrue slower than visits under a selective
981
+ // filter, so bound layer-0 work at ef * filterExpansion nodes. Only built when a filter is active.
982
+ const filterState = filter
983
+ ? {
984
+ maxVisits: effectiveEf * (filterExpansion && filterExpansion > 0 ? filterExpansion : this.filterExpansion),
985
+ nodesVisited: 0,
986
+ filterEvaluations: 0,
987
+ }
988
+ : undefined;
777
989
  let entryPoint = this.getEntryPoint(options);
778
990
  if (!entryPoint)
779
- return [];
991
+ return withStats([], filterState);
780
992
  let entryPointId = entryPoint.id;
781
993
  let results = [];
782
- // For each level from top to bottom
994
+ // For each level from top to bottom. The filter applies only at layer 0 (result admission);
995
+ // upper layers route unfiltered so non-matching hubs still guide the descent.
783
996
  for (let l = entryPoint.level; l >= 0; l--) {
784
997
  // Search for closest neighbors at current level
785
- results = this.searchLayer(target, entryPointId, entryPoint, effectiveEf, l, options, distanceFunction);
998
+ results = this.searchLayer(target, entryPointId, entryPoint, effectiveEf, l, options, distanceFunction, l === 0 ? filter : undefined, l === 0 ? filterState : undefined);
786
999
  if (results.length > 0) {
787
1000
  const neighbor = results[0]; // closest neighbor becomes new entry point
788
1001
  entryPoint = neighbor.node;
@@ -791,11 +1004,11 @@ class HierarchicalNavigableSmallWorld {
791
1004
  }
792
1005
  if (limit !== undefined)
793
1006
  results = results.filter((candidate) => limitInclusive ? candidate.distance <= limit : candidate.distance < limit);
794
- return results.map((candidate) => ({
1007
+ return withStats(results.map((candidate) => ({
795
1008
  // we return the result as an entry so we can provide distance as metadata
796
1009
  key: candidate.node.primaryKey, // return value
797
1010
  distance: candidate.distance,
798
- }));
1011
+ })), filterState);
799
1012
  }
800
1013
  /**
801
1014
  * Exact distance between a query and a record's FULL-precision vector, mirroring search()'s metric
@@ -1011,4 +1224,16 @@ class HierarchicalNavigableSmallWorld {
1011
1224
  }
1012
1225
  }
1013
1226
  exports.HierarchicalNavigableSmallWorld = HierarchicalNavigableSmallWorld;
1227
+ /**
1228
+ * Attach filtered-traversal counters to the returned entries array so callers (search.ts / explain) can
1229
+ * report how much of the graph a filtered query touched. No-op for unfiltered searches. Non-enumerable so
1230
+ * the stats don't leak into iteration/serialization of the result entries.
1231
+ */
1232
+ function withStats(entries, filterState) {
1233
+ if (filterState) {
1234
+ Object.defineProperty(entries, 'nodesVisited', { value: filterState.nodesVisited, enumerable: false });
1235
+ Object.defineProperty(entries, 'filterEvaluations', { value: filterState.filterEvaluations, enumerable: false });
1236
+ }
1237
+ return entries;
1238
+ }
1014
1239
  //# sourceMappingURL=HierarchicalNavigableSmallWorld.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchicalNavigableSmallWorld.js","sourceRoot":"","sources":["../../../resources/indexes/HierarchicalNavigableSmallWorld.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HierarchicalNavigableSmallWorld.js","sourceRoot":"","sources":["../../../resources/indexes/HierarchicalNavigableSmallWorld.ts"],"names":[],"mappings":"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"}