@monoes/monomindcli 2.16.12 → 2.16.14

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 (386) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/engineering/engineering-devops-automator.md +1 -1
  3. package/.claude/agents/github/repo-architect.md +1 -1
  4. package/.claude/agents/testing/production-validator.md +1 -1
  5. package/.claude/agents/testing/testing-tool-evaluator.md +1 -1
  6. package/.claude/commands/github/pr-manager.md +1 -1
  7. package/.claude/helpers/pick-rank.cjs +34 -4
  8. package/.claude/skills/monolean-audit/SKILL.md +1 -1
  9. package/README.md +1 -1
  10. package/dist/src/commands/cleanup-data.d.ts +30 -0
  11. package/dist/src/commands/cleanup-data.d.ts.map +1 -0
  12. package/dist/src/commands/cleanup-data.js +138 -0
  13. package/dist/src/commands/cleanup-data.js.map +1 -0
  14. package/dist/src/commands/cleanup-scratch.d.ts +43 -0
  15. package/dist/src/commands/cleanup-scratch.d.ts.map +1 -0
  16. package/dist/src/commands/cleanup-scratch.js +125 -0
  17. package/dist/src/commands/cleanup-scratch.js.map +1 -0
  18. package/dist/src/commands/cleanup.d.ts +2 -39
  19. package/dist/src/commands/cleanup.d.ts.map +1 -1
  20. package/dist/src/commands/cleanup.js +5 -247
  21. package/dist/src/commands/cleanup.js.map +1 -1
  22. package/dist/src/commands/doctor-gitignore-checks.d.ts +10 -0
  23. package/dist/src/commands/doctor-gitignore-checks.d.ts.map +1 -0
  24. package/dist/src/commands/doctor-gitignore-checks.js +141 -0
  25. package/dist/src/commands/doctor-gitignore-checks.js.map +1 -0
  26. package/dist/src/commands/doctor-helpers-checks.d.ts +10 -0
  27. package/dist/src/commands/doctor-helpers-checks.d.ts.map +1 -0
  28. package/dist/src/commands/doctor-helpers-checks.js +292 -0
  29. package/dist/src/commands/doctor-helpers-checks.js.map +1 -0
  30. package/dist/src/commands/doctor-memory-checks.d.ts +47 -0
  31. package/dist/src/commands/doctor-memory-checks.d.ts.map +1 -0
  32. package/dist/src/commands/doctor-memory-checks.js +298 -0
  33. package/dist/src/commands/doctor-memory-checks.js.map +1 -0
  34. package/dist/src/commands/doctor-monograph-checks.d.ts +9 -0
  35. package/dist/src/commands/doctor-monograph-checks.d.ts.map +1 -0
  36. package/dist/src/commands/doctor-monograph-checks.js +331 -0
  37. package/dist/src/commands/doctor-monograph-checks.js.map +1 -0
  38. package/dist/src/commands/doctor-project-checks.d.ts +7 -66
  39. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  40. package/dist/src/commands/doctor-project-checks.js +10 -1331
  41. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  42. package/dist/src/commands/doctor-routing-checks.d.ts +10 -0
  43. package/dist/src/commands/doctor-routing-checks.d.ts.map +1 -0
  44. package/dist/src/commands/doctor-routing-checks.js +194 -0
  45. package/dist/src/commands/doctor-routing-checks.js.map +1 -0
  46. package/dist/src/commands/doctor-worker-checks.d.ts +17 -0
  47. package/dist/src/commands/doctor-worker-checks.d.ts.map +1 -0
  48. package/dist/src/commands/doctor-worker-checks.js +122 -0
  49. package/dist/src/commands/doctor-worker-checks.js.map +1 -0
  50. package/dist/src/commands/hooks-routing-commands.js +1 -1
  51. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  52. package/dist/src/commands/init.d.ts.map +1 -1
  53. package/dist/src/commands/init.js +6 -15
  54. package/dist/src/commands/init.js.map +1 -1
  55. package/dist/src/commands/org-control.d.ts +117 -0
  56. package/dist/src/commands/org-control.d.ts.map +1 -0
  57. package/dist/src/commands/org-control.js +274 -0
  58. package/dist/src/commands/org-control.js.map +1 -0
  59. package/dist/src/commands/org-lifecycle.d.ts +7 -0
  60. package/dist/src/commands/org-lifecycle.d.ts.map +1 -0
  61. package/dist/src/commands/org-lifecycle.js +298 -0
  62. package/dist/src/commands/org-lifecycle.js.map +1 -0
  63. package/dist/src/commands/org-manage.d.ts +7 -0
  64. package/dist/src/commands/org-manage.d.ts.map +1 -0
  65. package/dist/src/commands/org-manage.js +357 -0
  66. package/dist/src/commands/org-manage.js.map +1 -0
  67. package/dist/src/commands/org-memory-command.d.ts +3 -0
  68. package/dist/src/commands/org-memory-command.d.ts.map +1 -0
  69. package/dist/src/commands/org-memory-command.js +178 -0
  70. package/dist/src/commands/org-memory-command.js.map +1 -0
  71. package/dist/src/commands/org-observe-approvals.d.ts +8 -0
  72. package/dist/src/commands/org-observe-approvals.d.ts.map +1 -0
  73. package/dist/src/commands/org-observe-approvals.js +211 -0
  74. package/dist/src/commands/org-observe-approvals.js.map +1 -0
  75. package/dist/src/commands/org-observe-checkpoint.d.ts +26 -0
  76. package/dist/src/commands/org-observe-checkpoint.d.ts.map +1 -0
  77. package/dist/src/commands/org-observe-checkpoint.js +180 -0
  78. package/dist/src/commands/org-observe-checkpoint.js.map +1 -0
  79. package/dist/src/commands/org-observe-config.d.ts +8 -0
  80. package/dist/src/commands/org-observe-config.d.ts.map +1 -0
  81. package/dist/src/commands/org-observe-config.js +160 -0
  82. package/dist/src/commands/org-observe-config.js.map +1 -0
  83. package/dist/src/commands/org-observe-gates.d.ts +4 -0
  84. package/dist/src/commands/org-observe-gates.d.ts.map +1 -0
  85. package/dist/src/commands/org-observe-gates.js +182 -0
  86. package/dist/src/commands/org-observe-gates.js.map +1 -0
  87. package/dist/src/commands/org-observe-inbox.d.ts +18 -0
  88. package/dist/src/commands/org-observe-inbox.d.ts.map +1 -0
  89. package/dist/src/commands/org-observe-inbox.js +154 -0
  90. package/dist/src/commands/org-observe-inbox.js.map +1 -0
  91. package/dist/src/commands/org-observe-logs.d.ts +31 -0
  92. package/dist/src/commands/org-observe-logs.d.ts.map +1 -0
  93. package/dist/src/commands/org-observe-logs.js +272 -0
  94. package/dist/src/commands/org-observe-logs.js.map +1 -0
  95. package/dist/src/commands/org-observe-questions.d.ts +8 -0
  96. package/dist/src/commands/org-observe-questions.d.ts.map +1 -0
  97. package/dist/src/commands/org-observe-questions.js +201 -0
  98. package/dist/src/commands/org-observe-questions.js.map +1 -0
  99. package/dist/src/commands/org-observe-report.d.ts +8 -0
  100. package/dist/src/commands/org-observe-report.d.ts.map +1 -0
  101. package/dist/src/commands/org-observe-report.js +366 -0
  102. package/dist/src/commands/org-observe-report.js.map +1 -0
  103. package/dist/src/commands/org-observe-shared.d.ts +20 -0
  104. package/dist/src/commands/org-observe-shared.d.ts.map +1 -0
  105. package/dist/src/commands/org-observe-shared.js +55 -0
  106. package/dist/src/commands/org-observe-shared.js.map +1 -0
  107. package/dist/src/commands/org-observe.d.ts +9 -101
  108. package/dist/src/commands/org-observe.d.ts.map +1 -1
  109. package/dist/src/commands/org-observe.js +12 -1675
  110. package/dist/src/commands/org-observe.js.map +1 -1
  111. package/dist/src/commands/org-poll.d.ts +57 -0
  112. package/dist/src/commands/org-poll.d.ts.map +1 -0
  113. package/dist/src/commands/org-poll.js +194 -0
  114. package/dist/src/commands/org-poll.js.map +1 -0
  115. package/dist/src/commands/org-run.d.ts +3 -0
  116. package/dist/src/commands/org-run.d.ts.map +1 -0
  117. package/dist/src/commands/org-run.js +449 -0
  118. package/dist/src/commands/org-run.js.map +1 -0
  119. package/dist/src/commands/org-serve.d.ts +19 -0
  120. package/dist/src/commands/org-serve.d.ts.map +1 -0
  121. package/dist/src/commands/org-serve.js +395 -0
  122. package/dist/src/commands/org-serve.js.map +1 -0
  123. package/dist/src/commands/org-subcommands-config.d.ts +8 -0
  124. package/dist/src/commands/org-subcommands-config.d.ts.map +1 -0
  125. package/dist/src/commands/org-subcommands-config.js +93 -0
  126. package/dist/src/commands/org-subcommands-config.js.map +1 -0
  127. package/dist/src/commands/org-subcommands-hil.d.ts +11 -0
  128. package/dist/src/commands/org-subcommands-hil.d.ts.map +1 -0
  129. package/dist/src/commands/org-subcommands-hil.js +216 -0
  130. package/dist/src/commands/org-subcommands-hil.js.map +1 -0
  131. package/dist/src/commands/org-subcommands-observe.d.ts +12 -0
  132. package/dist/src/commands/org-subcommands-observe.d.ts.map +1 -0
  133. package/dist/src/commands/org-subcommands-observe.js +249 -0
  134. package/dist/src/commands/org-subcommands-observe.js.map +1 -0
  135. package/dist/src/commands/org-subcommands-runtime.d.ts +12 -0
  136. package/dist/src/commands/org-subcommands-runtime.d.ts.map +1 -0
  137. package/dist/src/commands/org-subcommands-runtime.js +163 -0
  138. package/dist/src/commands/org-subcommands-runtime.js.map +1 -0
  139. package/dist/src/commands/org.d.ts +3 -151
  140. package/dist/src/commands/org.d.ts.map +1 -1
  141. package/dist/src/commands/org.js +43 -2735
  142. package/dist/src/commands/org.js.map +1 -1
  143. package/dist/src/index.js +2 -2
  144. package/dist/src/index.js.map +1 -1
  145. package/dist/src/init/never-commit.d.ts +3 -3
  146. package/dist/src/init/types.d.ts +1 -1
  147. package/dist/src/init/types.js +1 -1
  148. package/dist/src/knowledge/document-store.js +1 -1
  149. package/dist/src/knowledge/document-store.js.map +1 -1
  150. package/dist/src/mcp-tools/hooks-edit-command.d.ts +10 -0
  151. package/dist/src/mcp-tools/hooks-edit-command.d.ts.map +1 -0
  152. package/dist/src/mcp-tools/hooks-edit-command.js +247 -0
  153. package/dist/src/mcp-tools/hooks-edit-command.js.map +1 -0
  154. package/dist/src/mcp-tools/hooks-learning.d.ts +9 -0
  155. package/dist/src/mcp-tools/hooks-learning.d.ts.map +1 -0
  156. package/dist/src/mcp-tools/hooks-learning.js +408 -0
  157. package/dist/src/mcp-tools/hooks-learning.js.map +1 -0
  158. package/dist/src/mcp-tools/hooks-metrics-list.d.ts +8 -0
  159. package/dist/src/mcp-tools/hooks-metrics-list.d.ts.map +1 -0
  160. package/dist/src/mcp-tools/hooks-metrics-list.js +205 -0
  161. package/dist/src/mcp-tools/hooks-metrics-list.js.map +1 -0
  162. package/dist/src/mcp-tools/hooks-route.d.ts +12 -0
  163. package/dist/src/mcp-tools/hooks-route.d.ts.map +1 -0
  164. package/dist/src/mcp-tools/hooks-route.js +251 -0
  165. package/dist/src/mcp-tools/hooks-route.js.map +1 -0
  166. package/dist/src/mcp-tools/hooks-routing.d.ts +6 -27
  167. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  168. package/dist/src/mcp-tools/hooks-routing.js +6 -1727
  169. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  170. package/dist/src/mcp-tools/hooks-session.d.ts +9 -0
  171. package/dist/src/mcp-tools/hooks-session.d.ts.map +1 -0
  172. package/dist/src/mcp-tools/hooks-session.js +243 -0
  173. package/dist/src/mcp-tools/hooks-session.js.map +1 -0
  174. package/dist/src/mcp-tools/hooks-task.d.ts +17 -0
  175. package/dist/src/mcp-tools/hooks-task.d.ts.map +1 -0
  176. package/dist/src/mcp-tools/hooks-task.js +427 -0
  177. package/dist/src/mcp-tools/hooks-task.js.map +1 -0
  178. package/dist/src/mcp-tools/hooks-tools.d.ts +2 -1
  179. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  180. package/dist/src/mcp-tools/hooks-tools.js +2 -1
  181. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  182. package/dist/src/mcp-tools/memory-tools.js +1 -1
  183. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  184. package/dist/src/memory/bm25-index.d.ts +2 -2
  185. package/dist/src/memory/bm25-index.js +2 -2
  186. package/dist/src/memory/embedding-operations.js +2 -2
  187. package/dist/src/memory/embedding-operations.js.map +1 -1
  188. package/dist/src/memory/entity-name-key.d.ts +1 -1
  189. package/dist/src/memory/entity-name-key.js +1 -1
  190. package/dist/src/memory/hnsw-operations.d.ts +1 -1
  191. package/dist/src/memory/hnsw-operations.js +1 -1
  192. package/dist/src/memory/memory-bridge-backend.d.ts +43 -0
  193. package/dist/src/memory/memory-bridge-backend.d.ts.map +1 -0
  194. package/dist/src/memory/memory-bridge-backend.js +363 -0
  195. package/dist/src/memory/memory-bridge-backend.js.map +1 -0
  196. package/dist/src/memory/memory-bridge-core.d.ts +42 -0
  197. package/dist/src/memory/memory-bridge-core.d.ts.map +1 -0
  198. package/dist/src/memory/memory-bridge-core.js +126 -0
  199. package/dist/src/memory/memory-bridge-core.js.map +1 -0
  200. package/dist/src/memory/memory-bridge-entries.d.ts +131 -0
  201. package/dist/src/memory/memory-bridge-entries.d.ts.map +1 -0
  202. package/dist/src/memory/memory-bridge-entries.js +227 -0
  203. package/dist/src/memory/memory-bridge-entries.js.map +1 -0
  204. package/dist/src/memory/memory-bridge-feedback.d.ts +60 -0
  205. package/dist/src/memory/memory-bridge-feedback.d.ts.map +1 -0
  206. package/dist/src/memory/memory-bridge-feedback.js +118 -0
  207. package/dist/src/memory/memory-bridge-feedback.js.map +1 -0
  208. package/dist/src/memory/memory-bridge-paths.d.ts +123 -0
  209. package/dist/src/memory/memory-bridge-paths.d.ts.map +1 -0
  210. package/dist/src/memory/memory-bridge-paths.js +335 -0
  211. package/dist/src/memory/memory-bridge-paths.js.map +1 -0
  212. package/dist/src/memory/memory-bridge-search.d.ts +48 -0
  213. package/dist/src/memory/memory-bridge-search.d.ts.map +1 -0
  214. package/dist/src/memory/memory-bridge-search.js +383 -0
  215. package/dist/src/memory/memory-bridge-search.js.map +1 -0
  216. package/dist/src/memory/memory-bridge-sessions.d.ts +38 -0
  217. package/dist/src/memory/memory-bridge-sessions.d.ts.map +1 -0
  218. package/dist/src/memory/memory-bridge-sessions.js +109 -0
  219. package/dist/src/memory/memory-bridge-sessions.js.map +1 -0
  220. package/dist/src/memory/memory-bridge-store.d.ts +58 -0
  221. package/dist/src/memory/memory-bridge-store.d.ts.map +1 -0
  222. package/dist/src/memory/memory-bridge-store.js +201 -0
  223. package/dist/src/memory/memory-bridge-store.js.map +1 -0
  224. package/dist/src/memory/memory-bridge.d.ts +10 -438
  225. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  226. package/dist/src/memory/memory-bridge.js +14 -1787
  227. package/dist/src/memory/memory-bridge.js.map +1 -1
  228. package/dist/src/memory/memory-kg-claims.d.ts +52 -0
  229. package/dist/src/memory/memory-kg-claims.d.ts.map +1 -0
  230. package/dist/src/memory/memory-kg-claims.js +99 -0
  231. package/dist/src/memory/memory-kg-claims.js.map +1 -0
  232. package/dist/src/memory/memory-kg-index.d.ts +86 -0
  233. package/dist/src/memory/memory-kg-index.d.ts.map +1 -0
  234. package/dist/src/memory/memory-kg-index.js +256 -0
  235. package/dist/src/memory/memory-kg-index.js.map +1 -0
  236. package/dist/src/memory/memory-kg-ingest.d.ts +44 -0
  237. package/dist/src/memory/memory-kg-ingest.d.ts.map +1 -0
  238. package/dist/src/memory/memory-kg-ingest.js +361 -0
  239. package/dist/src/memory/memory-kg-ingest.js.map +1 -0
  240. package/dist/src/memory/memory-kg-model.d.ts +168 -0
  241. package/dist/src/memory/memory-kg-model.d.ts.map +1 -0
  242. package/dist/src/memory/memory-kg-model.js +158 -0
  243. package/dist/src/memory/memory-kg-model.js.map +1 -0
  244. package/dist/src/memory/memory-kg-names.d.ts +64 -0
  245. package/dist/src/memory/memory-kg-names.d.ts.map +1 -0
  246. package/dist/src/memory/memory-kg-names.js +187 -0
  247. package/dist/src/memory/memory-kg-names.js.map +1 -0
  248. package/dist/src/memory/memory-kg-promote.d.ts +79 -0
  249. package/dist/src/memory/memory-kg-promote.d.ts.map +1 -0
  250. package/dist/src/memory/memory-kg-promote.js +248 -0
  251. package/dist/src/memory/memory-kg-promote.js.map +1 -0
  252. package/dist/src/memory/memory-kg-rebuild.d.ts +77 -0
  253. package/dist/src/memory/memory-kg-rebuild.d.ts.map +1 -0
  254. package/dist/src/memory/memory-kg-rebuild.js +299 -0
  255. package/dist/src/memory/memory-kg-rebuild.js.map +1 -0
  256. package/dist/src/memory/memory-kg-rollback.d.ts +47 -0
  257. package/dist/src/memory/memory-kg-rollback.d.ts.map +1 -0
  258. package/dist/src/memory/memory-kg-rollback.js +193 -0
  259. package/dist/src/memory/memory-kg-rollback.js.map +1 -0
  260. package/dist/src/memory/memory-kg-rules.d.ts +64 -0
  261. package/dist/src/memory/memory-kg-rules.d.ts.map +1 -0
  262. package/dist/src/memory/memory-kg-rules.js +251 -0
  263. package/dist/src/memory/memory-kg-rules.js.map +1 -0
  264. package/dist/src/memory/memory-kg-scan.d.ts +118 -0
  265. package/dist/src/memory/memory-kg-scan.d.ts.map +1 -0
  266. package/dist/src/memory/memory-kg-scan.js +209 -0
  267. package/dist/src/memory/memory-kg-scan.js.map +1 -0
  268. package/dist/src/memory/memory-kg-search.d.ts +80 -0
  269. package/dist/src/memory/memory-kg-search.d.ts.map +1 -0
  270. package/dist/src/memory/memory-kg-search.js +239 -0
  271. package/dist/src/memory/memory-kg-search.js.map +1 -0
  272. package/dist/src/memory/memory-kg.d.ts +19 -547
  273. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  274. package/dist/src/memory/memory-kg.js +10 -2389
  275. package/dist/src/memory/memory-kg.js.map +1 -1
  276. package/dist/src/orgrt/daemon-types.d.ts +196 -0
  277. package/dist/src/orgrt/daemon-types.d.ts.map +1 -0
  278. package/dist/src/orgrt/daemon-types.js +38 -0
  279. package/dist/src/orgrt/daemon-types.js.map +1 -0
  280. package/dist/src/orgrt/daemon.d.ts +70 -300
  281. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  282. package/dist/src/orgrt/daemon.js +41 -2536
  283. package/dist/src/orgrt/daemon.js.map +1 -1
  284. package/dist/src/orgrt/idle-watchdog.d.ts +39 -0
  285. package/dist/src/orgrt/idle-watchdog.d.ts.map +1 -0
  286. package/dist/src/orgrt/idle-watchdog.js +289 -0
  287. package/dist/src/orgrt/idle-watchdog.js.map +1 -0
  288. package/dist/src/orgrt/org-reload.d.ts +7 -0
  289. package/dist/src/orgrt/org-reload.d.ts.map +1 -0
  290. package/dist/src/orgrt/org-reload.js +111 -0
  291. package/dist/src/orgrt/org-reload.js.map +1 -0
  292. package/dist/src/orgrt/org-start-steps.d.ts +21 -0
  293. package/dist/src/orgrt/org-start-steps.d.ts.map +1 -0
  294. package/dist/src/orgrt/org-start-steps.js +305 -0
  295. package/dist/src/orgrt/org-start-steps.js.map +1 -0
  296. package/dist/src/orgrt/org-start.d.ts +7 -0
  297. package/dist/src/orgrt/org-start.d.ts.map +1 -0
  298. package/dist/src/orgrt/org-start.js +435 -0
  299. package/dist/src/orgrt/org-start.js.map +1 -0
  300. package/dist/src/orgrt/org-state-file.d.ts +8 -0
  301. package/dist/src/orgrt/org-state-file.d.ts.map +1 -0
  302. package/dist/src/orgrt/org-state-file.js +116 -0
  303. package/dist/src/orgrt/org-state-file.js.map +1 -0
  304. package/dist/src/orgrt/org-stop.d.ts +6 -0
  305. package/dist/src/orgrt/org-stop.d.ts.map +1 -0
  306. package/dist/src/orgrt/org-stop.js +332 -0
  307. package/dist/src/orgrt/org-stop.js.map +1 -0
  308. package/dist/src/orgrt/org-tools.d.ts +11 -0
  309. package/dist/src/orgrt/org-tools.d.ts.map +1 -0
  310. package/dist/src/orgrt/org-tools.js +305 -0
  311. package/dist/src/orgrt/org-tools.js.map +1 -0
  312. package/dist/src/orgrt/role-incarnation.d.ts +18 -0
  313. package/dist/src/orgrt/role-incarnation.d.ts.map +1 -0
  314. package/dist/src/orgrt/role-incarnation.js +374 -0
  315. package/dist/src/orgrt/role-incarnation.js.map +1 -0
  316. package/dist/src/orgrt/role-respawn.d.ts +7 -0
  317. package/dist/src/orgrt/role-respawn.d.ts.map +1 -0
  318. package/dist/src/orgrt/role-respawn.js +318 -0
  319. package/dist/src/orgrt/role-respawn.js.map +1 -0
  320. package/dist/src/orgrt/role-session-opts.d.ts +389 -0
  321. package/dist/src/orgrt/role-session-opts.d.ts.map +1 -0
  322. package/dist/src/orgrt/role-session-opts.js +289 -0
  323. package/dist/src/orgrt/role-session-opts.js.map +1 -0
  324. package/dist/src/orgrt/runner-resolve.d.ts +43 -0
  325. package/dist/src/orgrt/runner-resolve.d.ts.map +1 -0
  326. package/dist/src/orgrt/runner-resolve.js +77 -0
  327. package/dist/src/orgrt/runner-resolve.js.map +1 -0
  328. package/dist/src/orgrt/session-gate.d.ts +34 -0
  329. package/dist/src/orgrt/session-gate.d.ts.map +1 -0
  330. package/dist/src/orgrt/session-gate.js +74 -0
  331. package/dist/src/orgrt/session-gate.js.map +1 -0
  332. package/dist/src/orgrt/session-prompt.d.ts +31 -0
  333. package/dist/src/orgrt/session-prompt.d.ts.map +1 -0
  334. package/dist/src/orgrt/session-prompt.js +115 -0
  335. package/dist/src/orgrt/session-prompt.js.map +1 -0
  336. package/dist/src/orgrt/session-run.d.ts +18 -0
  337. package/dist/src/orgrt/session-run.d.ts.map +1 -0
  338. package/dist/src/orgrt/session-run.js +429 -0
  339. package/dist/src/orgrt/session-run.js.map +1 -0
  340. package/dist/src/orgrt/session-stream.d.ts +21 -0
  341. package/dist/src/orgrt/session-stream.d.ts.map +1 -0
  342. package/dist/src/orgrt/session-stream.js +173 -0
  343. package/dist/src/orgrt/session-stream.js.map +1 -0
  344. package/dist/src/orgrt/session-types.d.ts +219 -0
  345. package/dist/src/orgrt/session-types.d.ts.map +1 -0
  346. package/dist/src/orgrt/session-types.js +2 -0
  347. package/dist/src/orgrt/session-types.js.map +1 -0
  348. package/dist/src/orgrt/session-usage.d.ts +29 -0
  349. package/dist/src/orgrt/session-usage.d.ts.map +1 -0
  350. package/dist/src/orgrt/session-usage.js +64 -0
  351. package/dist/src/orgrt/session-usage.js.map +1 -0
  352. package/dist/src/orgrt/session.d.ts +5 -281
  353. package/dist/src/orgrt/session.d.ts.map +1 -1
  354. package/dist/src/orgrt/session.js +8 -1117
  355. package/dist/src/orgrt/session.js.map +1 -1
  356. package/dist/src/ui/org-hil.mjs +1 -1
  357. package/dist/src/ui/routes-org-agents.mjs +318 -0
  358. package/dist/src/ui/routes-org-approvals.mjs +133 -0
  359. package/dist/src/ui/routes-org-config.mjs +459 -0
  360. package/dist/src/ui/routes-org-control.mjs +300 -0
  361. package/dist/src/ui/routes-org-files.mjs +172 -0
  362. package/dist/src/ui/routes-org-helpers.mjs +84 -0
  363. package/dist/src/ui/routes-org-knowledge.mjs +262 -0
  364. package/dist/src/ui/routes-org-lifecycle.mjs +224 -0
  365. package/dist/src/ui/routes-org-live.mjs +278 -0
  366. package/dist/src/ui/routes-org-mastermind.mjs +346 -0
  367. package/dist/src/ui/routes-org-planning.mjs +398 -0
  368. package/dist/src/ui/routes-org-runs.mjs +430 -0
  369. package/dist/src/ui/routes-org-status.mjs +342 -0
  370. package/dist/src/ui/routes-org-workflows.mjs +212 -0
  371. package/dist/src/ui/routes-org.mjs +26 -3847
  372. package/dist/src/ui/server.mjs +1 -1
  373. package/dist/src/utils/native-error.d.ts +1 -1
  374. package/dist/src/utils/native-error.js +1 -1
  375. package/dist/src/utils/paths.d.ts +2 -1
  376. package/dist/src/utils/paths.d.ts.map +1 -1
  377. package/dist/src/utils/paths.js +2 -1
  378. package/dist/src/utils/paths.js.map +1 -1
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/org-skills/adversarial-reviewer/SKILL.md +1 -1
  381. package/org-skills/board-deck-builder/SKILL.md +1 -1
  382. package/org-skills/code-reviewer/SKILL.md +1 -1
  383. package/org-skills/debugging-wizard/SKILL.md +1 -1
  384. package/org-skills/scientific-thinking-literature-review/SKILL.md +1 -1
  385. package/org-skills/scientific-thinking-scholar-evaluation/SKILL.md +1 -1
  386. package/package.json +5 -5
@@ -0,0 +1,383 @@
1
+ /**
2
+ * Memory Bridge — the read/search path: bridgeSearchEntries (semantic +
3
+ * FTS5/BM25 keyword merge, stale and superseded-knowledge filtering,
4
+ * cross-encoder reranking). Split out of memory-bridge.ts, which re-exports
5
+ * it.
6
+ */
7
+ import { _embedder, _reranker, _rerankerPromise, getBackend, loadReranker, rerankerDisabled, rerankResults, } from './memory-bridge-backend.js';
8
+ import { blendScore, capResultContent, entryWeights, getAutomemConfig, logBridgeError, } from './memory-bridge-core.js';
9
+ import { GLOBAL_BRAIN, getGlobalBrainDir, getProjectRoot } from './memory-bridge-paths.js';
10
+ export async function bridgeSearchEntries(options) {
11
+ const backend = await getBackend(options.dbPath);
12
+ if (!backend)
13
+ return null;
14
+ try {
15
+ const { query: queryStr, limit = 10, threshold = 0.3 } = options;
16
+ // CLI callers pass 'all' as a no-filter sentinel — never treat it as a literal namespace
17
+ const namespace = options.namespace && options.namespace !== 'all' ? options.namespace : undefined;
18
+ const startTime = Date.now();
19
+ // ── Knowledge removal support (issue #106) ──────────────────────
20
+ // Pre-compute live document hashes for knowledge namespaces so we can
21
+ // (a) over-fetch to compensate for superseded entries being filtered,
22
+ // (b) filter them out after retrieval — ensuring removed documents
23
+ // are invisible to EVERY caller, not just searchKnowledge.
24
+ // Dynamic import breaks the circular dependency: document-pipeline
25
+ // imports getProjectRoot from this module.
26
+ let _knowledgeLive = null;
27
+ let _knowledgeHasMeta = false;
28
+ let _isSupersededKey = null;
29
+ const knowledgeFilterActive = namespace?.startsWith('knowledge:') && !options.includeSuperseded;
30
+ if (knowledgeFilterActive) {
31
+ try {
32
+ const dp = await import('../knowledge/document-pipeline.js');
33
+ const rootDir = options.dbPath === GLOBAL_BRAIN
34
+ ? getGlobalBrainDir()
35
+ : (options.rootDir ?? getProjectRoot());
36
+ _knowledgeLive = dp.liveContentHashes(rootDir);
37
+ _knowledgeHasMeta = dp.hasKnowledgeMetadata(rootDir);
38
+ _isSupersededKey = dp.isSupersededKey;
39
+ }
40
+ catch (e) {
41
+ logBridgeError('bridgeSearchEntries.knowledgeFilter', e); /* non-fatal: skip filtering when pipeline is unavailable */
42
+ }
43
+ }
44
+ // Over-retrieve when the reranker is available: fetch more candidates so the
45
+ // cross-encoder can reshuffle them. The reranker trims back to `limit`.
46
+ // For knowledge namespaces, also over-fetch to compensate for superseded
47
+ // document versions that will be filtered out below.
48
+ const rerankerActive = !options.skipRerank && _reranker !== null && !rerankerDisabled();
49
+ const knowledgeLimit = _knowledgeLive && _knowledgeLive.size > 0
50
+ ? Math.min(Math.max(limit * 20, limit), 300)
51
+ : limit;
52
+ const retrieveK = rerankerActive
53
+ ? Math.min(knowledgeLimit * 3, Math.max(20, knowledgeLimit))
54
+ : knowledgeLimit;
55
+ let results = [];
56
+ let searchMethod = 'keyword';
57
+ // Reported to callers so "(semantic)" can never be printed over keyword hits.
58
+ // The two reasons for skipping the vector path are distinct and must not be
59
+ // conflated: a healthy model given an empty query is not a missing model.
60
+ let fallbackReason = !_embedder
61
+ ? 'no-embedding-model'
62
+ : queryStr.length === 0
63
+ ? 'empty-query'
64
+ : undefined;
65
+ let semanticAttempted = false;
66
+ if (_embedder && queryStr.length > 0) {
67
+ semanticAttempted = true;
68
+ try {
69
+ const queryEmbedding = await _embedder(queryStr);
70
+ const searchResults = await backend.search(queryEmbedding, {
71
+ k: retrieveK,
72
+ threshold,
73
+ filters: namespace ? { type: 'exact', namespace } : undefined,
74
+ });
75
+ const { feedbackInfluence } = getAutomemConfig();
76
+ results = searchResults
77
+ .map((r) => {
78
+ const weights = entryWeights(r.entry.metadata);
79
+ // Blend only here (semantic path): r.score is a genuine cosine similarity.
80
+ const blended = blendScore(r.score, weights, feedbackInfluence);
81
+ return {
82
+ id: r.entry.id,
83
+ key: r.entry.key,
84
+ content: capResultContent(r.entry.content || ''),
85
+ score: blended,
86
+ namespace: r.entry.namespace,
87
+ provenance: `semantic:${r.score.toFixed(3)}${blended !== r.score ? `→${blended.toFixed(3)}` : ''}`,
88
+ tags: r.entry.tags ?? [],
89
+ _createdAt: r.entry.createdAt || 0,
90
+ };
91
+ })
92
+ .sort((a, b) => b.score - a.score);
93
+ searchMethod = 'semantic';
94
+ fallbackReason = undefined;
95
+ }
96
+ catch (e) {
97
+ // fall through to keyword search — but never claim this was semantic
98
+ fallbackReason = 'embedding-failed';
99
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
100
+ console.error('[memory-bridge] semantic search failed — falling back to keyword matching:', e);
101
+ }
102
+ }
103
+ // Keyword search — always runs (not just as a fallback).
104
+ // Entries stored without embeddings are invisible to the vector path,
105
+ // so keyword results are merged into semantic results (union, deduplicated
106
+ // by key) to ensure every findable entry surfaces regardless of whether
107
+ // it has an embedding. Semantic hits take priority on score.
108
+ //
109
+ // Issue #66: When the backend has FTS5, keyword matching runs inside
110
+ // SQLite via MATCH — orders of magnitude faster than the old path that
111
+ // loaded up to 50k rows and scanned them in JS. The JS fallback is
112
+ // kept for sql.js WASM builds that lack the FTS5 extension.
113
+ {
114
+ const tokens = queryStr
115
+ .toLowerCase()
116
+ .split(/[^a-z0-9]+/)
117
+ .filter((t) => t.length > 1);
118
+ let keywordHits = [];
119
+ if (tokens.length) {
120
+ // ── FTS5 fast path ──────────────────────────────────────────
121
+ const fts5Results = typeof backend.keywordSearch === 'function'
122
+ ? await backend.keywordSearch(queryStr, { namespace, limit }).catch(() => null)
123
+ : null;
124
+ if (fts5Results !== null && fts5Results.length > 0) {
125
+ // FTS5 rank is negative (lower = better); normalise to 0–1 against
126
+ // the BEST (largest-magnitude) result, not a hard floor of 1
127
+ // (issue #224). BM25 IDF goes to zero/negative when a query term
128
+ // appears in most or all of the matched rows — a small or
129
+ // lexically-homogeneous result set (a duplicated FTS row for one
130
+ // entry, per sql-schema.ts's `ensureFTS5Triggers`, was one way to
131
+ // reach exactly this) — so a genuinely-best (or sole) match can
132
+ // legitimately have |rank| < 1. A hard `Math.max(…,
133
+ // 1)` floor then divides that down toward 0, displaying the
134
+ // correct top match as ~0.00 instead of its best-available 1.0.
135
+ // Mirrors the identical fix already applied to the JS BM25
136
+ // fallback below (#126-review): only fall back to a floor of 1
137
+ // when every rank is genuinely 0 (nothing to normalise against),
138
+ // never merely because the raw magnitude is under 1.
139
+ const rawMaxRank = Math.max(...fts5Results.map((r) => Math.abs(r.rank)));
140
+ const maxRank = rawMaxRank > 0 ? rawMaxRank : 1;
141
+ keywordHits = fts5Results.map((r) => {
142
+ const score = rawMaxRank > 0 ? Math.abs(r.rank) / maxRank : 1;
143
+ return {
144
+ id: r.id,
145
+ key: r.key,
146
+ content: capResultContent(r.content || ''),
147
+ score,
148
+ namespace: r.namespace,
149
+ provenance: `keyword-fts5:${score.toFixed(2)}`,
150
+ tags: [],
151
+ _createdAt: 0,
152
+ };
153
+ });
154
+ }
155
+ else {
156
+ // ── JS fallback (no FTS5 or empty FTS5 result) ────────────
157
+ const entries = await backend.query({
158
+ type: 'exact',
159
+ ...(namespace ? { namespace } : {}),
160
+ limit: 50000,
161
+ });
162
+ // #126: Bm25Index.build() costs real time at scale (measured in
163
+ // bm25-index.ts's own header: ~113ms/673 chunks, ~1.7s/12.5k
164
+ // chunks) — this fallback can be handed up to 50,000 entries, so
165
+ // building a fresh index on every call without a cap would make
166
+ // large stores' searches slower, not better. Below the cap, BM25
167
+ // (proper IDF weighting) replaces the naive token-overlap-fraction
168
+ // scan; above it, the fast scan keeps running so latency never
169
+ // regresses. MONOMIND_BM25=0 disables this arm entirely (mirrors
170
+ // the MONOMIND_RERANKER kill-switch).
171
+ const BM25_ENTRY_CAP = 1500;
172
+ const bm25Enabled = (process.env.MONOMIND_BM25 ?? '1') !== '0';
173
+ let bm25Ok = false;
174
+ if (bm25Enabled && entries.length > 0 && entries.length <= BM25_ENTRY_CAP) {
175
+ try {
176
+ const { Bm25Index } = await import('./bm25-index.js');
177
+ // #126-review: index by the entry's ARRAY POSITION, not e.key —
178
+ // memory_entries only enforces UNIQUE(namespace, key), so a bare
179
+ // key string can legitimately repeat across namespaces (e.g. two
180
+ // agents each storing a 'summary' key in their own namespace).
181
+ // Keying by e.key alone collided in that case: every BM25 hit
182
+ // sharing that key string resolved to whichever entry happened
183
+ // to be inserted last into the lookup map, silently returning
184
+ // the wrong entry's id/content/namespace.
185
+ const chunks = entries.map((e, i) => ({
186
+ key: String(i),
187
+ text: `${e.key || ''} ${e.content || ''}`,
188
+ }));
189
+ const idx = Bm25Index.build(chunks, () => false); // no superseded concept at this generic KV level — filtered later by callers that care
190
+ const hits = idx.search(queryStr, limit);
191
+ // #126-review: Math.max(..., 1) as a divide-by-zero guard also
192
+ // silently floors the normalization divisor whenever every real
193
+ // score is < 1 (common for small/sparse corpora — exactly the
194
+ // regime this capped fallback runs in), so the top hit stopped
195
+ // normalizing to 1.0 as the comment below claims. Only fall
196
+ // back to 1 when there is no positive score to divide by.
197
+ const rawMax = hits.length ? Math.max(...hits.map((h) => h.score)) : 0;
198
+ const maxScore = rawMax > 0 ? rawMax : 1;
199
+ keywordHits = hits.map((h) => {
200
+ const e = entries[Number(h.key)];
201
+ const normalized = h.score / maxScore; // BM25 scores aren't comparable across queries/corpora — normalise 0-1 like the FTS5 path does
202
+ return {
203
+ id: e.id,
204
+ key: e.key,
205
+ content: capResultContent(e.content || ''),
206
+ score: normalized,
207
+ namespace: e.namespace,
208
+ provenance: `keyword-bm25:${normalized.toFixed(2)}`,
209
+ tags: e.tags ?? [],
210
+ _createdAt: e.createdAt || 0,
211
+ };
212
+ });
213
+ bm25Ok = true;
214
+ }
215
+ catch (e) {
216
+ // #126-review: BM25 build/search had no local try/catch, unlike
217
+ // every other sub-path in this function — an exception here
218
+ // used to propagate to the function's single outer catch,
219
+ // discarding the whole call (including already-computed
220
+ // semantic results) instead of degrading to the naive scan
221
+ // below, which is what every other keyword-path failure does.
222
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
223
+ console.error('[memory-bridge] BM25 keyword search failed — falling back to token-overlap scan:', e);
224
+ }
225
+ }
226
+ if (!bm25Ok) {
227
+ keywordHits = entries
228
+ .map((e) => {
229
+ const haystack = `${e.key || ''} ${e.content || ''}`.toLowerCase();
230
+ const hits = tokens.filter((t) => haystack.includes(t)).length;
231
+ return { e, score: hits / tokens.length };
232
+ })
233
+ .filter((x) => x.score > 0)
234
+ .sort((a, b) => b.score - a.score)
235
+ .slice(0, limit)
236
+ .map(({ e, score }) => ({
237
+ id: e.id,
238
+ key: e.key,
239
+ content: capResultContent(e.content || ''),
240
+ // Raw token-overlap fraction, NOT rescaled to look like a cosine.
241
+ score,
242
+ namespace: e.namespace,
243
+ provenance: `keyword:${score.toFixed(2)}`,
244
+ tags: e.tags ?? [],
245
+ _createdAt: e.createdAt || 0,
246
+ }));
247
+ }
248
+ }
249
+ // Issue #223/#224 follow-up: FTS5/BM25 ranks above are normalised
250
+ // RELATIVE to the best result in this call's own small candidate set
251
+ // (score = |rank| / maxRank), so the top — or sole — hit always
252
+ // lands at ~1.0 by construction, no matter how weak the actual
253
+ // match is. `options.threshold` compared against that already-
254
+ // inflated score can never reject a top/sole hit, so a single
255
+ // coincidental partial-token overlap looks exactly as confident as
256
+ // a genuine strong match. Gate on independent evidence instead: how
257
+ // much of the QUERY the candidate actually covers. This can only
258
+ // narrow the result set (never rescue something already excluded),
259
+ // and doesn't touch the rank-normalisation math other callers rely on.
260
+ keywordHits = keywordHits.filter((h) => {
261
+ if (h.score < threshold)
262
+ return false;
263
+ const haystack = `${h.key || ''} ${h.content || ''}`.toLowerCase();
264
+ const matchedFraction = tokens.filter((t) => haystack.includes(t)).length / tokens.length;
265
+ return matchedFraction >= threshold;
266
+ });
267
+ if (results.length === 0) {
268
+ // No semantic results — keyword is all we have.
269
+ results = keywordHits;
270
+ searchMethod = semanticAttempted ? 'keyword-fallback' : 'keyword';
271
+ if (semanticAttempted && !fallbackReason)
272
+ fallbackReason = 'no-semantic-matches';
273
+ }
274
+ else {
275
+ // Merge: union deduplicated by key, semantic wins on duplicates.
276
+ // Extras are flagged _keywordOnly so the reranking step below can
277
+ // skip them — the cross-encoder scores r.content, and an entry
278
+ // findable ONLY by keyword (e.g. a placeholder/near-empty content
279
+ // whose relevance lives in the key) reranks as noise and gets
280
+ // sliced off by the final `limit`, silently defeating the whole
281
+ // point of merging it in. Guaranteed inclusion has to survive
282
+ // reranking, not just the merge.
283
+ const seenKeys = new Set(results.map((r) => r.key));
284
+ const extras = keywordHits.filter((kh) => !seenKeys.has(kh.key));
285
+ if (extras.length) {
286
+ results = [...results, ...extras.map((e) => ({ ...e, _keywordOnly: true }))];
287
+ // searchMethod stays 'semantic' — the primary path succeeded;
288
+ // keyword only supplemented entries that lacked embeddings.
289
+ }
290
+ }
291
+ }
292
+ else if (results.length === 0) {
293
+ // Empty token list AND no semantic results — nothing to search.
294
+ searchMethod = semanticAttempted ? 'keyword-fallback' : 'keyword';
295
+ if (semanticAttempted && !fallbackReason)
296
+ fallbackReason = 'no-semantic-matches';
297
+ }
298
+ }
299
+ // Filter stale entries based on automem config — skip for knowledge
300
+ // namespaces (documents should remain searchable indefinitely)
301
+ // Stale filtering is per-RESULT namespace (documents stay searchable
302
+ // forever) — keying it on the query's namespace filter meant an
303
+ // all-namespace search silently dropped knowledge:* results past the
304
+ // stale cutoff.
305
+ // org:* (cross-run org memory) and rules are durable learned state like
306
+ // documents — the stale cliff silently erased org recall after a week.
307
+ const durableNs = (ns) => ns.startsWith('knowledge:') ||
308
+ ns.startsWith('org:') ||
309
+ ns.startsWith('agent:') ||
310
+ ns.startsWith('kg:') ||
311
+ ns === 'rules';
312
+ const isKnowledgeNs = namespace ? durableNs(namespace) : false;
313
+ if (!isKnowledgeNs) {
314
+ const { staleDays } = getAutomemConfig();
315
+ const staleCutoff = Date.now() - staleDays * 86400000;
316
+ results = results.filter((r) => durableNs(String(r.namespace ?? '')) || !r._createdAt || r._createdAt > staleCutoff);
317
+ }
318
+ results.forEach((r) => delete r._createdAt);
319
+ // ── Knowledge superseded filtering (issue #106) ─────────────────
320
+ // Remove document chunks whose content hash is no longer current
321
+ // (i.e. the document was removed via `knowledge_remove` or replaced
322
+ // by a newer ingest). This runs inside the bridge so every caller —
323
+ // embeddings_search, CLI `memory search`, and searchKnowledge — gets
324
+ // the same removal guarantee.
325
+ if (_knowledgeLive && _isSupersededKey && results.length > 0) {
326
+ results = results.filter((r) => !_isSupersededKey?.(String(r.key ?? ''), _knowledgeLive, _knowledgeHasMeta));
327
+ // Trim back to the originally requested limit after overfetch — but
328
+ // never let this blind size-based cut drop a _keywordOnly extra (see
329
+ // the merge above): reserve its slot and trim the rest first.
330
+ if (results.length > limit) {
331
+ const extras = results.filter((r) => r._keywordOnly);
332
+ const main = results.filter((r) => !r._keywordOnly);
333
+ const keep = Math.max(0, limit - extras.length);
334
+ results = [...main.slice(0, keep), ...extras.slice(0, limit)];
335
+ }
336
+ }
337
+ // Keyword-only extras are guaranteed to survive to the final result —
338
+ // pull them out before reranking so the cross-encoder (which scores
339
+ // r.content only) can't outrank them into oblivion, then reserve their
340
+ // slots when re-merging below.
341
+ const keywordOnlyResults = results.filter((r) => r._keywordOnly);
342
+ let rerankPool = results.filter((r) => !r._keywordOnly);
343
+ // ── Cross-encoder reranking ──────────────────────────────────────
344
+ // Fires only when: reranker loaded, >1 result, not explicitly skipped.
345
+ // Lazy-load on first qualifying search so startup stays fast.
346
+ let reranked = false;
347
+ if (!options.skipRerank && !rerankerDisabled() && rerankPool.length > 1) {
348
+ if (!_reranker && !_rerankerPromise) {
349
+ // First qualifying search — kick off the lazy load. This search
350
+ // proceeds without reranking; the NEXT search will use it.
351
+ loadReranker().catch(() => {
352
+ /* swallowed — retry next time */
353
+ });
354
+ }
355
+ if (_reranker) {
356
+ const rr = await rerankResults(queryStr, rerankPool, limit);
357
+ rerankPool = rr.reranked;
358
+ reranked = rr.applied;
359
+ }
360
+ }
361
+ if (keywordOnlyResults.length) {
362
+ const keep = Math.max(0, limit - keywordOnlyResults.length);
363
+ results = [...rerankPool.slice(0, keep), ...keywordOnlyResults.slice(0, limit)];
364
+ }
365
+ else {
366
+ results = rerankPool;
367
+ }
368
+ results.forEach((r) => delete r._keywordOnly);
369
+ return {
370
+ success: true,
371
+ results,
372
+ searchTime: Date.now() - startTime,
373
+ searchMethod,
374
+ reranked,
375
+ ...(searchMethod === 'semantic' ? {} : { fallbackReason }),
376
+ };
377
+ }
378
+ catch (e) {
379
+ logBridgeError('bridgeSearchEntries', e);
380
+ return null;
381
+ }
382
+ }
383
+ //# sourceMappingURL=memory-bridge-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-bridge-search.js","sourceRoot":"","sources":["../../../src/memory/memory-bridge-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Memory Bridge — session lifecycle rows (start, end, latest) in the
3
+ * `sessions` namespace. Split out of memory-bridge.ts, which re-exports the
4
+ * public symbols.
5
+ */
6
+ export declare function bridgeSessionStart(options: {
7
+ sessionId: string;
8
+ agentId?: string;
9
+ metadata?: Record<string, unknown>;
10
+ dbPath?: string;
11
+ }): Promise<{
12
+ success: boolean;
13
+ id: string;
14
+ error?: string;
15
+ } | null>;
16
+ export declare function bridgeSessionEnd(options: {
17
+ sessionId: string;
18
+ summary?: string;
19
+ metrics?: Record<string, unknown>;
20
+ dbPath?: string;
21
+ }): Promise<{
22
+ success: boolean;
23
+ error?: string;
24
+ } | null>;
25
+ /** The most recently started session recorded by bridgeSessionStart, read
26
+ * back from its row — or null when there is none (or no backend). */
27
+ export declare function bridgeLatestSession(options: {
28
+ excludeSessionId?: string;
29
+ dbPath?: string;
30
+ }): Promise<{
31
+ sessionId: string;
32
+ status: string;
33
+ startedAt: string;
34
+ endedAt?: string;
35
+ summary?: string;
36
+ metrics?: Record<string, unknown>;
37
+ } | null>;
38
+ //# sourceMappingURL=memory-bridge-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-bridge-sessions.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-bridge-sessions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAgBnE;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAoCvD;AAED;sEACsE;AACtE,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,GAAG,IAAI,CAAC,CAuCR"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Memory Bridge — session lifecycle rows (start, end, latest) in the
3
+ * `sessions` namespace. Split out of memory-bridge.ts, which re-exports the
4
+ * public symbols.
5
+ */
6
+ import { flushBackend, getBackend } from './memory-bridge-backend.js';
7
+ import { logBridgeError } from './memory-bridge-core.js';
8
+ import { bridgeStoreEntry } from './memory-bridge-store.js';
9
+ // ===== Session lifecycle =====
10
+ export async function bridgeSessionStart(options) {
11
+ return bridgeStoreEntry({
12
+ key: `session_${options.sessionId}`,
13
+ value: JSON.stringify({
14
+ sessionId: options.sessionId,
15
+ agentId: options.agentId,
16
+ startedAt: Date.now(),
17
+ status: 'active',
18
+ metadata: options.metadata ?? {},
19
+ }),
20
+ namespace: 'sessions',
21
+ tags: ['session', 'active'],
22
+ generateEmbeddingFlag: false,
23
+ dbPath: options.dbPath,
24
+ upsert: true,
25
+ });
26
+ }
27
+ export async function bridgeSessionEnd(options) {
28
+ const backend = await getBackend(options.dbPath);
29
+ if (!backend)
30
+ return null;
31
+ try {
32
+ const existing = await backend.getByKey('sessions', `session_${options.sessionId}`);
33
+ // Nothing is written for a session that was never started — do not report
34
+ // that as a recorded session end.
35
+ if (!existing)
36
+ return { success: false, error: `no session ${options.sessionId} to end` };
37
+ let data = {};
38
+ try {
39
+ data = JSON.parse(existing.content);
40
+ }
41
+ catch (e) {
42
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
43
+ console.error('[memory-bridge] session content failed to parse — ending session with empty prior state:', e);
44
+ }
45
+ const updated = await backend.update(existing.id, {
46
+ content: JSON.stringify({
47
+ ...data,
48
+ status: 'ended',
49
+ endedAt: Date.now(),
50
+ summary: options.summary,
51
+ metrics: options.metrics ?? {},
52
+ }),
53
+ tags: ['session', 'ended'],
54
+ });
55
+ if (!updated)
56
+ return { success: false, error: `session ${options.sessionId} vanished` };
57
+ await flushBackend(backend);
58
+ return { success: true };
59
+ }
60
+ catch (e) {
61
+ logBridgeError('bridgeSessionEnd', e);
62
+ return { success: false };
63
+ }
64
+ }
65
+ /** The most recently started session recorded by bridgeSessionStart, read
66
+ * back from its row — or null when there is none (or no backend). */
67
+ export async function bridgeLatestSession(options) {
68
+ const backend = await getBackend(options.dbPath);
69
+ if (!backend)
70
+ return null;
71
+ try {
72
+ // Newest two rows: one of them may be the excluded (current) session.
73
+ const rows = await backend.query({
74
+ type: 'exact',
75
+ namespace: 'sessions',
76
+ keyPrefix: 'session_',
77
+ sortField: 'createdAt',
78
+ sortDirection: 'desc',
79
+ limit: 2,
80
+ });
81
+ for (const row of rows) {
82
+ let data;
83
+ try {
84
+ data = JSON.parse(row.content);
85
+ }
86
+ catch {
87
+ continue;
88
+ }
89
+ if (typeof data?.sessionId !== 'string' || data.sessionId === options.excludeSessionId)
90
+ continue;
91
+ return {
92
+ sessionId: data.sessionId,
93
+ status: typeof data.status === 'string' ? data.status : 'unknown',
94
+ startedAt: new Date(data.startedAt ?? row.createdAt).toISOString(),
95
+ ...(typeof data.endedAt === 'number'
96
+ ? { endedAt: new Date(data.endedAt).toISOString() }
97
+ : {}),
98
+ ...(typeof data.summary === 'string' ? { summary: data.summary } : {}),
99
+ ...(data.metrics && typeof data.metrics === 'object' ? { metrics: data.metrics } : {}),
100
+ };
101
+ }
102
+ return null;
103
+ }
104
+ catch (e) {
105
+ logBridgeError('bridgeLatestSession', e);
106
+ return null;
107
+ }
108
+ }
109
+ //# sourceMappingURL=memory-bridge-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-bridge-sessions.js","sourceRoot":"","sources":["../../../src/memory/memory-bridge-sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Memory Bridge — the write path: bridgeStoreEntry (upsert identity, dedup
3
+ * gate, compare-and-swap) and the usage-recording helper it shares with the
4
+ * feedback loop. Split out of memory-bridge.ts, which re-exports the public
5
+ * symbols.
6
+ */
7
+ export declare function bridgeStoreEntry(options: {
8
+ key: string;
9
+ value: string;
10
+ namespace?: string;
11
+ generateEmbeddingFlag?: boolean;
12
+ tags?: string[];
13
+ ttl?: number;
14
+ dbPath?: string;
15
+ upsert?: boolean;
16
+ /** Structured metadata persisted on the entry (KG nodes/edges, weights, provenance). */
17
+ metadata?: Record<string, unknown>;
18
+ /** Compare-and-swap guard for a read-merge-write caller (memory-kg.ts's
19
+ * claim-ledger merge, K5). `'absent'` requires no row to exist yet at this
20
+ * key; a number requires the row's CURRENT stored version to still equal
21
+ * it. Either way, the check and the write are one atomic SQL statement
22
+ * (see SqlBackend.storeIfVersion/storeIfAbsent) — a caller that read this
23
+ * row (or found it absent) moments ago finds out here, via `conflict`,
24
+ * whether a concurrent writer beat it, instead of silently overwriting (or
25
+ * being overwritten by) that writer's update. Omit for the plain
26
+ * last-write-wins upsert every other caller already relies on. */
27
+ ifVersion?: number | 'absent';
28
+ }): Promise<{
29
+ success: boolean;
30
+ id: string;
31
+ embedding?: {
32
+ dimensions: number;
33
+ model: string;
34
+ };
35
+ guarded?: boolean;
36
+ cached?: boolean;
37
+ attested?: boolean;
38
+ duplicate?: boolean;
39
+ /** True when `ifVersion` did not match the row's current state — the row
40
+ * changed (or was created) concurrently. `success` is false alongside this;
41
+ * nothing was written. The caller must re-read and retry, not treat this
42
+ * as a transient error. */
43
+ conflict?: boolean;
44
+ error?: string;
45
+ } | null>;
46
+ /** Ids a usage/feedback pass could not train, with why — so `updated: 0` and
47
+ * `applied: 0` are never a silent success. `not_found` means the id resolved
48
+ * to no entry (deleted, or orphaned by an older re-ingest); `error` means the
49
+ * entry existed but could not be updated. */
50
+ export type SkippedEntry = {
51
+ id: string;
52
+ reason: 'not_found' | 'error';
53
+ };
54
+ export declare function recordUsageOnBackend(backend: any, entryIds: string[]): Promise<{
55
+ updated: number;
56
+ skipped: SkippedEntry[];
57
+ }>;
58
+ //# sourceMappingURL=memory-bridge-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-bridge-store.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-bridge-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;;;;;;uEAQmE;IACnE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC/B,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;gCAG4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAAC,CAqLR;AAED;;;8CAG8C;AAC9C,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAA;CAAE,CAAC;AAEzE,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAuBvD"}