@harperfast/harper 5.0.30 → 5.1.0-beta.2

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 (1140) hide show
  1. package/README.md +11 -10
  2. package/agent/agent.ts +203 -0
  3. package/agent/loop.ts +205 -0
  4. package/agent/operations.ts +148 -0
  5. package/agent/session.ts +187 -0
  6. package/agent/tools/fsTools.ts +276 -0
  7. package/agent/tools/httpFetchTool.ts +112 -0
  8. package/agent/tools/scheduleTool.ts +68 -0
  9. package/agent/toolset.ts +43 -0
  10. package/agent/types.ts +85 -0
  11. package/bin/{BinObjects.js → BinObjects.ts} +4 -5
  12. package/bin/cliCredentials.ts +133 -0
  13. package/bin/cliOperations.ts +339 -0
  14. package/bin/copyDb.ts +10 -10
  15. package/bin/deployRenderer.ts +196 -0
  16. package/bin/{harper.js → harper.ts} +43 -19
  17. package/bin/{install.js → install.ts} +3 -3
  18. package/bin/lite.ts +2 -0
  19. package/bin/login.ts +134 -0
  20. package/bin/logout.ts +11 -0
  21. package/bin/mcp/client.ts +407 -0
  22. package/bin/mcp/doctor.ts +189 -0
  23. package/bin/mcp/index.ts +80 -0
  24. package/bin/mcp/options.ts +122 -0
  25. package/bin/mcp/printConfig.ts +89 -0
  26. package/bin/multipartBuilder.ts +74 -0
  27. package/bin/{restart.js → restart.ts} +27 -28
  28. package/bin/{run.js → run.ts} +41 -30
  29. package/bin/sseConsumer.ts +126 -0
  30. package/bin/{status.js → status.ts} +10 -10
  31. package/bin/{stop.js → stop.ts} +5 -5
  32. package/bin/upgrade.js +17 -24
  33. package/components/Application.ts +144 -18
  34. package/components/ApplicationScope.ts +2 -2
  35. package/components/ComponentV1.ts +2 -2
  36. package/components/EntryHandler.ts +159 -9
  37. package/components/OptionsWatcher.ts +75 -11
  38. package/components/Scope.ts +132 -18
  39. package/components/anthropic/index.ts +547 -0
  40. package/components/bedrock/index.ts +823 -0
  41. package/components/componentLoader.ts +64 -32
  42. package/components/deployLifecycle.ts +161 -0
  43. package/components/deploymentOperations.ts +173 -0
  44. package/components/deploymentRecorder.ts +427 -0
  45. package/components/deriveURLPath.ts +4 -4
  46. package/components/mcp/adapters/fastify.ts +87 -0
  47. package/components/mcp/adapters/harperHttp.ts +103 -0
  48. package/components/mcp/audit.ts +75 -0
  49. package/components/mcp/index.ts +134 -0
  50. package/components/mcp/jsonrpc.ts +134 -0
  51. package/components/mcp/lifecycle.ts +105 -0
  52. package/components/mcp/listChanged.ts +270 -0
  53. package/components/mcp/rateLimit.ts +217 -0
  54. package/components/mcp/resources.ts +607 -0
  55. package/components/mcp/session.ts +151 -0
  56. package/components/mcp/sessionRegistry.ts +140 -0
  57. package/components/mcp/toolRegistry.ts +294 -0
  58. package/components/mcp/tools/application.ts +761 -0
  59. package/components/mcp/tools/operations.ts +311 -0
  60. package/components/mcp/tools/schemas/derive.ts +356 -0
  61. package/components/mcp/tools/schemas/operationDescriptions.ts +241 -0
  62. package/components/mcp/tools/schemas/operations.ts +301 -0
  63. package/components/mcp/transport.ts +517 -0
  64. package/components/ollama/index.ts +316 -0
  65. package/components/openai/index.ts +563 -0
  66. package/components/operations.js +217 -60
  67. package/components/operationsValidation.js +12 -4
  68. package/components/packageComponent.ts +97 -29
  69. package/components/requestRestart.ts +17 -2
  70. package/components/status/crossThread.ts +14 -5
  71. package/components/status/errors.ts +1 -1
  72. package/config/RootConfigWatcher.ts +56 -2
  73. package/config/configUtils.js +29 -8
  74. package/config/harperConfigEnvVars.ts +1 -1
  75. package/config-root.schema.json +78 -4
  76. package/dataLayer/{CreateAttributeObject.js → CreateAttributeObject.ts} +4 -3
  77. package/dataLayer/{CreateTableObject.js → CreateTableObject.ts} +2 -1
  78. package/dataLayer/{DataLayerObjects.js → DataLayerObjects.ts} +17 -9
  79. package/dataLayer/{DeleteBeforeObject.js → DeleteBeforeObject.ts} +2 -1
  80. package/dataLayer/{DeleteObject.js → DeleteObject.ts} +3 -2
  81. package/dataLayer/{DropAttributeObject.js → DropAttributeObject.ts} +2 -1
  82. package/dataLayer/{GetBackupObject.js → GetBackupObject.ts} +3 -2
  83. package/dataLayer/{InsertObject.js → InsertObject.ts} +3 -2
  84. package/dataLayer/{ReadAuditLogObject.js → ReadAuditLogObject.ts} +3 -2
  85. package/dataLayer/{SQLSearch.js → SQLSearch.ts} +97 -43
  86. package/dataLayer/{SearchByConditionsObject.js → SearchByConditionsObject.ts} +5 -6
  87. package/dataLayer/{SearchByHashObject.js → SearchByHashObject.ts} +2 -1
  88. package/dataLayer/{SearchObject.js → SearchObject.ts} +2 -1
  89. package/dataLayer/{SqlSearchObject.js → SqlSearchObject.ts} +2 -1
  90. package/dataLayer/{UpdateObject.js → UpdateObject.ts} +3 -2
  91. package/dataLayer/{UpsertObject.js → UpsertObject.ts} +3 -2
  92. package/dataLayer/{bulkLoad.js → bulkLoad.ts} +40 -49
  93. package/dataLayer/{delete.js → delete.ts} +21 -26
  94. package/dataLayer/{export.js → export.ts} +22 -26
  95. package/dataLayer/{getBackup.js → getBackup.ts} +7 -9
  96. package/dataLayer/harperBridge/BridgeMethods.ts +102 -0
  97. package/dataLayer/harperBridge/ResourceBridge.ts +27 -26
  98. package/dataLayer/harperBridge/TableSizeObject.ts +1 -0
  99. package/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
  100. package/dataLayer/harperBridge/{harperBridge.js → harperBridge.ts} +3 -3
  101. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +8 -6
  102. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
  103. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
  104. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +6 -4
  105. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +5 -4
  106. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
  107. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +6 -5
  108. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +5 -4
  109. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
  110. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
  111. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
  112. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
  113. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +3 -2
  114. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
  115. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +10 -8
  116. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
  117. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +4 -3
  118. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
  119. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +6 -5
  120. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +2 -1
  121. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +3 -2
  122. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
  123. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +5 -4
  124. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +6 -3
  125. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.ts +1 -1
  126. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
  127. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
  128. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
  129. package/dataLayer/{hdbInfoController.js → hdbInfoController.ts} +20 -26
  130. package/dataLayer/{insert.js → insert.ts} +24 -24
  131. package/dataLayer/{readAuditLog.js → readAuditLog.ts} +8 -10
  132. package/dataLayer/{schema.js → schema.ts} +32 -44
  133. package/dataLayer/{schemaDescribe.js → schemaDescribe.ts} +23 -26
  134. package/dataLayer/{search.js → search.ts} +9 -15
  135. package/dataLayer/{transaction.js → transaction.ts} +2 -5
  136. package/dataLayer/{update.js → update.ts} +19 -22
  137. package/dist/agent/agent.d.ts +35 -0
  138. package/dist/agent/agent.js +175 -0
  139. package/dist/agent/agent.js.map +1 -0
  140. package/dist/agent/loop.d.ts +34 -0
  141. package/dist/agent/loop.js +176 -0
  142. package/dist/agent/loop.js.map +1 -0
  143. package/dist/agent/operations.d.ts +17 -0
  144. package/dist/agent/operations.js +137 -0
  145. package/dist/agent/operations.js.map +1 -0
  146. package/dist/agent/session.d.ts +36 -0
  147. package/dist/agent/session.js +182 -0
  148. package/dist/agent/session.js.map +1 -0
  149. package/dist/agent/tools/fsTools.d.ts +19 -0
  150. package/dist/agent/tools/fsTools.js +286 -0
  151. package/dist/agent/tools/fsTools.js.map +1 -0
  152. package/dist/agent/tools/httpFetchTool.d.ts +9 -0
  153. package/dist/agent/tools/httpFetchTool.js +116 -0
  154. package/dist/agent/tools/httpFetchTool.js.map +1 -0
  155. package/dist/agent/tools/scheduleTool.d.ts +22 -0
  156. package/dist/agent/tools/scheduleTool.js +54 -0
  157. package/dist/agent/tools/scheduleTool.js.map +1 -0
  158. package/dist/agent/toolset.d.ts +24 -0
  159. package/dist/agent/toolset.js +33 -0
  160. package/dist/agent/toolset.js.map +1 -0
  161. package/dist/agent/types.d.ts +75 -0
  162. package/dist/agent/types.js +10 -0
  163. package/dist/agent/types.js.map +1 -0
  164. package/dist/bin/BinObjects.d.ts +2 -2
  165. package/dist/bin/BinObjects.js +6 -3
  166. package/dist/bin/BinObjects.js.map +1 -1
  167. package/dist/bin/cliCredentials.d.ts +27 -0
  168. package/dist/bin/cliCredentials.js +130 -0
  169. package/dist/bin/cliCredentials.js.map +1 -0
  170. package/dist/bin/cliOperations.d.ts +7 -7
  171. package/dist/bin/cliOperations.js +251 -37
  172. package/dist/bin/cliOperations.js.map +1 -1
  173. package/dist/bin/copyDb.js +16 -16
  174. package/dist/bin/copyDb.js.map +1 -1
  175. package/dist/bin/deployRenderer.d.ts +47 -0
  176. package/dist/bin/deployRenderer.js +185 -0
  177. package/dist/bin/deployRenderer.js.map +1 -0
  178. package/dist/bin/harper.d.ts +2 -1
  179. package/dist/bin/harper.js +87 -26
  180. package/dist/bin/harper.js.map +1 -1
  181. package/dist/bin/install.d.ts +1 -1
  182. package/dist/bin/install.js +41 -4
  183. package/dist/bin/install.js.map +1 -1
  184. package/dist/bin/lite.js +3 -4
  185. package/dist/bin/lite.js.map +1 -1
  186. package/dist/bin/login.d.ts +4 -0
  187. package/dist/bin/login.js +123 -0
  188. package/dist/bin/login.js.map +1 -0
  189. package/dist/bin/logout.d.ts +4 -0
  190. package/dist/bin/logout.js +16 -0
  191. package/dist/bin/logout.js.map +1 -0
  192. package/dist/bin/mcp/client.d.ts +34 -0
  193. package/dist/bin/mcp/client.js +395 -0
  194. package/dist/bin/mcp/client.js.map +1 -0
  195. package/dist/bin/mcp/doctor.d.ts +11 -0
  196. package/dist/bin/mcp/doctor.js +193 -0
  197. package/dist/bin/mcp/doctor.js.map +1 -0
  198. package/dist/bin/mcp/index.d.ts +10 -0
  199. package/dist/bin/mcp/index.js +81 -0
  200. package/dist/bin/mcp/index.js.map +1 -0
  201. package/dist/bin/mcp/options.d.ts +33 -0
  202. package/dist/bin/mcp/options.js +113 -0
  203. package/dist/bin/mcp/options.js.map +1 -0
  204. package/dist/bin/mcp/printConfig.d.ts +14 -0
  205. package/dist/bin/mcp/printConfig.js +85 -0
  206. package/dist/bin/mcp/printConfig.js.map +1 -0
  207. package/dist/bin/multipartBuilder.d.ts +26 -0
  208. package/dist/bin/multipartBuilder.js +55 -0
  209. package/dist/bin/multipartBuilder.js.map +1 -0
  210. package/dist/bin/restart.d.ts +3 -2
  211. package/dist/bin/restart.js +82 -45
  212. package/dist/bin/restart.js.map +1 -1
  213. package/dist/bin/run.d.ts +13 -9
  214. package/dist/bin/run.js +111 -65
  215. package/dist/bin/run.js.map +1 -1
  216. package/dist/bin/sseConsumer.d.ts +24 -0
  217. package/dist/bin/sseConsumer.js +127 -0
  218. package/dist/bin/sseConsumer.js.map +1 -0
  219. package/dist/bin/status.d.ts +1 -1
  220. package/dist/bin/status.js +48 -11
  221. package/dist/bin/status.js.map +1 -1
  222. package/dist/bin/stop.d.ts +1 -1
  223. package/dist/bin/stop.js +43 -6
  224. package/dist/bin/stop.js.map +1 -1
  225. package/dist/bin/upgrade.js +14 -22
  226. package/dist/bin/upgrade.js.map +1 -1
  227. package/dist/components/Application.d.ts +29 -17
  228. package/dist/components/Application.js +134 -28
  229. package/dist/components/Application.js.map +1 -1
  230. package/dist/components/ApplicationScope.js +2 -2
  231. package/dist/components/ComponentV1.d.ts +1 -1
  232. package/dist/components/ComponentV1.js +5 -5
  233. package/dist/components/ComponentV1.js.map +1 -1
  234. package/dist/components/EntryHandler.d.ts +26 -3
  235. package/dist/components/EntryHandler.js +153 -13
  236. package/dist/components/EntryHandler.js.map +1 -1
  237. package/dist/components/OptionsWatcher.d.ts +7 -2
  238. package/dist/components/OptionsWatcher.js +72 -10
  239. package/dist/components/OptionsWatcher.js.map +1 -1
  240. package/dist/components/Scope.d.ts +11 -6
  241. package/dist/components/Scope.js +112 -12
  242. package/dist/components/Scope.js.map +1 -1
  243. package/dist/components/anthropic/index.d.ts +40 -0
  244. package/dist/components/anthropic/index.js +428 -0
  245. package/dist/components/anthropic/index.js.map +1 -0
  246. package/dist/components/bedrock/index.d.ts +79 -0
  247. package/dist/components/bedrock/index.js +734 -0
  248. package/dist/components/bedrock/index.js.map +1 -0
  249. package/dist/components/componentLoader.d.ts +29 -0
  250. package/dist/components/componentLoader.js +65 -38
  251. package/dist/components/componentLoader.js.map +1 -1
  252. package/dist/components/deployLifecycle.d.ts +39 -0
  253. package/dist/components/deployLifecycle.js +156 -0
  254. package/dist/components/deployLifecycle.js.map +1 -0
  255. package/dist/components/deploymentOperations.d.ts +19 -0
  256. package/dist/components/deploymentOperations.js +185 -0
  257. package/dist/components/deploymentOperations.js.map +1 -0
  258. package/dist/components/deploymentRecorder.d.ts +97 -0
  259. package/dist/components/deploymentRecorder.js +425 -0
  260. package/dist/components/deploymentRecorder.js.map +1 -0
  261. package/dist/components/deriveURLPath.d.ts +2 -2
  262. package/dist/components/deriveURLPath.js +2 -2
  263. package/dist/components/deriveURLPath.js.map +1 -1
  264. package/dist/components/mcp/adapters/fastify.d.ts +35 -0
  265. package/dist/components/mcp/adapters/fastify.js +66 -0
  266. package/dist/components/mcp/adapters/fastify.js.map +1 -0
  267. package/dist/components/mcp/adapters/harperHttp.d.ts +38 -0
  268. package/dist/components/mcp/adapters/harperHttp.js +78 -0
  269. package/dist/components/mcp/adapters/harperHttp.js.map +1 -0
  270. package/dist/components/mcp/audit.d.ts +27 -0
  271. package/dist/components/mcp/audit.js +73 -0
  272. package/dist/components/mcp/audit.js.map +1 -0
  273. package/dist/components/mcp/index.d.ts +47 -0
  274. package/dist/components/mcp/index.js +109 -0
  275. package/dist/components/mcp/index.js.map +1 -0
  276. package/dist/components/mcp/jsonrpc.d.ts +71 -0
  277. package/dist/components/mcp/jsonrpc.js +93 -0
  278. package/dist/components/mcp/jsonrpc.js.map +1 -0
  279. package/dist/components/mcp/lifecycle.d.ts +69 -0
  280. package/dist/components/mcp/lifecycle.js +79 -0
  281. package/dist/components/mcp/lifecycle.js.map +1 -0
  282. package/dist/components/mcp/listChanged.d.ts +24 -0
  283. package/dist/components/mcp/listChanged.js +257 -0
  284. package/dist/components/mcp/listChanged.js.map +1 -0
  285. package/dist/components/mcp/rateLimit.d.ts +25 -0
  286. package/dist/components/mcp/rateLimit.js +226 -0
  287. package/dist/components/mcp/rateLimit.js.map +1 -0
  288. package/dist/components/mcp/resources.d.ts +90 -0
  289. package/dist/components/mcp/resources.js +526 -0
  290. package/dist/components/mcp/resources.js.map +1 -0
  291. package/dist/components/mcp/session.d.ts +36 -0
  292. package/dist/components/mcp/session.js +170 -0
  293. package/dist/components/mcp/session.js.map +1 -0
  294. package/dist/components/mcp/sessionRegistry.d.ts +63 -0
  295. package/dist/components/mcp/sessionRegistry.js +124 -0
  296. package/dist/components/mcp/sessionRegistry.js.map +1 -0
  297. package/dist/components/mcp/toolRegistry.d.ts +151 -0
  298. package/dist/components/mcp/toolRegistry.js +177 -0
  299. package/dist/components/mcp/toolRegistry.js.map +1 -0
  300. package/dist/components/mcp/tools/application.d.ts +72 -0
  301. package/dist/components/mcp/tools/application.js +660 -0
  302. package/dist/components/mcp/tools/application.js.map +1 -0
  303. package/dist/components/mcp/tools/operations.d.ts +23 -0
  304. package/dist/components/mcp/tools/operations.js +331 -0
  305. package/dist/components/mcp/tools/operations.js.map +1 -0
  306. package/dist/components/mcp/tools/schemas/derive.d.ts +50 -0
  307. package/dist/components/mcp/tools/schemas/derive.js +291 -0
  308. package/dist/components/mcp/tools/schemas/derive.js.map +1 -0
  309. package/dist/components/mcp/tools/schemas/operationDescriptions.d.ts +32 -0
  310. package/dist/components/mcp/tools/schemas/operationDescriptions.js +179 -0
  311. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -0
  312. package/dist/components/mcp/tools/schemas/operations.d.ts +27 -0
  313. package/dist/components/mcp/tools/schemas/operations.js +299 -0
  314. package/dist/components/mcp/tools/schemas/operations.js.map +1 -0
  315. package/dist/components/mcp/transport.d.ts +38 -0
  316. package/dist/components/mcp/transport.js +467 -0
  317. package/dist/components/mcp/transport.js.map +1 -0
  318. package/dist/components/ollama/index.d.ts +46 -0
  319. package/dist/components/ollama/index.js +239 -0
  320. package/dist/components/ollama/index.js.map +1 -0
  321. package/dist/components/openai/index.d.ts +51 -0
  322. package/dist/components/openai/index.js +475 -0
  323. package/dist/components/openai/index.js.map +1 -0
  324. package/dist/components/operations.d.ts +6 -6
  325. package/dist/components/operations.js +205 -52
  326. package/dist/components/operations.js.map +1 -1
  327. package/dist/components/operationsValidation.d.ts +2 -2
  328. package/dist/components/operationsValidation.js +13 -4
  329. package/dist/components/operationsValidation.js.map +1 -1
  330. package/dist/components/packageComponent.d.ts +28 -6
  331. package/dist/components/packageComponent.js +87 -26
  332. package/dist/components/packageComponent.js.map +1 -1
  333. package/dist/components/requestRestart.d.ts +1 -0
  334. package/dist/components/requestRestart.js +12 -1
  335. package/dist/components/requestRestart.js.map +1 -1
  336. package/dist/components/status/crossThread.d.ts +5 -1
  337. package/dist/components/status/crossThread.js +12 -5
  338. package/dist/components/status/crossThread.js.map +1 -1
  339. package/dist/components/status/errors.js +7 -7
  340. package/dist/config/RootConfigWatcher.d.ts +3 -0
  341. package/dist/config/RootConfigWatcher.js +52 -1
  342. package/dist/config/RootConfigWatcher.js.map +1 -1
  343. package/dist/config/configUtils.js +31 -8
  344. package/dist/config/configUtils.js.map +1 -1
  345. package/dist/config/harperConfigEnvVars.js +1 -1
  346. package/dist/config/harperConfigEnvVars.js.map +1 -1
  347. package/dist/dataLayer/CreateAttributeObject.d.ts +3 -7
  348. package/dist/dataLayer/CreateAttributeObject.js +4 -3
  349. package/dist/dataLayer/CreateAttributeObject.js.map +1 -1
  350. package/dist/dataLayer/CreateTableObject.d.ts +2 -4
  351. package/dist/dataLayer/CreateTableObject.js +2 -1
  352. package/dist/dataLayer/CreateTableObject.js.map +1 -1
  353. package/dist/dataLayer/DataLayerObjects.d.ts +17 -16
  354. package/dist/dataLayer/DataLayerObjects.js +19 -5
  355. package/dist/dataLayer/DataLayerObjects.js.map +1 -1
  356. package/dist/dataLayer/DeleteBeforeObject.d.ts +3 -5
  357. package/dist/dataLayer/DeleteBeforeObject.js +2 -1
  358. package/dist/dataLayer/DeleteBeforeObject.js.map +1 -1
  359. package/dist/dataLayer/DeleteObject.d.ts +3 -7
  360. package/dist/dataLayer/DeleteObject.js +4 -3
  361. package/dist/dataLayer/DeleteObject.js.map +1 -1
  362. package/dist/dataLayer/DropAttributeObject.d.ts +2 -4
  363. package/dist/dataLayer/DropAttributeObject.js +2 -1
  364. package/dist/dataLayer/DropAttributeObject.js.map +1 -1
  365. package/dist/dataLayer/GetBackupObject.d.ts +3 -5
  366. package/dist/dataLayer/GetBackupObject.js +4 -3
  367. package/dist/dataLayer/GetBackupObject.js.map +1 -1
  368. package/dist/dataLayer/InsertObject.d.ts +3 -8
  369. package/dist/dataLayer/InsertObject.js +4 -3
  370. package/dist/dataLayer/InsertObject.js.map +1 -1
  371. package/dist/dataLayer/ReadAuditLogObject.d.ts +3 -7
  372. package/dist/dataLayer/ReadAuditLogObject.js +4 -3
  373. package/dist/dataLayer/ReadAuditLogObject.js.map +1 -1
  374. package/dist/dataLayer/SQLSearch.d.ts +68 -38
  375. package/dist/dataLayer/SQLSearch.js +140 -78
  376. package/dist/dataLayer/SQLSearch.js.map +1 -1
  377. package/dist/dataLayer/SearchByConditionsObject.d.ts +10 -58
  378. package/dist/dataLayer/SearchByConditionsObject.js +5 -7
  379. package/dist/dataLayer/SearchByConditionsObject.js.map +1 -1
  380. package/dist/dataLayer/SearchByHashObject.d.ts +3 -6
  381. package/dist/dataLayer/SearchByHashObject.js +2 -1
  382. package/dist/dataLayer/SearchByHashObject.js.map +1 -1
  383. package/dist/dataLayer/SearchObject.d.ts +3 -12
  384. package/dist/dataLayer/SearchObject.js +2 -1
  385. package/dist/dataLayer/SearchObject.js.map +1 -1
  386. package/dist/dataLayer/SqlSearchObject.d.ts +2 -4
  387. package/dist/dataLayer/SqlSearchObject.js +2 -1
  388. package/dist/dataLayer/SqlSearchObject.js.map +1 -1
  389. package/dist/dataLayer/UpdateObject.d.ts +3 -7
  390. package/dist/dataLayer/UpdateObject.js +4 -3
  391. package/dist/dataLayer/UpdateObject.js.map +1 -1
  392. package/dist/dataLayer/UpsertObject.d.ts +3 -7
  393. package/dist/dataLayer/UpsertObject.js +4 -3
  394. package/dist/dataLayer/UpsertObject.js.map +1 -1
  395. package/dist/dataLayer/bulkLoad.d.ts +4 -4
  396. package/dist/dataLayer/bulkLoad.js +122 -88
  397. package/dist/dataLayer/bulkLoad.js.map +1 -1
  398. package/dist/dataLayer/delete.d.ts +10 -11
  399. package/dist/dataLayer/delete.js +74 -39
  400. package/dist/dataLayer/delete.js.map +1 -1
  401. package/dist/dataLayer/export.d.ts +8 -8
  402. package/dist/dataLayer/export.js +90 -55
  403. package/dist/dataLayer/export.js.map +1 -1
  404. package/dist/dataLayer/getBackup.d.ts +4 -3
  405. package/dist/dataLayer/getBackup.js +43 -11
  406. package/dist/dataLayer/getBackup.js.map +1 -1
  407. package/dist/dataLayer/harperBridge/BridgeMethods.d.ts +39 -21
  408. package/dist/dataLayer/harperBridge/BridgeMethods.js +41 -20
  409. package/dist/dataLayer/harperBridge/BridgeMethods.js.map +1 -1
  410. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +2 -2
  411. package/dist/dataLayer/harperBridge/ResourceBridge.js +26 -25
  412. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  413. package/dist/dataLayer/harperBridge/TableSizeObject.d.ts +1 -0
  414. package/dist/dataLayer/harperBridge/TableSizeObject.js.map +1 -1
  415. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.d.ts +4 -4
  416. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
  417. package/dist/dataLayer/harperBridge/harperBridge.d.ts +2 -3
  418. package/dist/dataLayer/harperBridge/harperBridge.js +38 -4
  419. package/dist/dataLayer/harperBridge/harperBridge.js.map +1 -1
  420. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.d.ts +1 -2
  421. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +7 -6
  422. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js.map +1 -1
  423. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.d.ts +1 -2
  424. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
  425. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js.map +1 -1
  426. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
  427. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js.map +1 -1
  428. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +5 -4
  429. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js.map +1 -1
  430. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.d.ts +1 -2
  431. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +4 -4
  432. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js.map +1 -1
  433. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
  434. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.d.ts +1 -2
  435. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +5 -5
  436. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js.map +1 -1
  437. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +4 -4
  438. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js.map +1 -1
  439. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
  440. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js.map +1 -1
  441. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
  442. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
  443. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
  444. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +2 -2
  445. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js.map +1 -1
  446. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
  447. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.d.ts +1 -2
  448. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +8 -8
  449. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js.map +1 -1
  450. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.d.ts +1 -1
  451. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
  452. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.d.ts +1 -2
  453. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +3 -3
  454. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js.map +1 -1
  455. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
  456. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.d.ts +1 -2
  457. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +5 -5
  458. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js.map +1 -1
  459. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.d.ts +1 -2
  460. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +1 -1
  461. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js.map +1 -1
  462. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +2 -2
  463. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js.map +1 -1
  464. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
  465. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +4 -4
  466. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js.map +1 -1
  467. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.d.ts +1 -2
  468. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +5 -3
  469. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js.map +1 -1
  470. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +2 -2
  471. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.d.ts +1 -2
  472. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
  473. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js.map +1 -1
  474. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
  475. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
  476. package/dist/dataLayer/hdbInfoController.d.ts +4 -8
  477. package/dist/dataLayer/hdbInfoController.js +66 -31
  478. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  479. package/dist/dataLayer/insert.d.ts +14 -26
  480. package/dist/dataLayer/insert.js +63 -28
  481. package/dist/dataLayer/insert.js.map +1 -1
  482. package/dist/dataLayer/readAuditLog.d.ts +1 -3
  483. package/dist/dataLayer/readAuditLog.js +45 -13
  484. package/dist/dataLayer/readAuditLog.js.map +1 -1
  485. package/dist/dataLayer/schema.d.ts +10 -10
  486. package/dist/dataLayer/schema.js +124 -89
  487. package/dist/dataLayer/schema.js.map +1 -1
  488. package/dist/dataLayer/schemaDescribe.d.ts +4 -4
  489. package/dist/dataLayer/schemaDescribe.js +78 -41
  490. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  491. package/dist/dataLayer/search.d.ts +4 -4
  492. package/dist/dataLayer/search.js +12 -13
  493. package/dist/dataLayer/search.js.map +1 -1
  494. package/dist/dataLayer/transaction.d.ts +1 -1
  495. package/dist/dataLayer/transaction.js +3 -4
  496. package/dist/dataLayer/transaction.js.map +1 -1
  497. package/dist/dataLayer/update.d.ts +2 -8
  498. package/dist/dataLayer/update.js +53 -18
  499. package/dist/dataLayer/update.js.map +1 -1
  500. package/dist/globals.d.ts +1 -1
  501. package/dist/globals.js +1 -0
  502. package/dist/globals.js.map +1 -1
  503. package/dist/index.d.ts +4 -0
  504. package/dist/index.js +4 -1
  505. package/dist/index.js.map +1 -1
  506. package/dist/json/systemSchema.json +65 -0
  507. package/dist/launchServiceScripts/launchHarperDB.d.ts +1 -0
  508. package/dist/launchServiceScripts/launchHarperDB.js +3 -0
  509. package/dist/launchServiceScripts/launchHarperDB.js.map +1 -0
  510. package/dist/launchServiceScripts/utility/checkNodeVersion.js +3 -0
  511. package/dist/launchServiceScripts/utility/checkNodeVersion.js.map +1 -1
  512. package/dist/resources/DatabaseTransaction.d.ts +14 -6
  513. package/dist/resources/DatabaseTransaction.js +39 -15
  514. package/dist/resources/DatabaseTransaction.js.map +1 -1
  515. package/dist/resources/ErrorResource.d.ts +1 -1
  516. package/dist/resources/ErrorResource.js +3 -1
  517. package/dist/resources/ErrorResource.js.map +1 -1
  518. package/dist/resources/LMDBTransaction.d.ts +10 -13
  519. package/dist/resources/LMDBTransaction.js +18 -7
  520. package/dist/resources/LMDBTransaction.js.map +1 -1
  521. package/dist/resources/RecordEncoder.d.ts +10 -12
  522. package/dist/resources/RecordEncoder.js +38 -38
  523. package/dist/resources/RecordEncoder.js.map +1 -1
  524. package/dist/resources/RequestTarget.d.ts +1 -0
  525. package/dist/resources/RequestTarget.js.map +1 -1
  526. package/dist/resources/Resource.d.ts +25 -5
  527. package/dist/resources/Resource.js +43 -10
  528. package/dist/resources/Resource.js.map +1 -1
  529. package/dist/resources/ResourceInterface.d.ts +24 -5
  530. package/dist/resources/ResourceInterface.js +20 -0
  531. package/dist/resources/ResourceInterface.js.map +1 -1
  532. package/dist/resources/Resources.d.ts +3 -4
  533. package/dist/resources/Resources.js +7 -6
  534. package/dist/resources/Resources.js.map +1 -1
  535. package/dist/resources/RocksIndexStore.js +3 -0
  536. package/dist/resources/RocksIndexStore.js.map +1 -1
  537. package/dist/resources/RocksTransactionLogStore.d.ts +1 -1
  538. package/dist/resources/RocksTransactionLogStore.js +10 -3
  539. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  540. package/dist/resources/Table.d.ts +76 -329
  541. package/dist/resources/Table.js +306 -116
  542. package/dist/resources/Table.js.map +1 -1
  543. package/dist/resources/analytics/metadata.d.ts +1 -0
  544. package/dist/resources/analytics/metadata.js +1 -0
  545. package/dist/resources/analytics/metadata.js.map +1 -1
  546. package/dist/resources/analytics/read.d.ts +8 -1
  547. package/dist/resources/analytics/read.js +69 -8
  548. package/dist/resources/analytics/read.js.map +1 -1
  549. package/dist/resources/analytics/write.d.ts +28 -0
  550. package/dist/resources/analytics/write.js +232 -20
  551. package/dist/resources/analytics/write.js.map +1 -1
  552. package/dist/resources/auditStore.d.ts +18 -13
  553. package/dist/resources/auditStore.js +16 -8
  554. package/dist/resources/auditStore.js.map +1 -1
  555. package/dist/resources/blob.d.ts +16 -27
  556. package/dist/resources/blob.js +8 -8
  557. package/dist/resources/blob.js.map +1 -1
  558. package/dist/resources/dataLoader.d.ts +1 -1
  559. package/dist/resources/dataLoader.js +13 -13
  560. package/dist/resources/databases.d.ts +17 -0
  561. package/dist/resources/databases.js +175 -59
  562. package/dist/resources/databases.js.map +1 -1
  563. package/dist/resources/graphql.d.ts +1 -7
  564. package/dist/resources/graphql.js +267 -173
  565. package/dist/resources/graphql.js.map +1 -1
  566. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +17 -1
  567. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +327 -59
  568. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  569. package/dist/resources/indexes/vector.d.ts +1 -0
  570. package/dist/resources/indexes/vector.js +14 -0
  571. package/dist/resources/indexes/vector.js.map +1 -1
  572. package/dist/resources/jsonSchemaTypes.d.ts +60 -0
  573. package/dist/resources/jsonSchemaTypes.js +78 -0
  574. package/dist/resources/jsonSchemaTypes.js.map +1 -0
  575. package/dist/resources/loadEnv.d.ts +2 -5
  576. package/dist/resources/loadEnv.js +21 -18
  577. package/dist/resources/loadEnv.js.map +1 -1
  578. package/dist/resources/login.d.ts +2 -3
  579. package/dist/resources/login.js +5 -4
  580. package/dist/resources/login.js.map +1 -1
  581. package/dist/resources/models/Models.d.ts +45 -0
  582. package/dist/resources/models/Models.js +265 -0
  583. package/dist/resources/models/Models.js.map +1 -0
  584. package/dist/resources/models/TestBackend.d.ts +15 -0
  585. package/dist/resources/models/TestBackend.js +71 -0
  586. package/dist/resources/models/TestBackend.js.map +1 -0
  587. package/dist/resources/models/agentLoop.d.ts +125 -0
  588. package/dist/resources/models/agentLoop.js +746 -0
  589. package/dist/resources/models/agentLoop.js.map +1 -0
  590. package/dist/resources/models/analyticsTable.d.ts +65 -0
  591. package/dist/resources/models/analyticsTable.js +166 -0
  592. package/dist/resources/models/analyticsTable.js.map +1 -0
  593. package/dist/resources/models/backendHelpers.d.ts +57 -0
  594. package/dist/resources/models/backendHelpers.js +109 -0
  595. package/dist/resources/models/backendHelpers.js.map +1 -0
  596. package/dist/resources/models/backendRegistry.d.ts +36 -0
  597. package/dist/resources/models/backendRegistry.js +54 -0
  598. package/dist/resources/models/backendRegistry.js.map +1 -0
  599. package/dist/resources/models/bootstrap.d.ts +24 -0
  600. package/dist/resources/models/bootstrap.js +112 -0
  601. package/dist/resources/models/bootstrap.js.map +1 -0
  602. package/dist/resources/models/embedHook.d.ts +33 -0
  603. package/dist/resources/models/embedHook.js +127 -0
  604. package/dist/resources/models/embedHook.js.map +1 -0
  605. package/dist/resources/models/types.d.ts +301 -0
  606. package/dist/resources/models/types.js +11 -0
  607. package/dist/resources/models/types.js.map +1 -0
  608. package/dist/resources/openApi.js +74 -34
  609. package/dist/resources/openApi.js.map +1 -1
  610. package/dist/resources/replayLogs.js +7 -1
  611. package/dist/resources/replayLogs.js.map +1 -1
  612. package/dist/resources/replayLogsGuards.d.ts +9 -0
  613. package/dist/resources/replayLogsGuards.js +47 -0
  614. package/dist/resources/replayLogsGuards.js.map +1 -1
  615. package/dist/resources/roles.d.ts +1 -7
  616. package/dist/resources/roles.js +67 -71
  617. package/dist/resources/roles.js.map +1 -1
  618. package/dist/resources/search.d.ts +18 -1
  619. package/dist/resources/search.js +349 -140
  620. package/dist/resources/search.js.map +1 -1
  621. package/dist/resources/tracked.d.ts +1 -1
  622. package/dist/resources/tracked.js +23 -15
  623. package/dist/resources/tracked.js.map +1 -1
  624. package/dist/resources/transaction.d.ts +1 -1
  625. package/dist/resources/transaction.js +1 -1
  626. package/dist/resources/transaction.js.map +1 -1
  627. package/dist/resources/transactionBroadcast.d.ts +1 -1
  628. package/dist/resources/transactionBroadcast.js.map +1 -1
  629. package/dist/security/auth.d.ts +1 -5
  630. package/dist/security/auth.js +34 -25
  631. package/dist/security/auth.js.map +1 -1
  632. package/dist/security/certificateVerification/crlVerification.js +7 -1
  633. package/dist/security/certificateVerification/crlVerification.js.map +1 -1
  634. package/dist/security/cryptoHash.d.ts +2 -2
  635. package/dist/security/cryptoHash.js +37 -5
  636. package/dist/security/cryptoHash.js.map +1 -1
  637. package/dist/security/data_objects/PermissionAttributeResponseObject.d.ts +3 -4
  638. package/dist/security/data_objects/PermissionAttributeResponseObject.js +4 -1
  639. package/dist/security/data_objects/PermissionAttributeResponseObject.js.map +1 -1
  640. package/dist/security/data_objects/PermissionResponseObject.d.ts +9 -9
  641. package/dist/security/data_objects/PermissionResponseObject.js +15 -8
  642. package/dist/security/data_objects/PermissionResponseObject.js.map +1 -1
  643. package/dist/security/data_objects/PermissionTableResponseObject.d.ts +5 -6
  644. package/dist/security/data_objects/PermissionTableResponseObject.js +6 -1
  645. package/dist/security/data_objects/PermissionTableResponseObject.js.map +1 -1
  646. package/dist/security/fastifyAuth.d.ts +2 -2
  647. package/dist/security/fastifyAuth.js +131 -22
  648. package/dist/security/fastifyAuth.js.map +1 -1
  649. package/dist/security/impersonation.js +15 -15
  650. package/dist/security/jsLoader.js +18 -5
  651. package/dist/security/jsLoader.js.map +1 -1
  652. package/dist/security/keys.d.ts +45 -48
  653. package/dist/security/keys.js +160 -114
  654. package/dist/security/keys.js.map +1 -1
  655. package/dist/security/permissionsTranslator.js +2 -2
  656. package/dist/security/role.d.ts +5 -5
  657. package/dist/security/role.js +70 -35
  658. package/dist/security/role.js.map +1 -1
  659. package/dist/security/tokenAuthentication.d.ts +13 -0
  660. package/dist/security/tokenAuthentication.js +57 -27
  661. package/dist/security/tokenAuthentication.js.map +1 -1
  662. package/dist/security/user.js +74 -38
  663. package/dist/security/user.js.map +1 -1
  664. package/dist/server/DurableSubscriptionsSession.d.ts +4 -2
  665. package/dist/server/DurableSubscriptionsSession.js +71 -55
  666. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  667. package/dist/server/REST.d.ts +1 -8
  668. package/dist/server/REST.js +17 -16
  669. package/dist/server/REST.js.map +1 -1
  670. package/dist/server/Server.d.ts +23 -4
  671. package/dist/server/Server.js +1 -1
  672. package/dist/server/Server.js.map +1 -1
  673. package/dist/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
  674. package/dist/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
  675. package/dist/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
  676. package/dist/server/fastifyRoutes.d.ts +1 -4
  677. package/dist/server/fastifyRoutes.js +34 -30
  678. package/dist/server/fastifyRoutes.js.map +1 -1
  679. package/dist/server/graphqlQuerying.d.ts +1 -1
  680. package/dist/server/graphqlQuerying.js +8 -7
  681. package/dist/server/graphqlQuerying.js.map +1 -1
  682. package/dist/server/http.d.ts +9 -4
  683. package/dist/server/http.js +523 -47
  684. package/dist/server/http.js.map +1 -1
  685. package/dist/server/itc/serverHandlers.js +66 -15
  686. package/dist/server/itc/serverHandlers.js.map +1 -1
  687. package/dist/server/jobs/JobObject.d.ts +3 -3
  688. package/dist/server/jobs/JobObject.js +53 -7
  689. package/dist/server/jobs/JobObject.js.map +1 -1
  690. package/dist/server/jobs/jobProcess.js +64 -24
  691. package/dist/server/jobs/jobProcess.js.map +1 -1
  692. package/dist/server/jobs/jobRunner.d.ts +7 -6
  693. package/dist/server/jobs/jobRunner.js +68 -30
  694. package/dist/server/jobs/jobRunner.js.map +1 -1
  695. package/dist/server/jobs/jobs.d.ts +18 -7
  696. package/dist/server/jobs/jobs.js +93 -61
  697. package/dist/server/jobs/jobs.js.map +1 -1
  698. package/dist/server/loadRootComponents.js +1 -1
  699. package/dist/server/middlewareChain.d.ts +80 -0
  700. package/dist/server/middlewareChain.js +252 -0
  701. package/dist/server/middlewareChain.js.map +1 -0
  702. package/dist/server/mqtt.d.ts +1 -8
  703. package/dist/server/mqtt.js +22 -17
  704. package/dist/server/mqtt.js.map +1 -1
  705. package/dist/server/nodeName.js +46 -13
  706. package/dist/server/nodeName.js.map +1 -1
  707. package/dist/server/operationsServer.d.ts +2 -2
  708. package/dist/server/operationsServer.js +106 -33
  709. package/dist/server/operationsServer.js.map +1 -1
  710. package/dist/server/serverHelpers/Headers.d.ts +4 -4
  711. package/dist/server/serverHelpers/Headers.js +2 -0
  712. package/dist/server/serverHelpers/Headers.js.map +1 -1
  713. package/dist/server/serverHelpers/JSONStream.d.ts +7 -1
  714. package/dist/server/serverHelpers/JSONStream.js +12 -3
  715. package/dist/server/serverHelpers/JSONStream.js.map +1 -1
  716. package/dist/server/serverHelpers/Request.d.ts +106 -8
  717. package/dist/server/serverHelpers/Request.js +370 -9
  718. package/dist/server/serverHelpers/Request.js.map +1 -1
  719. package/dist/server/serverHelpers/contentTypes.d.ts +1 -1
  720. package/dist/server/serverHelpers/contentTypes.js +36 -7
  721. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  722. package/dist/server/serverHelpers/multipartParser.d.ts +21 -0
  723. package/dist/server/serverHelpers/multipartParser.js +142 -0
  724. package/dist/server/serverHelpers/multipartParser.js.map +1 -0
  725. package/dist/server/serverHelpers/progressEmitter.d.ts +25 -0
  726. package/dist/server/serverHelpers/progressEmitter.js +103 -0
  727. package/dist/server/serverHelpers/progressEmitter.js.map +1 -0
  728. package/dist/server/serverHelpers/serverHandlers.d.ts +1 -1
  729. package/dist/server/serverHelpers/serverHandlers.js +38 -7
  730. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  731. package/dist/server/serverHelpers/serverUtilities.d.ts +4 -2
  732. package/dist/server/serverHelpers/serverUtilities.js +97 -93
  733. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  734. package/dist/server/static.js +8 -5
  735. package/dist/server/static.js.map +1 -1
  736. package/dist/server/status/index.js +3 -3
  737. package/dist/server/storageReclamation.d.ts +10 -0
  738. package/dist/server/storageReclamation.js +68 -9
  739. package/dist/server/storageReclamation.js.map +1 -1
  740. package/dist/server/threads/itc.js +7 -4
  741. package/dist/server/threads/itc.js.map +1 -1
  742. package/dist/server/threads/manageThreads.d.ts +1 -1
  743. package/dist/server/threads/manageThreads.js +110 -26
  744. package/dist/server/threads/manageThreads.js.map +1 -1
  745. package/dist/server/threads/socketRouter.d.ts +0 -1
  746. package/dist/server/threads/socketRouter.js +8 -271
  747. package/dist/server/threads/socketRouter.js.map +1 -1
  748. package/dist/server/threads/threadServer.d.ts +1 -0
  749. package/dist/server/threads/threadServer.js +360 -118
  750. package/dist/server/threads/threadServer.js.map +1 -1
  751. package/dist/server/threads/workerProcessGuard.d.ts +42 -0
  752. package/dist/server/threads/workerProcessGuard.js +114 -0
  753. package/dist/server/threads/workerProcessGuard.js.map +1 -0
  754. package/dist/server/throttle.js +17 -0
  755. package/dist/server/throttle.js.map +1 -1
  756. package/dist/sqlTranslator/SelectValidator.d.ts +21 -24
  757. package/dist/sqlTranslator/SelectValidator.js +86 -47
  758. package/dist/sqlTranslator/SelectValidator.js.map +1 -1
  759. package/dist/sqlTranslator/alasqlFunctionImporter.d.ts +6 -2
  760. package/dist/sqlTranslator/alasqlFunctionImporter.js +40 -3
  761. package/dist/sqlTranslator/alasqlFunctionImporter.js.map +1 -1
  762. package/dist/sqlTranslator/deleteTranslator.d.ts +4 -7
  763. package/dist/sqlTranslator/deleteTranslator.js +48 -14
  764. package/dist/sqlTranslator/deleteTranslator.js.map +1 -1
  765. package/dist/sqlTranslator/index.d.ts +10 -9
  766. package/dist/sqlTranslator/index.js +69 -30
  767. package/dist/sqlTranslator/index.js.map +1 -1
  768. package/dist/sqlTranslator/sql_statement_bucket.d.ts +10 -10
  769. package/dist/sqlTranslator/sql_statement_bucket.js +55 -13
  770. package/dist/sqlTranslator/sql_statement_bucket.js.map +1 -1
  771. package/dist/upgrade/UpgradeObjects.d.ts +2 -3
  772. package/dist/upgrade/UpgradeObjects.js +37 -4
  773. package/dist/upgrade/UpgradeObjects.js.map +1 -1
  774. package/dist/upgrade/directives/5-1-0.d.ts +6 -0
  775. package/dist/upgrade/directives/5-1-0.js +114 -0
  776. package/dist/upgrade/directives/5-1-0.js.map +1 -0
  777. package/dist/upgrade/directives/directivesController.d.ts +10 -10
  778. package/dist/upgrade/directives/directivesController.js +52 -11
  779. package/dist/upgrade/directives/directivesController.js.map +1 -1
  780. package/dist/upgrade/directivesManager.d.ts +1 -1
  781. package/dist/upgrade/directivesManager.js +53 -18
  782. package/dist/upgrade/directivesManager.js.map +1 -1
  783. package/dist/upgrade/upgradePrompt.d.ts +2 -8
  784. package/dist/upgrade/upgradePrompt.js +55 -60
  785. package/dist/upgrade/upgradePrompt.js.map +1 -1
  786. package/dist/upgrade/upgradeUtilities.d.ts +1 -1
  787. package/dist/upgrade/upgradeUtilities.js +37 -5
  788. package/dist/upgrade/upgradeUtilities.js.map +1 -1
  789. package/dist/utility/OperationFunctionCaller.d.ts +1 -1
  790. package/dist/utility/OperationFunctionCaller.js +45 -10
  791. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  792. package/dist/utility/assignCmdEnvVariables.d.ts +1 -2
  793. package/dist/utility/assignCmdEnvVariables.js +8 -4
  794. package/dist/utility/assignCmdEnvVariables.js.map +1 -1
  795. package/dist/utility/common_utils.d.ts +80 -77
  796. package/dist/utility/common_utils.js +140 -79
  797. package/dist/utility/common_utils.js.map +1 -1
  798. package/dist/utility/environment/environmentManager.d.ts +12 -11
  799. package/dist/utility/environment/environmentManager.js +75 -29
  800. package/dist/utility/environment/environmentManager.js.map +1 -1
  801. package/dist/utility/environment/systemInformation.d.ts +4 -0
  802. package/dist/utility/environment/systemInformation.js +27 -16
  803. package/dist/utility/environment/systemInformation.js.map +1 -1
  804. package/dist/utility/errors/commonErrors.d.ts +192 -168
  805. package/dist/utility/errors/commonErrors.js +49 -18
  806. package/dist/utility/errors/commonErrors.js.map +1 -1
  807. package/dist/utility/errors/hdbError.d.ts +37 -51
  808. package/dist/utility/errors/hdbError.js +65 -26
  809. package/dist/utility/errors/hdbError.js.map +1 -1
  810. package/dist/utility/expandEnvVar.d.ts +61 -0
  811. package/dist/utility/expandEnvVar.js +113 -0
  812. package/dist/utility/expandEnvVar.js.map +1 -0
  813. package/dist/utility/functions/geo.js +2 -2
  814. package/dist/utility/functions/sql/alaSQLExtension.js +1 -1
  815. package/dist/utility/globalSchema.d.ts +13 -4
  816. package/dist/utility/globalSchema.js +14 -11
  817. package/dist/utility/globalSchema.js.map +1 -1
  818. package/dist/utility/hdbTerms.d.ts +54 -1
  819. package/dist/utility/hdbTerms.js +54 -1
  820. package/dist/utility/hdbTerms.js.map +1 -1
  821. package/dist/utility/install/checkJWTTokensExist.js +1 -1
  822. package/dist/utility/install/installer.d.ts +9 -12
  823. package/dist/utility/install/installer.js +117 -54
  824. package/dist/utility/install/installer.js.map +1 -1
  825. package/dist/utility/installation.js +3 -3
  826. package/dist/utility/lmdb/DBIDefinition.d.ts +4 -4
  827. package/dist/utility/lmdb/DBIDefinition.js +5 -1
  828. package/dist/utility/lmdb/DBIDefinition.js.map +1 -1
  829. package/dist/utility/lmdb/DeleteRecordsResponseObject.d.ts +3 -6
  830. package/dist/utility/lmdb/DeleteRecordsResponseObject.js +2 -1
  831. package/dist/utility/lmdb/DeleteRecordsResponseObject.js.map +1 -1
  832. package/dist/utility/lmdb/InsertRecordsResponseObject.d.ts +3 -5
  833. package/dist/utility/lmdb/InsertRecordsResponseObject.js +2 -1
  834. package/dist/utility/lmdb/InsertRecordsResponseObject.js.map +1 -1
  835. package/dist/utility/lmdb/OpenDBIObject.d.ts +12 -15
  836. package/dist/utility/lmdb/OpenDBIObject.js +68 -6
  837. package/dist/utility/lmdb/OpenDBIObject.js.map +1 -1
  838. package/dist/utility/lmdb/OpenEnvironmentObject.d.ts +5 -8
  839. package/dist/utility/lmdb/OpenEnvironmentObject.js +52 -4
  840. package/dist/utility/lmdb/OpenEnvironmentObject.js.map +1 -1
  841. package/dist/utility/lmdb/UpdateRecordsResponseObject.d.ts +3 -6
  842. package/dist/utility/lmdb/UpdateRecordsResponseObject.js +2 -1
  843. package/dist/utility/lmdb/UpdateRecordsResponseObject.js.map +1 -1
  844. package/dist/utility/lmdb/UpsertRecordsResponseObject.d.ts +3 -5
  845. package/dist/utility/lmdb/UpsertRecordsResponseObject.js +2 -1
  846. package/dist/utility/lmdb/UpsertRecordsResponseObject.js.map +1 -1
  847. package/dist/utility/lmdb/cleanLMDBMap.d.ts +1 -1
  848. package/dist/utility/lmdb/cleanLMDBMap.js +44 -7
  849. package/dist/utility/lmdb/cleanLMDBMap.js.map +1 -1
  850. package/dist/utility/lmdb/commonUtility.d.ts +8 -9
  851. package/dist/utility/lmdb/commonUtility.js +46 -17
  852. package/dist/utility/lmdb/commonUtility.js.map +1 -1
  853. package/dist/utility/lmdb/deleteUtility.d.ts +2 -3
  854. package/dist/utility/lmdb/deleteUtility.js +51 -16
  855. package/dist/utility/lmdb/deleteUtility.js.map +1 -1
  856. package/dist/utility/lmdb/environmentUtility.d.ts +69 -36
  857. package/dist/utility/lmdb/environmentUtility.js +91 -51
  858. package/dist/utility/lmdb/environmentUtility.js.map +1 -1
  859. package/dist/utility/lmdb/searchCursorFunctions.d.ts +19 -19
  860. package/dist/utility/lmdb/searchCursorFunctions.js +46 -14
  861. package/dist/utility/lmdb/searchCursorFunctions.js.map +1 -1
  862. package/dist/utility/lmdb/searchUtility.d.ts +142 -73
  863. package/dist/utility/lmdb/searchUtility.js +91 -55
  864. package/dist/utility/lmdb/searchUtility.js.map +1 -1
  865. package/dist/utility/lmdb/terms.d.ts +34 -34
  866. package/dist/utility/lmdb/terms.js +12 -22
  867. package/dist/utility/lmdb/terms.js.map +1 -1
  868. package/dist/utility/lmdb/writeUtility.d.ts +3 -6
  869. package/dist/utility/lmdb/writeUtility.js +61 -28
  870. package/dist/utility/lmdb/writeUtility.js.map +1 -1
  871. package/dist/utility/logging/harper_logger.d.ts +87 -103
  872. package/dist/utility/logging/harper_logger.js +177 -82
  873. package/dist/utility/logging/harper_logger.js.map +1 -1
  874. package/dist/utility/logging/logRotator.d.ts +2 -10
  875. package/dist/utility/logging/logRotator.js +67 -32
  876. package/dist/utility/logging/logRotator.js.map +1 -1
  877. package/dist/utility/logging/logger.js +4 -4
  878. package/dist/utility/logging/readLog.d.ts +1 -1
  879. package/dist/utility/logging/readLog.js +54 -17
  880. package/dist/utility/logging/readLog.js.map +1 -1
  881. package/dist/utility/logging/transactionLog.d.ts +2 -2
  882. package/dist/utility/logging/transactionLog.js +51 -16
  883. package/dist/utility/logging/transactionLog.js.map +1 -1
  884. package/dist/utility/mount_hdb.d.ts +1 -2
  885. package/dist/utility/mount_hdb.js +54 -17
  886. package/dist/utility/mount_hdb.js.map +1 -1
  887. package/dist/utility/npmUtilities.d.ts +1 -1
  888. package/dist/utility/npmUtilities.js +54 -19
  889. package/dist/utility/npmUtilities.js.map +1 -1
  890. package/dist/utility/operation_authorization.d.ts +36 -9
  891. package/dist/utility/operation_authorization.js +135 -86
  892. package/dist/utility/operation_authorization.js.map +1 -1
  893. package/dist/utility/packageUtils.d.ts +0 -2
  894. package/dist/utility/packageUtils.js +7 -17
  895. package/dist/utility/packageUtils.js.map +1 -1
  896. package/dist/utility/password.js +2 -2
  897. package/dist/utility/processManagement/processManagement.js +2 -2
  898. package/dist/utility/processManagement/servicesConfig.js +1 -1
  899. package/dist/utility/signalling.d.ts +2 -2
  900. package/dist/utility/signalling.js +51 -16
  901. package/dist/utility/signalling.js.map +1 -1
  902. package/dist/utility/watcherFallback.d.ts +36 -0
  903. package/dist/utility/watcherFallback.js +73 -0
  904. package/dist/utility/watcherFallback.js.map +1 -0
  905. package/dist/validation/analyticsValidator.d.ts +1 -0
  906. package/dist/validation/analyticsValidator.js +80 -0
  907. package/dist/validation/analyticsValidator.js.map +1 -0
  908. package/dist/validation/bulkDeleteValidator.d.ts +1 -2
  909. package/dist/validation/bulkDeleteValidator.js +49 -11
  910. package/dist/validation/bulkDeleteValidator.js.map +1 -1
  911. package/dist/validation/check_permissions.d.ts +1 -2
  912. package/dist/validation/check_permissions.js +38 -3
  913. package/dist/validation/check_permissions.js.map +1 -1
  914. package/dist/validation/common_validators.d.ts +20 -20
  915. package/dist/validation/common_validators.js +62 -31
  916. package/dist/validation/common_validators.js.map +1 -1
  917. package/dist/validation/configValidator.d.ts +4 -4
  918. package/dist/validation/configValidator.js +189 -54
  919. package/dist/validation/configValidator.js.map +1 -1
  920. package/dist/validation/deleteValidator.d.ts +1 -2
  921. package/dist/validation/deleteValidator.js +49 -11
  922. package/dist/validation/deleteValidator.js.map +1 -1
  923. package/dist/validation/fileLoadValidator.d.ts +4 -4
  924. package/dist/validation/fileLoadValidator.js +67 -32
  925. package/dist/validation/fileLoadValidator.js.map +1 -1
  926. package/dist/validation/insertValidator.d.ts +1 -2
  927. package/dist/validation/insertValidator.js +48 -10
  928. package/dist/validation/insertValidator.js.map +1 -1
  929. package/dist/validation/installValidator.d.ts +2 -2
  930. package/dist/validation/installValidator.js +47 -10
  931. package/dist/validation/installValidator.js.map +1 -1
  932. package/dist/validation/readLogValidator.d.ts +1 -2
  933. package/dist/validation/readLogValidator.js +60 -22
  934. package/dist/validation/readLogValidator.js.map +1 -1
  935. package/dist/validation/role_validation.d.ts +3 -3
  936. package/dist/validation/role_validation.js +55 -19
  937. package/dist/validation/role_validation.js.map +1 -1
  938. package/dist/validation/schemaMetadataValidator.d.ts +3 -4
  939. package/dist/validation/schemaMetadataValidator.js +11 -12
  940. package/dist/validation/schemaMetadataValidator.js.map +1 -1
  941. package/dist/validation/searchValidator.d.ts +1 -2
  942. package/dist/validation/searchValidator.js +82 -43
  943. package/dist/validation/searchValidator.js.map +1 -1
  944. package/dist/validation/statusValidator.d.ts +1 -1
  945. package/dist/validation/transactionLogValidator.d.ts +3 -3
  946. package/dist/validation/transactionLogValidator.js +52 -17
  947. package/dist/validation/transactionLogValidator.js.map +1 -1
  948. package/dist/validation/user_validation.d.ts +3 -3
  949. package/dist/validation/user_validation.js +38 -6
  950. package/dist/validation/user_validation.js.map +1 -1
  951. package/dist/validation/validationWrapper.d.ts +3 -3
  952. package/dist/validation/validationWrapper.js +4 -5
  953. package/dist/validation/validationWrapper.js.map +1 -1
  954. package/index.ts +5 -0
  955. package/json/systemSchema.json +65 -0
  956. package/launchServiceScripts/utility/checkNodeVersion.js +2 -0
  957. package/package.json +38 -24
  958. package/resources/DESIGN.md +98 -0
  959. package/resources/DatabaseTransaction.ts +58 -30
  960. package/resources/ErrorResource.ts +2 -1
  961. package/resources/LMDBTransaction.ts +38 -29
  962. package/resources/RecordEncoder.ts +41 -39
  963. package/resources/RequestTarget.ts +2 -0
  964. package/resources/Resource.ts +96 -56
  965. package/resources/ResourceInterface.ts +44 -21
  966. package/resources/Resources.ts +8 -8
  967. package/resources/RocksIndexStore.ts +3 -0
  968. package/resources/RocksTransactionLogStore.ts +13 -4
  969. package/resources/Table.ts +440 -223
  970. package/resources/analytics/metadata.ts +1 -0
  971. package/resources/analytics/read.ts +99 -10
  972. package/resources/analytics/write.ts +240 -17
  973. package/resources/auditStore.ts +30 -19
  974. package/resources/blob.ts +53 -53
  975. package/resources/dataLoader.ts +4 -4
  976. package/resources/databases.ts +208 -74
  977. package/resources/graphql.ts +267 -165
  978. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +310 -65
  979. package/resources/indexes/vector.ts +17 -0
  980. package/resources/jsonSchemaTypes.ts +102 -0
  981. package/resources/loadEnv.ts +21 -17
  982. package/resources/login.ts +5 -3
  983. package/resources/models/Models.ts +304 -0
  984. package/resources/models/TestBackend.ts +83 -0
  985. package/resources/models/agentLoop.ts +895 -0
  986. package/resources/models/analyticsTable.ts +199 -0
  987. package/resources/models/backendHelpers.ts +116 -0
  988. package/resources/models/backendRegistry.ts +66 -0
  989. package/resources/models/bootstrap.ts +135 -0
  990. package/resources/models/embedHook.ts +138 -0
  991. package/resources/models/types.ts +296 -0
  992. package/resources/openApi.ts +65 -31
  993. package/resources/replayLogs.ts +20 -9
  994. package/resources/replayLogsGuards.ts +45 -0
  995. package/resources/roles.ts +62 -67
  996. package/resources/search.ts +355 -135
  997. package/resources/tracked.ts +18 -9
  998. package/resources/transaction.ts +8 -8
  999. package/resources/transactionBroadcast.ts +3 -3
  1000. package/schema.graphql +7 -0
  1001. package/security/auth.ts +35 -26
  1002. package/security/certificateVerification/crlVerification.ts +11 -4
  1003. package/security/{cryptoHash.js → cryptoHash.ts} +3 -8
  1004. package/security/data_objects/{PermissionAttributeResponseObject.js → PermissionAttributeResponseObject.ts} +4 -4
  1005. package/security/data_objects/{PermissionResponseObject.js → PermissionResponseObject.ts} +12 -11
  1006. package/security/data_objects/{PermissionTableResponseObject.js → PermissionTableResponseObject.ts} +6 -4
  1007. package/security/{fastifyAuth.js → fastifyAuth.ts} +93 -20
  1008. package/security/impersonation.ts +3 -3
  1009. package/security/jsLoader.ts +22 -8
  1010. package/security/{keys.js → keys.ts} +113 -121
  1011. package/security/permissionsTranslator.js +2 -2
  1012. package/security/{role.js → role.ts} +26 -33
  1013. package/security/tokenAuthentication.ts +34 -7
  1014. package/security/user.ts +26 -22
  1015. package/server/DESIGN.md +139 -0
  1016. package/server/DurableSubscriptionsSession.ts +67 -50
  1017. package/server/REST.ts +120 -107
  1018. package/server/Server.ts +31 -12
  1019. package/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
  1020. package/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
  1021. package/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
  1022. package/server/fastifyRoutes.ts +37 -33
  1023. package/server/graphqlQuerying.ts +6 -5
  1024. package/server/http.ts +517 -26
  1025. package/server/itc/serverHandlers.js +75 -14
  1026. package/server/jobs/{JobObject.js → JobObject.ts} +13 -6
  1027. package/server/jobs/{jobProcess.js → jobProcess.ts} +20 -16
  1028. package/server/jobs/{jobRunner.js → jobRunner.ts} +20 -21
  1029. package/server/jobs/{jobs.js → jobs.ts} +41 -44
  1030. package/server/loadRootComponents.js +1 -1
  1031. package/server/middlewareChain.ts +270 -0
  1032. package/server/mqtt.ts +35 -26
  1033. package/server/nodeName.ts +3 -1
  1034. package/server/operationsServer.ts +85 -10
  1035. package/server/serverHelpers/Headers.ts +10 -8
  1036. package/server/serverHelpers/JSONStream.ts +15 -5
  1037. package/server/serverHelpers/Request.ts +370 -13
  1038. package/server/serverHelpers/contentTypes.ts +42 -11
  1039. package/server/serverHelpers/multipartParser.ts +152 -0
  1040. package/server/serverHelpers/progressEmitter.ts +110 -0
  1041. package/server/serverHelpers/serverHandlers.js +43 -7
  1042. package/server/serverHelpers/serverUtilities.ts +40 -30
  1043. package/server/static.ts +9 -6
  1044. package/server/status/index.ts +2 -2
  1045. package/server/storageReclamation.ts +39 -2
  1046. package/server/threads/itc.js +7 -4
  1047. package/server/threads/manageThreads.js +100 -26
  1048. package/server/threads/socketRouter.ts +12 -275
  1049. package/server/threads/threadServer.js +345 -105
  1050. package/server/threads/workerProcessGuard.ts +93 -0
  1051. package/server/throttle.ts +18 -0
  1052. package/sqlTranslator/{SelectValidator.js → SelectValidator.ts} +41 -49
  1053. package/sqlTranslator/{alasqlFunctionImporter.js → alasqlFunctionImporter.ts} +5 -5
  1054. package/sqlTranslator/{deleteTranslator.js → deleteTranslator.ts} +13 -18
  1055. package/sqlTranslator/{index.js → index.ts} +30 -33
  1056. package/sqlTranslator/{sql_statement_bucket.js → sql_statement_bucket.ts} +49 -20
  1057. package/static/README.md +10 -9
  1058. package/static/defaultConfig.yaml +0 -1
  1059. package/studio/web/assets/{index-CybLScHg.js → index-Dqr9oVhe.js} +5 -5
  1060. package/studio/web/assets/index-Dqr9oVhe.js.map +1 -0
  1061. package/studio/web/assets/{index.lazy-DKx5-iXF.js → index.lazy-CpKcKb7M.js} +2 -2
  1062. package/studio/web/assets/{index.lazy-DKx5-iXF.js.map → index.lazy-CpKcKb7M.js.map} +1 -1
  1063. package/studio/web/assets/{profile-BOjes0Wl.js → profile-C1cujdsg.js} +2 -2
  1064. package/studio/web/assets/{profile-BOjes0Wl.js.map → profile-C1cujdsg.js.map} +1 -1
  1065. package/studio/web/assets/{status-EWKUIrjT.js → status-CTiIIQlY.js} +2 -2
  1066. package/studio/web/assets/{status-EWKUIrjT.js.map → status-CTiIIQlY.js.map} +1 -1
  1067. package/studio/web/index.html +1 -1
  1068. package/upgrade/{UpgradeObjects.js → UpgradeObjects.ts} +3 -6
  1069. package/upgrade/directives/5-1-0.ts +89 -0
  1070. package/upgrade/directives/{directivesController.js → directivesController.ts} +16 -16
  1071. package/upgrade/{directivesManager.js → directivesManager.ts} +7 -11
  1072. package/upgrade/{upgradePrompt.js → upgradePrompt.ts} +6 -54
  1073. package/upgrade/{upgradeUtilities.js → upgradeUtilities.ts} +3 -7
  1074. package/utility/{OperationFunctionCaller.js → OperationFunctionCaller.ts} +7 -7
  1075. package/utility/{assignCmdEnvVariables.js → assignCmdEnvVariables.ts} +6 -8
  1076. package/utility/{common_utils.js → common_utils.ts} +113 -139
  1077. package/utility/environment/{environmentManager.js → environmentManager.ts} +34 -33
  1078. package/utility/environment/systemInformation.ts +18 -4
  1079. package/utility/errors/{commonErrors.js → commonErrors.ts} +9 -9
  1080. package/utility/errors/{hdbError.js → hdbError.ts} +39 -45
  1081. package/utility/expandEnvVar.ts +110 -0
  1082. package/utility/functions/geo.js +2 -2
  1083. package/utility/functions/sql/alaSQLExtension.js +1 -1
  1084. package/utility/globalSchema.ts +30 -0
  1085. package/utility/hdbTerms.ts +54 -1
  1086. package/utility/install/checkJWTTokensExist.js +1 -1
  1087. package/utility/install/{installer.js → installer.ts} +66 -42
  1088. package/utility/installation.ts +2 -2
  1089. package/utility/lmdb/{DBIDefinition.js → DBIDefinition.ts} +4 -1
  1090. package/utility/lmdb/{DeleteRecordsResponseObject.js → DeleteRecordsResponseObject.ts} +2 -1
  1091. package/utility/lmdb/{InsertRecordsResponseObject.js → InsertRecordsResponseObject.ts} +2 -1
  1092. package/utility/lmdb/OpenDBIObject.ts +57 -0
  1093. package/utility/lmdb/{OpenEnvironmentObject.js → OpenEnvironmentObject.ts} +19 -6
  1094. package/utility/lmdb/{UpdateRecordsResponseObject.js → UpdateRecordsResponseObject.ts} +2 -1
  1095. package/utility/lmdb/{UpsertRecordsResponseObject.js → UpsertRecordsResponseObject.ts} +2 -1
  1096. package/utility/lmdb/{cleanLMDBMap.js → cleanLMDBMap.ts} +5 -5
  1097. package/utility/lmdb/{commonUtility.js → commonUtility.ts} +13 -21
  1098. package/utility/lmdb/{deleteUtility.js → deleteUtility.ts} +8 -12
  1099. package/utility/lmdb/{environmentUtility.js → environmentUtility.ts} +43 -52
  1100. package/utility/lmdb/{searchCursorFunctions.js → searchCursorFunctions.ts} +12 -26
  1101. package/utility/lmdb/{searchUtility.js → searchUtility.ts} +75 -64
  1102. package/utility/lmdb/{terms.js → terms.ts} +10 -23
  1103. package/utility/lmdb/{writeUtility.js → writeUtility.ts} +37 -22
  1104. package/utility/logging/{harper_logger.js → harper_logger.ts} +137 -90
  1105. package/utility/logging/{logRotator.js → logRotator.ts} +15 -18
  1106. package/utility/logging/logger.ts +1 -1
  1107. package/utility/logging/{readLog.js → readLog.ts} +19 -19
  1108. package/utility/logging/{transactionLog.js → transactionLog.ts} +10 -14
  1109. package/utility/{mount_hdb.js → mount_hdb.ts} +15 -16
  1110. package/utility/{npmUtilities.js → npmUtilities.ts} +14 -17
  1111. package/utility/{operation_authorization.js → operation_authorization.ts} +173 -124
  1112. package/utility/packageUtils.js +7 -16
  1113. package/utility/password.ts +1 -1
  1114. package/utility/processManagement/processManagement.js +2 -2
  1115. package/utility/processManagement/servicesConfig.js +1 -1
  1116. package/utility/{signalling.js → signalling.ts} +6 -11
  1117. package/utility/watcherFallback.ts +74 -0
  1118. package/validation/analyticsValidator.ts +44 -0
  1119. package/validation/{bulkDeleteValidator.js → bulkDeleteValidator.ts} +5 -5
  1120. package/validation/{check_permissions.js → check_permissions.ts} +3 -3
  1121. package/validation/{common_validators.js → common_validators.ts} +12 -24
  1122. package/validation/{configValidator.js → configValidator.ts} +114 -18
  1123. package/validation/{deleteValidator.js → deleteValidator.ts} +5 -5
  1124. package/validation/{fileLoadValidator.js → fileLoadValidator.ts} +12 -19
  1125. package/validation/{insertValidator.js → insertValidator.ts} +5 -5
  1126. package/validation/{installValidator.js → installValidator.ts} +8 -8
  1127. package/validation/{readLogValidator.js → readLogValidator.ts} +10 -10
  1128. package/validation/{role_validation.js → role_validation.ts} +26 -32
  1129. package/validation/{schemaMetadataValidator.js → schemaMetadataValidator.ts} +5 -11
  1130. package/validation/{searchValidator.js → searchValidator.ts} +12 -11
  1131. package/validation/statusValidator.ts +1 -1
  1132. package/validation/{transactionLogValidator.js → transactionLogValidator.ts} +4 -9
  1133. package/validation/{user_validation.js → user_validation.ts} +4 -10
  1134. package/validation/{validationWrapper.js → validationWrapper.ts} +3 -9
  1135. package/bin/cliOperations.js +0 -159
  1136. package/bin/lite.js +0 -5
  1137. package/dataLayer/harperBridge/BridgeMethods.js +0 -85
  1138. package/studio/web/assets/index-CybLScHg.js.map +0 -1
  1139. package/utility/globalSchema.js +0 -35
  1140. package/utility/lmdb/OpenDBIObject.js +0 -31
@@ -0,0 +1,823 @@
1
+ /**
2
+ * AWS Bedrock backend (#633, Phase 6 of #510).
3
+ *
4
+ * Implements `ModelBackend` against AWS Bedrock via the official AWS SDK.
5
+ * Unlike Ollama / OpenAI / Anthropic, Bedrock requires SigV4-signed
6
+ * requests against region-specific endpoints; rolling that ourselves is
7
+ * not worth it. `@aws-sdk/client-bedrock-runtime` is declared as an
8
+ * **optional `peerDependency`** in Harper's `package.json`. Users who
9
+ * want the bedrock backend add the SDK to their own project's
10
+ * `package.json`; we dynamic-import on first use and throw a pointed
11
+ * error if it's missing.
12
+ *
13
+ * AWS credentials resolve via the SDK's standard chain (env / shared
14
+ * credentials file / EC2 / ECS / IAM roles for service accounts). No
15
+ * `apiKey` field on the Harper config — credential handling is the
16
+ * SDK's job, not ours.
17
+ *
18
+ * Bedrock has multiple model invocation shapes per family (Claude vs
19
+ * Llama vs Titan vs Cohere). The backend dispatches on the `model`
20
+ * field's prefix; per-family request/response translation lives in
21
+ * helpers below.
22
+ */
23
+ import { setEmbedding, setGenerative } from '../../resources/models/backendRegistry.ts';
24
+ import { assignFiniteTokenCount, composeSignal, requireModel } from '../../resources/models/backendHelpers.ts';
25
+ import { ServerError } from '../../utility/errors/hdbError.ts';
26
+ import harperLogger from '../../utility/logging/harper_logger.ts';
27
+ import type {
28
+ BackendOpts,
29
+ EmbedOpts,
30
+ GenerateChunk,
31
+ GenerateInput,
32
+ GenerateOpts,
33
+ GenerateResult,
34
+ Message,
35
+ ModelBackend,
36
+ ModelCallResult,
37
+ ModelCapabilities,
38
+ ToolCall,
39
+ ToolDef,
40
+ TokenUsage,
41
+ } from '../../resources/models/types.ts';
42
+
43
+ // Defaults matching Anthropic's expectation when Claude is invoked via
44
+ // Bedrock — Anthropic requires `max_tokens` on every request.
45
+ const DEFAULT_MAX_TOKENS = 4096;
46
+ // Max accumulated `bytes` from streamed Claude tool-use input_json_delta;
47
+ // matches the cap in `components/anthropic/index.ts`.
48
+ const MAX_TOOL_CALL_ARGS_CHARS = 1 << 20;
49
+
50
+ const log = harperLogger.forComponent('bedrock').conditional;
51
+
52
+ export type BedrockBackendKind = 'embedding' | 'generative';
53
+
54
+ export interface BedrockBackendConfig {
55
+ /** AWS region (e.g. `us-east-1`). Required — Bedrock is regional. */
56
+ region?: string;
57
+ /**
58
+ * Model ID per Bedrock conventions, e.g. `anthropic.claude-opus-4-v1:0`
59
+ * for Claude, `meta.llama3-70b-instruct-v1:0` for Llama,
60
+ * `amazon.titan-embed-text-v2:0` for Titan embed. The leading vendor
61
+ * prefix is how the backend dispatches to the right per-family shape.
62
+ */
63
+ model?: string;
64
+ requestTimeoutMs?: number;
65
+ }
66
+
67
+ /**
68
+ * SDK type-erased shape we use. We don't import `@aws-sdk/client-bedrock-runtime`
69
+ * at module init (it's an optional peerDep); types are kept loose so the
70
+ * compile doesn't depend on the SDK either.
71
+ */
72
+ type SdkLike = {
73
+ BedrockRuntimeClient: new (config: { region?: string }) => {
74
+ send: (cmd: object) => Promise<unknown>;
75
+ };
76
+ InvokeModelCommand: new (input: { modelId: string; body: string; contentType?: string; accept?: string }) => object;
77
+ InvokeModelWithResponseStreamCommand: new (input: {
78
+ modelId: string;
79
+ body: string;
80
+ contentType?: string;
81
+ accept?: string;
82
+ }) => object;
83
+ };
84
+
85
+ let sdkPromise: Promise<SdkLike> | undefined;
86
+
87
+ /**
88
+ * Load the AWS SDK on demand. Memoized — the SDK is module-scope state once
89
+ * loaded. Throws `BedrockBackendError` with a clear "add to your
90
+ * package.json" message if the SDK isn't installed.
91
+ */
92
+ async function loadSdk(): Promise<SdkLike> {
93
+ if (!sdkPromise) {
94
+ sdkPromise = (async () => {
95
+ try {
96
+ // `@aws-sdk/client-bedrock-runtime` is declared as an optional
97
+ // peerDependency in Harper's `package.json` — it is not present
98
+ // in Harper's `node_modules` by design, so TypeScript can't
99
+ // resolve it at compile time. The runtime import resolves
100
+ // against the user's project tree.
101
+ // @ts-expect-error optional peerDependency, not resolvable at build time
102
+ const mod = (await import('@aws-sdk/client-bedrock-runtime')) as unknown as SdkLike;
103
+ return mod;
104
+ } catch (err) {
105
+ // Wipe the cached rejection so a follow-up install + retry works
106
+ // without restart. The thrown error is still propagated for this call.
107
+ sdkPromise = undefined;
108
+ throw new BedrockBackendError(
109
+ '@aws-sdk/client-bedrock-runtime is not installed. Add it to your project ' +
110
+ '(`npm install @aws-sdk/client-bedrock-runtime`) — Harper declares it as an optional peerDependency, ' +
111
+ 'not a direct dependency, so applications that do not use the bedrock backend never pay the install cost. ' +
112
+ `Underlying error: ${(err as Error)?.message ?? err}`
113
+ );
114
+ }
115
+ })();
116
+ }
117
+ return sdkPromise;
118
+ }
119
+
120
+ /** Test-only hook to reset the memoized SDK promise between cases. */
121
+ export function _resetSdkCacheForTests(): void {
122
+ sdkPromise = undefined;
123
+ }
124
+
125
+ /** Test-only hook to inject a fake SDK. */
126
+ export function _injectSdkForTests(sdk: SdkLike): void {
127
+ sdkPromise = Promise.resolve(sdk);
128
+ }
129
+
130
+ /**
131
+ * `ModelBackend` for AWS Bedrock.
132
+ *
133
+ * - `embed` → `InvokeModel` against an embedding model (Titan, Cohere, etc.)
134
+ * - `generate` → `InvokeModel` against a generative model, per-family body shape
135
+ * - `generateStream` → `InvokeModelWithResponseStream`, per-family event parsing
136
+ *
137
+ * Tool support varies per model family — `capabilities()` advertises
138
+ * `tools: true` at the capability level; calls against models that don't
139
+ * support tools (or that haven't been wired into the per-family dispatcher
140
+ * yet) raise structured errors.
141
+ */
142
+ export class BedrockBackend implements ModelBackend {
143
+ readonly name = 'bedrock';
144
+ readonly #region?: string;
145
+ readonly #defaultModel?: string;
146
+ readonly #requestTimeoutMs?: number;
147
+ #client?: { send: (cmd: object) => Promise<unknown> };
148
+
149
+ constructor(config: BedrockBackendConfig = {}) {
150
+ this.#region = config.region;
151
+ this.#defaultModel = config.model;
152
+ this.#requestTimeoutMs = config.requestTimeoutMs;
153
+ }
154
+
155
+ capabilities(): ModelCapabilities {
156
+ return { embed: true, generate: true, stream: true, tools: true, adapters: false };
157
+ }
158
+
159
+ async embed(input: string | string[], opts: BackendOpts<EmbedOpts>): Promise<ModelCallResult<Float32Array[]>> {
160
+ const model = opts.model ?? this.#defaultModel;
161
+ requireModel(model, 'embed', BedrockBackendError);
162
+ const family = familyOf(model);
163
+ const texts = Array.isArray(input) ? input : [input];
164
+
165
+ const client = await this.#getClient();
166
+ const sdk = await loadSdk();
167
+ const vectors: Float32Array[] = [];
168
+ let totalPromptTokens = 0;
169
+ let sawAnyTokens = false;
170
+
171
+ // Bedrock embedding APIs (Titan, Cohere) accept one text per call.
172
+ // Loop to honor the multi-input contract; concurrent dispatch would
173
+ // trip the SDK's request budget on larger batches without bounded
174
+ // concurrency, which is overkill for v1.
175
+ for (const text of texts) {
176
+ const body = buildEmbedBody(family, text, opts.inputType);
177
+ const command = new sdk.InvokeModelCommand({
178
+ modelId: model,
179
+ body: JSON.stringify(body),
180
+ contentType: 'application/json',
181
+ accept: 'application/json',
182
+ });
183
+ const response = (await this.#sendWithAbort(client, command, opts.signal)) as { body?: Uint8Array | string };
184
+ const parsed = parseInvokeModelResponse(response);
185
+ const { embedding, promptTokens } = extractEmbedResult(family, parsed);
186
+ vectors.push(Float32Array.from(embedding));
187
+ if (typeof promptTokens === 'number') {
188
+ totalPromptTokens += promptTokens;
189
+ sawAnyTokens = true;
190
+ }
191
+ }
192
+
193
+ const usage: TokenUsage = {};
194
+ if (sawAnyTokens) assignFiniteTokenCount(usage, 'embeddingTokens', totalPromptTokens);
195
+ return { status: 'completed', output: vectors, usage };
196
+ }
197
+
198
+ async generate(input: GenerateInput, opts: BackendOpts<GenerateOpts>): Promise<ModelCallResult<GenerateResult>> {
199
+ const model = opts.model ?? this.#defaultModel;
200
+ requireModel(model, 'generate', BedrockBackendError);
201
+ const family = familyOf(model);
202
+ const body = buildGenerateBody(family, input, opts);
203
+
204
+ const client = await this.#getClient();
205
+ const sdk = await loadSdk();
206
+ const command = new sdk.InvokeModelCommand({
207
+ modelId: model,
208
+ body: JSON.stringify(body),
209
+ contentType: 'application/json',
210
+ accept: 'application/json',
211
+ });
212
+ const response = (await this.#sendWithAbort(client, command, opts.signal)) as { body?: Uint8Array | string };
213
+ const parsed = parseInvokeModelResponse(response);
214
+ const result = extractGenerateResult(family, parsed);
215
+ return { status: 'completed', output: result.output, usage: result.usage };
216
+ }
217
+
218
+ async *generateStream(input: GenerateInput, opts: BackendOpts<GenerateOpts>): AsyncIterable<GenerateChunk> {
219
+ const model = opts.model ?? this.#defaultModel;
220
+ requireModel(model, 'generateStream', BedrockBackendError);
221
+ const family = familyOf(model);
222
+ const body = buildGenerateBody(family, input, opts);
223
+
224
+ const client = await this.#getClient();
225
+ const sdk = await loadSdk();
226
+ const command = new sdk.InvokeModelWithResponseStreamCommand({
227
+ modelId: model,
228
+ body: JSON.stringify(body),
229
+ contentType: 'application/json',
230
+ accept: 'application/json',
231
+ });
232
+ const response = (await this.#sendWithAbort(client, command, opts.signal)) as {
233
+ body?: AsyncIterable<{ chunk?: { bytes?: Uint8Array } }>;
234
+ };
235
+ if (!response.body) {
236
+ throw new BedrockBackendError(`Bedrock InvokeModelWithResponseStream returned no body for model ${model}`);
237
+ }
238
+
239
+ yield* parseStream(family, response.body);
240
+ }
241
+
242
+ async #getClient(): Promise<{ send: (cmd: object) => Promise<unknown> }> {
243
+ if (this.#client) return this.#client;
244
+ const sdk = await loadSdk();
245
+ this.#client = new sdk.BedrockRuntimeClient({ region: this.#region });
246
+ return this.#client;
247
+ }
248
+
249
+ /**
250
+ * Send a command with caller-supplied AbortSignal + optional per-call
251
+ * timeout composed via `AbortSignal.any`. The SDK accepts `abortSignal`
252
+ * in the request options bag.
253
+ */
254
+ async #sendWithAbort(
255
+ client: { send: (cmd: object, options?: { abortSignal?: AbortSignal }) => Promise<unknown> },
256
+ command: object,
257
+ callerSignal?: AbortSignal
258
+ ): Promise<unknown> {
259
+ const abortSignal = composeSignal(callerSignal, this.#requestTimeoutMs);
260
+ return client.send(command, abortSignal ? { abortSignal } : undefined);
261
+ }
262
+ }
263
+
264
+ /**
265
+ * Boot-bridge helper. Called from `resources/models/bootstrap.ts` for each
266
+ * `models.embedding.<name>` / `models.generative.<name>` entry whose
267
+ * `backend: bedrock`. Construction is cheap (no SDK load) — the SDK loads
268
+ * lazily on first call.
269
+ */
270
+ export function registerBedrockBackend(args: {
271
+ logicalName: string;
272
+ kind: BedrockBackendKind;
273
+ config: BedrockBackendConfig;
274
+ }): void {
275
+ const backend = new BedrockBackend(args.config);
276
+ if (args.kind === 'embedding') setEmbedding(args.logicalName, backend);
277
+ else setGenerative(args.logicalName, backend);
278
+ }
279
+
280
+ export class BedrockBackendError extends ServerError {
281
+ constructor(message: string) {
282
+ super(message);
283
+ this.name = 'BedrockBackendError';
284
+ }
285
+ }
286
+
287
+ // ---------- per-family dispatch ----------
288
+
289
+ type Family = 'anthropic' | 'amazon' | 'meta' | 'cohere' | 'mistral' | 'unknown';
290
+
291
+ function familyOf(modelId: string): Family {
292
+ const prefix = modelId.split('.', 1)[0]?.toLowerCase() ?? '';
293
+ if (prefix === 'anthropic') return 'anthropic';
294
+ if (prefix === 'amazon') return 'amazon';
295
+ if (prefix === 'meta') return 'meta';
296
+ if (prefix === 'cohere') return 'cohere';
297
+ if (prefix === 'mistral') return 'mistral';
298
+ return 'unknown';
299
+ }
300
+
301
+ // ---------- embed body / result extraction ----------
302
+
303
+ function buildEmbedBody(family: Family, text: string, inputType?: 'document' | 'query'): object {
304
+ if (family === 'amazon') {
305
+ // Titan embed v2: { inputText, dimensions?, normalize? }. Titan does
306
+ // not currently differentiate document vs query at the wire level.
307
+ return { inputText: text };
308
+ }
309
+ if (family === 'cohere') {
310
+ // Cohere embed-v3: `input_type` materially affects the produced vector
311
+ // — `search_document` and `search_query` produce different embeddings
312
+ // for the same text. Honor the caller's `inputType`; default to
313
+ // `search_document` when unset (matches Cohere's recommended default
314
+ // for indexing).
315
+ const cohereInputType = inputType === 'query' ? 'search_query' : 'search_document';
316
+ return { texts: [text], input_type: cohereInputType };
317
+ }
318
+ throw new BedrockBackendError(`Bedrock embed not supported for model family '${family}'`);
319
+ }
320
+
321
+ function extractEmbedResult(
322
+ family: Family,
323
+ parsed: Record<string, unknown>
324
+ ): { embedding: number[]; promptTokens?: number } {
325
+ if (family === 'amazon') {
326
+ const embedding = parsed.embedding;
327
+ if (!Array.isArray(embedding) || !embedding.every((n) => typeof n === 'number' && Number.isFinite(n))) {
328
+ throw new BedrockBackendError("Bedrock Titan response missing 'embedding' as a finite-number array");
329
+ }
330
+ const inputTextTokenCount = parsed.inputTextTokenCount;
331
+ return {
332
+ embedding: embedding as number[],
333
+ promptTokens: typeof inputTextTokenCount === 'number' ? inputTextTokenCount : undefined,
334
+ };
335
+ }
336
+ if (family === 'cohere') {
337
+ const embeddings = parsed.embeddings;
338
+ if (!Array.isArray(embeddings) || embeddings.length === 0) {
339
+ throw new BedrockBackendError("Bedrock Cohere response missing 'embeddings' array");
340
+ }
341
+ const first = embeddings[0];
342
+ if (!Array.isArray(first) || !first.every((n) => typeof n === 'number' && Number.isFinite(n))) {
343
+ throw new BedrockBackendError('Bedrock Cohere embedding vector is not an array of finite numbers');
344
+ }
345
+ return { embedding: first as number[] };
346
+ }
347
+ throw new BedrockBackendError(`Bedrock embed result extraction not implemented for family '${family}'`);
348
+ }
349
+
350
+ // ---------- generate body / result extraction ----------
351
+
352
+ function buildGenerateBody(family: Family, input: GenerateInput, opts: BackendOpts<GenerateOpts>): object {
353
+ if (family === 'anthropic') return buildAnthropicBody(input, opts);
354
+ if (family === 'meta') return buildLlamaBody(input, opts);
355
+ if (family === 'amazon') return buildTitanGenerateBody(input, opts);
356
+ if (family === 'mistral') return buildMistralBody(input, opts);
357
+ if (family === 'cohere') return buildCohereGenerateBody(input, opts);
358
+ throw new BedrockBackendError(`Bedrock generate not supported for model family '${family}'`);
359
+ }
360
+
361
+ function extractGenerateResult(
362
+ family: Family,
363
+ parsed: Record<string, unknown>
364
+ ): { output: GenerateResult; usage: TokenUsage } {
365
+ if (family === 'anthropic') return extractAnthropicResult(parsed);
366
+ if (family === 'meta') return extractLlamaResult(parsed);
367
+ if (family === 'amazon') return extractTitanResult(parsed);
368
+ if (family === 'mistral') return extractMistralResult(parsed);
369
+ if (family === 'cohere') return extractCohereResult(parsed);
370
+ throw new BedrockBackendError(`Bedrock generate result extraction not implemented for family '${family}'`);
371
+ }
372
+
373
+ // Claude via Bedrock uses Anthropic's Messages API shape verbatim. Reuse the
374
+ // translation patterns from `components/anthropic/index.ts` but keep the
375
+ // code self-contained here — duplicated shape, different transport.
376
+ function buildAnthropicBody(input: GenerateInput, opts: BackendOpts<GenerateOpts>): object {
377
+ const { messages, system } = normalizeMessages(input);
378
+ const tools = extractTools(input);
379
+ const body: Record<string, unknown> = {
380
+ anthropic_version: 'bedrock-2023-05-31',
381
+ messages: messages.map(toAnthropicMessage),
382
+ max_tokens: typeof opts.maxTokens === 'number' && opts.maxTokens > 0 ? opts.maxTokens : DEFAULT_MAX_TOKENS,
383
+ };
384
+ if (system) body.system = system;
385
+ if (tools && tools.length > 0) {
386
+ body.tools = tools.map((t) => ({ name: t.name, description: t.description, input_schema: t.parameters }));
387
+ }
388
+ if (typeof opts.temperature === 'number') body.temperature = opts.temperature;
389
+ return body;
390
+ }
391
+
392
+ function extractAnthropicResult(parsed: Record<string, unknown>): { output: GenerateResult; usage: TokenUsage } {
393
+ const content = Array.isArray(parsed.content) ? (parsed.content as AnthropicContentBlock[]) : [];
394
+ const text: string[] = [];
395
+ const toolCalls: ToolCall[] = [];
396
+ for (const block of content) {
397
+ if (block.type === 'text' && typeof block.text === 'string') text.push(block.text);
398
+ else if (block.type === 'tool_use' && block.id && block.name) {
399
+ const input = block.input && typeof block.input === 'object' ? block.input : {};
400
+ toolCalls.push({ id: block.id, name: block.name, arguments: input });
401
+ }
402
+ }
403
+ const usage: TokenUsage = {};
404
+ const usageObj = parsed.usage as { input_tokens?: unknown; output_tokens?: unknown } | undefined;
405
+ assignFiniteTokenCount(usage, 'promptTokens', usageObj?.input_tokens);
406
+ assignFiniteTokenCount(usage, 'completionTokens', usageObj?.output_tokens);
407
+ const output: GenerateResult = {
408
+ content: text.join(''),
409
+ finishReason: mapAnthropicStopReason(parsed.stop_reason as string | undefined),
410
+ };
411
+ if (toolCalls.length > 0) output.toolCalls = toolCalls;
412
+ return { output, usage };
413
+ }
414
+
415
+ function buildLlamaBody(input: GenerateInput, opts: BackendOpts<GenerateOpts>): object {
416
+ // Llama on Bedrock uses a flat `prompt` string. Caller's structured
417
+ // messages are flattened with role tags; not as expressive as native chat,
418
+ // but matches what AWS documents.
419
+ rejectToolsForFamily(input, 'meta');
420
+ const prompt = flattenToLlamaPrompt(input);
421
+ const body: Record<string, unknown> = { prompt };
422
+ if (typeof opts.maxTokens === 'number') body.max_gen_len = opts.maxTokens;
423
+ if (typeof opts.temperature === 'number') body.temperature = opts.temperature;
424
+ return body;
425
+ }
426
+
427
+ function extractLlamaResult(parsed: Record<string, unknown>): { output: GenerateResult; usage: TokenUsage } {
428
+ const generation = typeof parsed.generation === 'string' ? parsed.generation : '';
429
+ const usage: TokenUsage = {};
430
+ assignFiniteTokenCount(usage, 'promptTokens', parsed.prompt_token_count);
431
+ assignFiniteTokenCount(usage, 'completionTokens', parsed.generation_token_count);
432
+ const output: GenerateResult = {
433
+ content: generation,
434
+ finishReason: mapGenericStopReason(parsed.stop_reason as string | undefined),
435
+ };
436
+ return { output, usage };
437
+ }
438
+
439
+ function buildTitanGenerateBody(input: GenerateInput, opts: BackendOpts<GenerateOpts>): object {
440
+ rejectToolsForFamily(input, 'amazon');
441
+ const inputText = flattenToFlatPrompt(input);
442
+ const body: Record<string, unknown> = { inputText };
443
+ const textGenerationConfig: Record<string, unknown> = {};
444
+ if (typeof opts.maxTokens === 'number') textGenerationConfig.maxTokenCount = opts.maxTokens;
445
+ if (typeof opts.temperature === 'number') textGenerationConfig.temperature = opts.temperature;
446
+ if (Object.keys(textGenerationConfig).length > 0) body.textGenerationConfig = textGenerationConfig;
447
+ return body;
448
+ }
449
+
450
+ function extractTitanResult(parsed: Record<string, unknown>): { output: GenerateResult; usage: TokenUsage } {
451
+ const results = Array.isArray(parsed.results) ? parsed.results : [];
452
+ const first = (results[0] as Record<string, unknown>) ?? {};
453
+ const outputText = typeof first.outputText === 'string' ? first.outputText : '';
454
+ const usage: TokenUsage = {};
455
+ assignFiniteTokenCount(usage, 'promptTokens', parsed.inputTextTokenCount);
456
+ assignFiniteTokenCount(usage, 'completionTokens', first.tokenCount);
457
+ const output: GenerateResult = {
458
+ content: outputText,
459
+ finishReason: mapGenericStopReason(first.completionReason as string | undefined),
460
+ };
461
+ return { output, usage };
462
+ }
463
+
464
+ function buildMistralBody(input: GenerateInput, opts: BackendOpts<GenerateOpts>): object {
465
+ rejectToolsForFamily(input, 'mistral');
466
+ const prompt = flattenToFlatPrompt(input);
467
+ const body: Record<string, unknown> = { prompt };
468
+ if (typeof opts.maxTokens === 'number') body.max_tokens = opts.maxTokens;
469
+ if (typeof opts.temperature === 'number') body.temperature = opts.temperature;
470
+ return body;
471
+ }
472
+
473
+ function extractMistralResult(parsed: Record<string, unknown>): { output: GenerateResult; usage: TokenUsage } {
474
+ const outputs = Array.isArray(parsed.outputs) ? parsed.outputs : [];
475
+ const first = (outputs[0] as Record<string, unknown>) ?? {};
476
+ const text = typeof first.text === 'string' ? first.text : '';
477
+ const output: GenerateResult = {
478
+ content: text,
479
+ finishReason: mapGenericStopReason(first.stop_reason as string | undefined),
480
+ };
481
+ // Mistral via Bedrock doesn't currently return per-call token counts in a
482
+ // stable shape — leave usage empty.
483
+ return { output, usage: {} };
484
+ }
485
+
486
+ function buildCohereGenerateBody(input: GenerateInput, opts: BackendOpts<GenerateOpts>): object {
487
+ rejectToolsForFamily(input, 'cohere');
488
+ const prompt = flattenToFlatPrompt(input);
489
+ const body: Record<string, unknown> = { prompt };
490
+ if (typeof opts.maxTokens === 'number') body.max_tokens = opts.maxTokens;
491
+ if (typeof opts.temperature === 'number') body.temperature = opts.temperature;
492
+ return body;
493
+ }
494
+
495
+ function extractCohereResult(parsed: Record<string, unknown>): { output: GenerateResult; usage: TokenUsage } {
496
+ const generations = Array.isArray(parsed.generations) ? parsed.generations : [];
497
+ const first = (generations[0] as Record<string, unknown>) ?? {};
498
+ const text = typeof first.text === 'string' ? first.text : '';
499
+ const output: GenerateResult = {
500
+ content: text,
501
+ finishReason: mapGenericStopReason(first.finish_reason as string | undefined),
502
+ };
503
+ return { output, usage: {} };
504
+ }
505
+
506
+ // ---------- streaming dispatch ----------
507
+
508
+ async function* parseStream(
509
+ family: Family,
510
+ body: AsyncIterable<{ chunk?: { bytes?: Uint8Array } }>
511
+ ): AsyncGenerator<GenerateChunk> {
512
+ if (family === 'anthropic') {
513
+ yield* parseAnthropicStream(body);
514
+ return;
515
+ }
516
+ if (family === 'meta' || family === 'amazon' || family === 'mistral' || family === 'cohere') {
517
+ yield* parseFlatStream(family, body);
518
+ return;
519
+ }
520
+ throw new BedrockBackendError(`Bedrock streaming not supported for model family '${family}'`);
521
+ }
522
+
523
+ async function* parseAnthropicStream(
524
+ body: AsyncIterable<{ chunk?: { bytes?: Uint8Array } }>
525
+ ): AsyncGenerator<GenerateChunk> {
526
+ const decoder = new TextDecoder('utf-8');
527
+ const toolBuf = new Map<number, { id: string; name: string; argumentsBuf: string }>();
528
+ let finalFinishReason: GenerateResult['finishReason'] | undefined;
529
+
530
+ for await (const event of body) {
531
+ if (!event.chunk?.bytes) continue;
532
+ const text = decoder.decode(event.chunk.bytes);
533
+ let parsed: Record<string, unknown>;
534
+ try {
535
+ parsed = JSON.parse(text) as Record<string, unknown>;
536
+ } catch {
537
+ throw new BedrockBackendError('Invalid JSON in Bedrock Anthropic stream chunk');
538
+ }
539
+ const chunk: GenerateChunk = {};
540
+ const type = parsed.type as string | undefined;
541
+ const index = parsed.index as number | undefined;
542
+ const contentBlock = parsed.content_block as AnthropicContentBlock | undefined;
543
+ const delta = parsed.delta as
544
+ | {
545
+ type?: string;
546
+ text?: string;
547
+ partial_json?: string;
548
+ stop_reason?: string | null;
549
+ }
550
+ | undefined;
551
+
552
+ // Mid-stream upstream errors from Anthropic-via-Bedrock arrive as a
553
+ // `type: 'error'` chunk; without explicit handling the stream ends
554
+ // silently and the caller can't distinguish a clean end from an
555
+ // aborted one. Same posture as the direct Anthropic backend.
556
+ if (type === 'error') {
557
+ const upstream = (parsed as { error?: { message?: unknown } }).error?.message;
558
+ if (typeof upstream === 'string' && upstream.length > 0) {
559
+ const truncated = upstream.length > 500 ? upstream.slice(0, 500) + '…' : upstream;
560
+ throw new BedrockBackendError(`Bedrock Anthropic stream aborted by upstream error: ${truncated}`);
561
+ }
562
+ throw new BedrockBackendError('Bedrock Anthropic stream aborted by upstream error');
563
+ }
564
+
565
+ if (type === 'content_block_start' && index !== undefined && contentBlock?.type === 'tool_use') {
566
+ toolBuf.set(index, { id: contentBlock.id ?? '', name: contentBlock.name ?? '', argumentsBuf: '' });
567
+ }
568
+ if (type === 'content_block_delta' && index !== undefined && delta) {
569
+ if (delta.type === 'text_delta' && typeof delta.text === 'string' && delta.text.length > 0) {
570
+ chunk.deltaContent = delta.text;
571
+ } else if (delta.type === 'input_json_delta' && typeof delta.partial_json === 'string') {
572
+ const acc = toolBuf.get(index);
573
+ if (acc) {
574
+ if (acc.argumentsBuf.length + delta.partial_json.length > MAX_TOOL_CALL_ARGS_CHARS) {
575
+ throw new BedrockBackendError(
576
+ `Bedrock tool-call arguments exceed ${MAX_TOOL_CALL_ARGS_CHARS} chars (index ${index})`
577
+ );
578
+ }
579
+ acc.argumentsBuf += delta.partial_json;
580
+ }
581
+ }
582
+ }
583
+ if (type === 'content_block_stop' && index !== undefined) {
584
+ const acc = toolBuf.get(index);
585
+ if (acc?.id && acc.name) {
586
+ try {
587
+ const args = acc.argumentsBuf.length > 0 ? JSON.parse(acc.argumentsBuf) : {};
588
+ chunk.deltaToolCalls = [{ id: acc.id, name: acc.name, arguments: args }];
589
+ } catch {
590
+ log.warn?.(`Bedrock tool call dropped: malformed arguments (id=${acc.id}, name=${acc.name})`);
591
+ }
592
+ toolBuf.delete(index);
593
+ }
594
+ }
595
+ if (type === 'message_delta' && delta?.stop_reason) {
596
+ finalFinishReason = mapAnthropicStopReason(delta.stop_reason);
597
+ chunk.finishReason = finalFinishReason;
598
+ }
599
+ if (chunk.deltaContent || chunk.deltaToolCalls || chunk.finishReason) yield chunk;
600
+ }
601
+
602
+ if (!finalFinishReason && toolBuf.size > 0) {
603
+ const tail: Partial<ToolCall>[] = [];
604
+ for (const acc of toolBuf.values()) {
605
+ if (!acc.id || !acc.name) continue;
606
+ try {
607
+ const args = acc.argumentsBuf.length > 0 ? JSON.parse(acc.argumentsBuf) : {};
608
+ tail.push({ id: acc.id, name: acc.name, arguments: args });
609
+ } catch {
610
+ log.warn?.(`Bedrock tool call dropped on flush (id=${acc.id}, name=${acc.name})`);
611
+ }
612
+ }
613
+ toolBuf.clear();
614
+ if (tail.length > 0) yield { deltaToolCalls: tail };
615
+ }
616
+ }
617
+
618
+ async function* parseFlatStream(
619
+ family: Family,
620
+ body: AsyncIterable<{ chunk?: { bytes?: Uint8Array } }>
621
+ ): AsyncGenerator<GenerateChunk> {
622
+ // Llama / Titan / Mistral / Cohere via Bedrock all emit one JSON object
623
+ // per stream chunk with a family-specific "delta-content" field. We yield
624
+ // each as a GenerateChunk and rely on the final chunk's stop_reason
625
+ // (or family equivalent) to terminate.
626
+ const decoder = new TextDecoder('utf-8');
627
+ for await (const event of body) {
628
+ if (!event.chunk?.bytes) continue;
629
+ const text = decoder.decode(event.chunk.bytes);
630
+ let parsed: Record<string, unknown>;
631
+ try {
632
+ parsed = JSON.parse(text) as Record<string, unknown>;
633
+ } catch {
634
+ throw new BedrockBackendError('Invalid JSON in Bedrock stream chunk');
635
+ }
636
+ const chunk: GenerateChunk = {};
637
+ const deltaContent = extractFlatDeltaContent(family, parsed);
638
+ if (deltaContent && deltaContent.length > 0) chunk.deltaContent = deltaContent;
639
+ const stopReason = extractFlatStopReason(family, parsed);
640
+ if (stopReason) chunk.finishReason = mapGenericStopReason(stopReason);
641
+ if (chunk.deltaContent || chunk.finishReason) yield chunk;
642
+ }
643
+ }
644
+
645
+ function extractFlatDeltaContent(family: Family, parsed: Record<string, unknown>): string | undefined {
646
+ if (family === 'meta') return typeof parsed.generation === 'string' ? parsed.generation : undefined;
647
+ if (family === 'amazon') return typeof parsed.outputText === 'string' ? parsed.outputText : undefined;
648
+ if (family === 'mistral') {
649
+ const outputs = Array.isArray(parsed.outputs) ? parsed.outputs : [];
650
+ const first = (outputs[0] as Record<string, unknown>) ?? {};
651
+ return typeof first.text === 'string' ? first.text : undefined;
652
+ }
653
+ if (family === 'cohere') {
654
+ const generations = Array.isArray(parsed.generations) ? parsed.generations : [];
655
+ const first = (generations[0] as Record<string, unknown>) ?? {};
656
+ return typeof first.text === 'string' ? first.text : undefined;
657
+ }
658
+ return undefined;
659
+ }
660
+
661
+ function extractFlatStopReason(family: Family, parsed: Record<string, unknown>): string | undefined {
662
+ if (family === 'meta') return parsed.stop_reason as string | undefined;
663
+ if (family === 'amazon') return parsed.completionReason as string | undefined;
664
+ if (family === 'mistral') {
665
+ const outputs = Array.isArray(parsed.outputs) ? parsed.outputs : [];
666
+ const first = (outputs[0] as Record<string, unknown>) ?? {};
667
+ return first.stop_reason as string | undefined;
668
+ }
669
+ if (family === 'cohere') {
670
+ const generations = Array.isArray(parsed.generations) ? parsed.generations : [];
671
+ const first = (generations[0] as Record<string, unknown>) ?? {};
672
+ return first.finish_reason as string | undefined;
673
+ }
674
+ return undefined;
675
+ }
676
+
677
+ // ---------- message translation (shared by Claude-on-Bedrock body) ----------
678
+
679
+ interface AnthropicContentBlock {
680
+ type: 'text' | 'tool_use' | 'tool_result';
681
+ text?: string;
682
+ id?: string;
683
+ name?: string;
684
+ input?: object;
685
+ tool_use_id?: string;
686
+ content?: string | AnthropicContentBlock[];
687
+ }
688
+
689
+ interface AnthropicMessage {
690
+ role: 'user' | 'assistant';
691
+ content: string | AnthropicContentBlock[];
692
+ }
693
+
694
+ function normalizeMessages(input: GenerateInput): { messages: Message[]; system?: string } {
695
+ if (typeof input === 'string') return { messages: [{ role: 'user', content: input }] };
696
+ if (Array.isArray(input)) {
697
+ const system: string[] = [];
698
+ const rest: Message[] = [];
699
+ for (const m of input) {
700
+ if (m.role === 'system') system.push(m.content);
701
+ else rest.push(m);
702
+ }
703
+ return system.length > 0 ? { messages: rest, system: system.join('\n\n') } : { messages: rest };
704
+ }
705
+ const explicit = input.system;
706
+ const inlineSystems: string[] = [];
707
+ const rest: Message[] = [];
708
+ for (const m of input.messages) {
709
+ if (m.role === 'system') inlineSystems.push(m.content);
710
+ else rest.push(m);
711
+ }
712
+ const combined = [explicit, ...inlineSystems]
713
+ .filter((s): s is string => typeof s === 'string' && s.length > 0)
714
+ .join('\n\n');
715
+ return combined.length > 0 ? { messages: rest, system: combined } : { messages: rest };
716
+ }
717
+
718
+ function extractTools(input: GenerateInput): ToolDef[] | undefined {
719
+ if (typeof input === 'string' || Array.isArray(input)) return undefined;
720
+ return input.tools;
721
+ }
722
+
723
+ /**
724
+ * Throw if the caller supplied `tools` on a Bedrock model family that this
725
+ * backend doesn't route them to. `capabilities()` advertises `tools: true`
726
+ * at the backend level, but only Anthropic-via-Bedrock actually consumes
727
+ * them in this PR — other families' body builders would silently drop
728
+ * the tools, leaving the caller unable to distinguish "model chose not to
729
+ * call" from "model never saw the tool". Loud error makes the
730
+ * unsupported-family case unambiguous; capability negotiation should
731
+ * eventually become model-aware (follow-up).
732
+ */
733
+ function rejectToolsForFamily(input: GenerateInput, family: Family): void {
734
+ const tools = extractTools(input);
735
+ if (tools && tools.length > 0) {
736
+ throw new BedrockBackendError(
737
+ `Bedrock tool calls are not supported for model family '${family}' (only 'anthropic' models route tools in this version)`
738
+ );
739
+ }
740
+ }
741
+
742
+ function toAnthropicMessage(m: Message): AnthropicMessage {
743
+ if (m.role !== 'user' && m.role !== 'assistant' && m.role !== 'tool') {
744
+ return { role: 'user', content: m.content };
745
+ }
746
+ if (m.role === 'tool') {
747
+ return {
748
+ role: 'user',
749
+ content: [{ type: 'tool_result', tool_use_id: m.toolCallId ?? '', content: m.content }],
750
+ };
751
+ }
752
+ if (m.role === 'assistant' && m.toolCalls && m.toolCalls.length > 0) {
753
+ const blocks: AnthropicContentBlock[] = [];
754
+ if (m.content) blocks.push({ type: 'text', text: m.content });
755
+ for (const tc of m.toolCalls) {
756
+ blocks.push({ type: 'tool_use', id: tc.id, name: tc.name, input: tc.arguments ?? {} });
757
+ }
758
+ return { role: 'assistant', content: blocks };
759
+ }
760
+ return { role: m.role, content: m.content };
761
+ }
762
+
763
+ function flattenToLlamaPrompt(input: GenerateInput): string {
764
+ if (typeof input === 'string') return input;
765
+ const messages = Array.isArray(input) ? input : input.messages;
766
+ const system = !Array.isArray(input) && typeof input.system === 'string' ? input.system : undefined;
767
+ const parts: string[] = [];
768
+ if (system) parts.push(`<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n${system}<|eot_id|>`);
769
+ for (const m of messages) {
770
+ parts.push(`<|start_header_id|>${m.role}<|end_header_id|>\n\n${m.content}<|eot_id|>`);
771
+ }
772
+ parts.push('<|start_header_id|>assistant<|end_header_id|>\n\n');
773
+ return parts.join('');
774
+ }
775
+
776
+ function flattenToFlatPrompt(input: GenerateInput): string {
777
+ if (typeof input === 'string') return input;
778
+ const messages = Array.isArray(input) ? input : input.messages;
779
+ const system = !Array.isArray(input) && typeof input.system === 'string' ? input.system : undefined;
780
+ const parts: string[] = [];
781
+ if (system) parts.push(`System: ${system}`);
782
+ for (const m of messages) parts.push(`${m.role[0].toUpperCase()}${m.role.slice(1)}: ${m.content}`);
783
+ parts.push('Assistant:');
784
+ return parts.join('\n\n');
785
+ }
786
+
787
+ // ---------- finish-reason mapping ----------
788
+
789
+ function mapAnthropicStopReason(reason: string | null | undefined): GenerateResult['finishReason'] {
790
+ switch (reason) {
791
+ case 'max_tokens':
792
+ return 'length';
793
+ case 'tool_use':
794
+ return 'tool_calls';
795
+ case 'end_turn':
796
+ case 'stop_sequence':
797
+ default:
798
+ return 'stop';
799
+ }
800
+ }
801
+
802
+ function mapGenericStopReason(reason: string | null | undefined): GenerateResult['finishReason'] {
803
+ const r = (reason ?? '').toLowerCase();
804
+ if (r === 'length' || r === 'max_tokens' || r === 'max_token' || r === 'truncated') return 'length';
805
+ if (r === 'tool_calls' || r === 'tool_use' || r === 'function_call') return 'tool_calls';
806
+ if (r === 'content_filter' || r === 'content_filtered') return 'content_filter';
807
+ return 'stop';
808
+ }
809
+
810
+ // ---------- response parsing ----------
811
+
812
+ function parseInvokeModelResponse(response: { body?: Uint8Array | string }): Record<string, unknown> {
813
+ if (!response.body) {
814
+ throw new BedrockBackendError('Bedrock InvokeModel response missing body');
815
+ }
816
+ const text =
817
+ typeof response.body === 'string' ? response.body : new TextDecoder('utf-8').decode(response.body as Uint8Array);
818
+ try {
819
+ return JSON.parse(text) as Record<string, unknown>;
820
+ } catch {
821
+ throw new BedrockBackendError('Bedrock InvokeModel response body is not valid JSON');
822
+ }
823
+ }