@saihm/shm 0.0.0-stage → 0.38.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 (672) hide show
  1. package/LICENSE +97 -0
  2. package/NOTICE +12 -0
  3. package/README.md +114 -2
  4. package/dist/adapter/epoch.d.ts +4 -0
  5. package/dist/adapter/epoch.d.ts.map +1 -0
  6. package/dist/adapter/epoch.js +16 -0
  7. package/dist/adapter/epoch.js.map +1 -0
  8. package/dist/adapter/frontmatter.d.ts +19 -0
  9. package/dist/adapter/frontmatter.d.ts.map +1 -0
  10. package/dist/adapter/frontmatter.js +95 -0
  11. package/dist/adapter/frontmatter.js.map +1 -0
  12. package/dist/adapter/index.d.ts +4 -0
  13. package/dist/adapter/index.d.ts.map +1 -0
  14. package/dist/adapter/index.js +4 -0
  15. package/dist/adapter/index.js.map +1 -0
  16. package/dist/adapter/markdown_dir_port.d.ts +48 -0
  17. package/dist/adapter/markdown_dir_port.d.ts.map +1 -0
  18. package/dist/adapter/markdown_dir_port.js +175 -0
  19. package/dist/adapter/markdown_dir_port.js.map +1 -0
  20. package/dist/aggregate/document_aggregation.d.ts +40 -0
  21. package/dist/aggregate/document_aggregation.d.ts.map +1 -0
  22. package/dist/aggregate/document_aggregation.js +101 -0
  23. package/dist/aggregate/document_aggregation.js.map +1 -0
  24. package/dist/aggregate/index.d.ts +2 -0
  25. package/dist/aggregate/index.d.ts.map +1 -0
  26. package/dist/aggregate/index.js +2 -0
  27. package/dist/aggregate/index.js.map +1 -0
  28. package/dist/answer/answer_layer.d.ts +33 -0
  29. package/dist/answer/answer_layer.d.ts.map +1 -0
  30. package/dist/answer/answer_layer.js +75 -0
  31. package/dist/answer/answer_layer.js.map +1 -0
  32. package/dist/answer/caching_body_source.d.ts +42 -0
  33. package/dist/answer/caching_body_source.d.ts.map +1 -0
  34. package/dist/answer/caching_body_source.js +120 -0
  35. package/dist/answer/caching_body_source.js.map +1 -0
  36. package/dist/answer/claude_cli_backend.d.ts +10 -0
  37. package/dist/answer/claude_cli_backend.d.ts.map +1 -0
  38. package/dist/answer/claude_cli_backend.js +60 -0
  39. package/dist/answer/claude_cli_backend.js.map +1 -0
  40. package/dist/answer/context.d.ts +6 -0
  41. package/dist/answer/context.d.ts.map +1 -0
  42. package/dist/answer/context.js +83 -0
  43. package/dist/answer/context.js.map +1 -0
  44. package/dist/answer/corpus_warmer.d.ts +44 -0
  45. package/dist/answer/corpus_warmer.d.ts.map +1 -0
  46. package/dist/answer/corpus_warmer.js +80 -0
  47. package/dist/answer/corpus_warmer.js.map +1 -0
  48. package/dist/answer/gate.d.ts +3 -0
  49. package/dist/answer/gate.d.ts.map +1 -0
  50. package/dist/answer/gate.js +35 -0
  51. package/dist/answer/gate.js.map +1 -0
  52. package/dist/answer/index.d.ts +20 -0
  53. package/dist/answer/index.d.ts.map +1 -0
  54. package/dist/answer/index.js +11 -0
  55. package/dist/answer/index.js.map +1 -0
  56. package/dist/answer/own_cell_body_source.d.ts +34 -0
  57. package/dist/answer/own_cell_body_source.d.ts.map +1 -0
  58. package/dist/answer/own_cell_body_source.js +66 -0
  59. package/dist/answer/own_cell_body_source.js.map +1 -0
  60. package/dist/answer/persistent_body_source.d.ts +50 -0
  61. package/dist/answer/persistent_body_source.d.ts.map +1 -0
  62. package/dist/answer/persistent_body_source.js +173 -0
  63. package/dist/answer/persistent_body_source.js.map +1 -0
  64. package/dist/answer/saihm_body_source.d.ts +27 -0
  65. package/dist/answer/saihm_body_source.d.ts.map +1 -0
  66. package/dist/answer/saihm_body_source.js +88 -0
  67. package/dist/answer/saihm_body_source.js.map +1 -0
  68. package/dist/answer/structured_answerer.d.ts +23 -0
  69. package/dist/answer/structured_answerer.d.ts.map +1 -0
  70. package/dist/answer/structured_answerer.js +103 -0
  71. package/dist/answer/structured_answerer.js.map +1 -0
  72. package/dist/answer/supersede.d.ts +12 -0
  73. package/dist/answer/supersede.d.ts.map +1 -0
  74. package/dist/answer/supersede.js +27 -0
  75. package/dist/answer/supersede.js.map +1 -0
  76. package/dist/answer/types.d.ts +53 -0
  77. package/dist/answer/types.d.ts.map +1 -0
  78. package/dist/answer/types.js +2 -0
  79. package/dist/answer/types.js.map +1 -0
  80. package/dist/assemble/brief.d.ts +83 -0
  81. package/dist/assemble/brief.d.ts.map +1 -0
  82. package/dist/assemble/brief.js +312 -0
  83. package/dist/assemble/brief.js.map +1 -0
  84. package/dist/assemble/index.d.ts +4 -0
  85. package/dist/assemble/index.d.ts.map +1 -0
  86. package/dist/assemble/index.js +4 -0
  87. package/dist/assemble/index.js.map +1 -0
  88. package/dist/assemble/posture.d.ts +23 -0
  89. package/dist/assemble/posture.d.ts.map +1 -0
  90. package/dist/assemble/posture.js +68 -0
  91. package/dist/assemble/posture.js.map +1 -0
  92. package/dist/assemble/thread.d.ts +53 -0
  93. package/dist/assemble/thread.d.ts.map +1 -0
  94. package/dist/assemble/thread.js +122 -0
  95. package/dist/assemble/thread.js.map +1 -0
  96. package/dist/attention/index.d.ts +5 -0
  97. package/dist/attention/index.d.ts.map +1 -0
  98. package/dist/attention/index.js +3 -0
  99. package/dist/attention/index.js.map +1 -0
  100. package/dist/attention/obligations.d.ts +23 -0
  101. package/dist/attention/obligations.d.ts.map +1 -0
  102. package/dist/attention/obligations.js +110 -0
  103. package/dist/attention/obligations.js.map +1 -0
  104. package/dist/attention/queue.d.ts +38 -0
  105. package/dist/attention/queue.d.ts.map +1 -0
  106. package/dist/attention/queue.js +102 -0
  107. package/dist/attention/queue.js.map +1 -0
  108. package/dist/claim/index.d.ts +23 -0
  109. package/dist/claim/index.d.ts.map +1 -0
  110. package/dist/claim/index.js +57 -0
  111. package/dist/claim/index.js.map +1 -0
  112. package/dist/claim/withdrawn.d.ts +17 -0
  113. package/dist/claim/withdrawn.d.ts.map +1 -0
  114. package/dist/claim/withdrawn.js +41 -0
  115. package/dist/claim/withdrawn.js.map +1 -0
  116. package/dist/compliance/index.d.ts +3 -0
  117. package/dist/compliance/index.d.ts.map +1 -0
  118. package/dist/compliance/index.js +3 -0
  119. package/dist/compliance/index.js.map +1 -0
  120. package/dist/compliance/report.d.ts +123 -0
  121. package/dist/compliance/report.d.ts.map +1 -0
  122. package/dist/compliance/report.js +295 -0
  123. package/dist/compliance/report.js.map +1 -0
  124. package/dist/compliance/trail.d.ts +180 -0
  125. package/dist/compliance/trail.d.ts.map +1 -0
  126. package/dist/compliance/trail.js +130 -0
  127. package/dist/compliance/trail.js.map +1 -0
  128. package/dist/consolidate/body_redundancy.d.ts +54 -0
  129. package/dist/consolidate/body_redundancy.d.ts.map +1 -0
  130. package/dist/consolidate/body_redundancy.js +150 -0
  131. package/dist/consolidate/body_redundancy.js.map +1 -0
  132. package/dist/consolidate/consolidator.d.ts +62 -0
  133. package/dist/consolidate/consolidator.d.ts.map +1 -0
  134. package/dist/consolidate/consolidator.js +260 -0
  135. package/dist/consolidate/consolidator.js.map +1 -0
  136. package/dist/consolidate/index.d.ts +4 -0
  137. package/dist/consolidate/index.d.ts.map +1 -0
  138. package/dist/consolidate/index.js +4 -0
  139. package/dist/consolidate/index.js.map +1 -0
  140. package/dist/consolidate/index_guard.d.ts +63 -0
  141. package/dist/consolidate/index_guard.d.ts.map +1 -0
  142. package/dist/consolidate/index_guard.js +212 -0
  143. package/dist/consolidate/index_guard.js.map +1 -0
  144. package/dist/coordination/identity.d.ts +39 -0
  145. package/dist/coordination/identity.d.ts.map +1 -0
  146. package/dist/coordination/identity.js +97 -0
  147. package/dist/coordination/identity.js.map +1 -0
  148. package/dist/coordination/inbound.d.ts +41 -0
  149. package/dist/coordination/inbound.d.ts.map +1 -0
  150. package/dist/coordination/inbound.js +119 -0
  151. package/dist/coordination/inbound.js.map +1 -0
  152. package/dist/coordination/index.d.ts +12 -0
  153. package/dist/coordination/index.d.ts.map +1 -0
  154. package/dist/coordination/index.js +7 -0
  155. package/dist/coordination/index.js.map +1 -0
  156. package/dist/coordination/note_lineage.d.ts +50 -0
  157. package/dist/coordination/note_lineage.d.ts.map +1 -0
  158. package/dist/coordination/note_lineage.js +132 -0
  159. package/dist/coordination/note_lineage.js.map +1 -0
  160. package/dist/coordination/outbound.d.ts +33 -0
  161. package/dist/coordination/outbound.d.ts.map +1 -0
  162. package/dist/coordination/outbound.js +69 -0
  163. package/dist/coordination/outbound.js.map +1 -0
  164. package/dist/coordination/share_states.d.ts +178 -0
  165. package/dist/coordination/share_states.d.ts.map +1 -0
  166. package/dist/coordination/share_states.js +864 -0
  167. package/dist/coordination/share_states.js.map +1 -0
  168. package/dist/coordination/untrusted_text.d.ts +3 -0
  169. package/dist/coordination/untrusted_text.d.ts.map +1 -0
  170. package/dist/coordination/untrusted_text.js +21 -0
  171. package/dist/coordination/untrusted_text.js.map +1 -0
  172. package/dist/deref/dereference.d.ts +68 -0
  173. package/dist/deref/dereference.d.ts.map +1 -0
  174. package/dist/deref/dereference.js +199 -0
  175. package/dist/deref/dereference.js.map +1 -0
  176. package/dist/deref/index.d.ts +3 -0
  177. package/dist/deref/index.d.ts.map +1 -0
  178. package/dist/deref/index.js +3 -0
  179. package/dist/deref/index.js.map +1 -0
  180. package/dist/deref/policy.d.ts +76 -0
  181. package/dist/deref/policy.d.ts.map +1 -0
  182. package/dist/deref/policy.js +281 -0
  183. package/dist/deref/policy.js.map +1 -0
  184. package/dist/derived/checkpoint.d.ts +22 -0
  185. package/dist/derived/checkpoint.d.ts.map +1 -0
  186. package/dist/derived/checkpoint.js +92 -0
  187. package/dist/derived/checkpoint.js.map +1 -0
  188. package/dist/derived/codec.d.ts +26 -0
  189. package/dist/derived/codec.d.ts.map +1 -0
  190. package/dist/derived/codec.js +116 -0
  191. package/dist/derived/codec.js.map +1 -0
  192. package/dist/derived/cycle.d.ts +96 -0
  193. package/dist/derived/cycle.d.ts.map +1 -0
  194. package/dist/derived/cycle.js +199 -0
  195. package/dist/derived/cycle.js.map +1 -0
  196. package/dist/derived/index.d.ts +7 -0
  197. package/dist/derived/index.d.ts.map +1 -0
  198. package/dist/derived/index.js +7 -0
  199. package/dist/derived/index.js.map +1 -0
  200. package/dist/derived/ledger.d.ts +54 -0
  201. package/dist/derived/ledger.d.ts.map +1 -0
  202. package/dist/derived/ledger.js +123 -0
  203. package/dist/derived/ledger.js.map +1 -0
  204. package/dist/derived/lineage_index.d.ts +17 -0
  205. package/dist/derived/lineage_index.d.ts.map +1 -0
  206. package/dist/derived/lineage_index.js +51 -0
  207. package/dist/derived/lineage_index.js.map +1 -0
  208. package/dist/derived/store.d.ts +92 -0
  209. package/dist/derived/store.d.ts.map +1 -0
  210. package/dist/derived/store.js +230 -0
  211. package/dist/derived/store.js.map +1 -0
  212. package/dist/embed/index.d.ts +5 -0
  213. package/dist/embed/index.d.ts.map +1 -0
  214. package/dist/embed/index.js +4 -0
  215. package/dist/embed/index.js.map +1 -0
  216. package/dist/embed/local_minilm.d.ts +9 -0
  217. package/dist/embed/local_minilm.d.ts.map +1 -0
  218. package/dist/embed/local_minilm.js +31 -0
  219. package/dist/embed/local_minilm.js.map +1 -0
  220. package/dist/embed/remote_http.d.ts +26 -0
  221. package/dist/embed/remote_http.d.ts.map +1 -0
  222. package/dist/embed/remote_http.js +40 -0
  223. package/dist/embed/remote_http.js.map +1 -0
  224. package/dist/embed/router.d.ts +16 -0
  225. package/dist/embed/router.d.ts.map +1 -0
  226. package/dist/embed/router.js +47 -0
  227. package/dist/embed/router.js.map +1 -0
  228. package/dist/embed/types.d.ts +23 -0
  229. package/dist/embed/types.d.ts.map +1 -0
  230. package/dist/embed/types.js +2 -0
  231. package/dist/embed/types.js.map +1 -0
  232. package/dist/entitlement/entitlement.d.ts +24 -0
  233. package/dist/entitlement/entitlement.d.ts.map +1 -0
  234. package/dist/entitlement/entitlement.js +78 -0
  235. package/dist/entitlement/entitlement.js.map +1 -0
  236. package/dist/entitlement/index.d.ts +2 -0
  237. package/dist/entitlement/index.d.ts.map +1 -0
  238. package/dist/entitlement/index.js +2 -0
  239. package/dist/entitlement/index.js.map +1 -0
  240. package/dist/erasure/bus.d.ts +18 -0
  241. package/dist/erasure/bus.d.ts.map +1 -0
  242. package/dist/erasure/bus.js +56 -0
  243. package/dist/erasure/bus.js.map +1 -0
  244. package/dist/erasure/changes_feed.d.ts +125 -0
  245. package/dist/erasure/changes_feed.d.ts.map +1 -0
  246. package/dist/erasure/changes_feed.js +252 -0
  247. package/dist/erasure/changes_feed.js.map +1 -0
  248. package/dist/erasure/changes_reader.d.ts +44 -0
  249. package/dist/erasure/changes_reader.d.ts.map +1 -0
  250. package/dist/erasure/changes_reader.js +184 -0
  251. package/dist/erasure/changes_reader.js.map +1 -0
  252. package/dist/erasure/feed_watcher.d.ts +140 -0
  253. package/dist/erasure/feed_watcher.d.ts.map +1 -0
  254. package/dist/erasure/feed_watcher.js +418 -0
  255. package/dist/erasure/feed_watcher.js.map +1 -0
  256. package/dist/erasure/index.d.ts +15 -0
  257. package/dist/erasure/index.d.ts.map +1 -0
  258. package/dist/erasure/index.js +8 -0
  259. package/dist/erasure/index.js.map +1 -0
  260. package/dist/erasure/index_watcher.d.ts +28 -0
  261. package/dist/erasure/index_watcher.d.ts.map +1 -0
  262. package/dist/erasure/index_watcher.js +87 -0
  263. package/dist/erasure/index_watcher.js.map +1 -0
  264. package/dist/erasure/reconcile.d.ts +72 -0
  265. package/dist/erasure/reconcile.d.ts.map +1 -0
  266. package/dist/erasure/reconcile.js +125 -0
  267. package/dist/erasure/reconcile.js.map +1 -0
  268. package/dist/erasure/withheld_store.d.ts +30 -0
  269. package/dist/erasure/withheld_store.d.ts.map +1 -0
  270. package/dist/erasure/withheld_store.js +91 -0
  271. package/dist/erasure/withheld_store.js.map +1 -0
  272. package/dist/fleet/index.d.ts +2 -0
  273. package/dist/fleet/index.d.ts.map +1 -0
  274. package/dist/fleet/index.js +2 -0
  275. package/dist/fleet/index.js.map +1 -0
  276. package/dist/fleet/knowledge.d.ts +74 -0
  277. package/dist/fleet/knowledge.d.ts.map +1 -0
  278. package/dist/fleet/knowledge.js +178 -0
  279. package/dist/fleet/knowledge.js.map +1 -0
  280. package/dist/gate/index.d.ts +5 -0
  281. package/dist/gate/index.d.ts.map +1 -0
  282. package/dist/gate/index.js +3 -0
  283. package/dist/gate/index.js.map +1 -0
  284. package/dist/gate/scope.d.ts +21 -0
  285. package/dist/gate/scope.d.ts.map +1 -0
  286. package/dist/gate/scope.js +40 -0
  287. package/dist/gate/scope.js.map +1 -0
  288. package/dist/gate/symmetry.d.ts +55 -0
  289. package/dist/gate/symmetry.d.ts.map +1 -0
  290. package/dist/gate/symmetry.js +162 -0
  291. package/dist/gate/symmetry.js.map +1 -0
  292. package/dist/history/answerable.d.ts +51 -0
  293. package/dist/history/answerable.d.ts.map +1 -0
  294. package/dist/history/answerable.js +112 -0
  295. package/dist/history/answerable.js.map +1 -0
  296. package/dist/history/index.d.ts +2 -0
  297. package/dist/history/index.d.ts.map +1 -0
  298. package/dist/history/index.js +2 -0
  299. package/dist/history/index.js.map +1 -0
  300. package/dist/host/adapter.d.ts +69 -0
  301. package/dist/host/adapter.d.ts.map +1 -0
  302. package/dist/host/adapter.js +159 -0
  303. package/dist/host/adapter.js.map +1 -0
  304. package/dist/host/cli.d.ts +3 -0
  305. package/dist/host/cli.d.ts.map +1 -0
  306. package/dist/host/cli.js +44 -0
  307. package/dist/host/cli.js.map +1 -0
  308. package/dist/host/client.d.ts +22 -0
  309. package/dist/host/client.d.ts.map +1 -0
  310. package/dist/host/client.js +135 -0
  311. package/dist/host/client.js.map +1 -0
  312. package/dist/host/compaction.d.ts +16 -0
  313. package/dist/host/compaction.d.ts.map +1 -0
  314. package/dist/host/compaction.js +89 -0
  315. package/dist/host/compaction.js.map +1 -0
  316. package/dist/host/event.d.ts +22 -0
  317. package/dist/host/event.d.ts.map +1 -0
  318. package/dist/host/event.js +47 -0
  319. package/dist/host/event.js.map +1 -0
  320. package/dist/host/index.d.ts +10 -0
  321. package/dist/host/index.d.ts.map +1 -0
  322. package/dist/host/index.js +10 -0
  323. package/dist/host/index.js.map +1 -0
  324. package/dist/host/reply.d.ts +11 -0
  325. package/dist/host/reply.d.ts.map +1 -0
  326. package/dist/host/reply.js +24 -0
  327. package/dist/host/reply.js.map +1 -0
  328. package/dist/host/session_brief.d.ts +80 -0
  329. package/dist/host/session_brief.d.ts.map +1 -0
  330. package/dist/host/session_brief.js +294 -0
  331. package/dist/host/session_brief.js.map +1 -0
  332. package/dist/host/session_start_event.d.ts +12 -0
  333. package/dist/host/session_start_event.d.ts.map +1 -0
  334. package/dist/host/session_start_event.js +35 -0
  335. package/dist/host/session_start_event.js.map +1 -0
  336. package/dist/host/sessions.d.ts +8 -0
  337. package/dist/host/sessions.d.ts.map +1 -0
  338. package/dist/host/sessions.js +32 -0
  339. package/dist/host/sessions.js.map +1 -0
  340. package/dist/host/socket_path.d.ts +3 -0
  341. package/dist/host/socket_path.d.ts.map +1 -0
  342. package/dist/host/socket_path.js +14 -0
  343. package/dist/host/socket_path.js.map +1 -0
  344. package/dist/inbound/index.d.ts +8 -0
  345. package/dist/inbound/index.d.ts.map +1 -0
  346. package/dist/inbound/index.js +5 -0
  347. package/dist/inbound/index.js.map +1 -0
  348. package/dist/index.d.ts +108 -0
  349. package/dist/index.d.ts.map +1 -0
  350. package/dist/index.js +55 -0
  351. package/dist/index.js.map +1 -0
  352. package/dist/ingest/index.d.ts +13 -0
  353. package/dist/ingest/index.d.ts.map +1 -0
  354. package/dist/ingest/index.js +146 -0
  355. package/dist/ingest/index.js.map +1 -0
  356. package/dist/ingest/parse.d.ts +20 -0
  357. package/dist/ingest/parse.d.ts.map +1 -0
  358. package/dist/ingest/parse.js +141 -0
  359. package/dist/ingest/parse.js.map +1 -0
  360. package/dist/ingest/resolve_prefix.d.ts +19 -0
  361. package/dist/ingest/resolve_prefix.d.ts.map +1 -0
  362. package/dist/ingest/resolve_prefix.js +63 -0
  363. package/dist/ingest/resolve_prefix.js.map +1 -0
  364. package/dist/ingest/types.d.ts +47 -0
  365. package/dist/ingest/types.d.ts.map +1 -0
  366. package/dist/ingest/types.js +2 -0
  367. package/dist/ingest/types.js.map +1 -0
  368. package/dist/inject/action_cue.d.ts +11 -0
  369. package/dist/inject/action_cue.d.ts.map +1 -0
  370. package/dist/inject/action_cue.js +49 -0
  371. package/dist/inject/action_cue.js.map +1 -0
  372. package/dist/inject/index.d.ts +11 -0
  373. package/dist/inject/index.d.ts.map +1 -0
  374. package/dist/inject/index.js +6 -0
  375. package/dist/inject/index.js.map +1 -0
  376. package/dist/inject/novelty.d.ts +19 -0
  377. package/dist/inject/novelty.d.ts.map +1 -0
  378. package/dist/inject/novelty.js +34 -0
  379. package/dist/inject/novelty.js.map +1 -0
  380. package/dist/inject/outcome.d.ts +20 -0
  381. package/dist/inject/outcome.d.ts.map +1 -0
  382. package/dist/inject/outcome.js +26 -0
  383. package/dist/inject/outcome.js.map +1 -0
  384. package/dist/inject/population.d.ts +6 -0
  385. package/dist/inject/population.d.ts.map +1 -0
  386. package/dist/inject/population.js +23 -0
  387. package/dist/inject/population.js.map +1 -0
  388. package/dist/inject/proactive_injector.d.ts +56 -0
  389. package/dist/inject/proactive_injector.d.ts.map +1 -0
  390. package/dist/inject/proactive_injector.js +153 -0
  391. package/dist/inject/proactive_injector.js.map +1 -0
  392. package/dist/inject/token_estimate.d.ts +3 -0
  393. package/dist/inject/token_estimate.d.ts.map +1 -0
  394. package/dist/inject/token_estimate.js +2 -0
  395. package/dist/inject/token_estimate.js.map +1 -0
  396. package/dist/inject/window.d.ts +6 -0
  397. package/dist/inject/window.d.ts.map +1 -0
  398. package/dist/inject/window.js +10 -0
  399. package/dist/inject/window.js.map +1 -0
  400. package/dist/modes/behaviour_modes.d.ts +21 -0
  401. package/dist/modes/behaviour_modes.d.ts.map +1 -0
  402. package/dist/modes/behaviour_modes.js +137 -0
  403. package/dist/modes/behaviour_modes.js.map +1 -0
  404. package/dist/policy/index.d.ts +2 -0
  405. package/dist/policy/index.d.ts.map +1 -0
  406. package/dist/policy/index.js +2 -0
  407. package/dist/policy/index.js.map +1 -0
  408. package/dist/policy/store_policy.d.ts +47 -0
  409. package/dist/policy/store_policy.d.ts.map +1 -0
  410. package/dist/policy/store_policy.js +125 -0
  411. package/dist/policy/store_policy.js.map +1 -0
  412. package/dist/profile/index.d.ts +5 -0
  413. package/dist/profile/index.d.ts.map +1 -0
  414. package/dist/profile/index.js +3 -0
  415. package/dist/profile/index.js.map +1 -0
  416. package/dist/profile/lever_profile.d.ts +27 -0
  417. package/dist/profile/lever_profile.d.ts.map +1 -0
  418. package/dist/profile/lever_profile.js +55 -0
  419. package/dist/profile/lever_profile.js.map +1 -0
  420. package/dist/profile/production.d.ts +12 -0
  421. package/dist/profile/production.d.ts.map +1 -0
  422. package/dist/profile/production.js +13 -0
  423. package/dist/profile/production.js.map +1 -0
  424. package/dist/provenance/build_fingerprint.d.ts +9 -0
  425. package/dist/provenance/build_fingerprint.d.ts.map +1 -0
  426. package/dist/provenance/build_fingerprint.js +47 -0
  427. package/dist/provenance/build_fingerprint.js.map +1 -0
  428. package/dist/provenance/derived_number.d.ts +33 -0
  429. package/dist/provenance/derived_number.d.ts.map +1 -0
  430. package/dist/provenance/derived_number.js +52 -0
  431. package/dist/provenance/derived_number.js.map +1 -0
  432. package/dist/provenance/index.d.ts +7 -0
  433. package/dist/provenance/index.d.ts.map +1 -0
  434. package/dist/provenance/index.js +4 -0
  435. package/dist/provenance/index.js.map +1 -0
  436. package/dist/provenance/live_state.d.ts +49 -0
  437. package/dist/provenance/live_state.d.ts.map +1 -0
  438. package/dist/provenance/live_state.js +141 -0
  439. package/dist/provenance/live_state.js.map +1 -0
  440. package/dist/rerank/cross_encoder.d.ts +14 -0
  441. package/dist/rerank/cross_encoder.d.ts.map +1 -0
  442. package/dist/rerank/cross_encoder.js +40 -0
  443. package/dist/rerank/cross_encoder.js.map +1 -0
  444. package/dist/rerank/identity.d.ts +6 -0
  445. package/dist/rerank/identity.d.ts.map +1 -0
  446. package/dist/rerank/identity.js +7 -0
  447. package/dist/rerank/identity.js.map +1 -0
  448. package/dist/rerank/index.d.ts +8 -0
  449. package/dist/rerank/index.d.ts.map +1 -0
  450. package/dist/rerank/index.js +5 -0
  451. package/dist/rerank/index.js.map +1 -0
  452. package/dist/rerank/reranking_retriever.d.ts +20 -0
  453. package/dist/rerank/reranking_retriever.d.ts.map +1 -0
  454. package/dist/rerank/reranking_retriever.js +38 -0
  455. package/dist/rerank/reranking_retriever.js.map +1 -0
  456. package/dist/rerank/reranking_select.d.ts +33 -0
  457. package/dist/rerank/reranking_select.d.ts.map +1 -0
  458. package/dist/rerank/reranking_select.js +116 -0
  459. package/dist/rerank/reranking_select.js.map +1 -0
  460. package/dist/rerank/types.d.ts +9 -0
  461. package/dist/rerank/types.d.ts.map +1 -0
  462. package/dist/rerank/types.js +2 -0
  463. package/dist/rerank/types.js.map +1 -0
  464. package/dist/resume/index.d.ts +3 -0
  465. package/dist/resume/index.d.ts.map +1 -0
  466. package/dist/resume/index.js +2 -0
  467. package/dist/resume/index.js.map +1 -0
  468. package/dist/resume/resume.d.ts +33 -0
  469. package/dist/resume/resume.d.ts.map +1 -0
  470. package/dist/resume/resume.js +86 -0
  471. package/dist/resume/resume.js.map +1 -0
  472. package/dist/retrieval/hnsw_store.d.ts +37 -0
  473. package/dist/retrieval/hnsw_store.d.ts.map +1 -0
  474. package/dist/retrieval/hnsw_store.js +284 -0
  475. package/dist/retrieval/hnsw_store.js.map +1 -0
  476. package/dist/retrieval/label_text.d.ts +2 -0
  477. package/dist/retrieval/label_text.d.ts.map +1 -0
  478. package/dist/retrieval/label_text.js +7 -0
  479. package/dist/retrieval/label_text.js.map +1 -0
  480. package/dist/retrieval/link_graph.d.ts +38 -0
  481. package/dist/retrieval/link_graph.d.ts.map +1 -0
  482. package/dist/retrieval/link_graph.js +118 -0
  483. package/dist/retrieval/link_graph.js.map +1 -0
  484. package/dist/retrieval/query_expansion.d.ts +18 -0
  485. package/dist/retrieval/query_expansion.d.ts.map +1 -0
  486. package/dist/retrieval/query_expansion.js +55 -0
  487. package/dist/retrieval/query_expansion.js.map +1 -0
  488. package/dist/retrieval/scope.d.ts +36 -0
  489. package/dist/retrieval/scope.d.ts.map +1 -0
  490. package/dist/retrieval/scope.js +120 -0
  491. package/dist/retrieval/scope.js.map +1 -0
  492. package/dist/retrieval/semantic.d.ts +136 -0
  493. package/dist/retrieval/semantic.d.ts.map +1 -0
  494. package/dist/retrieval/semantic.js +490 -0
  495. package/dist/retrieval/semantic.js.map +1 -0
  496. package/dist/retrieval/session_closed.d.ts +5 -0
  497. package/dist/retrieval/session_closed.d.ts.map +1 -0
  498. package/dist/retrieval/session_closed.js +8 -0
  499. package/dist/retrieval/session_closed.js.map +1 -0
  500. package/dist/retrieval/thread_lifecycle.d.ts +68 -0
  501. package/dist/retrieval/thread_lifecycle.d.ts.map +1 -0
  502. package/dist/retrieval/thread_lifecycle.js +201 -0
  503. package/dist/retrieval/thread_lifecycle.js.map +1 -0
  504. package/dist/retrieval/vector_store.d.ts +22 -0
  505. package/dist/retrieval/vector_store.d.ts.map +1 -0
  506. package/dist/retrieval/vector_store.js +41 -0
  507. package/dist/retrieval/vector_store.js.map +1 -0
  508. package/dist/retrieval/version_supersession.d.ts +13 -0
  509. package/dist/retrieval/version_supersession.d.ts.map +1 -0
  510. package/dist/retrieval/version_supersession.js +97 -0
  511. package/dist/retrieval/version_supersession.js.map +1 -0
  512. package/dist/saihm_client/federated_port.d.ts +30 -0
  513. package/dist/saihm_client/federated_port.d.ts.map +1 -0
  514. package/dist/saihm_client/federated_port.js +99 -0
  515. package/dist/saihm_client/federated_port.js.map +1 -0
  516. package/dist/saihm_client/in_memory_port.d.ts +35 -0
  517. package/dist/saihm_client/in_memory_port.d.ts.map +1 -0
  518. package/dist/saihm_client/in_memory_port.js +100 -0
  519. package/dist/saihm_client/in_memory_port.js.map +1 -0
  520. package/dist/saihm_client/index.d.ts +12 -0
  521. package/dist/saihm_client/index.d.ts.map +1 -0
  522. package/dist/saihm_client/index.js +8 -0
  523. package/dist/saihm_client/index.js.map +1 -0
  524. package/dist/saihm_client/mcp_client.d.ts +38 -0
  525. package/dist/saihm_client/mcp_client.d.ts.map +1 -0
  526. package/dist/saihm_client/mcp_client.js +266 -0
  527. package/dist/saihm_client/mcp_client.js.map +1 -0
  528. package/dist/saihm_client/server_features.d.ts +112 -0
  529. package/dist/saihm_client/server_features.d.ts.map +1 -0
  530. package/dist/saihm_client/server_features.js +415 -0
  531. package/dist/saihm_client/server_features.js.map +1 -0
  532. package/dist/saihm_client/share_guard.d.ts +9 -0
  533. package/dist/saihm_client/share_guard.d.ts.map +1 -0
  534. package/dist/saihm_client/share_guard.js +53 -0
  535. package/dist/saihm_client/share_guard.js.map +1 -0
  536. package/dist/saihm_client/timing.d.ts +100 -0
  537. package/dist/saihm_client/timing.d.ts.map +1 -0
  538. package/dist/saihm_client/timing.js +250 -0
  539. package/dist/saihm_client/timing.js.map +1 -0
  540. package/dist/saihm_client/types.d.ts +108 -0
  541. package/dist/saihm_client/types.d.ts.map +1 -0
  542. package/dist/saihm_client/types.js +19 -0
  543. package/dist/saihm_client/types.js.map +1 -0
  544. package/dist/service/handlers.d.ts +91 -0
  545. package/dist/service/handlers.d.ts.map +1 -0
  546. package/dist/service/handlers.js +173 -0
  547. package/dist/service/handlers.js.map +1 -0
  548. package/dist/service/http.d.ts +27 -0
  549. package/dist/service/http.d.ts.map +1 -0
  550. package/dist/service/http.js +261 -0
  551. package/dist/service/http.js.map +1 -0
  552. package/dist/service/index.d.ts +5 -0
  553. package/dist/service/index.d.ts.map +1 -0
  554. package/dist/service/index.js +5 -0
  555. package/dist/service/index.js.map +1 -0
  556. package/dist/service/resident.d.ts +50 -0
  557. package/dist/service/resident.d.ts.map +1 -0
  558. package/dist/service/resident.js +162 -0
  559. package/dist/service/resident.js.map +1 -0
  560. package/dist/service/service_level.d.ts +36 -0
  561. package/dist/service/service_level.d.ts.map +1 -0
  562. package/dist/service/service_level.js +65 -0
  563. package/dist/service/service_level.js.map +1 -0
  564. package/dist/session/change_feed.d.ts +82 -0
  565. package/dist/session/change_feed.d.ts.map +1 -0
  566. package/dist/session/change_feed.js +203 -0
  567. package/dist/session/change_feed.js.map +1 -0
  568. package/dist/session/index.d.ts +6 -0
  569. package/dist/session/index.d.ts.map +1 -0
  570. package/dist/session/index.js +4 -0
  571. package/dist/session/index.js.map +1 -0
  572. package/dist/session/memory_session.d.ts +426 -0
  573. package/dist/session/memory_session.d.ts.map +1 -0
  574. package/dist/session/memory_session.js +1183 -0
  575. package/dist/session/memory_session.js.map +1 -0
  576. package/dist/standing/content_fingerprint.d.ts +28 -0
  577. package/dist/standing/content_fingerprint.d.ts.map +1 -0
  578. package/dist/standing/content_fingerprint.js +95 -0
  579. package/dist/standing/content_fingerprint.js.map +1 -0
  580. package/dist/standing/standing_answers.d.ts +44 -0
  581. package/dist/standing/standing_answers.d.ts.map +1 -0
  582. package/dist/standing/standing_answers.js +72 -0
  583. package/dist/standing/standing_answers.js.map +1 -0
  584. package/dist/standing/standing_store.d.ts +44 -0
  585. package/dist/standing/standing_store.d.ts.map +1 -0
  586. package/dist/standing/standing_store.js +238 -0
  587. package/dist/standing/standing_store.js.map +1 -0
  588. package/dist/standing/surface.d.ts +20 -0
  589. package/dist/standing/surface.d.ts.map +1 -0
  590. package/dist/standing/surface.js +74 -0
  591. package/dist/standing/surface.js.map +1 -0
  592. package/dist/store/atomic_write.d.ts +7 -0
  593. package/dist/store/atomic_write.d.ts.map +1 -0
  594. package/dist/store/atomic_write.js +23 -0
  595. package/dist/store/atomic_write.js.map +1 -0
  596. package/dist/store/body_store.d.ts +42 -0
  597. package/dist/store/body_store.d.ts.map +1 -0
  598. package/dist/store/body_store.js +252 -0
  599. package/dist/store/body_store.js.map +1 -0
  600. package/dist/store/encrypted_store.d.ts +21 -0
  601. package/dist/store/encrypted_store.d.ts.map +1 -0
  602. package/dist/store/encrypted_store.js +266 -0
  603. package/dist/store/encrypted_store.js.map +1 -0
  604. package/dist/store/index.d.ts +21 -0
  605. package/dist/store/index.d.ts.map +1 -0
  606. package/dist/store/index.js +11 -0
  607. package/dist/store/index.js.map +1 -0
  608. package/dist/store/index_snapshot.d.ts +15 -0
  609. package/dist/store/index_snapshot.d.ts.map +1 -0
  610. package/dist/store/index_snapshot.js +126 -0
  611. package/dist/store/index_snapshot.js.map +1 -0
  612. package/dist/store/mcp_warm_start.d.ts +93 -0
  613. package/dist/store/mcp_warm_start.d.ts.map +1 -0
  614. package/dist/store/mcp_warm_start.js +406 -0
  615. package/dist/store/mcp_warm_start.js.map +1 -0
  616. package/dist/store/require_dir.d.ts +2 -0
  617. package/dist/store/require_dir.d.ts.map +1 -0
  618. package/dist/store/require_dir.js +9 -0
  619. package/dist/store/require_dir.js.map +1 -0
  620. package/dist/store/snapshot_format.d.ts +43 -0
  621. package/dist/store/snapshot_format.d.ts.map +1 -0
  622. package/dist/store/snapshot_format.js +119 -0
  623. package/dist/store/snapshot_format.js.map +1 -0
  624. package/dist/store/state_dir.d.ts +19 -0
  625. package/dist/store/state_dir.d.ts.map +1 -0
  626. package/dist/store/state_dir.js +42 -0
  627. package/dist/store/state_dir.js.map +1 -0
  628. package/dist/store/types.d.ts +37 -0
  629. package/dist/store/types.d.ts.map +1 -0
  630. package/dist/store/types.js +11 -0
  631. package/dist/store/types.js.map +1 -0
  632. package/dist/store/warm_index.d.ts +68 -0
  633. package/dist/store/warm_index.d.ts.map +1 -0
  634. package/dist/store/warm_index.js +279 -0
  635. package/dist/store/warm_index.js.map +1 -0
  636. package/dist/store/warm_start.d.ts +57 -0
  637. package/dist/store/warm_start.d.ts.map +1 -0
  638. package/dist/store/warm_start.js +68 -0
  639. package/dist/store/warm_start.js.map +1 -0
  640. package/dist/store/writer_lock.d.ts +34 -0
  641. package/dist/store/writer_lock.d.ts.map +1 -0
  642. package/dist/store/writer_lock.js +169 -0
  643. package/dist/store/writer_lock.js.map +1 -0
  644. package/dist/tiers/index.d.ts +2 -0
  645. package/dist/tiers/index.d.ts.map +1 -0
  646. package/dist/tiers/index.js +2 -0
  647. package/dist/tiers/index.js.map +1 -0
  648. package/dist/tiers/membership.d.ts +48 -0
  649. package/dist/tiers/membership.d.ts.map +1 -0
  650. package/dist/tiers/membership.js +85 -0
  651. package/dist/tiers/membership.js.map +1 -0
  652. package/dist/tuning/holdout.d.ts +54 -0
  653. package/dist/tuning/holdout.d.ts.map +1 -0
  654. package/dist/tuning/holdout.js +231 -0
  655. package/dist/tuning/holdout.js.map +1 -0
  656. package/dist/tuning/index.d.ts +7 -0
  657. package/dist/tuning/index.d.ts.map +1 -0
  658. package/dist/tuning/index.js +4 -0
  659. package/dist/tuning/index.js.map +1 -0
  660. package/dist/tuning/lever_stack.d.ts +27 -0
  661. package/dist/tuning/lever_stack.d.ts.map +1 -0
  662. package/dist/tuning/lever_stack.js +76 -0
  663. package/dist/tuning/lever_stack.js.map +1 -0
  664. package/dist/tuning/paired.d.ts +22 -0
  665. package/dist/tuning/paired.d.ts.map +1 -0
  666. package/dist/tuning/paired.js +74 -0
  667. package/dist/tuning/paired.js.map +1 -0
  668. package/dist/util/concurrency.d.ts +2 -0
  669. package/dist/util/concurrency.d.ts.map +1 -0
  670. package/dist/util/concurrency.js +19 -0
  671. package/dist/util/concurrency.js.map +1 -0
  672. package/package.json +140 -4
@@ -0,0 +1,3 @@
1
+ export type TokenEstimate = (text: string) => number;
2
+ export declare const estimateTokens: TokenEstimate;
3
+ //# sourceMappingURL=token_estimate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_estimate.d.ts","sourceRoot":"","sources":["../../src/inject/token_estimate.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAErD,eAAO,MAAM,cAAc,EAAE,aAAoD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const estimateTokens = (text) => Math.ceil(text.length / 4);
2
+ //# sourceMappingURL=token_estimate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_estimate.js","sourceRoot":"","sources":["../../src/inject/token_estimate.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface InjectionWindowParts {
2
+ readonly sessionId?: string;
3
+ readonly compactCount?: number;
4
+ }
5
+ export declare function injectionWindowId(parts: InjectionWindowParts): string | undefined;
6
+ //# sourceMappingURL=window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/inject/window.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,GAC1B,MAAM,GAAG,SAAS,CAQpB"}
@@ -0,0 +1,10 @@
1
+ export function injectionWindowId(parts) {
2
+ const { sessionId, compactCount } = parts;
3
+ if (typeof sessionId !== "string" || sessionId.trim() === "")
4
+ return undefined;
5
+ if (!Number.isInteger(compactCount) || compactCount < 0) {
6
+ return undefined;
7
+ }
8
+ return `${sessionId.trim()}#${compactCount}`;
9
+ }
10
+ //# sourceMappingURL=window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/inject/window.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,iBAAiB,CAC/B,KAA2B;IAE3B,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAC1C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QAC1D,OAAO,SAAS,CAAC;IACnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAK,YAAuB,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,YAAsB,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface BehaviourMode {
2
+ readonly id: string;
3
+ readonly name: string;
4
+ readonly question: string;
5
+ readonly cues: readonly string[];
6
+ readonly source: string;
7
+ }
8
+ export interface ModeSelection {
9
+ readonly applied: readonly BehaviourMode[];
10
+ readonly deferred: readonly BehaviourMode[];
11
+ readonly costWords: number;
12
+ readonly budgetWords: number;
13
+ }
14
+ export interface ModeSelectOptions {
15
+ readonly budgetWords: number;
16
+ }
17
+ export declare function costOf(mode: BehaviourMode): number;
18
+ export declare function validateRegistry(modes: readonly BehaviourMode[]): void;
19
+ export declare function selectModes(action: string, registry: readonly BehaviourMode[], opts: ModeSelectOptions): ModeSelection;
20
+ export declare const DEFAULT_MODES: readonly BehaviourMode[];
21
+ //# sourceMappingURL=behaviour_modes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behaviour_modes.d.ts","sourceRoot":"","sources":["../../src/modes/behaviour_modes.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAElD;AAYD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CActE;AASD,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,IAAI,EAAE,iBAAiB,GACtB,aAAa,CAkBf;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EAuEjD,CAAC"}
@@ -0,0 +1,137 @@
1
+ export function costOf(mode) {
2
+ return mode.question.trim().split(/\s+/).filter((w) => w.length > 0).length;
3
+ }
4
+ function questionProblem(q) {
5
+ const t = q.trim();
6
+ if (t.length === 0)
7
+ return "empty";
8
+ if (!t.endsWith("?"))
9
+ return "not a question (must end with ?)";
10
+ if (t.slice(0, -1).includes("?"))
11
+ return "more than one question";
12
+ if (/\n/.test(t))
13
+ return "contains a line break — that is a protocol, not a question";
14
+ if (/[.!]\s+[A-Z]/.test(t))
15
+ return "contains a sentence break — compile the mode, do not recite it";
16
+ return undefined;
17
+ }
18
+ export function validateRegistry(modes) {
19
+ const seen = new Set();
20
+ for (const m of modes) {
21
+ if (seen.has(m.id))
22
+ throw new Error(`duplicate mode id: ${m.id}`);
23
+ seen.add(m.id);
24
+ const bad = questionProblem(m.question);
25
+ if (bad !== undefined)
26
+ throw new Error(`mode ${m.id}: question ${bad}`);
27
+ if (m.cues.length === 0)
28
+ throw new Error(`mode ${m.id}: no cues — it could never be selected`);
29
+ for (const c of m.cues) {
30
+ if (c !== c.toLowerCase())
31
+ throw new Error(`mode ${m.id}: cue "${c}" must be lowercase`);
32
+ if (c.trim().length === 0)
33
+ throw new Error(`mode ${m.id}: empty cue`);
34
+ }
35
+ if (m.source.trim().length === 0)
36
+ throw new Error(`mode ${m.id}: no provenance`);
37
+ }
38
+ }
39
+ function cueMatches(cue, hay) {
40
+ const esc = cue.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
41
+ const left = /^\w/.test(cue) ? "\\b" : "";
42
+ const right = /\w$/.test(cue) ? "\\b" : "";
43
+ return new RegExp(`${left}${esc}${right}`).test(hay);
44
+ }
45
+ export function selectModes(action, registry, opts) {
46
+ const hay = action.toLowerCase();
47
+ const matched = registry.filter((m) => m.cues.some((c) => cueMatches(c, hay)));
48
+ const applied = [];
49
+ const deferred = [];
50
+ let cost = 0;
51
+ let full = false;
52
+ for (const m of matched) {
53
+ const c = costOf(m);
54
+ if (!full && cost + c <= opts.budgetWords) {
55
+ applied.push(m);
56
+ cost += c;
57
+ }
58
+ else {
59
+ full = true;
60
+ deferred.push(m);
61
+ }
62
+ }
63
+ return { applied, deferred, costWords: cost, budgetWords: opts.budgetWords };
64
+ }
65
+ export const DEFAULT_MODES = [
66
+ {
67
+ id: "hostile-review",
68
+ name: "Hostile review",
69
+ question: "What would make this wrong?",
70
+ cues: ["ship", "commit", "merge", "implement", "build", "fix", "refactor", "release"],
71
+ source: "review practice: three hostile passes, for correctness, integration and specification, before a change ships",
72
+ },
73
+ {
74
+ id: "decide-dont-ask",
75
+ name: "Decide analytically",
76
+ question: "Could I settle this by measuring instead of asking?",
77
+ cues: ["ask", "question", "decide", "choose", "option", "which"],
78
+ source: "decision practice: a question that a measurement can settle is not a question to ask",
79
+ },
80
+ {
81
+ id: "selector-blindness",
82
+ name: "Selector blindness",
83
+ question: "Does my selector filter on the field the defect corrupts?",
84
+ cues: ["audit", "scan", "select", "filter", "census", "grep", "probe", "instrument"],
85
+ source: "measurement practice: a selector that filters on the corrupted field reports a false all-clear",
86
+ },
87
+ {
88
+ id: "known-positive",
89
+ name: "Known-positive first",
90
+ question: "Have I seen this instrument fail on a case I know is positive?",
91
+ cues: ["measure", "probe", "test", "gate", "verify", "control", "null", "instrument"],
92
+ source: "measurement practice: trust an instrument only after it has failed on a planted positive",
93
+ },
94
+ {
95
+ id: "denominator",
96
+ name: "Denominator",
97
+ question: "What is my n, and is it independent draws rather than printed rows?",
98
+ cues: ["measure", "rate", "correlation", "percent", "recall@", "precision", "n=", "average"],
99
+ source: "measurement practice: repeated rows from one source are not independent samples",
100
+ },
101
+ {
102
+ id: "stale-value",
103
+ name: "Staleness with authority",
104
+ question: "Is this a stored value where it should be a pointer to a measurement?",
105
+ cues: ["version", "status", "state", "head", "sha", "count", "resume", "claim"],
106
+ source: "memory practice: a stored value goes stale; a pointer to its measurement does not",
107
+ },
108
+ {
109
+ id: "fail-open",
110
+ name: "Fail-open check",
111
+ question: "If this check is misconfigured, does it fail closed or fail open?",
112
+ cues: ["policy", "guard", "deny", "refuse", "allow", "security", "boundary", "validate"],
113
+ source: "configuration practice: a check that fails open on a configuration error passes every test nobody wrote",
114
+ },
115
+ {
116
+ id: "reader-predicate",
117
+ name: "Writer gated on the reader",
118
+ question: "Is the writer gated on the reader's own predicate, or merely tested against it?",
119
+ cues: ["write", "append", "emit", "serialize", "send", "share", "publish"],
120
+ source: "data practice: a writer gated on the reader's own predicate cannot store what the reader refuses",
121
+ },
122
+ {
123
+ id: "index-budget",
124
+ name: "Index budget",
125
+ question: "Will this append push the always-loaded index past its silent-truncation point?",
126
+ cues: ["memory.md", "index", "append", "remember", "memory file"],
127
+ source: "memory practice: an always-loaded index cut at its size limit loses its last entries without warning",
128
+ },
129
+ {
130
+ id: "cost-of-compliance",
131
+ name: "Cost of compliance",
132
+ question: "Am I judging this proactive feature on firing rate instead of what it costs to obey?",
133
+ cues: ["proactive", "inject", "surface", "remind", "render", "hook", "firing"],
134
+ source: "measurement practice: judge a proactive feature by what obeying it costs, not by how often it fires",
135
+ },
136
+ ];
137
+ //# sourceMappingURL=behaviour_modes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behaviour_modes.js","sourceRoot":"","sources":["../../src/modes/behaviour_modes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { validateStorePolicy, encodePolicyCell, parsePolicyCell, degradedPolicy, resolveStorePolicy, assertWriteAllowed, POLICY_MARKER, type StorePolicy, type StoreTier, type PolicyAuthority, type OnUnavailable, type ResolvedPolicy, type PolicySource, type SharedCellReader, } from "./store_policy.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAC7H,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,GAC1I,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { validateStorePolicy, encodePolicyCell, parsePolicyCell, degradedPolicy, resolveStorePolicy, assertWriteAllowed, POLICY_MARKER, } from "./store_policy.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,GAE9H,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,47 @@
1
+ export type StoreTier = "local" | "saihm" | "central";
2
+ export type PolicyAuthority = "agent" | "central" | "hybrid";
3
+ export type OnUnavailable = "refuse-writes-keep-local-reads" | "refuse-all";
4
+ export interface StorePolicy {
5
+ readonly version: 1;
6
+ readonly authority: PolicyAuthority;
7
+ readonly primary: StoreTier;
8
+ readonly allowed: readonly StoreTier[];
9
+ readonly onUnavailable: OnUnavailable;
10
+ readonly organization?: string;
11
+ readonly issuedAtEpoch?: number;
12
+ }
13
+ export interface ResolvedPolicy {
14
+ readonly policy: StorePolicy;
15
+ readonly provenance: "agent" | "central" | "degraded";
16
+ readonly issuer?: string;
17
+ readonly degraded?: string;
18
+ }
19
+ export declare function validateStorePolicy(raw: unknown): StorePolicy;
20
+ export declare const POLICY_MARKER = "SHM-POLICY:v1";
21
+ export declare function encodePolicyCell(policy: StorePolicy): string;
22
+ export declare function parsePolicyCell(plaintext: string): StorePolicy | undefined;
23
+ export declare function degradedPolicy(reason: string, onUnavailable?: OnUnavailable): ResolvedPolicy;
24
+ export interface SharedCellReader {
25
+ readShared?(sharerAgentIdHash: string, sharerRecord: {
26
+ readonly mldsaPubKey: string;
27
+ readonly mlkemPubKey: string;
28
+ readonly mlkemPubKeySelfSig: string;
29
+ }, cellId: string): Promise<string | undefined>;
30
+ }
31
+ export type PolicySource = {
32
+ readonly kind: "agent";
33
+ readonly policy: StorePolicy;
34
+ } | {
35
+ readonly kind: "central";
36
+ readonly organization: string;
37
+ readonly organizationRecord: {
38
+ readonly mldsaPubKey: string;
39
+ readonly mlkemPubKey: string;
40
+ readonly mlkemPubKeySelfSig: string;
41
+ };
42
+ readonly policyCellId: string;
43
+ readonly agentPrimary?: StoreTier;
44
+ };
45
+ export declare function resolveStorePolicy(source: PolicySource, port: SharedCellReader): Promise<ResolvedPolicy>;
46
+ export declare function assertWriteAllowed(resolved: ResolvedPolicy, tier: StoreTier, what: string): void;
47
+ //# sourceMappingURL=store_policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store_policy.d.ts","sourceRoot":"","sources":["../../src/policy/store_policy.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,gCAAgC,GAAG,YAAY,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAWD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CA8B7D;AAED,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAW1E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAE,aAAgD,GAAG,cAAc,CAM9H;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,CAAC,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACxM;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACxD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IACjI,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;CACnC,CAAC;AAEN,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAgC9G;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIhG"}
@@ -0,0 +1,125 @@
1
+ import { verifyBinding } from "../coordination/identity.js";
2
+ const TIERS = new Set(["local", "saihm", "central"]);
3
+ const AUTH = new Set(["agent", "central", "hybrid"]);
4
+ const ONU = new Set(["refuse-writes-keep-local-reads", "refuse-all"]);
5
+ const HEX64 = /^[0-9a-f]{64}$/;
6
+ function bad(msg) {
7
+ throw new Error(`store policy: ${msg}`);
8
+ }
9
+ export function validateStorePolicy(raw) {
10
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw))
11
+ bad("not an object");
12
+ const p = raw;
13
+ if (p["version"] !== 1)
14
+ bad(`unsupported version ${JSON.stringify(p["version"])}`);
15
+ if (typeof p["authority"] !== "string" || !AUTH.has(p["authority"]))
16
+ bad(`unknown authority ${JSON.stringify(p["authority"])}`);
17
+ if (!Array.isArray(p["allowed"]) || p["allowed"].length === 0 || !p["allowed"].every((t) => typeof t === "string" && TIERS.has(t)))
18
+ bad("allowed must be a non-empty list of tiers");
19
+ const allowed = [...new Set(p["allowed"])];
20
+ if (typeof p["primary"] !== "string" || !TIERS.has(p["primary"]))
21
+ bad(`unknown primary ${JSON.stringify(p["primary"])}`);
22
+ if (!allowed.includes(p["primary"]))
23
+ bad(`primary ${p["primary"]} is not in allowed [${allowed.join(",")}]`);
24
+ if (typeof p["onUnavailable"] !== "string" || !ONU.has(p["onUnavailable"]))
25
+ bad(`unknown onUnavailable ${JSON.stringify(p["onUnavailable"])}`);
26
+ let organization;
27
+ if (p["organization"] !== undefined) {
28
+ if (typeof p["organization"] !== "string" || !HEX64.test(p["organization"]))
29
+ bad("organization must be a 64-hex agentIdHash");
30
+ organization = p["organization"];
31
+ }
32
+ if ((p["authority"] === "central" || p["authority"] === "hybrid") && organization === undefined)
33
+ bad(`authority ${p["authority"]} requires an organization id`);
34
+ let issuedAtEpoch;
35
+ if (p["issuedAtEpoch"] !== undefined) {
36
+ if (typeof p["issuedAtEpoch"] !== "number" || !Number.isFinite(p["issuedAtEpoch"]) || p["issuedAtEpoch"] < 0)
37
+ bad("issuedAtEpoch must be a non-negative finite number");
38
+ issuedAtEpoch = p["issuedAtEpoch"];
39
+ }
40
+ return {
41
+ version: 1,
42
+ authority: p["authority"],
43
+ primary: p["primary"],
44
+ allowed,
45
+ onUnavailable: p["onUnavailable"],
46
+ ...(organization !== undefined ? { organization } : {}),
47
+ ...(issuedAtEpoch !== undefined ? { issuedAtEpoch } : {}),
48
+ };
49
+ }
50
+ export const POLICY_MARKER = "SHM-POLICY:v1";
51
+ export function encodePolicyCell(policy) {
52
+ return `${POLICY_MARKER}\n${JSON.stringify(validateStorePolicy(policy))}`;
53
+ }
54
+ export function parsePolicyCell(plaintext) {
55
+ if (!plaintext.startsWith(POLICY_MARKER))
56
+ return undefined;
57
+ const nl = plaintext.indexOf("\n");
58
+ if (nl < 0)
59
+ bad("policy marker with no body");
60
+ let raw;
61
+ try {
62
+ raw = JSON.parse(plaintext.slice(nl + 1));
63
+ }
64
+ catch {
65
+ bad("policy body is not JSON");
66
+ }
67
+ return validateStorePolicy(raw);
68
+ }
69
+ export function degradedPolicy(reason, onUnavailable = "refuse-writes-keep-local-reads") {
70
+ return {
71
+ policy: { version: 1, authority: "central", primary: "local", allowed: ["local"], onUnavailable },
72
+ provenance: "degraded",
73
+ degraded: reason,
74
+ };
75
+ }
76
+ export async function resolveStorePolicy(source, port) {
77
+ if (source.kind === "agent") {
78
+ return { policy: validateStorePolicy(source.policy), provenance: "agent" };
79
+ }
80
+ const org = source.organization.trim().toLowerCase();
81
+ const bind = verifyBinding(org, source.organizationRecord);
82
+ if (!bind.ok)
83
+ return degradedPolicy(`organization record does not bind to the pinned id: ${bind.reason}`);
84
+ if (typeof port.readShared !== "function")
85
+ return degradedPolicy("this port cannot read a shared cell (no readShared) — central policy unreachable");
86
+ let text;
87
+ try {
88
+ text = await port.readShared(org, source.organizationRecord, source.policyCellId);
89
+ }
90
+ catch (e) {
91
+ return degradedPolicy(`policy cell read failed: ${e.message}`);
92
+ }
93
+ if (text === undefined)
94
+ return degradedPolicy("policy cell not readable from the pinned organization");
95
+ let policy;
96
+ try {
97
+ policy = parsePolicyCell(text);
98
+ }
99
+ catch (e) {
100
+ return degradedPolicy(`policy cell malformed: ${e.message}`);
101
+ }
102
+ if (policy === undefined)
103
+ return degradedPolicy("the shared cell is not a policy cell");
104
+ if (policy.authority === "agent")
105
+ return degradedPolicy("a centrally shared policy declares authority `agent` — refused as contradictory");
106
+ if (policy.organization !== undefined && policy.organization !== org)
107
+ return degradedPolicy("policy names a different organization than the one pinned");
108
+ let effective = policy;
109
+ if (policy.authority === "hybrid" && source.agentPrimary !== undefined) {
110
+ if (!policy.allowed.includes(source.agentPrimary))
111
+ return degradedPolicy(`agent primary ${source.agentPrimary} is outside allowed [${policy.allowed.join(",")}]`);
112
+ effective = { ...policy, primary: source.agentPrimary };
113
+ }
114
+ else if (policy.authority === "central" && source.agentPrimary !== undefined && source.agentPrimary !== policy.primary) {
115
+ return degradedPolicy("authority is central: the agent may not choose a primary");
116
+ }
117
+ return { policy: effective, provenance: "central", issuer: org };
118
+ }
119
+ export function assertWriteAllowed(resolved, tier, what) {
120
+ if (resolved.policy.allowed.includes(tier))
121
+ return;
122
+ const why = resolved.provenance === "degraded" ? ` (degraded: ${resolved.degraded})` : "";
123
+ throw new Error(`${what} refused: store policy does not allow writes to tier ${tier}${why}; allowed [${resolved.policy.allowed.join(",")}]`);
124
+ }
125
+ //# sourceMappingURL=store_policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store_policy.js","sourceRoot":"","sources":["../../src/policy/store_policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { PRODUCTION_PROFILE, productionSessionOptions } from "./production.js";
2
+ export type { ProductionProfile } from "./production.js";
3
+ export { HOT_SWAPPABLE_LEVERS, INDEX_TIME_LEVERS, LeverProfileError, isHotSwappable, normalizeLeverProfile, } from "./lever_profile.js";
4
+ export type { HotSwappableLever, LeverProfile, NormalizeLeverOptions } from "./lever_profile.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { PRODUCTION_PROFILE, productionSessionOptions } from "./production.js";
2
+ export { HOT_SWAPPABLE_LEVERS, INDEX_TIME_LEVERS, LeverProfileError, isHotSwappable, normalizeLeverProfile, } from "./lever_profile.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { DemoteMode } from "../retrieval/thread_lifecycle.js";
2
+ export declare const HOT_SWAPPABLE_LEVERS: readonly ["rerankK", "rerankOnBody", "rerankBodyWindowChars", "queryExpansion", "queryExpansionN", "queryExpansionM", "threadLifecycle", "threadJoin", "threadDemote", "threadPoolK", "threadMaxGroup", "allowThreadPoolWiderThanRerank"];
3
+ export declare const INDEX_TIME_LEVERS: readonly ["rrf", "excludeNamespaces", "tenantId"];
4
+ export type HotSwappableLever = (typeof HOT_SWAPPABLE_LEVERS)[number];
5
+ export interface LeverProfile {
6
+ readonly rerankK?: number;
7
+ readonly rerankOnBody?: boolean;
8
+ readonly rerankBodyWindowChars?: number;
9
+ readonly queryExpansion?: boolean;
10
+ readonly queryExpansionN?: number;
11
+ readonly queryExpansionM?: number;
12
+ readonly threadLifecycle?: boolean;
13
+ readonly threadJoin?: boolean;
14
+ readonly threadDemote?: DemoteMode;
15
+ readonly threadPoolK?: number;
16
+ readonly threadMaxGroup?: number;
17
+ readonly allowThreadPoolWiderThanRerank?: boolean;
18
+ }
19
+ export interface NormalizeLeverOptions {
20
+ readonly hasReranker?: boolean;
21
+ }
22
+ export declare class LeverProfileError extends Error {
23
+ constructor(message: string);
24
+ }
25
+ export declare function normalizeLeverProfile(input: unknown, opts?: NormalizeLeverOptions): LeverProfile;
26
+ export declare function isHotSwappable(lever: string): boolean;
27
+ //# sourceMappingURL=lever_profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lever_profile.d.ts","sourceRoot":"","sources":["../../src/profile/lever_profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,2OAavB,CAAC;AAEX,eAAO,MAAM,iBAAiB,mDAAoD,CAAC;AAEnF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,qBAA0B,GAC/B,YAAY,CAkCd;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,55 @@
1
+ import { assertThreadPoolWithinRerank } from "../retrieval/thread_lifecycle.js";
2
+ export const HOT_SWAPPABLE_LEVERS = [
3
+ "rerankK",
4
+ "rerankOnBody",
5
+ "rerankBodyWindowChars",
6
+ "queryExpansion",
7
+ "queryExpansionN",
8
+ "queryExpansionM",
9
+ "threadLifecycle",
10
+ "threadJoin",
11
+ "threadDemote",
12
+ "threadPoolK",
13
+ "threadMaxGroup",
14
+ "allowThreadPoolWiderThanRerank",
15
+ ];
16
+ export const INDEX_TIME_LEVERS = ["rrf", "excludeNamespaces", "tenantId"];
17
+ export class LeverProfileError extends Error {
18
+ constructor(message) {
19
+ super(message);
20
+ this.name = "LeverProfileError";
21
+ }
22
+ }
23
+ export function normalizeLeverProfile(input, opts = {}) {
24
+ if (input === null || typeof input !== "object" || Array.isArray(input)) {
25
+ throw new LeverProfileError(`lever profile must be an object, got ${Array.isArray(input) ? "array" : String(input === null ? "null" : typeof input)}`);
26
+ }
27
+ const raw = input;
28
+ const allowed = new Set(HOT_SWAPPABLE_LEVERS);
29
+ const indexTime = new Set(INDEX_TIME_LEVERS);
30
+ for (const key of Object.keys(raw)) {
31
+ if (raw[key] === undefined)
32
+ continue;
33
+ if (indexTime.has(key)) {
34
+ throw new LeverProfileError(`\`${key}\` is an INDEX-TIME lever and cannot be hot-swapped: it is consumed while building ` +
35
+ `the index, so setting it in a per-agent or per-task profile would have no effect and no ` +
36
+ `error. Change it by re-opening the session (vectors are loaded from the store, not ` +
37
+ `re-embedded). Hot-swappable levers: ${HOT_SWAPPABLE_LEVERS.join(", ")}.`);
38
+ }
39
+ if (!allowed.has(key)) {
40
+ throw new LeverProfileError(`unknown lever \`${key}\`. Refused rather than ignored, because an ignored key is a lever ` +
41
+ `that silently never applies. Hot-swappable levers: ${HOT_SWAPPABLE_LEVERS.join(", ")}.`);
42
+ }
43
+ }
44
+ assertThreadPoolWithinRerank({
45
+ rerankK: raw["rerankK"],
46
+ threadPoolK: raw["threadPoolK"],
47
+ hasReranker: opts.hasReranker ?? true,
48
+ allowWider: raw["allowThreadPoolWiderThanRerank"] === true,
49
+ });
50
+ return raw;
51
+ }
52
+ export function isHotSwappable(lever) {
53
+ return HOT_SWAPPABLE_LEVERS.includes(lever);
54
+ }
55
+ //# sourceMappingURL=lever_profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lever_profile.js","sourceRoot":"","sources":["../../src/profile/lever_profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAGhF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,cAAc;IACd,uBAAuB;IACvB,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,YAAY;IACZ,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,gCAAgC;CACxB,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,mBAAmB,EAAE,UAAU,CAAU,CAAC;AAuBnF,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAc,EACd,OAA8B,EAAE;IAEhC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,iBAAiB,CAAC,wCAAwC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;IACzJ,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,oBAAoB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,iBAAiB,CAAC,CAAC;IAErD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,SAAS;QACrC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,iBAAiB,CACzB,KAAK,GAAG,qFAAqF;gBAC3F,0FAA0F;gBAC1F,qFAAqF;gBACrF,uCAAuC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,iBAAiB,CACzB,mBAAmB,GAAG,qEAAqE;gBACzF,sDAAsD,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4BAA4B,CAAC;QAC3B,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;QACvB,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACrC,UAAU,EAAE,GAAG,CAAC,gCAAgC,CAAC,KAAK,IAAI;KAC3D,CAAC,CAAC;IAEH,OAAO,GAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAQ,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Reranker } from "../rerank/types.js";
2
+ import type { OpenMemorySessionOptions } from "../session/index.js";
3
+ export interface ProductionProfile {
4
+ readonly rerankK: number;
5
+ readonly topK: number;
6
+ readonly relevanceFloor: number;
7
+ }
8
+ export declare const PRODUCTION_PROFILE: ProductionProfile;
9
+ export declare function productionSessionOptions(overrides?: {
10
+ readonly reranker?: Reranker;
11
+ }): Pick<OpenMemorySessionOptions, "reranker" | "rerankK">;
12
+ //# sourceMappingURL=production.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../../src/profile/production.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,iBAIhC,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,SAAS,GAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAO,GAC/C,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,SAAS,CAAC,CAKxD"}
@@ -0,0 +1,13 @@
1
+ import { CrossEncoderReranker } from "../rerank/index.js";
2
+ export const PRODUCTION_PROFILE = {
3
+ rerankK: 30,
4
+ topK: 10,
5
+ relevanceFloor: -9,
6
+ };
7
+ export function productionSessionOptions(overrides = {}) {
8
+ return {
9
+ reranker: overrides.reranker ?? new CrossEncoderReranker(),
10
+ rerankK: PRODUCTION_PROFILE.rerankK,
11
+ };
12
+ }
13
+ //# sourceMappingURL=production.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production.js","sourceRoot":"","sources":["../../src/profile/production.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAU1D,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,cAAc,EAAE,CAAC,CAAC;CACnB,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACtC,YAA8C,EAAE;IAEhD,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,IAAI,oBAAoB,EAAE;QAC1D,OAAO,EAAE,kBAAkB,CAAC,OAAO;KACpC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function sourceFilesUnder(dir: string, filter?: (p: string) => boolean): string[];
2
+ export declare function fingerprintSources(files: readonly string[]): string;
3
+ export interface BuildMismatch {
4
+ readonly running: string;
5
+ readonly onDisk: string;
6
+ readonly message: string;
7
+ }
8
+ export declare function compareBuild(running: string | undefined, onDisk: string): BuildMismatch | undefined;
9
+ //# sourceMappingURL=build_fingerprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_fingerprint.d.ts","sourceRoot":"","sources":["../../src/provenance/build_fingerprint.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAkC,GAAG,MAAM,EAAE,CAajH;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAanE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAUnG"}