@harperfast/harper 5.3.0-beta.3 → 5.3.0-beta.4

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 (311) hide show
  1. package/bin/cliOperations.ts +25 -3
  2. package/bin/run.ts +18 -0
  3. package/components/Application.ts +52 -78
  4. package/components/DESIGN.md +76 -3
  5. package/components/Scope.ts +10 -4
  6. package/components/anthropic/index.ts +10 -1
  7. package/components/bedrock/index.ts +10 -1
  8. package/components/componentLoader.ts +23 -14
  9. package/components/mcp/tools/operations.ts +3 -1
  10. package/components/ollama/index.ts +10 -1
  11. package/components/openai/index.ts +265 -18
  12. package/components/operations.js +40 -1
  13. package/config/configUtils.ts +3 -19
  14. package/dataLayer/DESIGN.md +29 -5
  15. package/dataLayer/harperBridge/ResourceBridge.ts +39 -3
  16. package/dataLayer/restoreMarker.ts +250 -14
  17. package/dataLayer/schema.ts +2 -7
  18. package/dataLayer/schemaDescribe.ts +10 -0
  19. package/dist/bin/cliOperations.js +28 -3
  20. package/dist/bin/cliOperations.js.map +1 -1
  21. package/dist/bin/run.js +19 -0
  22. package/dist/bin/run.js.map +1 -1
  23. package/dist/components/Application.d.ts +8 -2
  24. package/dist/components/Application.js +43 -69
  25. package/dist/components/Application.js.map +1 -1
  26. package/dist/components/Scope.d.ts +1 -1
  27. package/dist/components/Scope.js +9 -4
  28. package/dist/components/Scope.js.map +1 -1
  29. package/dist/components/anthropic/index.d.ts +0 -10
  30. package/dist/components/anthropic/index.js +9 -1
  31. package/dist/components/anthropic/index.js.map +1 -1
  32. package/dist/components/bedrock/index.d.ts +0 -12
  33. package/dist/components/bedrock/index.js +9 -1
  34. package/dist/components/bedrock/index.js.map +1 -1
  35. package/dist/components/componentLoader.js +23 -14
  36. package/dist/components/componentLoader.js.map +1 -1
  37. package/dist/components/mcp/tools/operations.js +1 -1
  38. package/dist/components/mcp/tools/operations.js.map +1 -1
  39. package/dist/components/ollama/index.d.ts +0 -13
  40. package/dist/components/ollama/index.js +9 -1
  41. package/dist/components/ollama/index.js.map +1 -1
  42. package/dist/components/openai/index.d.ts +11 -15
  43. package/dist/components/openai/index.js +224 -12
  44. package/dist/components/openai/index.js.map +1 -1
  45. package/dist/components/operations.d.ts +9 -0
  46. package/dist/components/operations.js +32 -2
  47. package/dist/components/operations.js.map +1 -1
  48. package/dist/config/configUtils.d.ts +1 -2
  49. package/dist/config/configUtils.js +7 -22
  50. package/dist/config/configUtils.js.map +1 -1
  51. package/dist/dataLayer/harperBridge/ResourceBridge.js +29 -2
  52. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  53. package/dist/dataLayer/restoreMarker.d.ts +25 -3
  54. package/dist/dataLayer/restoreMarker.js +213 -13
  55. package/dist/dataLayer/restoreMarker.js.map +1 -1
  56. package/dist/dataLayer/schema.js +1 -4
  57. package/dist/dataLayer/schema.js.map +1 -1
  58. package/dist/dataLayer/schemaDescribe.js +10 -0
  59. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js.map +1 -1
  62. package/dist/json/systemSchema.json +28 -0
  63. package/dist/resources/DatabaseTransaction.d.ts +21 -1
  64. package/dist/resources/DatabaseTransaction.js +147 -8
  65. package/dist/resources/DatabaseTransaction.js.map +1 -1
  66. package/dist/resources/PrimaryRocksDatabase.js +1 -1
  67. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  68. package/dist/resources/Table.d.ts +31 -3
  69. package/dist/resources/Table.js +397 -79
  70. package/dist/resources/Table.js.map +1 -1
  71. package/dist/resources/auditStore.js +16 -10
  72. package/dist/resources/auditStore.js.map +1 -1
  73. package/dist/resources/blob.d.ts +1 -0
  74. package/dist/resources/blob.js +14 -5
  75. package/dist/resources/blob.js.map +1 -1
  76. package/dist/resources/branchDatabase.js +3 -3
  77. package/dist/resources/branchDatabase.js.map +1 -1
  78. package/dist/resources/databaseDropPreparation.d.ts +20 -0
  79. package/dist/resources/databaseDropPreparation.js +106 -0
  80. package/dist/resources/databaseDropPreparation.js.map +1 -0
  81. package/dist/resources/databases.d.ts +26 -21
  82. package/dist/resources/databases.js +1040 -204
  83. package/dist/resources/databases.js.map +1 -1
  84. package/dist/resources/derivedIndexRegistry.d.ts +23 -0
  85. package/dist/resources/derivedIndexRegistry.js +92 -0
  86. package/dist/resources/derivedIndexRegistry.js.map +1 -1
  87. package/dist/resources/derivedIndexRuntime.d.ts +10 -0
  88. package/dist/resources/derivedIndexRuntime.js +136 -25
  89. package/dist/resources/derivedIndexRuntime.js.map +1 -1
  90. package/dist/resources/derivedIndexes.d.ts +39 -0
  91. package/dist/resources/derivedIndexes.js +733 -0
  92. package/dist/resources/derivedIndexes.js.map +1 -0
  93. package/dist/resources/fullTextSchema.d.ts +8 -0
  94. package/dist/resources/fullTextSchema.js +42 -0
  95. package/dist/resources/fullTextSchema.js.map +1 -1
  96. package/dist/resources/fullTextSchemaLifecycle.d.ts +0 -5
  97. package/dist/resources/fullTextSchemaLifecycle.js +0 -9
  98. package/dist/resources/fullTextSchemaLifecycle.js.map +1 -1
  99. package/dist/resources/graphql.js +101 -9
  100. package/dist/resources/graphql.js.map +1 -1
  101. package/dist/resources/indexes/hnswDerivedIndex.d.ts +0 -10
  102. package/dist/resources/indexes/hnswDerivedIndex.js +0 -230
  103. package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -1
  104. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.d.ts +3 -0
  105. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js +57 -8
  106. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js.map +1 -1
  107. package/dist/resources/models/Models.d.ts +26 -3
  108. package/dist/resources/models/Models.js +256 -13
  109. package/dist/resources/models/Models.js.map +1 -1
  110. package/dist/resources/models/TestBackend.d.ts +3 -1
  111. package/dist/resources/models/TestBackend.js +35 -1
  112. package/dist/resources/models/TestBackend.js.map +1 -1
  113. package/dist/resources/models/analyticsTable.d.ts +2 -2
  114. package/dist/resources/models/analyticsTable.js +4 -2
  115. package/dist/resources/models/analyticsTable.js.map +1 -1
  116. package/dist/resources/models/backendHelpers.d.ts +24 -0
  117. package/dist/resources/models/backendHelpers.js +18 -1
  118. package/dist/resources/models/backendHelpers.js.map +1 -1
  119. package/dist/resources/models/backendRegistry.d.ts +10 -21
  120. package/dist/resources/models/backendRegistry.js +74 -18
  121. package/dist/resources/models/backendRegistry.js.map +1 -1
  122. package/dist/resources/models/bootstrap.d.ts +7 -0
  123. package/dist/resources/models/bootstrap.js +36 -4
  124. package/dist/resources/models/bootstrap.js.map +1 -1
  125. package/dist/resources/models/decideHook.d.ts +33 -0
  126. package/dist/resources/models/decideHook.js +105 -0
  127. package/dist/resources/models/decideHook.js.map +1 -0
  128. package/dist/resources/models/decision.d.ts +64 -0
  129. package/dist/resources/models/decision.js +507 -0
  130. package/dist/resources/models/decision.js.map +1 -0
  131. package/dist/resources/models/decisionStore.d.ts +134 -0
  132. package/dist/resources/models/decisionStore.js +350 -0
  133. package/dist/resources/models/decisionStore.js.map +1 -0
  134. package/dist/resources/models/embedHook.d.ts +66 -8
  135. package/dist/resources/models/embedHook.js +228 -61
  136. package/dist/resources/models/embedHook.js.map +1 -1
  137. package/dist/resources/models/generativeDecision.d.ts +58 -0
  138. package/dist/resources/models/generativeDecision.js +315 -0
  139. package/dist/resources/models/generativeDecision.js.map +1 -0
  140. package/dist/resources/models/types.d.ts +232 -4
  141. package/dist/security/authn/oidc/tokenExchange.js +3 -33
  142. package/dist/security/authn/oidc/tokenExchange.js.map +1 -1
  143. package/dist/security/authn/oidc/tokenUseTable.d.ts +9 -0
  144. package/dist/security/authn/oidc/tokenUseTable.js +28 -0
  145. package/dist/security/authn/oidc/tokenUseTable.js.map +1 -0
  146. package/dist/security/certificateVerification/certificateVerificationSource.d.ts +0 -1
  147. package/dist/security/certificateVerification/certificateVerificationSource.js +3 -3
  148. package/dist/security/certificateVerification/certificateVerificationSource.js.map +1 -1
  149. package/dist/security/certificateVerification/crlVerification.js +77 -165
  150. package/dist/security/certificateVerification/crlVerification.js.map +1 -1
  151. package/dist/security/certificateVerification/types.d.ts +0 -3
  152. package/dist/security/certificateVerification/verificationTables.d.ts +19 -0
  153. package/dist/security/certificateVerification/verificationTables.js +125 -0
  154. package/dist/security/certificateVerification/verificationTables.js.map +1 -0
  155. package/dist/security/certificateVerification/verificationUtils.d.ts +1 -1
  156. package/dist/security/certificateVerification/verificationUtils.js +6 -31
  157. package/dist/security/certificateVerification/verificationUtils.js.map +1 -1
  158. package/dist/security/jsLoader.d.ts +5 -0
  159. package/dist/security/jsLoader.js +8 -0
  160. package/dist/security/jsLoader.js.map +1 -1
  161. package/dist/server/Server.d.ts +1 -0
  162. package/dist/server/Server.js.map +1 -1
  163. package/dist/server/http.js +2 -2
  164. package/dist/server/http.js.map +1 -1
  165. package/dist/server/itc/serverHandlers.js +21 -2
  166. package/dist/server/itc/serverHandlers.js.map +1 -1
  167. package/dist/server/jobs/jobOwnership.d.ts +25 -0
  168. package/dist/server/jobs/jobOwnership.js +127 -0
  169. package/dist/server/jobs/jobOwnership.js.map +1 -0
  170. package/dist/server/jobs/jobProcess.js +9 -2
  171. package/dist/server/jobs/jobProcess.js.map +1 -1
  172. package/dist/server/jobs/jobs.js +18 -5
  173. package/dist/server/jobs/jobs.js.map +1 -1
  174. package/dist/server/loadRootComponents.js +10 -0
  175. package/dist/server/loadRootComponents.js.map +1 -1
  176. package/dist/server/serverHelpers/contentTypes.js +11 -1
  177. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  178. package/dist/server/serverHelpers/serverHandlers.js +12 -2
  179. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  180. package/dist/server/threads/itc.d.ts +4 -1
  181. package/dist/server/threads/itc.js +29 -6
  182. package/dist/server/threads/itc.js.map +1 -1
  183. package/dist/server/threads/manageThreads.d.ts +12 -4
  184. package/dist/server/threads/manageThreads.js +241 -119
  185. package/dist/server/threads/manageThreads.js.map +1 -1
  186. package/dist/server/threads/threadServer.d.ts +1 -0
  187. package/dist/server/threads/threadServer.js +15 -1
  188. package/dist/server/threads/threadServer.js.map +1 -1
  189. package/dist/server/threads/windowsProcessTree.d.ts +91 -0
  190. package/dist/server/threads/windowsProcessTree.js +361 -0
  191. package/dist/server/threads/windowsProcessTree.js.map +1 -0
  192. package/dist/server/throttle.d.ts +1 -1
  193. package/dist/server/throttle.js +8 -1
  194. package/dist/server/throttle.js.map +1 -1
  195. package/dist/upgrade/directives/5-3-0.js +53 -46
  196. package/dist/upgrade/directives/5-3-0.js.map +1 -1
  197. package/dist/utility/errors/hdbError.d.ts +10 -1
  198. package/dist/utility/errors/hdbError.js +55 -11
  199. package/dist/utility/errors/hdbError.js.map +1 -1
  200. package/dist/utility/fsync.d.ts +2 -0
  201. package/dist/utility/fsync.js +20 -0
  202. package/dist/utility/fsync.js.map +1 -0
  203. package/dist/utility/globalSchema.d.ts +18 -0
  204. package/dist/utility/hdbTerms.d.ts +3 -0
  205. package/dist/utility/hdbTerms.js +3 -0
  206. package/dist/utility/hdbTerms.js.map +1 -1
  207. package/dist/utility/signalling.d.ts +7 -1
  208. package/dist/utility/signalling.js +27 -3
  209. package/dist/utility/signalling.js.map +1 -1
  210. package/dist/utility/when.d.ts +1 -0
  211. package/dist/utility/when.js +21 -0
  212. package/dist/utility/when.js.map +1 -1
  213. package/dist/validation/configValidator.js +30 -3
  214. package/dist/validation/configValidator.js.map +1 -1
  215. package/index.ts +13 -0
  216. package/json/systemSchema.json +28 -0
  217. package/npm-shrinkwrap.json +151 -55
  218. package/package.json +14 -13
  219. package/resources/DESIGN.md +80 -100
  220. package/resources/DatabaseTransaction.ts +157 -10
  221. package/resources/PrimaryRocksDatabase.ts +2 -2
  222. package/resources/Table.ts +494 -101
  223. package/resources/auditStore.ts +18 -10
  224. package/resources/blob.ts +13 -6
  225. package/resources/branchDatabase.ts +3 -3
  226. package/resources/databaseDropPreparation.ts +120 -0
  227. package/resources/databases.ts +1155 -205
  228. package/resources/derivedIndexRegistry.ts +122 -0
  229. package/resources/derivedIndexRuntime.ts +157 -30
  230. package/resources/derivedIndexes.ts +856 -0
  231. package/resources/fullTextSchema.ts +55 -0
  232. package/resources/fullTextSchemaLifecycle.ts +0 -15
  233. package/resources/graphql.ts +107 -12
  234. package/resources/indexes/DESIGN.md +7 -0
  235. package/resources/indexes/hnswDerivedIndex.ts +0 -260
  236. package/resources/indexes/nativeFullTextDerivedIndexLifecycle.ts +72 -9
  237. package/resources/models/DESIGN.md +39 -0
  238. package/resources/models/Models.ts +361 -18
  239. package/resources/models/TestBackend.ts +56 -1
  240. package/resources/models/analyticsTable.ts +6 -4
  241. package/resources/models/backendHelpers.ts +17 -0
  242. package/resources/models/backendRegistry.ts +76 -21
  243. package/resources/models/bootstrap.ts +57 -7
  244. package/resources/models/decideHook.ts +135 -0
  245. package/resources/models/decision.ts +505 -0
  246. package/resources/models/decisionStore.ts +419 -0
  247. package/resources/models/embedHook.ts +272 -55
  248. package/resources/models/generativeDecision.ts +459 -0
  249. package/resources/models/types.ts +231 -4
  250. package/security/DESIGN.md +22 -2
  251. package/security/authn/oidc/tokenExchange.ts +6 -34
  252. package/security/authn/oidc/tokenUseTable.ts +27 -0
  253. package/security/certificateVerification/certificateVerificationSource.ts +2 -3
  254. package/security/certificateVerification/crlVerification.ts +96 -174
  255. package/security/certificateVerification/types.ts +0 -3
  256. package/security/certificateVerification/verificationTables.ts +124 -0
  257. package/security/certificateVerification/verificationUtils.ts +8 -32
  258. package/security/jsLoader.ts +9 -1
  259. package/server/DESIGN.md +27 -1
  260. package/server/Server.ts +2 -1
  261. package/server/http.ts +4 -2
  262. package/server/itc/serverHandlers.js +29 -1
  263. package/server/jobs/jobOwnership.ts +89 -0
  264. package/server/jobs/jobProcess.ts +8 -2
  265. package/server/jobs/jobs.ts +15 -4
  266. package/server/loadRootComponents.js +11 -0
  267. package/server/serverHelpers/contentTypes.ts +13 -1
  268. package/server/serverHelpers/serverHandlers.js +11 -2
  269. package/server/threads/itc.js +32 -6
  270. package/server/threads/manageThreads.js +268 -122
  271. package/server/threads/threadServer.js +13 -1
  272. package/server/threads/windowsProcessTree.ts +409 -0
  273. package/server/throttle.ts +11 -1
  274. package/studio/web/assets/{Chat-CveGbxe6.js → Chat-Bq60AO-g.js} +1 -1
  275. package/studio/web/assets/{FloatingChat-IpCFgYWL.js → FloatingChat-D4560T0p.js} +3 -3
  276. package/studio/web/assets/{apiToken-CS8fFTgL.js → apiToken-BEvbFPMc.js} +1 -1
  277. package/studio/web/assets/{applications-D7F4Jopl.js → applications-CSUVTH4E.js} +1 -1
  278. package/studio/web/assets/{cssMode-Daw_oLPq.js → cssMode-DJyc9mHj.js} +1 -1
  279. package/studio/web/assets/{editor-B3Bs1zWX.js → editor-DDIsQfj6.js} +1 -1
  280. package/studio/web/assets/{html-CDaQwWiE.js → html-g1BJHxLy.js} +1 -1
  281. package/studio/web/assets/{htmlMode-Cb6emO4U.js → htmlMode-Vh5IglCQ.js} +1 -1
  282. package/studio/web/assets/{index-B4g2Fu_2.js → index-DGRAzvO4.js} +5 -5
  283. package/studio/web/assets/{index.lazy-NwhvF1q1.js → index.lazy-vgSic7et.js} +1 -1
  284. package/studio/web/assets/{javascript-2_86gB9Q.js → javascript-5VIolqf7.js} +1 -1
  285. package/studio/web/assets/{jsonMode-DX-i86uQ.js → jsonMode-DG4zQraI.js} +1 -1
  286. package/studio/web/assets/{languageServices-B85WN-Ej.js → languageServices-t5FBpX-i.js} +1 -1
  287. package/studio/web/assets/{lspLanguageFeatures-JCWHIsKg.js → lspLanguageFeatures-DgVnNPh-.js} +1 -1
  288. package/studio/web/assets/{notifications-D9ejzt52.js → notifications-BeWcX04m.js} +1 -1
  289. package/studio/web/assets/{notifications-B7hjKhai.js → notifications-DUGWrWoO.js} +1 -1
  290. package/studio/web/assets/{profile-D8B6No3F.js → profile-BvUEDBzW.js} +1 -1
  291. package/studio/web/assets/{regions-DFazIfTK.js → regions-CB-_2m7M.js} +1 -1
  292. package/studio/web/assets/{register-CwFLviLF.js → register-1w1Zr3b2.js} +2 -2
  293. package/studio/web/assets/{setComponentFile-VnJ80SSJ.js → setComponentFile-z4-qJCbA.js} +1 -1
  294. package/studio/web/assets/{setup-BYQxFy-C.js → setup-CS50uJ4x.js} +2 -2
  295. package/studio/web/assets/{status-Cn5XjmsL.js → status-CI0wOdOE.js} +1 -1
  296. package/studio/web/assets/{toggleHighContrast-g9xIh6TX.js → toggleHighContrast-BsAE4jPe.js} +1 -1
  297. package/studio/web/assets/{tsMode-EC-n0Wqc.js → tsMode-D83Gg3cq.js} +1 -1
  298. package/studio/web/assets/{typescript-DHmM9JCO.js → typescript-Dfp-GrNq.js} +1 -1
  299. package/studio/web/assets/{useEntityRestURL-BUdnVSVv.js → useEntityRestURL-BKetlINf.js} +1 -1
  300. package/studio/web/assets/{workers-BVl9bBB-.js → workers-CCvmDLH3.js} +1 -1
  301. package/studio/web/assets/{xml-C4_sqOkX.js → xml-06pZp00U.js} +1 -1
  302. package/studio/web/assets/{yaml-CVkbDqtW.js → yaml-iSnWMVlV.js} +1 -1
  303. package/studio/web/index.html +1 -1
  304. package/upgrade/directives/5-3-0.ts +61 -54
  305. package/utility/DESIGN.md +5 -1
  306. package/utility/errors/hdbError.ts +56 -8
  307. package/utility/fsync.ts +16 -0
  308. package/utility/hdbTerms.ts +3 -0
  309. package/utility/signalling.ts +33 -4
  310. package/utility/when.ts +22 -0
  311. package/validation/configValidator.ts +36 -7
@@ -0,0 +1,33 @@
1
+ import { type WriteHook, type WriteHookContext } from './embedHook.ts';
2
+ import type { DecideInput, DecideOpts, Decision, DecisionLeaf } from './types.ts';
3
+ export type DecideConfig = {
4
+ source: string;
5
+ model: string;
6
+ confidence?: string;
7
+ /** A nullable `String` attribute that receives the durable `Decision.id`; the decision is recorded only when this is named (#2852). */
8
+ decision?: string;
9
+ instructions?: string;
10
+ /** Resolved from the attribute type and the directive arguments, and validated, when the schema loads. */
11
+ schema: DecisionLeaf;
12
+ };
13
+ export type DecideAttribute = {
14
+ name: string;
15
+ decide: DecideConfig;
16
+ };
17
+ /**
18
+ * `null` clears the attribute, its confidence and its decision id; `probability` is required when the
19
+ * directive names a confidence attribute. `id` must come from a `models.decide` call; an override for a
20
+ * directive with a `decision` attribute gets it from a `models.decide` call made with `persist: true`.
21
+ */
22
+ export type DeciderResult = {
23
+ value: unknown;
24
+ probability?: number;
25
+ id?: string;
26
+ };
27
+ export type Decider = (record: any, hook?: WriteHookContext) => Promise<DeciderResult | null | undefined>;
28
+ type DecideFn = (state: DecideInput, schema: DecisionLeaf, opts: DecideOpts) => Promise<Decision>;
29
+ /** Test seam: override the decide function. Pass `undefined` to reset to `Models.decide`. */
30
+ export declare function __setDecideFnForTest(fn: DecideFn | undefined): void;
31
+ export declare function createDefaultDecider(config: DecideConfig): Decider;
32
+ export declare function buildDecideBefore(record: any, context: any, options: any, decideAttributes: DecideAttribute[] | undefined, deciders: Record<string, Decider>): WriteHook | undefined;
33
+ export {};
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.__setDecideFnForTest = __setDecideFnForTest;
4
+ exports.createDefaultDecider = createDefaultDecider;
5
+ exports.buildDecideBefore = buildDecideBefore;
6
+ const hdbError_ts_1 = require("../../utility/errors/hdbError.js");
7
+ const decision_ts_1 = require("./decision.js");
8
+ const embedHook_ts_1 = require("./embedHook.js");
9
+ // Lazy-imported so this module can be unit-tested without loading the transaction
10
+ // stack `Models.ts` pulls in. Overridable via `__setDecideFnForTest`.
11
+ let _decideFn;
12
+ function resolveDecideFn() {
13
+ if (_decideFn)
14
+ return _decideFn;
15
+ const { Models } = require('#src/resources/models/Models'); // eslint-disable-line @typescript-eslint/no-var-requires
16
+ const models = new Models();
17
+ _decideFn = (state, schema, opts) => models.decide(state, schema, opts);
18
+ return _decideFn;
19
+ }
20
+ /** Test seam: override the decide function. Pass `undefined` to reset to `Models.decide`. */
21
+ function __setDecideFnForTest(fn) {
22
+ _decideFn = fn;
23
+ }
24
+ function createDefaultDecider(config) {
25
+ const { source, model, instructions, schema } = config;
26
+ const persist = Boolean(config.decision);
27
+ return async (record, hook) => {
28
+ const sourceValue = record?.[source];
29
+ if (sourceValue == null)
30
+ return null;
31
+ // An object source is program state the primitive serializes itself; anything else is text.
32
+ const state = typeof sourceValue === 'object' ? sourceValue : String(sourceValue);
33
+ const decision = await resolveDecideFn()(state, schema, { model, instructions, signal: hook?.signal, persist });
34
+ return { value: decision.value, probability: decision.probability, id: decision.id };
35
+ };
36
+ }
37
+ function buildDecideBefore(record, context, options, decideAttributes, deciders) {
38
+ if (!decideAttributes || decideAttributes.length === 0)
39
+ return undefined;
40
+ const applies = (0, embedHook_ts_1.writeHookApplies)(record, context, options);
41
+ if (record && typeof record === 'object' && options?.isNotification !== true && context?.alreadyLogged !== true)
42
+ for (const attr of decideAttributes) {
43
+ const { decision, source } = attr.decide;
44
+ if (!decision || !(decision in record))
45
+ continue;
46
+ const state = applies ? (0, embedHook_ts_1.sourceState)(record, source) : 'absent';
47
+ // An outcome report trusts this id, so only a write that derives or clears it may carry it.
48
+ if (state !== 'value' && state !== 'null')
49
+ throw new hdbError_ts_1.ClientError(`"${decision}" is written by @decide on "${attr.name}"; a write may carry it only with a value for "${source}"`, 400);
50
+ }
51
+ if (!applies)
52
+ return undefined;
53
+ let present = false;
54
+ for (const attr of decideAttributes)
55
+ if ((0, embedHook_ts_1.sourceState)(record, attr.decide?.source) !== 'absent')
56
+ present = true;
57
+ if (!present)
58
+ return undefined;
59
+ return (signal) => (0, embedHook_ts_1.runWriteJobs)(decideAttributes.map((attr) => async (jobSignal) => {
60
+ const { source, confidence, decision, schema } = attr.decide;
61
+ const state = (0, embedHook_ts_1.sourceState)(record, source);
62
+ if (state === 'absent' || state === 'op')
63
+ return;
64
+ const clear = () => {
65
+ record[attr.name] = null;
66
+ if (confidence)
67
+ record[confidence] = null;
68
+ if (decision)
69
+ record[decision] = null;
70
+ };
71
+ if (state === 'null')
72
+ return clear();
73
+ const decider = deciders[attr.name];
74
+ // Committing the source without its pair would be indistinguishable from a decision later.
75
+ if (!decider)
76
+ throw new Error(`No decider is registered for the @decide attribute "${attr.name}"`);
77
+ let result;
78
+ try {
79
+ result = await decider(record, { signal: jobSignal });
80
+ }
81
+ catch (err) {
82
+ // An aborted job failed because a sibling did; only that failure is worth a log line.
83
+ throw (0, embedHook_ts_1.sanitizedHookError)('Decider', 'decision', attr.name, err, !jobSignal.aborted);
84
+ }
85
+ if (result == null)
86
+ return clear();
87
+ // The facade validates `models.decide` output; an author override is checked here so the
88
+ // stored pair keeps the closed-set guarantee a query relies on.
89
+ if (!(0, decision_ts_1.isAllowedValue)(schema, result.value))
90
+ throw new Error(`Decider for attribute "${attr.name}" returned a value outside its @decide set`);
91
+ if (confidence) {
92
+ const probability = result.probability;
93
+ if (!(typeof probability === 'number' && probability >= 0 && probability <= 1))
94
+ throw new Error(`Decider for attribute "${attr.name}" must return a probability in [0, 1] for its confidence attribute "${confidence}"`);
95
+ record[attr.name] = result.value;
96
+ record[confidence] = probability;
97
+ }
98
+ else {
99
+ record[attr.name] = result.value;
100
+ }
101
+ if (decision)
102
+ record[decision] = typeof result.id === 'string' && result.id !== '' ? result.id : null;
103
+ }), signal);
104
+ }
105
+ //# sourceMappingURL=decideHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decideHook.js","sourceRoot":"","sources":["../../../resources/models/decideHook.ts"],"names":[],"mappings":";;AAkDA,oDAEC;AAED,oDAWC;AAED,8CAmEC;AAtID,kEAA+D;AAC/D,+CAA+C;AAC/C,iDAOwB;AA6BxB,kFAAkF;AAClF,sEAAsE;AACtE,IAAI,SAA+B,CAAC;AACpC,SAAS,eAAe;IACvB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,yDAAyD;IACrH,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACxE,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,6FAA6F;AAC7F,SAAgB,oBAAoB,CAAC,EAAwB;IAC5D,SAAS,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAgB,oBAAoB,CAAC,MAAoB;IACxD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,KAAK,EAAE,MAAW,EAAE,IAAuB,EAAiC,EAAE;QACpF,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,WAAW,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACrC,4FAA4F;QAC5F,MAAM,KAAK,GAAgB,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/F,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAChH,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IACtF,CAAC,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAChC,MAAW,EACX,OAAY,EACZ,OAAY,EACZ,gBAA+C,EAC/C,QAAiC;IAEjC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzE,MAAM,OAAO,GAAG,IAAA,+BAAgB,EAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,EAAE,cAAc,KAAK,IAAI,IAAI,OAAO,EAAE,aAAa,KAAK,IAAI;QAC9G,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACrC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;gBAAE,SAAS;YACjD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC/D,4FAA4F;YAC5F,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM;gBACxC,MAAM,IAAI,yBAAW,CACpB,IAAI,QAAQ,+BAA+B,IAAI,CAAC,IAAI,kDAAkD,MAAM,GAAG,EAC/G,GAAG,CACH,CAAC;QACJ,CAAC;IACF,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,gBAAgB;QAAE,IAAI,IAAA,0BAAW,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,QAAQ;YAAE,OAAO,GAAG,IAAI,CAAC;IAC/G,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,CAAC,MAAM,EAAE,EAAE,CACjB,IAAA,2BAAY,EACX,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAClD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QACjD,MAAM,KAAK,GAAG,GAAG,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACzB,IAAI,UAAU;gBAAE,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YAC1C,IAAI,QAAQ;gBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACvC,CAAC,CAAC;QACF,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,KAAK,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,2FAA2F;QAC3F,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACnG,IAAI,MAAwC,CAAC;QAC7C,IAAI,CAAC;YACJ,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,sFAAsF;YACtF,MAAM,IAAA,iCAAkB,EAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,KAAK,EAAE,CAAC;QACnC,yFAAyF;QACzF,gEAAgE;QAChE,IAAI,CAAC,IAAA,4BAAc,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,4CAA4C,CAAC,CAAC;QAClG,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC;gBAC7E,MAAM,IAAI,KAAK,CACd,0BAA0B,IAAI,CAAC,IAAI,uEAAuE,UAAU,GAAG,CACvH,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YACjC,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QAClC,CAAC;QACD,IAAI,QAAQ;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvG,CAAC,CAAC,EACF,MAAM,CACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { ClientError, ServerError } from '../../utility/errors/hdbError.ts';
2
+ import type { DecideInput, Decision, DecisionLeaf, DecisionOutput, DecisionSchema } from './types.ts';
3
+ export declare const MAX_LEAF_VALUES = 255;
4
+ export declare const MAX_OBJECT_FIELDS = 32;
5
+ /** Aggregate allowed values across an object schema; also the ceiling strict structured-output providers place on enum values per request. */
6
+ export declare const MAX_SCHEMA_VALUES = 500;
7
+ export type ObjectDecisionSchema = Extract<DecisionSchema, {
8
+ type: 'object';
9
+ }>;
10
+ export declare function isObjectSchema(schema: DecisionSchema): schema is ObjectDecisionSchema;
11
+ export declare class DecisionSchemaError extends ClientError {
12
+ constructor(message: string);
13
+ }
14
+ export declare class DecisionInputError extends ClientError {
15
+ constructor(message: string);
16
+ }
17
+ /** A backend's output violated the decision contract. A backend error: the facade records it and tries the next candidate. */
18
+ export declare class DecisionContractError extends ServerError {
19
+ constructor(backendName: string, message: string);
20
+ }
21
+ export declare function validateDecisionSchema(schema: unknown): asserts schema is DecisionSchema;
22
+ /** In the order ties resolve; assumes a validated leaf. */
23
+ export declare function allowedValues(leaf: DecisionLeaf): readonly unknown[];
24
+ /** Assumes a validated leaf. */
25
+ export declare function isAllowedValue(leaf: DecisionLeaf, raw: unknown): boolean;
26
+ export declare function wantsNoMatch(schema: DecisionSchema): boolean;
27
+ /** The text form of a `decide` state, or a `DecisionInputError` for a value no backend could serialize. */
28
+ export declare function stateToText(state: DecideInput): string;
29
+ /**
30
+ * Check a backend's output against the schema and shape it for the caller: complete distributions
31
+ * sorted descending (ties keep schema order), the argmax as `value`, per-field marginals for object
32
+ * schemas. `calibrated` falls back to the backend's capability when the output does not say.
33
+ * Messages never echo backend-supplied values, because they can reach an error response.
34
+ */
35
+ export declare function normalizeDecision<T>(schema: DecisionSchema, output: DecisionOutput<unknown>, backendName: string, calibratedDefault: boolean, calibratedNoMatch?: boolean): Omit<Decision<T>, 'id' | 'usage'>;
36
+ /**
37
+ * The JSON Schema a generative backend is asked to honor for one sample: an object at the root
38
+ * (leaf answers wrapped as `{ value }`), every property required, no additional properties, and
39
+ * bounded integers as an explicit enum — the shape strict structured-output modes accept.
40
+ */
41
+ export declare function toResponseSchema(schema: DecisionSchema): object;
42
+ /**
43
+ * Parse one generative sample against the schema: the leaf value, or a `{ [property]: value }`
44
+ * map for object schemas. Throws a plain `Error` naming what did not fit, never quoting the
45
+ * sample itself; the caller wraps it.
46
+ */
47
+ export declare function parseDecisionSample(schema: DecisionSchema, content: unknown): unknown;
48
+ export interface SamplePair {
49
+ value: unknown;
50
+ noMatch: boolean;
51
+ }
52
+ /** JSON with object keys sorted at every level; array order is kept because enum order is meaning. */
53
+ export declare function canonicalJson(value: unknown): string;
54
+ /** Identity of the schema as the model saw it: the allowed values and the descriptions, nothing else. */
55
+ export declare function hashSchema(schema: DecisionSchema): string;
56
+ /**
57
+ * The allowed values alone, for validating outcomes against. Descriptions are hashed, never stored,
58
+ * because they are free text that can carry request data; unknown keys are dropped from both.
59
+ */
60
+ export declare function scoringSchema(schema: DecisionSchema): DecisionSchema;
61
+ /** A copy of a validated schema with only its known keys, so a call and its record see one schema whatever the caller mutates afterwards. */
62
+ export declare function snapshotSchema(schema: DecisionSchema): DecisionSchema;
63
+ /** sha256 of a caller's per-call text, so decisions made under different instructions do not share an identity. */
64
+ export declare function hashText(text: string): string;