@acquiredintelligence/attend 0.0.0-stage → 0.1.0

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 (254) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +580 -2
  3. package/dist/attend.d.ts +30 -0
  4. package/dist/attend.d.ts.map +1 -0
  5. package/dist/attend.js +428 -0
  6. package/dist/attend.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +4 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/core/ids.d.ts +12 -0
  12. package/dist/core/ids.d.ts.map +1 -0
  13. package/dist/core/ids.js +97 -0
  14. package/dist/core/ids.js.map +1 -0
  15. package/dist/core/reducer.d.ts +26 -0
  16. package/dist/core/reducer.d.ts.map +1 -0
  17. package/dist/core/reducer.js +437 -0
  18. package/dist/core/reducer.js.map +1 -0
  19. package/dist/core/seen.d.ts +22 -0
  20. package/dist/core/seen.d.ts.map +1 -0
  21. package/dist/core/seen.js +61 -0
  22. package/dist/core/seen.js.map +1 -0
  23. package/dist/core/state.d.ts +12 -0
  24. package/dist/core/state.d.ts.map +1 -0
  25. package/dist/core/state.js +90 -0
  26. package/dist/core/state.js.map +1 -0
  27. package/dist/core/step.d.ts +14 -0
  28. package/dist/core/step.d.ts.map +1 -0
  29. package/dist/core/step.js +17 -0
  30. package/dist/core/step.js.map +1 -0
  31. package/dist/core/threshold.d.ts +40 -0
  32. package/dist/core/threshold.d.ts.map +1 -0
  33. package/dist/core/threshold.js +72 -0
  34. package/dist/core/threshold.js.map +1 -0
  35. package/dist/core/types.d.ts +704 -0
  36. package/dist/core/types.d.ts.map +1 -0
  37. package/dist/core/types.js +24 -0
  38. package/dist/core/types.js.map +1 -0
  39. package/dist/core/window.d.ts +38 -0
  40. package/dist/core/window.d.ts.map +1 -0
  41. package/dist/core/window.js +322 -0
  42. package/dist/core/window.js.map +1 -0
  43. package/dist/decisions.d.ts +53 -0
  44. package/dist/decisions.d.ts.map +1 -0
  45. package/dist/decisions.js +115 -0
  46. package/dist/decisions.js.map +1 -0
  47. package/dist/errors.d.ts +36 -0
  48. package/dist/errors.d.ts.map +1 -0
  49. package/dist/errors.js +53 -0
  50. package/dist/errors.js.map +1 -0
  51. package/dist/index.d.ts +10 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +4 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/internal/adapter.d.ts +21 -0
  56. package/dist/internal/adapter.d.ts.map +1 -0
  57. package/dist/internal/adapter.js +62 -0
  58. package/dist/internal/adapter.js.map +1 -0
  59. package/dist/internal/assert.d.ts +5 -0
  60. package/dist/internal/assert.d.ts.map +1 -0
  61. package/dist/internal/assert.js +14 -0
  62. package/dist/internal/assert.js.map +1 -0
  63. package/dist/internal/clock.d.ts +8 -0
  64. package/dist/internal/clock.d.ts.map +1 -0
  65. package/dist/internal/clock.js +38 -0
  66. package/dist/internal/clock.js.map +1 -0
  67. package/dist/internal/http.d.ts +42 -0
  68. package/dist/internal/http.d.ts.map +1 -0
  69. package/dist/internal/http.js +122 -0
  70. package/dist/internal/http.js.map +1 -0
  71. package/dist/internal/images.d.ts +18 -0
  72. package/dist/internal/images.d.ts.map +1 -0
  73. package/dist/internal/images.js +75 -0
  74. package/dist/internal/images.js.map +1 -0
  75. package/dist/internal/json.d.ts +3 -0
  76. package/dist/internal/json.d.ts.map +1 -0
  77. package/dist/internal/json.js +5 -0
  78. package/dist/internal/json.js.map +1 -0
  79. package/dist/internal/prompt.d.ts +31 -0
  80. package/dist/internal/prompt.d.ts.map +1 -0
  81. package/dist/internal/prompt.js +149 -0
  82. package/dist/internal/prompt.js.map +1 -0
  83. package/dist/internal/shared.d.ts +12 -0
  84. package/dist/internal/shared.d.ts.map +1 -0
  85. package/dist/internal/shared.js +134 -0
  86. package/dist/internal/shared.js.map +1 -0
  87. package/dist/jev.d.ts +74 -0
  88. package/dist/jev.d.ts.map +1 -0
  89. package/dist/jev.js +156 -0
  90. package/dist/jev.js.map +1 -0
  91. package/dist/llm.d.ts +164 -0
  92. package/dist/llm.d.ts.map +1 -0
  93. package/dist/llm.js +79 -0
  94. package/dist/llm.js.map +1 -0
  95. package/dist/mcp.d.ts +130 -0
  96. package/dist/mcp.d.ts.map +1 -0
  97. package/dist/mcp.js +550 -0
  98. package/dist/mcp.js.map +1 -0
  99. package/dist/memory.d.ts +10 -0
  100. package/dist/memory.d.ts.map +1 -0
  101. package/dist/memory.js +50 -0
  102. package/dist/memory.js.map +1 -0
  103. package/dist/postgres.d.ts +25 -0
  104. package/dist/postgres.d.ts.map +1 -0
  105. package/dist/postgres.js +56 -0
  106. package/dist/postgres.js.map +1 -0
  107. package/dist/redis.d.ts +20 -0
  108. package/dist/redis.d.ts.map +1 -0
  109. package/dist/redis.js +83 -0
  110. package/dist/redis.js.map +1 -0
  111. package/dist/server/compat.d.ts +13 -0
  112. package/dist/server/compat.d.ts.map +1 -0
  113. package/dist/server/compat.js +5 -0
  114. package/dist/server/compat.js.map +1 -0
  115. package/dist/server/cursor.d.ts +15 -0
  116. package/dist/server/cursor.d.ts.map +1 -0
  117. package/dist/server/cursor.js +50 -0
  118. package/dist/server/cursor.js.map +1 -0
  119. package/dist/server/events.d.ts +42 -0
  120. package/dist/server/events.d.ts.map +1 -0
  121. package/dist/server/events.js +189 -0
  122. package/dist/server/events.js.map +1 -0
  123. package/dist/server/fanout.d.ts +28 -0
  124. package/dist/server/fanout.d.ts.map +1 -0
  125. package/dist/server/fanout.js +184 -0
  126. package/dist/server/fanout.js.map +1 -0
  127. package/dist/server/guard.d.ts +19 -0
  128. package/dist/server/guard.d.ts.map +1 -0
  129. package/dist/server/guard.js +27 -0
  130. package/dist/server/guard.js.map +1 -0
  131. package/dist/server/http.d.ts +4 -0
  132. package/dist/server/http.d.ts.map +1 -0
  133. package/dist/server/http.js +323 -0
  134. package/dist/server/http.js.map +1 -0
  135. package/dist/server/ingest.d.ts +4 -0
  136. package/dist/server/ingest.d.ts.map +1 -0
  137. package/dist/server/ingest.js +400 -0
  138. package/dist/server/ingest.js.map +1 -0
  139. package/dist/server/install.d.ts +5 -0
  140. package/dist/server/install.d.ts.map +1 -0
  141. package/dist/server/install.js +91 -0
  142. package/dist/server/install.js.map +1 -0
  143. package/dist/server/poll.d.ts +4 -0
  144. package/dist/server/poll.d.ts.map +1 -0
  145. package/dist/server/poll.js +45 -0
  146. package/dist/server/poll.js.map +1 -0
  147. package/dist/server/serve.d.ts +19 -0
  148. package/dist/server/serve.d.ts.map +1 -0
  149. package/dist/server/serve.js +238 -0
  150. package/dist/server/serve.js.map +1 -0
  151. package/dist/server/sessions.d.ts +14 -0
  152. package/dist/server/sessions.d.ts.map +1 -0
  153. package/dist/server/sessions.js +54 -0
  154. package/dist/server/sessions.js.map +1 -0
  155. package/dist/server/stream.d.ts +11 -0
  156. package/dist/server/stream.d.ts.map +1 -0
  157. package/dist/server/stream.js +216 -0
  158. package/dist/server/stream.js.map +1 -0
  159. package/dist/server/tools.d.ts +22 -0
  160. package/dist/server/tools.d.ts.map +1 -0
  161. package/dist/server/tools.js +55 -0
  162. package/dist/server/tools.js.map +1 -0
  163. package/dist/server/types.d.ts +351 -0
  164. package/dist/server/types.d.ts.map +1 -0
  165. package/dist/server/types.js +5 -0
  166. package/dist/server/types.js.map +1 -0
  167. package/dist/server.d.ts +11 -0
  168. package/dist/server.d.ts.map +1 -0
  169. package/dist/server.js +10 -0
  170. package/dist/server.js.map +1 -0
  171. package/dist/shell/budget.d.ts +4 -0
  172. package/dist/shell/budget.d.ts.map +1 -0
  173. package/dist/shell/budget.js +5 -0
  174. package/dist/shell/budget.js.map +1 -0
  175. package/dist/shell/copy.d.ts +17 -0
  176. package/dist/shell/copy.d.ts.map +1 -0
  177. package/dist/shell/copy.js +67 -0
  178. package/dist/shell/copy.js.map +1 -0
  179. package/dist/shell/decisions.d.ts +6 -0
  180. package/dist/shell/decisions.d.ts.map +1 -0
  181. package/dist/shell/decisions.js +42 -0
  182. package/dist/shell/decisions.js.map +1 -0
  183. package/dist/shell/read.d.ts +7 -0
  184. package/dist/shell/read.d.ts.map +1 -0
  185. package/dist/shell/read.js +21 -0
  186. package/dist/shell/read.js.map +1 -0
  187. package/dist/shell/scheduler.d.ts +4 -0
  188. package/dist/shell/scheduler.d.ts.map +1 -0
  189. package/dist/shell/scheduler.js +90 -0
  190. package/dist/shell/scheduler.js.map +1 -0
  191. package/dist/shell/scope.d.ts +27 -0
  192. package/dist/shell/scope.d.ts.map +1 -0
  193. package/dist/shell/scope.js +343 -0
  194. package/dist/shell/scope.js.map +1 -0
  195. package/dist/shell/types.d.ts +156 -0
  196. package/dist/shell/types.d.ts.map +1 -0
  197. package/dist/shell/types.js +2 -0
  198. package/dist/shell/types.js.map +1 -0
  199. package/dist/sqlite.d.ts +14 -0
  200. package/dist/sqlite.d.ts.map +1 -0
  201. package/dist/sqlite.js +39 -0
  202. package/dist/sqlite.js.map +1 -0
  203. package/dist/step.d.ts +18 -0
  204. package/dist/step.d.ts.map +1 -0
  205. package/dist/step.js +14 -0
  206. package/dist/step.js.map +1 -0
  207. package/dist/store/memory.d.ts +12 -0
  208. package/dist/store/memory.d.ts.map +1 -0
  209. package/dist/store/memory.js +264 -0
  210. package/dist/store/memory.js.map +1 -0
  211. package/dist/store/postgres.d.ts +24 -0
  212. package/dist/store/postgres.d.ts.map +1 -0
  213. package/dist/store/postgres.js +364 -0
  214. package/dist/store/postgres.js.map +1 -0
  215. package/dist/store/redis.d.ts +12 -0
  216. package/dist/store/redis.d.ts.map +1 -0
  217. package/dist/store/redis.js +540 -0
  218. package/dist/store/redis.js.map +1 -0
  219. package/dist/store/sqlite-worker.d.ts +91 -0
  220. package/dist/store/sqlite-worker.d.ts.map +1 -0
  221. package/dist/store/sqlite-worker.js +322 -0
  222. package/dist/store/sqlite-worker.js.map +1 -0
  223. package/dist/store/sqlite.d.ts +34 -0
  224. package/dist/store/sqlite.d.ts.map +1 -0
  225. package/dist/store/sqlite.js +238 -0
  226. package/dist/store/sqlite.js.map +1 -0
  227. package/dist/store/types.d.ts +137 -0
  228. package/dist/store/types.d.ts.map +1 -0
  229. package/dist/store/types.js +2 -0
  230. package/dist/store/types.js.map +1 -0
  231. package/dist/testing/conformance.d.ts +13 -0
  232. package/dist/testing/conformance.d.ts.map +1 -0
  233. package/dist/testing/conformance.js +542 -0
  234. package/dist/testing/conformance.js.map +1 -0
  235. package/dist/testing/wire.d.ts +16 -0
  236. package/dist/testing/wire.d.ts.map +1 -0
  237. package/dist/testing/wire.js +304 -0
  238. package/dist/testing/wire.js.map +1 -0
  239. package/dist/testing.d.ts +113 -0
  240. package/dist/testing.d.ts.map +1 -0
  241. package/dist/testing.js +655 -0
  242. package/dist/testing.js.map +1 -0
  243. package/dist/types.d.ts +5 -0
  244. package/dist/types.d.ts.map +1 -0
  245. package/dist/types.js +5 -0
  246. package/dist/types.js.map +1 -0
  247. package/package.json +130 -4
  248. package/skills/attend/SKILL.md +231 -0
  249. package/skills/attend/references/judges.md +283 -0
  250. package/skills/attend/references/kinds.md +62 -0
  251. package/skills/attend/references/mcp.md +132 -0
  252. package/skills/attend/references/sinks.md +73 -0
  253. package/skills/attend/references/stores.md +90 -0
  254. package/skills/attend/references/testing.md +120 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The domain, and the owned state the in-place reducer mutates. Everything but `ScopeState` and
3
+ * its parts is plain JSON: a `ScopeRecord` is a scope's state as a snapshot.
4
+ */
5
+ export const KINDS = ['closing', 'flush', 'continuous', 'passive', 'consequence', 'context'];
6
+ export const ROUTES = ['interrupt', 'queue', 'note', 'ask', 'skip', 'wait'];
7
+ export const DEFAULT_POLICY = {
8
+ closingGraceMs: 500,
9
+ streamGapMs: 1000,
10
+ passiveQuietMs: 4000,
11
+ waitHorizonMs: 10_000,
12
+ maxWaits: 2,
13
+ maxEvents: 250,
14
+ maxWindowMs: 60_000,
15
+ retryBackoffMs: [1000, 4000, 16_000],
16
+ judgeTimeoutMs: 15_000,
17
+ deliveryTimeoutMs: 10_000,
18
+ recentCount: 8,
19
+ seenCount: 500,
20
+ maxOutbox: 1000,
21
+ maxDeadLetters: 1000,
22
+ deadLetterBackoffMaxMs: 60_000,
23
+ };
24
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAU,CAAC;AAmBtG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAqDrF,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,MAAM;IACnB,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IACpC,cAAc,EAAE,MAAM;IACtB,iBAAiB,EAAE,MAAM;IACzB,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,IAAI;IACpB,sBAAsB,EAAE,MAAM;CAC/B,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { Buffer, Entry, Event, Kind, OpenWindow, SettlePolicy, SettleReason } from './types.js';
2
+ /** Closing, continuous and passive entries are acts. */
3
+ export declare function isAct(entry: {
4
+ kind: Kind;
5
+ }): boolean;
6
+ /** The UTF-8 bytes of name and text (or JSON data), plus 40 bytes of framing. */
7
+ export declare function estimateRenderedBytes(event: Event): number;
8
+ /** An empty open window whose hash starts with `len:scope`. */
9
+ export declare function openWindow(scope: string): OpenWindow;
10
+ /** Copies a snapshot buffer into new arrays, sharing its immutable entries. O(W). */
11
+ export declare function windowFrom(scope: string, buffer: Buffer): OpenWindow;
12
+ /** The live entry count, in O(1). */
13
+ export declare function windowSize(open: OpenWindow): number;
14
+ /** A fresh array of the live entries, in O(W). */
15
+ export declare function windowEntries(open: OpenWindow): Entry[];
16
+ /** Moves live slots to the front and returns the owned entries array, in O(live). */
17
+ export declare function windowCompact(open: OpenWindow): Entry[];
18
+ /** Appends an entry and updates sizes, summary, monotonicity and any valid hash in O(1). */
19
+ export declare function windowAppend(open: OpenWindow, entry: Entry, bytes: number): void;
20
+ /** Removes stale sheddable entries before the first act, returning them in list order. */
21
+ export declare function windowPrune(open: OpenWindow, maxWindowMs: number, now: number): Entry[] | null;
22
+ /** Removes the oldest sheddable entries until the window fits, in place. */
23
+ export declare function windowShed(open: OpenWindow, maxEvents: number): Entry[] | null;
24
+ /** Sheds a plain list in place for a merged window, returning removals in order. */
25
+ export declare function shedEntries(entries: Entry[], maxEvents: number): Entry[] | null;
26
+ /** The open window's earliest deadline and its reason, in O(1) from the summary. */
27
+ export declare function windowDeadline(policy: SettlePolicy, open: OpenWindow): {
28
+ at: number;
29
+ reason: SettleReason;
30
+ } | null;
31
+ /** Summarizes a snapshot once and computes its deadline without hashing or mutating it. */
32
+ export declare function deadline(policy: SettlePolicy, buffer: Buffer): {
33
+ at: number;
34
+ reason: SettleReason;
35
+ } | null;
36
+ /** Checks I3, I4, I5 and monotonicity, naming the broken invariant in any error. */
37
+ export declare function assertWindow(scope: string, open: OpenWindow): void;
38
+ //# sourceMappingURL=window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/core/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,YAAY,CAAC;AAGrH,wDAAwD;AACxD,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG,OAAO,CAEpD;AAMD,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE1D;AA+BD,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKpD;AAED,qFAAqF;AACrF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAQpE;AAED,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,CAEvD;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK,EAAE,CAWvD;AAED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQhF;AAiDD,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CA4B9F;AAoCD,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CAG9E;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CAE/E;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CA+ClH;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAQ1G;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAqBlE"}
@@ -0,0 +1,322 @@
1
+ import { fnvStart, foldId, utf8Length } from './ids.js';
2
+ /** Closing, continuous and passive entries are acts. */
3
+ export function isAct(entry) {
4
+ return entry.kind === 'closing' || entry.kind === 'continuous' || entry.kind === 'passive';
5
+ }
6
+ function isSheddable(entry) {
7
+ return entry.kind === 'consequence' || entry.kind === 'context';
8
+ }
9
+ /** The UTF-8 bytes of name and text (or JSON data), plus 40 bytes of framing. */
10
+ export function estimateRenderedBytes(event) {
11
+ return utf8Length(event.name) + utf8Length(event.text !== undefined ? event.text : JSON.stringify(event.data)) + 40;
12
+ }
13
+ function emptySummary() {
14
+ return {
15
+ minFlushAt: Infinity, lastClosingAt: NaN, lastStreamAt: NaN, lastPassiveAt: NaN,
16
+ firstActAt: NaN, firstActIndex: -1, prefixMinSheddableAt: Infinity, sheddable: 0, lastSeenAt: NaN,
17
+ };
18
+ }
19
+ function summarizeEntry(summary, entry, index) {
20
+ if (entry.kind === 'flush')
21
+ summary.minFlushAt = Math.min(summary.minFlushAt, entry.seenAt);
22
+ if (entry.kind === 'closing')
23
+ summary.lastClosingAt = entry.seenAt;
24
+ if (entry.kind === 'continuous')
25
+ summary.lastStreamAt = entry.seenAt;
26
+ if (entry.kind === 'passive')
27
+ summary.lastPassiveAt = entry.seenAt;
28
+ if (summary.firstActIndex === -1 && isAct(entry)) {
29
+ summary.firstActIndex = index;
30
+ summary.firstActAt = entry.seenAt;
31
+ }
32
+ if (isSheddable(entry)) {
33
+ summary.sheddable += 1;
34
+ if (summary.firstActIndex === -1)
35
+ summary.prefixMinSheddableAt = Math.min(summary.prefixMinSheddableAt, entry.seenAt);
36
+ }
37
+ summary.lastSeenAt = entry.seenAt;
38
+ }
39
+ function summarize(entries, start = 0) {
40
+ const summary = emptySummary();
41
+ for (let i = start; i < entries.length; i += 1)
42
+ summarizeEntry(summary, entries[i], i - start);
43
+ return summary;
44
+ }
45
+ /** An empty open window whose hash starts with `len:scope`. */
46
+ export function openWindow(scope) {
47
+ return {
48
+ entries: [], start: 0, sizes: [], bytes: 0, dropped: 0, gap: false, forcedAt: null, endedAt: null,
49
+ summary: emptySummary(), hash: fnvStart(scope), hashValid: true, monotone: true,
50
+ };
51
+ }
52
+ /** Copies a snapshot buffer into new arrays, sharing its immutable entries. O(W). */
53
+ export function windowFrom(scope, buffer) {
54
+ const open = openWindow(scope);
55
+ for (const entry of buffer.entries)
56
+ windowAppend(open, entry, estimateRenderedBytes(entry));
57
+ open.dropped = buffer.dropped;
58
+ open.gap = buffer.gap;
59
+ open.forcedAt = buffer.forcedAt;
60
+ open.endedAt = buffer.endedAt ?? null;
61
+ return open;
62
+ }
63
+ /** The live entry count, in O(1). */
64
+ export function windowSize(open) {
65
+ return open.entries.length - open.start;
66
+ }
67
+ /** A fresh array of the live entries, in O(W). */
68
+ export function windowEntries(open) {
69
+ return open.entries.slice(open.start);
70
+ }
71
+ /** Moves live slots to the front and returns the owned entries array, in O(live). */
72
+ export function windowCompact(open) {
73
+ if (open.start === 0)
74
+ return open.entries;
75
+ const length = windowSize(open);
76
+ for (let i = 0; i < length; i += 1) {
77
+ open.entries[i] = open.entries[open.start + i];
78
+ open.sizes[i] = open.sizes[open.start + i];
79
+ }
80
+ open.entries.length = length;
81
+ open.sizes.length = length;
82
+ open.start = 0;
83
+ return open.entries;
84
+ }
85
+ /** Appends an entry and updates sizes, summary, monotonicity and any valid hash in O(1). */
86
+ export function windowAppend(open, entry, bytes) {
87
+ if (entry.seenAt < open.summary.lastSeenAt)
88
+ open.monotone = false;
89
+ const index = windowSize(open);
90
+ open.entries.push(entry);
91
+ open.sizes.push(bytes);
92
+ open.bytes += bytes;
93
+ summarizeEntry(open.summary, entry, index);
94
+ if (open.hashValid)
95
+ foldId(open.hash, entry.id);
96
+ }
97
+ function prefixMinimum(open) {
98
+ const end = open.summary.firstActIndex === -1 ? windowSize(open) : open.summary.firstActIndex;
99
+ let min = Infinity;
100
+ for (let i = 0; i < end; i += 1) {
101
+ const entry = open.entries[open.start + i];
102
+ if (isSheddable(entry)) {
103
+ if (open.monotone)
104
+ return entry.seenAt;
105
+ min = Math.min(min, entry.seenAt);
106
+ }
107
+ }
108
+ return min;
109
+ }
110
+ function removedFrom(open, count, bytes, prefixCount) {
111
+ open.dropped += count;
112
+ open.bytes -= bytes;
113
+ open.summary.sheddable -= count;
114
+ if (open.summary.firstActIndex !== -1)
115
+ open.summary.firstActIndex -= prefixCount;
116
+ if (prefixCount > 0)
117
+ open.summary.prefixMinSheddableAt = prefixMinimum(open);
118
+ open.summary.lastSeenAt = windowSize(open) === 0 ? NaN : open.entries[open.entries.length - 1].seenAt;
119
+ open.hashValid = false;
120
+ }
121
+ /**
122
+ * Removes the `count` slots at `at`. A plain list splices. A window moves the smaller side: it
123
+ * splices the tail, or moves the survivors before the gap up and advances `start`, because V8's
124
+ * `shift` copies the whole array at 100 elements or fewer.
125
+ */
126
+ function closeGap(entries, open, at, count) {
127
+ if (open === null) {
128
+ entries.splice(at, count);
129
+ return;
130
+ }
131
+ if (at - open.start > entries.length - at - count) {
132
+ entries.splice(at, count);
133
+ open.sizes.splice(at, count);
134
+ }
135
+ else {
136
+ for (let i = at - 1; i >= open.start; i -= 1) {
137
+ entries[i + count] = entries[i];
138
+ open.sizes[i + count] = open.sizes[i];
139
+ }
140
+ open.start += count;
141
+ }
142
+ // Waiting until the dead prefix passes half the backing array lets V8 shrink both arrays to the live count, then regrow them, every cycle.
143
+ if (2 * open.start > windowSize(open))
144
+ windowCompact(open);
145
+ }
146
+ /** Removes stale sheddable entries before the first act, returning them in list order. */
147
+ export function windowPrune(open, maxWindowMs, now) {
148
+ const { entries, start, sizes, summary } = open;
149
+ if (summary.prefixMinSheddableAt + maxWindowMs > now)
150
+ return null;
151
+ const end = summary.firstActIndex === -1 ? windowSize(open) : summary.firstActIndex;
152
+ let gone = null;
153
+ let bytes = 0;
154
+ let write = 0;
155
+ let read = 0;
156
+ for (; read < end; read += 1) {
157
+ const entry = entries[start + read];
158
+ const stale = entry.seenAt + maxWindowMs <= now;
159
+ if (!stale && open.monotone)
160
+ break;
161
+ if (stale && isSheddable(entry)) {
162
+ if (gone === null)
163
+ gone = [entry];
164
+ else
165
+ gone.push(entry);
166
+ bytes += sizes[start + read];
167
+ continue;
168
+ }
169
+ if (gone !== null) {
170
+ entries[start + write] = entry;
171
+ sizes[start + write] = sizes[start + read];
172
+ }
173
+ write += 1;
174
+ }
175
+ if (gone === null)
176
+ return null;
177
+ closeGap(entries, open, start + write, read - write);
178
+ removedFrom(open, gone.length, bytes, gone.length);
179
+ return gone;
180
+ }
181
+ /** Removes the first `live - maxEvents` sheddable entries in one pass, then closes the gap. */
182
+ function shed(entries, maxEvents, open) {
183
+ const start = open?.start ?? 0;
184
+ const length = entries.length - start;
185
+ const excess = length - maxEvents;
186
+ if (excess <= 0)
187
+ return null;
188
+ const sizes = open === null ? null : open.sizes;
189
+ const head = open === null || open.summary.firstActIndex === -1 ? length : open.summary.firstActIndex;
190
+ let gone = null;
191
+ let bytes = 0;
192
+ let beforeAct = 0;
193
+ let write = 0;
194
+ let read = 0;
195
+ for (; read < length && (gone === null || gone.length < excess); read += 1) {
196
+ const entry = entries[start + read];
197
+ if (isSheddable(entry)) {
198
+ if (gone === null)
199
+ gone = [entry];
200
+ else
201
+ gone.push(entry);
202
+ if (sizes !== null)
203
+ bytes += sizes[start + read];
204
+ if (read < head)
205
+ beforeAct += 1;
206
+ continue;
207
+ }
208
+ if (gone !== null) {
209
+ entries[start + write] = entry;
210
+ if (sizes !== null)
211
+ sizes[start + write] = sizes[start + read];
212
+ }
213
+ write += 1;
214
+ }
215
+ if (gone === null)
216
+ return null;
217
+ closeGap(entries, open, start + write, read - write);
218
+ if (open !== null)
219
+ removedFrom(open, gone.length, bytes, beforeAct);
220
+ return gone;
221
+ }
222
+ /** Removes the oldest sheddable entries until the window fits, in place. */
223
+ export function windowShed(open, maxEvents) {
224
+ if (windowSize(open) <= maxEvents || open.summary.sheddable === 0)
225
+ return null;
226
+ return shed(open.entries, maxEvents, open);
227
+ }
228
+ /** Sheds a plain list in place for a merged window, returning removals in order. */
229
+ export function shedEntries(entries, maxEvents) {
230
+ return shed(entries, maxEvents, null);
231
+ }
232
+ /** The open window's earliest deadline and its reason, in O(1) from the summary. */
233
+ export function windowDeadline(policy, open) {
234
+ const s = open.summary;
235
+ const size = windowSize(open);
236
+ let at = Infinity;
237
+ let reason = null;
238
+ if (open.forcedAt !== null) {
239
+ at = open.forcedAt;
240
+ reason = 'forced';
241
+ }
242
+ if (open.endedAt !== null && (reason === null || open.endedAt < at)) {
243
+ at = open.endedAt;
244
+ reason = 'closing';
245
+ }
246
+ if (size > 0 && size > policy.maxEvents && (reason === null || s.lastSeenAt < at)) {
247
+ at = s.lastSeenAt;
248
+ reason = 'overflow';
249
+ }
250
+ if (s.minFlushAt !== Infinity && (reason === null || s.minFlushAt < at)) {
251
+ at = s.minFlushAt;
252
+ reason = 'flush';
253
+ }
254
+ const closing = s.lastClosingAt + policy.closingGraceMs;
255
+ if (!Number.isNaN(s.lastClosingAt) && (reason === null || closing < at)) {
256
+ at = closing;
257
+ reason = 'closing';
258
+ }
259
+ const stream = s.lastStreamAt + policy.streamGapMs;
260
+ if (!Number.isNaN(s.lastStreamAt) && (reason === null || stream < at)) {
261
+ at = stream;
262
+ reason = 'stream_quiet';
263
+ }
264
+ const passive = s.lastPassiveAt + policy.passiveQuietMs;
265
+ if (!Number.isNaN(s.lastPassiveAt) && (reason === null || passive < at)) {
266
+ at = passive;
267
+ reason = 'passive_quiet';
268
+ }
269
+ const age = s.firstActAt + policy.maxWindowMs;
270
+ if (!Number.isNaN(s.firstActAt) && (reason === null || age < at)) {
271
+ at = age;
272
+ reason = 'age';
273
+ }
274
+ if (policy.maxWindowBytes !== undefined && size > 0 && open.bytes >= policy.maxWindowBytes
275
+ && (reason === null || s.lastSeenAt < at)) {
276
+ at = s.lastSeenAt;
277
+ reason = 'size';
278
+ }
279
+ return reason === null ? null : { at, reason };
280
+ }
281
+ /** Summarizes a snapshot once and computes its deadline without hashing or mutating it. */
282
+ export function deadline(policy, buffer) {
283
+ let bytes = 0;
284
+ if (policy.maxWindowBytes !== undefined)
285
+ for (const entry of buffer.entries)
286
+ bytes += estimateRenderedBytes(entry);
287
+ return windowDeadline(policy, {
288
+ entries: buffer.entries, start: 0, sizes: [], bytes, dropped: buffer.dropped, gap: buffer.gap,
289
+ forcedAt: buffer.forcedAt, endedAt: buffer.endedAt ?? null, summary: summarize(buffer.entries),
290
+ hash: { hi: 0, lo: 0 }, hashValid: false, monotone: false,
291
+ });
292
+ }
293
+ /** Checks I3, I4, I5 and monotonicity, naming the broken invariant in any error. */
294
+ export function assertWindow(scope, open) {
295
+ if (!Number.isInteger(open.start) || open.start < 0 || 2 * open.start > windowSize(open))
296
+ throw new Error('I4: start');
297
+ const summary = summarize(open.entries, open.start);
298
+ for (const key of Object.keys(summary)) {
299
+ if (!Object.is(Reflect.get(summary, key), Reflect.get(open.summary, key)))
300
+ throw new Error(`I3: ${key}`);
301
+ }
302
+ let bytes = 0;
303
+ for (let i = open.start; i < open.sizes.length; i += 1)
304
+ bytes += open.sizes[i];
305
+ if (open.sizes.length !== open.entries.length || bytes !== open.bytes) {
306
+ throw new Error('I4: sizes and bytes');
307
+ }
308
+ if (open.hashValid) {
309
+ const hash = fnvStart(scope);
310
+ for (let i = open.start; i < open.entries.length; i += 1)
311
+ foldId(hash, open.entries[i].id);
312
+ if (hash.hi !== open.hash.hi || hash.lo !== open.hash.lo)
313
+ throw new Error('I5: hash');
314
+ }
315
+ if (open.monotone) {
316
+ for (let i = open.start + 1; i < open.entries.length; i += 1) {
317
+ if (open.entries[i].seenAt < open.entries[i - 1].seenAt)
318
+ throw new Error('monotone: seenAt decreased');
319
+ }
320
+ }
321
+ }
322
+ //# sourceMappingURL=window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/core/window.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * `attend/decisions`: a judge on the OpenAI Decisions API. One `choice` question named `route`
3
+ * picks among the offered routes, with the criteria as the choice descriptions, and one
4
+ * `predicate` question answers each ride-along predicate. Predicate questions are named by
5
+ * position (`predicate_0`, `predicate_1`, …) so no predicate name can collide with `route`, and
6
+ * the answers come back under the predicates' own names. The rendered state is the `input`.
7
+ * Runs anywhere `fetch` does. With `contextTokens` it declares a budget; see `jevJudge` for how
8
+ * a window is trimmed to it and halved once on a context-length rejection.
9
+ *
10
+ * ```ts
11
+ * import { decisionsJudge } from '@acquiredintelligence/attend/decisions';
12
+ *
13
+ * export const judge = decisionsJudge({ apiKey: process.env.OPENAI_API_KEY ?? '', model: '<model id>' });
14
+ * ```
15
+ *
16
+ * Images on the judge input go as `input_image` data URLs after the text, at most 128 of them.
17
+ * The API documents no format or size limits, so a request it rejects over its images (400, 413,
18
+ * 415 or 422) is retried once without them, and that is reported through `onImageError`.
19
+ */
20
+ import type { JudgeBudget } from './core/types.js';
21
+ import { type Judge, type Route } from './types.js';
22
+ export type { ProviderFailure } from './internal/http.js';
23
+ export interface DecisionsJudgeOptions {
24
+ apiKey: string;
25
+ /** The model's context window in tokens. Set it to declare a budget. */
26
+ contextTokens?: number;
27
+ /** Required: attend does not choose a model for you. */
28
+ model: string;
29
+ /** Default `https://api.openai.com/v1/decisions`. */
30
+ endpoint?: string;
31
+ /** Default the global `fetch`. */
32
+ fetch?: typeof fetch;
33
+ /** Per-route criteria, sent as the choice descriptions. A criterion on the judge input wins, and `DEFAULT_CRITERIA` fills the rest. */
34
+ criteria?: Partial<Record<Route, string>>;
35
+ /** Instructions for the route question. Default `DEFAULT_SYSTEM` from `attend/llm`. */
36
+ instructions?: string;
37
+ /** Default true. False never sends images, whatever the input carries. */
38
+ images?: boolean;
39
+ /** Called once per image dropped before the call, and once when the provider rejected the images and the call was retried without them. */
40
+ onImageError?: (error: Error) => void;
41
+ }
42
+ /**
43
+ * With `contextTokens`, `budget.reservedTokens` is measured from the route question with every
44
+ * route on offer. Throws a plain Error, which the core retries, on a network failure, a 408, a
45
+ * 429, a 5xx, a reply without an offered route, or a context-length rejection that halving the
46
+ * window did not clear. Throws a `PermanentError` on any other 4xx, on a 429 whose code is a
47
+ * billing or quota code, and when the model refuses the route question. Both carry
48
+ * `ProviderFailure` when a response caused them. On abort it rethrows the signal's reason.
49
+ */
50
+ export declare function decisionsJudge(options: DecisionsJudgeOptions): Judge & {
51
+ budget?: JudgeBudget;
52
+ };
53
+ //# sourceMappingURL=decisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../src/decisions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,OAAO,EAAU,KAAK,KAAK,EAAkC,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAE5F,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,uIAAuI;IACvI,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2IAA2I;IAC3I,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACvC;AAMD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,KAAK,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CA0D/F"}
@@ -0,0 +1,115 @@
1
+ import { PermanentError } from './errors.js';
2
+ import { isContextLengthRejection, isImageRejection, postJson } from './internal/http.js';
3
+ import { DEFAULT_SYSTEM, renderBytes, renderWithin, resolveCriteria, sendHalving, stateText, tokensOf } from './internal/prompt.js';
4
+ import { isRecord } from './internal/shared.js';
5
+ import { ROUTES } from './types.js';
6
+ const PROVIDER = { name: 'decisionsJudge', requestIdHeader: 'x-request-id' };
7
+ const MAX_QUESTIONS = 200;
8
+ const MAX_IMAGES = 128;
9
+ /**
10
+ * With `contextTokens`, `budget.reservedTokens` is measured from the route question with every
11
+ * route on offer. Throws a plain Error, which the core retries, on a network failure, a 408, a
12
+ * 429, a 5xx, a reply without an offered route, or a context-length rejection that halving the
13
+ * window did not clear. Throws a `PermanentError` on any other 4xx, on a 429 whose code is a
14
+ * billing or quota code, and when the model refuses the route question. Both carry
15
+ * `ProviderFailure` when a response caused them. On abort it rethrows the signal's reason.
16
+ */
17
+ export function decisionsJudge(options) {
18
+ const { apiKey, model, endpoint = 'https://api.openai.com/v1/decisions', criteria, instructions = DEFAULT_SYSTEM, onImageError, contextTokens } = options;
19
+ // Held unbound: calling the global fetch as a method of `options` throws in browsers and workers.
20
+ const send = options.fetch ?? fetch;
21
+ const reservedTokens = tokensOf(JSON.stringify({
22
+ type: 'choice',
23
+ name: 'route',
24
+ instructions,
25
+ choices: resolveCriteria(ROUTES.map((route) => ({ route })), criteria).map((r) => ({ value: r.route, description: r.criterion })),
26
+ }));
27
+ if (contextTokens !== undefined && !(contextTokens > reservedTokens))
28
+ throw new RangeError(`decisionsJudge: contextTokens must be more than the ${reservedTokens} tokens its own prompt takes, got ${contextTokens}`);
29
+ const budget = contextTokens === undefined ? undefined : { contextTokens, reservedTokens };
30
+ const judge = async (input, signal) => {
31
+ const names = input.predicates.map((p) => p.name);
32
+ if (new Set(names).size !== names.length)
33
+ throw new PermanentError(`decisionsJudge: predicate names must be unique, got ${names.join(', ')}`);
34
+ if (names.length + 1 > MAX_QUESTIONS)
35
+ throw new PermanentError(`decisionsJudge: ${names.length} predicates plus the route is over the ${MAX_QUESTIONS} questions the API takes`);
36
+ const routes = resolveCriteria(input.routes, criteria);
37
+ const rendered = await renderWithin(input, renderBytes(budget), signal);
38
+ const images = options.images === false ? [] : keep(input.images ?? [], onImageError);
39
+ const questions = [
40
+ { type: 'choice', name: 'route', instructions, choices: routes.map((r) => ({ value: r.route, description: r.criterion })) },
41
+ ...input.predicates.map((p, index) => ({ type: 'predicate', name: predicateQuestion(index), instructions: p.question })),
42
+ ];
43
+ let withImages = images.length > 0;
44
+ const post = (r) => {
45
+ const text = stateText(r);
46
+ const parts = images.map((image) => ({ type: 'input_image', image_url: `data:${image.mimeType};base64,${image.data}` }));
47
+ const body = { model, input: withImages ? [{ role: 'user', content: [{ type: 'input_text', text }, ...parts] }] : text, questions };
48
+ return postJson(PROVIDER, send, endpoint, { authorization: `Bearer ${apiKey}` }, JSON.stringify(body), signal);
49
+ };
50
+ const reply = await sendHalving(rendered, async (r) => {
51
+ try {
52
+ return await post(r);
53
+ }
54
+ catch (error) {
55
+ if (!withImages || !isImageRejection(error) || isContextLengthRejection(error))
56
+ throw error;
57
+ withImages = false;
58
+ onImageError?.(new Error(`decisionsJudge: the provider rejected the request with its ${images.length} images, retrying without them: ${error instanceof Error ? error.message : String(error)}`, {
59
+ cause: error,
60
+ }));
61
+ return post(r);
62
+ }
63
+ });
64
+ return parseAnswers(reply, routes.map((r) => r.route), names);
65
+ };
66
+ if (budget !== undefined)
67
+ judge.budget = budget;
68
+ return judge;
69
+ }
70
+ /** The first 128 images; the rest are dropped and reported. */
71
+ function keep(images, onImageError) {
72
+ for (let index = MAX_IMAGES; index < images.length; index += 1)
73
+ onImageError?.(new Error(`decisionsJudge: image ${index} dropped: the API takes at most ${MAX_IMAGES} images per request`));
74
+ return images.slice(0, MAX_IMAGES);
75
+ }
76
+ function predicateQuestion(index) {
77
+ return `predicate_${index}`;
78
+ }
79
+ /**
80
+ * Only the route is load-bearing; probabilities, predicates and confidence keep what parses, as
81
+ * in `attend/llm`. A refusal of the route question is permanent, since the same window would be
82
+ * refused again. A refused predicate is left unanswered.
83
+ */
84
+ function parseAnswers(body, routes, predicates) {
85
+ const answers = isRecord(body) && Array.isArray(body.answers) ? body.answers.filter(isRecord) : null;
86
+ if (answers === null)
87
+ throw new Error('decisionsJudge: response has no answers array');
88
+ if (answers.some((a) => a.type === 'refusal' && a.name === 'route'))
89
+ throw new PermanentError('decisionsJudge: the model refused to answer the route question');
90
+ const choice = answers.find((a) => a.type === 'choice' && a.name === 'route');
91
+ const route = routes.find((r) => r === choice?.choice);
92
+ if (choice === undefined || route === undefined) {
93
+ throw new Error(`decisionsJudge: route ${JSON.stringify(choice?.choice)} is not one of ${routes.join(', ')}`);
94
+ }
95
+ const probabilities = {};
96
+ for (const entry of Array.isArray(choice.probabilities) ? choice.probabilities.filter(isRecord) : []) {
97
+ const value = routes.find((r) => r === entry.value);
98
+ if (value !== undefined && isFiniteNumber(entry.probability))
99
+ probabilities[value] = entry.probability;
100
+ }
101
+ const answered = {};
102
+ for (const [index, name] of predicates.entries()) {
103
+ const answer = answers.find((a) => a.type === 'predicate' && a.name === predicateQuestion(index));
104
+ if (answer !== undefined && isFiniteNumber(answer.probability))
105
+ answered[name] = answer.probability;
106
+ }
107
+ const judgment = { route, probabilities, predicates: answered };
108
+ if (isFiniteNumber(choice.confidence))
109
+ judgment.confidence = choice.confidence;
110
+ return judgment;
111
+ }
112
+ function isFiniteNumber(value) {
113
+ return typeof value === 'number' && Number.isFinite(value);
114
+ }
115
+ //# sourceMappingURL=decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.js","sourceRoot":"","sources":["../src/decisions.ts"],"names":[],"mappings":"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"}