openclaw-hybrid-memory 2026.5.310 → 2026.6.10

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 (535) hide show
  1. package/api/plugin-runtime.ts +2 -0
  2. package/backends/facts-db/contradictions.ts +1 -1
  3. package/cli/cmd-extract-directives.ts +225 -11
  4. package/cli/cmd-extract-proposals.ts +5 -6
  5. package/cli/cmd-extract-reinforcement.ts +71 -0
  6. package/cli/cmd-feedback.ts +15 -9
  7. package/cli/commands/manage/register-reflection-pipeline.ts +247 -13
  8. package/cli/commands/manage/register-storage-maintenance.ts +224 -15
  9. package/cli/commands/manage/storage-stats-helpers.ts +13 -2
  10. package/cli/context.ts +9 -19
  11. package/cli/distill.ts +31 -1
  12. package/cli/register.ts +28 -38
  13. package/dist/api/plugin-runtime.js.map +1 -1
  14. package/dist/backends/agent-health-store.js.map +1 -1
  15. package/dist/backends/apitap-store.js.map +1 -1
  16. package/dist/backends/audit-store.js.map +1 -1
  17. package/dist/backends/base-sqlite-store.js.map +1 -1
  18. package/dist/backends/cost-tracker.js.map +1 -1
  19. package/dist/backends/credentials-db.js +2 -3
  20. package/dist/backends/credentials-db.js.map +1 -1
  21. package/dist/backends/crystallization-store.js.map +1 -1
  22. package/dist/backends/edict-store.js.map +1 -1
  23. package/dist/backends/event-bus.js.map +1 -1
  24. package/dist/backends/event-log.js.map +1 -1
  25. package/dist/backends/facts-db/cache-manager.js.map +1 -1
  26. package/dist/backends/facts-db/clusters.js.map +1 -1
  27. package/dist/backends/facts-db/contradictions.js +1 -1
  28. package/dist/backends/facts-db/contradictions.js.map +1 -1
  29. package/dist/backends/facts-db/crud.js.map +1 -1
  30. package/dist/backends/facts-db/db-connection.js.map +1 -1
  31. package/dist/backends/facts-db/entity-autolink.js.map +1 -1
  32. package/dist/backends/facts-db/entity-layer.js.map +1 -1
  33. package/dist/backends/facts-db/episodes.js.map +1 -1
  34. package/dist/backends/facts-db/fact-queries.js.map +1 -1
  35. package/dist/backends/facts-db/fact-read-queries.js.map +1 -1
  36. package/dist/backends/facts-db/facts-db-layer1.js.map +1 -1
  37. package/dist/backends/facts-db/facts-db-layer2.js.map +1 -1
  38. package/dist/backends/facts-db/facts-db-layer3.js.map +1 -1
  39. package/dist/backends/facts-db/fts-text.js.map +1 -1
  40. package/dist/backends/facts-db/generated-skills/policy.js.map +1 -1
  41. package/dist/backends/facts-db/generated-skills.js.map +1 -1
  42. package/dist/backends/facts-db/housekeeping.js.map +1 -1
  43. package/dist/backends/facts-db/links.js.map +1 -1
  44. package/dist/backends/facts-db/maintenance.js.map +1 -1
  45. package/dist/backends/facts-db/procedures/crud.js.map +1 -1
  46. package/dist/backends/facts-db/procedures/internal.js.map +1 -1
  47. package/dist/backends/facts-db/procedures/promotion.js.map +1 -1
  48. package/dist/backends/facts-db/procedures/search.js.map +1 -1
  49. package/dist/backends/facts-db/procedures/stats.js.map +1 -1
  50. package/dist/backends/facts-db/reinforcement.js.map +1 -1
  51. package/dist/backends/facts-db/row-mapper.js.map +1 -1
  52. package/dist/backends/facts-db/scan-cursors.js.map +1 -1
  53. package/dist/backends/facts-db/schema-bootstrap.js.map +1 -1
  54. package/dist/backends/facts-db/scope-sql.js.map +1 -1
  55. package/dist/backends/facts-db/search.js.map +1 -1
  56. package/dist/backends/facts-db/stats.js.map +1 -1
  57. package/dist/backends/facts-db/types.js.map +1 -1
  58. package/dist/backends/facts-db/variants.js.map +1 -1
  59. package/dist/backends/identity-reflection-store.js.map +1 -1
  60. package/dist/backends/issue-store.js.map +1 -1
  61. package/dist/backends/learnings-db.js.map +1 -1
  62. package/dist/backends/migrations/facts-migrations.js.map +1 -1
  63. package/dist/backends/migrations/procedures.js.map +1 -1
  64. package/dist/backends/narratives-db.js.map +1 -1
  65. package/dist/backends/persona-state-store.js.map +1 -1
  66. package/dist/backends/proposals-db.js.map +1 -1
  67. package/dist/backends/scope-filter-sql.js.map +1 -1
  68. package/dist/backends/sqlite-schema-meta.js.map +1 -1
  69. package/dist/backends/tool-proposal-store.js.map +1 -1
  70. package/dist/backends/vector-db/constants.js.map +1 -1
  71. package/dist/backends/vector-db/path-utils.js.map +1 -1
  72. package/dist/backends/vector-db/runtime-locks.js.map +1 -1
  73. package/dist/backends/vector-db/vector-db-class.js.map +1 -1
  74. package/dist/backends/wal.js.map +1 -1
  75. package/dist/backends/workflow-store.js.map +1 -1
  76. package/dist/benchmark/shadow-eval.js.map +1 -1
  77. package/dist/cli/active-tasks.js.map +1 -1
  78. package/dist/cli/backup.js.map +1 -1
  79. package/dist/cli/benchmark.js.map +1 -1
  80. package/dist/cli/cmd-backfill.js.map +1 -1
  81. package/dist/cli/cmd-config.js.map +1 -1
  82. package/dist/cli/cmd-credentials.js.map +1 -1
  83. package/dist/cli/cmd-demo.js.map +1 -1
  84. package/dist/cli/cmd-distill.js.map +1 -1
  85. package/dist/cli/cmd-doctor.js.map +1 -1
  86. package/dist/cli/cmd-examples.js.map +1 -1
  87. package/dist/cli/cmd-extract-daily.js.map +1 -1
  88. package/dist/cli/cmd-extract-directives.js +141 -10
  89. package/dist/cli/cmd-extract-directives.js.map +1 -1
  90. package/dist/cli/cmd-extract-procedures.js.map +1 -1
  91. package/dist/cli/cmd-extract-proposals.js +3 -2
  92. package/dist/cli/cmd-extract-proposals.js.map +1 -1
  93. package/dist/cli/cmd-extract-reinforcement.js +39 -0
  94. package/dist/cli/cmd-extract-reinforcement.js.map +1 -1
  95. package/dist/cli/cmd-extract-sessions.js.map +1 -1
  96. package/dist/cli/cmd-feedback.js +9 -4
  97. package/dist/cli/cmd-feedback.js.map +1 -1
  98. package/dist/cli/cmd-health.js.map +1 -1
  99. package/dist/cli/cmd-providers.js.map +1 -1
  100. package/dist/cli/cmd-selfcorrection.js.map +1 -1
  101. package/dist/cli/cmd-setup.js.map +1 -1
  102. package/dist/cli/cmd-status.js.map +1 -1
  103. package/dist/cli/cmd-store.js.map +1 -1
  104. package/dist/cli/cmd-user-friendly.js.map +1 -1
  105. package/dist/cli/cmd-verify.js.map +1 -1
  106. package/dist/cli/commands/manage/bindings.js.map +1 -1
  107. package/dist/cli/commands/manage/dream-cycle-followup.js.map +1 -1
  108. package/dist/cli/commands/manage/maintenance-heartbeat.js.map +1 -1
  109. package/dist/cli/commands/manage/register-agents-audit-runall.js.map +1 -1
  110. package/dist/cli/commands/manage/register-analyze-maintenance-logs.js.map +1 -1
  111. package/dist/cli/commands/manage/register-budget-proposals.js.map +1 -1
  112. package/dist/cli/commands/manage/register-config-cli.js.map +1 -1
  113. package/dist/cli/commands/manage/register-corrections-and-pipeline.js.map +1 -1
  114. package/dist/cli/commands/manage/register-corrections.js.map +1 -1
  115. package/dist/cli/commands/manage/register-council.js.map +1 -1
  116. package/dist/cli/commands/manage/register-credentials-scope.js.map +1 -1
  117. package/dist/cli/commands/manage/register-digest.js.map +1 -1
  118. package/dist/cli/commands/manage/register-lifecycle.js.map +1 -1
  119. package/dist/cli/commands/manage/register-procedure-lifecycle.js.map +1 -1
  120. package/dist/cli/commands/manage/register-reconcile-cron-ledgers.js.map +1 -1
  121. package/dist/cli/commands/manage/register-reflection-pipeline.js +144 -7
  122. package/dist/cli/commands/manage/register-reflection-pipeline.js.map +1 -1
  123. package/dist/cli/commands/manage/register-self-correction-feedback.js.map +1 -1
  124. package/dist/cli/commands/manage/register-storage-and-stats.js.map +1 -1
  125. package/dist/cli/commands/manage/register-storage-entities-decay.js.map +1 -1
  126. package/dist/cli/commands/manage/register-storage-graph-audit.js.map +1 -1
  127. package/dist/cli/commands/manage/register-storage-maintenance.js +152 -9
  128. package/dist/cli/commands/manage/register-storage-maintenance.js.map +1 -1
  129. package/dist/cli/commands/manage/register-validate-cron-exit.js.map +1 -1
  130. package/dist/cli/commands/manage/storage-stats-helpers.js +10 -3
  131. package/dist/cli/commands/manage/storage-stats-helpers.js.map +1 -1
  132. package/dist/cli/commands/register-manage-commands.js.map +1 -1
  133. package/dist/cli/config-feature-summaries.js.map +1 -1
  134. package/dist/cli/config-output-sink.js.map +1 -1
  135. package/dist/cli/distill-session-jsonl.js.map +1 -1
  136. package/dist/cli/distill.js +10 -1
  137. package/dist/cli/distill.js.map +1 -1
  138. package/dist/cli/global-verbose.js.map +1 -1
  139. package/dist/cli/goals.js.map +1 -1
  140. package/dist/cli/hybrid-mem-commander-utils.js.map +1 -1
  141. package/dist/cli/install/config-merge.js.map +1 -1
  142. package/dist/cli/install/cron-jobs.js.map +1 -1
  143. package/dist/cli/install/embedding-detect.js.map +1 -1
  144. package/dist/cli/install/run-install.js.map +1 -1
  145. package/dist/cli/install/workspace.js.map +1 -1
  146. package/dist/cli/proposals.js.map +1 -1
  147. package/dist/cli/register.js.map +1 -1
  148. package/dist/cli/shared.js.map +1 -1
  149. package/dist/cli/skills.js.map +1 -1
  150. package/dist/cli/task-queue-status.js.map +1 -1
  151. package/dist/cli/verified.js.map +1 -1
  152. package/dist/cli/verify/fact-count.js.map +1 -1
  153. package/dist/cli/verify/openclaw-config.js.map +1 -1
  154. package/dist/cli/verify/plugin-config-credentials.js.map +1 -1
  155. package/dist/cli/verify/sections/config-cron.js.map +1 -1
  156. package/dist/cli/verify/sections/embeddings.js.map +1 -1
  157. package/dist/cli/verify/sections/infrastructure.js.map +1 -1
  158. package/dist/cli/verify/sections/llm-models.js.map +1 -1
  159. package/dist/cli/verify/sections/reconcile.js.map +1 -1
  160. package/dist/cli/verify/verify-run-state.js.map +1 -1
  161. package/dist/cli/verify-llm-azure-auth.js.map +1 -1
  162. package/dist/cli/verify.js.map +1 -1
  163. package/dist/config/hybrid-schema.js.map +1 -1
  164. package/dist/config/index.js.map +1 -1
  165. package/dist/config/maintenance-fallback-policy.js.map +1 -1
  166. package/dist/config/parsers/capture.js.map +1 -1
  167. package/dist/config/parsers/core.js.map +1 -1
  168. package/dist/config/parsers/features.js.map +1 -1
  169. package/dist/config/parsers/index.js.map +1 -1
  170. package/dist/config/parsers/maintenance.js.map +1 -1
  171. package/dist/config/parsers/retrieval.js.map +1 -1
  172. package/dist/config/parsers/sensors.js.map +1 -1
  173. package/dist/config/skill-sections.js.map +1 -1
  174. package/dist/config/skill-size-limits.js.map +1 -1
  175. package/dist/config/types/agents.js.map +1 -1
  176. package/dist/config/types/bootstrap.js.map +1 -1
  177. package/dist/config/types/core.js.map +1 -1
  178. package/dist/config/types/index.js.map +1 -1
  179. package/dist/config/utils.js.map +1 -1
  180. package/dist/index-help.js.map +1 -1
  181. package/dist/index-testing-exports.js.map +1 -1
  182. package/dist/index.d.ts +1 -1
  183. package/dist/index.js +2 -2
  184. package/dist/index.js.map +1 -1
  185. package/dist/lifecycle/hook-resolution-api.js.map +1 -1
  186. package/dist/lifecycle/hooks.js +0 -1
  187. package/dist/lifecycle/hooks.js.map +1 -1
  188. package/dist/lifecycle/resolve-agent-id.js.map +1 -1
  189. package/dist/lifecycle/session-state.js.map +1 -1
  190. package/dist/lifecycle/stage-active-task.js.map +1 -1
  191. package/dist/lifecycle/stage-auth-failure.js.map +1 -1
  192. package/dist/lifecycle/stage-capture/run-capture.js.map +1 -1
  193. package/dist/lifecycle/stage-capture.js.map +1 -1
  194. package/dist/lifecycle/stage-cleanup.js.map +1 -1
  195. package/dist/lifecycle/stage-credential-hint.js.map +1 -1
  196. package/dist/lifecycle/stage-frustration.js.map +1 -1
  197. package/dist/lifecycle/stage-goal-stewardship.js.map +1 -1
  198. package/dist/lifecycle/stage-goal-subagent.js.map +1 -1
  199. package/dist/lifecycle/stage-injection.js +1 -1
  200. package/dist/lifecycle/stage-injection.js.map +1 -1
  201. package/dist/lifecycle/stage-recall/run-recall.js.map +1 -1
  202. package/dist/lifecycle/stage-recall.js.map +1 -1
  203. package/dist/lifecycle/stage-setup.js.map +1 -1
  204. package/dist/routes/dashboard/collectors.js.map +1 -1
  205. package/dist/routes/dashboard/html.js.map +1 -1
  206. package/dist/routes/dashboard/server.js.map +1 -1
  207. package/dist/routes/dashboard-graph.js.map +1 -1
  208. package/dist/routes/graphql-resolvers.js.map +1 -1
  209. package/dist/routes/graphql-server.js.map +1 -1
  210. package/dist/services/active-task-checkpoint.js.map +1 -1
  211. package/dist/services/active-task-injection.js.map +1 -1
  212. package/dist/services/active-task.js.map +1 -1
  213. package/dist/services/adaptive-catch-up-pacing.js +25 -0
  214. package/dist/services/adaptive-catch-up-pacing.js.map +1 -0
  215. package/dist/services/adaptive-maintenance-llm.js.map +1 -1
  216. package/dist/services/adaptive-model-limits.js.map +1 -1
  217. package/dist/services/ambient-retrieval.js.map +1 -1
  218. package/dist/services/apitap-service.js.map +1 -1
  219. package/dist/services/audit-health-exit-info.js.map +1 -1
  220. package/dist/services/audit-health-json.js.map +1 -1
  221. package/dist/services/auth-failure-detect.js.map +1 -1
  222. package/dist/services/auto-capture.js.map +1 -1
  223. package/dist/services/auto-classifier.js.map +1 -1
  224. package/dist/services/auto-skills-audit.js.map +1 -1
  225. package/dist/services/bootstrap-optional.js.map +1 -1
  226. package/dist/services/bootstrap-priority.js.map +1 -1
  227. package/dist/services/bootstrap.js.map +1 -1
  228. package/dist/services/capture-provenance.js.map +1 -1
  229. package/dist/services/capture-utils.js.map +1 -1
  230. package/dist/services/chat.js +22 -3
  231. package/dist/services/chat.js.map +1 -1
  232. package/dist/services/classification-scope.js.map +1 -1
  233. package/dist/services/classification.js.map +1 -1
  234. package/dist/services/cli-sql-dump.js.map +1 -1
  235. package/dist/services/consolidation.js.map +1 -1
  236. package/dist/services/context-audit.js +1 -1
  237. package/dist/services/context-audit.js.map +1 -1
  238. package/dist/services/context-budget.js.map +1 -1
  239. package/dist/services/context-engine.js.map +1 -1
  240. package/dist/services/contextual-variants.js.map +1 -1
  241. package/dist/services/continuous-verifier.js.map +1 -1
  242. package/dist/services/contradiction-adjudicator.js.map +1 -1
  243. package/dist/services/cost-context.js.map +1 -1
  244. package/dist/services/cost-feature-labels.js.map +1 -1
  245. package/dist/services/credential-migration.js.map +1 -1
  246. package/dist/services/credential-scanner.js.map +1 -1
  247. package/dist/services/credential-validation.js.map +1 -1
  248. package/dist/services/cron-exit-validator.js.map +1 -1
  249. package/dist/services/cron-guard.js.map +1 -1
  250. package/dist/services/cron-job-bash-harness.js +52 -5
  251. package/dist/services/cron-job-bash-harness.js.map +1 -1
  252. package/dist/services/cron-maintenance-reconciler.js +1 -3
  253. package/dist/services/cron-maintenance-reconciler.js.map +1 -1
  254. package/dist/services/cross-agent-learning.js.map +1 -1
  255. package/dist/services/crystallization-proposer.js.map +1 -1
  256. package/dist/services/dedupe-policy.js.map +1 -1
  257. package/dist/services/deprecated-cron-commands.js.map +1 -1
  258. package/dist/services/directive-extract.js.map +1 -1
  259. package/dist/services/document-chunker.js.map +1 -1
  260. package/dist/services/document-grader.js.map +1 -1
  261. package/dist/services/dream-cycle.js.map +1 -1
  262. package/dist/services/embedding-migration.js.map +1 -1
  263. package/dist/services/embedding-registry.js.map +1 -1
  264. package/dist/services/embeddings/chain-provider.js.map +1 -1
  265. package/dist/services/embeddings/factory.js.map +1 -1
  266. package/dist/services/embeddings/fallback-provider.js.map +1 -1
  267. package/dist/services/embeddings/ollama-provider.js.map +1 -1
  268. package/dist/services/embeddings/onnx-provider.js.map +1 -1
  269. package/dist/services/embeddings/openai-provider.js.map +1 -1
  270. package/dist/services/embeddings/shared.js +3 -3
  271. package/dist/services/embeddings/shared.js.map +1 -1
  272. package/dist/services/embeddings/types.js.map +1 -1
  273. package/dist/services/entity-enrichment-adaptive.js +128 -0
  274. package/dist/services/entity-enrichment-adaptive.js.map +1 -0
  275. package/dist/services/entity-enrichment-cli.js +389 -42
  276. package/dist/services/entity-enrichment-cli.js.map +1 -1
  277. package/dist/services/entity-enrichment.js +31 -5
  278. package/dist/services/entity-enrichment.js.map +1 -1
  279. package/dist/services/error-reporter/noisy-errors.js.map +1 -1
  280. package/dist/services/error-reporter/sanitize.js.map +1 -1
  281. package/dist/services/error-reporter.js.map +1 -1
  282. package/dist/services/event-hub-repair.js.map +1 -1
  283. package/dist/services/export-memory.js.map +1 -1
  284. package/dist/services/fact-extraction.js.map +1 -1
  285. package/dist/services/feedback-effectiveness.js.map +1 -1
  286. package/dist/services/find-duplicates.js.map +1 -1
  287. package/dist/services/frustration-detector.js.map +1 -1
  288. package/dist/services/fts-search.js.map +1 -1
  289. package/dist/services/gap-detector.js.map +1 -1
  290. package/dist/services/generated-skill-lifecycle.js.map +1 -1
  291. package/dist/services/generated-skill-validation.js.map +1 -1
  292. package/dist/services/goal-active-task-mirror.js.map +1 -1
  293. package/dist/services/goal-circuit-breaker.js.map +1 -1
  294. package/dist/services/goal-health.js.map +1 -1
  295. package/dist/services/goal-registry.js.map +1 -1
  296. package/dist/services/goal-stewardship-heartbeat.js.map +1 -1
  297. package/dist/services/goal-stewardship-llm-triage.js.map +1 -1
  298. package/dist/services/goal-stewardship-verify-cron.js.map +1 -1
  299. package/dist/services/goal-stewardship.js.map +1 -1
  300. package/dist/services/goal-subagent.js.map +1 -1
  301. package/dist/services/graph-retrieval.js.map +1 -1
  302. package/dist/services/humanizer-score.js.map +1 -1
  303. package/dist/services/hybrid-mem-cron-default-job-steps.js.map +1 -1
  304. package/dist/services/hyde-helper.js.map +1 -1
  305. package/dist/services/identity-reflection.js.map +1 -1
  306. package/dist/services/implicit-feedback-extract.js.map +1 -1
  307. package/dist/services/index.js.map +1 -1
  308. package/dist/services/ingest-utils.js.map +1 -1
  309. package/dist/services/intent-template.js.map +1 -1
  310. package/dist/services/json-array-parser.js.map +1 -1
  311. package/dist/services/knowledge-gaps.js.map +1 -1
  312. package/dist/services/language-keywords-build.js.map +1 -1
  313. package/dist/services/lifecycle/github-adapter.js.map +1 -1
  314. package/dist/services/llm-rate-limit-headers.js +1 -2
  315. package/dist/services/llm-rate-limit-headers.js.map +1 -1
  316. package/dist/services/maintenance-auto-fix.js.map +1 -1
  317. package/dist/services/maintenance-log-analyzer.js +7 -1
  318. package/dist/services/maintenance-log-analyzer.js.map +1 -1
  319. package/dist/services/maintenance-timestamp.js.map +1 -1
  320. package/dist/services/memory-diagnostics.js.map +1 -1
  321. package/dist/services/memory-index.js.map +1 -1
  322. package/dist/services/merge-results.js.map +1 -1
  323. package/dist/services/model-capabilities.js.map +1 -1
  324. package/dist/services/model-pricing.js.map +1 -1
  325. package/dist/services/narrative-recall.js.map +1 -1
  326. package/dist/services/openclaw-session-artifact.js.map +1 -1
  327. package/dist/services/passive-observer.js.map +1 -1
  328. package/dist/services/pattern-detector-hash.js.map +1 -1
  329. package/dist/services/pattern-detector.js.map +1 -1
  330. package/dist/services/pending-autopilot/foundation.js.map +1 -1
  331. package/dist/services/pending-autopilot/redaction.js.map +1 -1
  332. package/dist/services/pending-autopilot/store.js.map +1 -1
  333. package/dist/services/pending-autopilot/types.js.map +1 -1
  334. package/dist/services/pending-digest-autopilot-cron.js.map +1 -1
  335. package/dist/services/pending-digest-autopilot.js.map +1 -1
  336. package/dist/services/pending-review-digest.js.map +1 -1
  337. package/dist/services/persona-proposal-triage.js.map +1 -1
  338. package/dist/services/persona-state-promotion.js.map +1 -1
  339. package/dist/services/post-compaction-recall.js.map +1 -1
  340. package/dist/services/pre-consolidation-flush.js.map +1 -1
  341. package/dist/services/pre-finalization-guard.js.map +1 -1
  342. package/dist/services/procedure-cluster.js.map +1 -1
  343. package/dist/services/procedure-extractor.js.map +1 -1
  344. package/dist/services/procedure-promotion/duplicate-skill-cache.js.map +1 -1
  345. package/dist/services/procedure-promotion-policy.js.map +1 -1
  346. package/dist/services/procedure-selection-metrics.js.map +1 -1
  347. package/dist/services/procedure-skill-eval.js.map +1 -1
  348. package/dist/services/procedure-skill-generator.js.map +1 -1
  349. package/dist/services/procedure-skill-recipe.js.map +1 -1
  350. package/dist/services/procedure-skill-shrink.js.map +1 -1
  351. package/dist/services/procedure-skill-workflow.js.map +1 -1
  352. package/dist/services/provenance.js.map +1 -1
  353. package/dist/services/public-export-bundle.js.map +1 -1
  354. package/dist/services/python-bridge.js.map +1 -1
  355. package/dist/services/query-expander.js.map +1 -1
  356. package/dist/services/query-validator.js.map +1 -1
  357. package/dist/services/recall-pipeline.js.map +1 -1
  358. package/dist/services/recall-timing.js.map +1 -1
  359. package/dist/services/recent-http-attempts.js.map +1 -1
  360. package/dist/services/reflection/shared.js.map +1 -1
  361. package/dist/services/reflection.js.map +1 -1
  362. package/dist/services/reinforcement-extract.js.map +1 -1
  363. package/dist/services/reranker.js.map +1 -1
  364. package/dist/services/responses-adapter.js.map +1 -1
  365. package/dist/services/retrieval-aliases.js.map +1 -1
  366. package/dist/services/retrieval-mode-policy.js.map +1 -1
  367. package/dist/services/retrieval-orchestrator/packing.js.map +1 -1
  368. package/dist/services/retrieval-orchestrator.d.ts +2 -3
  369. package/dist/services/retrieval-orchestrator.js.map +1 -1
  370. package/dist/services/rrf-fusion.js.map +1 -1
  371. package/dist/services/self-correction-extract.js.map +1 -1
  372. package/dist/services/session-observability.js.map +1 -1
  373. package/dist/services/session-pre-filter.js.map +1 -1
  374. package/dist/services/shortest-path.js.map +1 -1
  375. package/dist/services/skill-allowed-tools.js.map +1 -1
  376. package/dist/services/skill-creator-validator.js.map +1 -1
  377. package/dist/services/skill-crystallizer-helpers.js.map +1 -1
  378. package/dist/services/skill-crystallizer.js.map +1 -1
  379. package/dist/services/skill-description-builder.js.map +1 -1
  380. package/dist/services/skill-eval-synthesizer.js.map +1 -1
  381. package/dist/services/skill-examples-builder.js.map +1 -1
  382. package/dist/services/skill-frontmatter.js.map +1 -1
  383. package/dist/services/skill-name-validator.js.map +1 -1
  384. package/dist/services/skill-prompt-injection.js.map +1 -1
  385. package/dist/services/skill-reference-sidecar.js.map +1 -1
  386. package/dist/services/skill-script-bundler.js.map +1 -1
  387. package/dist/services/skill-validator.js.map +1 -1
  388. package/dist/services/startup-memory-attribution.js.map +1 -1
  389. package/dist/services/task-hygiene.js.map +1 -1
  390. package/dist/services/task-ledger/canonical.js.map +1 -1
  391. package/dist/services/task-ledger-facts.js.map +1 -1
  392. package/dist/services/task-queue-leases.js.map +1 -1
  393. package/dist/services/task-queue-watchdog.js.map +1 -1
  394. package/dist/services/tool-effectiveness.js.map +1 -1
  395. package/dist/services/tool-proposer.js.map +1 -1
  396. package/dist/services/tools-md-section.js.map +1 -1
  397. package/dist/services/topic-clusters.js.map +1 -1
  398. package/dist/services/trajectory-tracker.js.map +1 -1
  399. package/dist/services/vector-backend-observability.js.map +1 -1
  400. package/dist/services/vector-lifecycle-audit.js.map +1 -1
  401. package/dist/services/vector-maintenance.js.map +1 -1
  402. package/dist/services/vector-search.js.map +1 -1
  403. package/dist/services/verification-store.js.map +1 -1
  404. package/dist/services/verified-fact-triage.js.map +1 -1
  405. package/dist/services/wal-helpers.js.map +1 -1
  406. package/dist/services/workflow-tracker.js.map +1 -1
  407. package/dist/setup/bootstrap-databases.js.map +1 -1
  408. package/dist/setup/cli-context/cli-services.js.map +1 -1
  409. package/dist/setup/cli-context/help-text.js.map +1 -1
  410. package/dist/setup/cli-context/metadata.js.map +1 -1
  411. package/dist/setup/cli-context/register-cli-with-help.js.map +1 -1
  412. package/dist/setup/cli-context/register-full.js.map +1 -1
  413. package/dist/setup/cli-context/register-help.js.map +1 -1
  414. package/dist/setup/cost-instrumentation.js.map +1 -1
  415. package/dist/setup/hybrid-memory-generation-state.js.map +1 -1
  416. package/dist/setup/hybrid-memory-reload-coordinator.js +13 -13
  417. package/dist/setup/hybrid-memory-reload-coordinator.js.map +1 -1
  418. package/dist/setup/plugin-service.js.map +1 -1
  419. package/dist/setup/provider-router.js.map +1 -1
  420. package/dist/setup/register-context-engine.js.map +1 -1
  421. package/dist/setup/register-hooks.js.map +1 -1
  422. package/dist/setup/register-plugin.js +25 -21
  423. package/dist/setup/register-plugin.js.map +1 -1
  424. package/dist/setup/register-tools.js.map +1 -1
  425. package/dist/setup/reregister-policy.js +2 -2
  426. package/dist/setup/reregister-policy.js.map +1 -1
  427. package/dist/setup/tool-installers.js.map +1 -1
  428. package/dist/setup/workspace-bootstrap.js.map +1 -1
  429. package/dist/src/worker/narratives.js.map +1 -1
  430. package/dist/tools/apitap-tools.js.map +1 -1
  431. package/dist/tools/credential-tools.js.map +1 -1
  432. package/dist/tools/crystallization-tools.js.map +1 -1
  433. package/dist/tools/dashboard-routes.js.map +1 -1
  434. package/dist/tools/document-tools.js.map +1 -1
  435. package/dist/tools/goal-tools.js.map +1 -1
  436. package/dist/tools/graph-tools.js.map +1 -1
  437. package/dist/tools/issue-tools.js.map +1 -1
  438. package/dist/tools/memory/build-runtime.js.map +1 -1
  439. package/dist/tools/memory/helpers.js.map +1 -1
  440. package/dist/tools/memory/register-checkpoint-tools.js.map +1 -1
  441. package/dist/tools/memory/register-directory-tools.js.map +1 -1
  442. package/dist/tools/memory/register-edict-tools.js.map +1 -1
  443. package/dist/tools/memory/register-episode-tools.js.map +1 -1
  444. package/dist/tools/memory/register-recall-tools.js.map +1 -1
  445. package/dist/tools/memory/register-store-tools.js.map +1 -1
  446. package/dist/tools/memory-tools.js.map +1 -1
  447. package/dist/tools/persona-tools.js.map +1 -1
  448. package/dist/tools/provenance-tools.js.map +1 -1
  449. package/dist/tools/public-api-routes.js.map +1 -1
  450. package/dist/tools/safe-register-http-route.js.map +1 -1
  451. package/dist/tools/self-extension-tools.js.map +1 -1
  452. package/dist/tools/task-hygiene-tools.js.map +1 -1
  453. package/dist/tools/utility-tools.js.map +1 -1
  454. package/dist/tools/verification-tools.js.map +1 -1
  455. package/dist/tools/workflow-tools.js.map +1 -1
  456. package/dist/types/issue-types.js.map +1 -1
  457. package/dist/types/learnings-types.js.map +1 -1
  458. package/dist/types/memory.js.map +1 -1
  459. package/dist/utils/apim-gateway-fetch.js.map +1 -1
  460. package/dist/utils/atomic-write.js.map +1 -1
  461. package/dist/utils/auth-failover.js.map +1 -1
  462. package/dist/utils/auth.js.map +1 -1
  463. package/dist/utils/compaction-model-watchdog.js.map +1 -1
  464. package/dist/utils/consolidation-controls.js.map +1 -1
  465. package/dist/utils/constants.js.map +1 -1
  466. package/dist/utils/date-detector.js.map +1 -1
  467. package/dist/utils/dates.js.map +1 -1
  468. package/dist/utils/decay.js.map +1 -1
  469. package/dist/utils/duration.js.map +1 -1
  470. package/dist/utils/embed-call.js.map +1 -1
  471. package/dist/utils/entity-lookup-resolve.js.map +1 -1
  472. package/dist/utils/entity-mention-quality.js.map +1 -1
  473. package/dist/utils/entity-stopwords.js.map +1 -1
  474. package/dist/utils/env-manager.js.map +1 -1
  475. package/dist/utils/error-tracking.js.map +1 -1
  476. package/dist/utils/event-loop-yield.js.map +1 -1
  477. package/dist/utils/extract-last-user-message.js.map +1 -1
  478. package/dist/utils/extraction-from-template.js.map +1 -1
  479. package/dist/utils/fact-embeddings.js.map +1 -1
  480. package/dist/utils/file-snapshot.js.map +1 -1
  481. package/dist/utils/format.js.map +1 -1
  482. package/dist/utils/fs.js.map +1 -1
  483. package/dist/utils/gh-repo-arg.js.map +1 -1
  484. package/dist/utils/hybrid-mem-json-cli.js.map +1 -1
  485. package/dist/utils/language-keywords.js.map +1 -1
  486. package/dist/utils/lifecycle-generation.js.map +1 -1
  487. package/dist/utils/llm-json-array.js.map +1 -1
  488. package/dist/utils/llm-selection.js.map +1 -1
  489. package/dist/utils/logger.js.map +1 -1
  490. package/dist/utils/model-provider-family.js.map +1 -1
  491. package/dist/utils/model-tier.js.map +1 -1
  492. package/dist/utils/openclaw-agent-defaults.js.map +1 -1
  493. package/dist/utils/path.js.map +1 -1
  494. package/dist/utils/plugin-root.js.map +1 -1
  495. package/dist/utils/plugin-update-check.js.map +1 -1
  496. package/dist/utils/procedure-risk.js.map +1 -1
  497. package/dist/utils/progress-indicators.js.map +1 -1
  498. package/dist/utils/prompt-loader.js.map +1 -1
  499. package/dist/utils/provenance.js.map +1 -1
  500. package/dist/utils/provider-detection.js.map +1 -1
  501. package/dist/utils/registration-superseded.js.map +1 -1
  502. package/dist/utils/salience.js.map +1 -1
  503. package/dist/utils/sanitize-messages.js.map +1 -1
  504. package/dist/utils/scope-filter.js.map +1 -1
  505. package/dist/utils/skill-discovery.js.map +1 -1
  506. package/dist/utils/sqlite-file-perms.js.map +1 -1
  507. package/dist/utils/sqlite-outcome-compat.js.map +1 -1
  508. package/dist/utils/sqlite-transaction.js.map +1 -1
  509. package/dist/utils/stable-stringify.js.map +1 -1
  510. package/dist/utils/subagent-ended-utils.js.map +1 -1
  511. package/dist/utils/tags.js.map +1 -1
  512. package/dist/utils/text.js.map +1 -1
  513. package/dist/utils/timeout.js.map +1 -1
  514. package/dist/utils/typebox.js.map +1 -1
  515. package/dist/utils/version-check.js.map +1 -1
  516. package/dist/utils/wal-replay.js.map +1 -1
  517. package/dist/versionInfo.js.map +1 -1
  518. package/index.ts +2 -2
  519. package/lifecycle/hooks.ts +0 -1
  520. package/npm-shrinkwrap.json +487 -186
  521. package/openclaw.plugin.json +1 -1
  522. package/package.json +2 -2
  523. package/services/adaptive-catch-up-pacing.ts +28 -0
  524. package/services/chat.ts +34 -1
  525. package/services/cron-job-bash-harness.ts +52 -5
  526. package/services/embeddings/shared.ts +5 -2
  527. package/services/entity-enrichment-adaptive.ts +245 -0
  528. package/services/entity-enrichment-cli.ts +553 -47
  529. package/services/entity-enrichment.ts +43 -2
  530. package/services/llm-rate-limit-headers.ts +1 -4
  531. package/services/maintenance-log-analyzer.ts +13 -9
  532. package/services/reinforcement-extract.ts +19 -0
  533. package/setup/hybrid-memory-reload-coordinator.ts +26 -0
  534. package/setup/register-plugin.ts +62 -32
  535. package/setup/reregister-policy.ts +10 -5
@@ -1,19 +1,22 @@
1
1
  import { getEnv } from "../../../utils/env-manager.js";
2
2
  import { capturePluginError } from "../../../services/error-reporter.js";
3
- import { is500OrWrapped } from "../../../services/chat.js";
3
+ import { is403QuotaOrRateLimitLike, parseRetryAfterMs } from "../../../services/llm-rate-limit-headers.js";
4
+ import { is429OrWrapped, is500OrWrapped, isConnectionErrorLike } from "../../../services/chat.js";
4
5
  import { AllEmbeddingProvidersFailed } from "../../../services/embeddings/types.js";
5
6
  import "../../../services/embeddings.js";
6
7
  import { recordMaintenanceTimestamp } from "../../../services/maintenance-timestamp.js";
7
8
  import { deleteVectorsForFactIds } from "../../../services/vector-maintenance.js";
8
9
  import { approxIntervalMs, withExit } from "../../shared.js";
9
10
  import { appendVectorLifecycleAuditEvent } from "../../../services/vector-lifecycle-audit.js";
11
+ import { computeAdaptivePressureDelayMs } from "../../../services/adaptive-catch-up-pacing.js";
12
+ import { buildVectorlessSloRepairRecommendation } from "../../../services/entity-enrichment-adaptive.js";
10
13
  import { readHybridMemVerbose } from "../../global-verbose.js";
11
14
  import { runMaintenanceHeartbeat } from "./maintenance-heartbeat.js";
12
15
  import { countPendingReviewBacklogs } from "../../../services/pending-review-digest.js";
16
+ import { isPreStoreGuardBlocked } from "../../../backends/facts-db/crud.js";
13
17
  import { migrateEmbeddings } from "../../../services/embedding-migration.js";
14
18
  import { collectVectorBackendObservability } from "../../../services/vector-backend-observability.js";
15
19
  import { embedCallWithTimeoutAndRetry } from "../../../utils/embed-call.js";
16
- import { isPreStoreGuardBlocked } from "../../../backends/facts-db/crud.js";
17
20
  import { countImplicitFeedbackTrajectorySignals, defaultReindexCheckpointPath, parseBoundedFloatOption, parseBoundedIntOption, readReindexCheckpoint, recordStorageGrowthSample, writeReindexCheckpoint } from "./storage-stats-helpers.js";
18
21
  import { existsSync, unlinkSync } from "node:fs";
19
22
  //#region cli/commands/manage/register-storage-maintenance.ts
@@ -46,6 +49,33 @@ function isEmbeddingProviderServerError(err) {
46
49
  if (err instanceof AllEmbeddingProvidersFailed) return err.causes.some((cause) => is500OrWrapped(cause));
47
50
  return false;
48
51
  }
52
+ function isEmbeddingProviderRateLimitError(err) {
53
+ if (!(err instanceof Error)) return false;
54
+ if (is429OrWrapped(err) || is403QuotaOrRateLimitLike(err)) return true;
55
+ if (err instanceof AllEmbeddingProvidersFailed) return err.causes.some((cause) => cause instanceof Error && (is429OrWrapped(cause) || is403QuotaOrRateLimitLike(cause)));
56
+ return false;
57
+ }
58
+ function isEmbeddingProviderTransientError(err) {
59
+ if (!(err instanceof Error)) return false;
60
+ if (isEmbeddingProviderRateLimitError(err) || is500OrWrapped(err) || isConnectionErrorLike(err)) return true;
61
+ if (err instanceof AllEmbeddingProvidersFailed) return err.causes.some((cause) => cause instanceof Error && (is429OrWrapped(cause) || is403QuotaOrRateLimitLike(cause) || is500OrWrapped(cause) || isConnectionErrorLike(cause)));
62
+ return false;
63
+ }
64
+ function parseEmbeddingRetryAfterMs(err) {
65
+ if (err instanceof Error) {
66
+ const fromTop = parseRetryAfterMs(err);
67
+ if (fromTop !== void 0) return fromTop;
68
+ }
69
+ if (err instanceof AllEmbeddingProvidersFailed) for (const cause of err.causes) {
70
+ if (!(cause instanceof Error)) continue;
71
+ const retryAfterMs = parseRetryAfterMs(cause);
72
+ if (retryAfterMs !== void 0) return retryAfterMs;
73
+ }
74
+ }
75
+ function sleep(ms) {
76
+ if (ms <= 0) return Promise.resolve();
77
+ return new Promise((resolve) => setTimeout(resolve, ms));
78
+ }
49
79
  function registerManageStorageMaintenance(mem, b) {
50
80
  const { factsDb, vectorDb, aliasDb, versionInfo, embeddings, mergeResults: merge, getMemoryCategories, cfg, runCompaction, tieringEnabled, ctx, listCommands, auditStore, runExport } = b;
51
81
  const tierCompactCmd = mem.command("tier-compact").description("Tier compaction: move facts between hot/warm/cold/structural (does NOT shrink LanceDB — see vectordb-optimize)").option("--dry-run", "Preview tier changes without mutating facts");
@@ -377,11 +407,21 @@ function registerManageStorageMaintenance(mem, b) {
377
407
  }
378
408
  }
379
409
  }));
380
- mem.command("reembed-vectorless").description("Embed active non-kv facts that lack canonical embeddings (dry-run by default)").option("--limit <n>", "Maximum vectorless facts to process", "100").option("--source <s>", "Only process facts from this source").option("--apply", "Actually embed and write LanceDB/fact_embeddings rows; default is dry-run").option("--batch-size <n>", "Embedding batch size", "40").option("--max-embed-failures <n>", "Circuit-break after this many consecutive embed failures and exit 1; prevents indefinite stall on provider outage (default: 5)", "5").option("-v, --verbose", "Emit periodic progress heartbeat for long runs").option("--json", "Emit JSON").action(withExit(async (opts, cmd) => {
410
+ mem.command("reembed-vectorless").description("Embed active non-kv facts that lack canonical embeddings (dry-run by default)").option("--limit <n>", "Maximum vectorless facts to process", "100").option("--source <s>", "Only process facts from this source").option("--apply", "Actually embed and write LanceDB/fact_embeddings rows; default is dry-run").option("--batch-size <n>", "Embedding batch size", "40").option("--batch-delay-ms <n>", "Delay between adaptive batches in ms (default 150)", "150").option("--adaptive-catch-up", "Enable adaptive pacing (ramps up on healthy batches; backs off on provider/rate-limit/store pressure)").option("--max-embed-failures <n>", "Circuit-break after this many consecutive embed failures and exit 1; prevents indefinite stall on provider outage (default: 5)", "5").option("-v, --verbose", "Emit periodic progress heartbeat for long runs").option("--json", "Emit JSON").action(withExit(async (opts, cmd) => {
381
411
  const limit = Number.parseInt(opts?.limit ?? "100", 10);
382
412
  const batchSize = Number.parseInt(opts?.batchSize ?? "40", 10);
413
+ const batchDelayMs = Number.parseInt(opts?.batchDelayMs ?? "150", 10);
414
+ const adaptiveCatchUp = opts?.adaptiveCatchUp === true;
383
415
  const maxEmbedFailures = Number.parseInt(opts?.maxEmbedFailures ?? "5", 10);
384
416
  const verbose = !!opts?.verbose || readHybridMemVerbose(cmd);
417
+ const adaptiveMinBatchSize = 1;
418
+ const adaptiveMaxBatchSize = 200;
419
+ const adaptiveMinDelayMs = 0;
420
+ const adaptiveMaxDelayMs = 5e3;
421
+ const adaptiveBackoffMinDelayMs = 50;
422
+ const adaptiveBatchSizeStep = 5;
423
+ const adaptiveDelayStepMs = 25;
424
+ const adaptiveSuccessStreakForRampUp = 2;
385
425
  if (!Number.isFinite(limit) || limit < 1) {
386
426
  console.error("error: --limit must be a positive integer");
387
427
  process.exitCode = 1;
@@ -392,12 +432,18 @@ function registerManageStorageMaintenance(mem, b) {
392
432
  process.exitCode = 1;
393
433
  return;
394
434
  }
435
+ if (!Number.isFinite(batchDelayMs) || batchDelayMs < 0) {
436
+ console.error("error: --batch-delay-ms must be a non-negative integer");
437
+ process.exitCode = 1;
438
+ return;
439
+ }
395
440
  if (!Number.isFinite(maxEmbedFailures) || maxEmbedFailures < 1) {
396
441
  console.error("error: --max-embed-failures must be a positive integer");
397
442
  process.exitCode = 1;
398
443
  return;
399
444
  }
400
445
  const before = factsDb.countVectorlessActiveFacts(opts?.source);
446
+ const globalVectorlessBefore = factsDb.countVectorlessActiveFacts();
401
447
  const candidates = factsDb.listVectorlessActiveFacts({
402
448
  limit,
403
449
  source: opts?.source
@@ -407,7 +453,17 @@ function registerManageStorageMaintenance(mem, b) {
407
453
  let skipped = 0;
408
454
  let storeFailures = 0;
409
455
  let embedFailures = 0;
410
- const totalBatches = batchSize > 0 ? Math.ceil(candidates.length / batchSize) : 0;
456
+ const startedAtMs = Date.now();
457
+ const baselineBatchSize = batchSize;
458
+ const baselineDelayMs = batchDelayMs;
459
+ let effectiveBatchSize = batchSize;
460
+ let effectiveDelayMs = batchDelayMs;
461
+ if (adaptiveCatchUp) {
462
+ effectiveBatchSize = Math.max(adaptiveMinBatchSize, Math.min(adaptiveMaxBatchSize, batchSize));
463
+ effectiveDelayMs = Math.max(adaptiveMinDelayMs, Math.min(adaptiveMaxDelayMs, batchDelayMs));
464
+ }
465
+ const adaptiveAdjustments = [];
466
+ let successStreak = 0;
411
467
  let processed = 0;
412
468
  let batchNumber = 0;
413
469
  let providerCircuitBreak = false;
@@ -416,15 +472,28 @@ function registerManageStorageMaintenance(mem, b) {
416
472
  let aborted = false;
417
473
  if (opts?.apply) await runMaintenanceHeartbeat("reembed-vectorless", verbose, async () => {
418
474
  await vectorDb.runWithAutoOptimizePaused(async () => {
419
- for (let offset = 0; offset < candidates.length; offset += batchSize) {
475
+ let offset = 0;
476
+ while (offset < candidates.length) {
420
477
  if (providerCircuitBreak) break;
421
- batchNumber = Math.floor(offset / batchSize) + 1;
422
- const batch = candidates.slice(offset, offset + batchSize);
478
+ batchNumber++;
479
+ const batch = candidates.slice(offset, offset + effectiveBatchSize);
423
480
  let vectors;
481
+ let batchPressureSignals = 0;
482
+ let batchRateLimited = 0;
483
+ let batchTransientFailures = 0;
484
+ let batchStoreFailures = 0;
485
+ let batchEmbedFailures = 0;
486
+ let batchRetryAfterMs;
424
487
  try {
425
488
  vectors = await embedCallWithTimeoutAndRetry(() => embeddings.embedBatch(batch.map((fact) => fact.text)), `reembed-vectorless:batch-${batchNumber}`);
426
489
  consecutiveEmbedFailures = 0;
427
490
  } catch (batchErr) {
491
+ const batchRateLimitedErr = isEmbeddingProviderRateLimitError(batchErr);
492
+ const batchTransientErr = isEmbeddingProviderTransientError(batchErr);
493
+ batchRetryAfterMs = parseEmbeddingRetryAfterMs(batchErr);
494
+ if (batchRateLimitedErr) batchRateLimited++;
495
+ if (batchTransientErr) batchTransientFailures++;
496
+ if (batchRateLimitedErr || batchTransientErr || batchRetryAfterMs !== void 0) batchPressureSignals++;
428
497
  if (isEmbeddingProviderServerError(batchErr)) {
429
498
  providerCircuitBreak = true;
430
499
  providerCircuitBreakCause = "provider_5xx";
@@ -439,7 +508,15 @@ function registerManageStorageMaintenance(mem, b) {
439
508
  } catch (singleErr) {
440
509
  errors.push(`fact ${fact.id}: embed failed — ${String(singleErr)}`);
441
510
  embedFailures++;
511
+ batchEmbedFailures++;
442
512
  vectors.push(null);
513
+ const rateLimited = isEmbeddingProviderRateLimitError(singleErr);
514
+ const transient = isEmbeddingProviderTransientError(singleErr);
515
+ const retryAfterMs = parseEmbeddingRetryAfterMs(singleErr);
516
+ if (rateLimited) batchRateLimited++;
517
+ if (transient) batchTransientFailures++;
518
+ if (rateLimited || transient || retryAfterMs !== void 0) batchPressureSignals++;
519
+ if (retryAfterMs !== void 0) batchRetryAfterMs = Math.max(batchRetryAfterMs ?? 0, retryAfterMs);
443
520
  if (isEmbeddingProviderServerError(singleErr)) {
444
521
  providerCircuitBreak = true;
445
522
  providerCircuitBreakCause = "provider_5xx";
@@ -481,22 +558,63 @@ function registerManageStorageMaintenance(mem, b) {
481
558
  } catch (err) {
482
559
  errors.push(`fact ${fact.id}: store failed — ${String(err)}`);
483
560
  storeFailures++;
561
+ batchStoreFailures++;
484
562
  skipped++;
485
563
  } finally {
486
564
  processed++;
487
565
  }
488
566
  }
567
+ if (adaptiveCatchUp) {
568
+ const hadPressure = batchPressureSignals > 0 || batchStoreFailures > 0 || batchEmbedFailures > 0;
569
+ const previousBatchSize = effectiveBatchSize;
570
+ const previousDelayMs = effectiveDelayMs;
571
+ if (hadPressure) {
572
+ successStreak = 0;
573
+ effectiveBatchSize = Math.max(adaptiveMinBatchSize, Math.floor(effectiveBatchSize / 2));
574
+ effectiveDelayMs = computeAdaptivePressureDelayMs({
575
+ currentDelayMs: effectiveDelayMs,
576
+ batchRetryAfterMs,
577
+ maxAdaptiveDelayMs: adaptiveMaxDelayMs,
578
+ backoffMinDelayMs: adaptiveBackoffMinDelayMs
579
+ });
580
+ } else {
581
+ successStreak++;
582
+ if (successStreak >= adaptiveSuccessStreakForRampUp) {
583
+ successStreak = 0;
584
+ effectiveBatchSize = Math.min(adaptiveMaxBatchSize, effectiveBatchSize + adaptiveBatchSizeStep);
585
+ effectiveDelayMs = Math.max(adaptiveMinDelayMs, effectiveDelayMs - adaptiveDelayStepMs);
586
+ }
587
+ }
588
+ if (previousBatchSize !== effectiveBatchSize || previousDelayMs !== effectiveDelayMs) adaptiveAdjustments.push({
589
+ reason: hadPressure ? "pressure" : "ramp-up",
590
+ previousBatchSize,
591
+ previousDelayMs,
592
+ batchSize: effectiveBatchSize,
593
+ delayMs: effectiveDelayMs,
594
+ batchPressureSignals,
595
+ batchRateLimited,
596
+ batchTransientFailures,
597
+ batchStoreFailures,
598
+ batchEmbedFailures,
599
+ retryAfterMs: batchRetryAfterMs,
600
+ batchNumber
601
+ });
602
+ }
603
+ offset += batch.length;
604
+ if (adaptiveCatchUp && offset < candidates.length && !providerCircuitBreak) await sleep(effectiveDelayMs);
489
605
  }
490
606
  });
491
607
  }, {
492
- progressSupplier: () => `stage=embed-and-store; processed=${processed}/${candidates.length}; embedded=${embedded}; skipped=${skipped}; embedFailures=${embedFailures}; storeFailures=${storeFailures}; batch=${batchNumber}/${totalBatches}`,
608
+ progressSupplier: () => `stage=embed-and-store; processed=${processed}/${candidates.length}; remaining=${Math.max(0, candidates.length - processed)}; embedded=${embedded}; skipped=${skipped}; embedFailures=${embedFailures}; storeFailures=${storeFailures}; batch=${batchNumber}; batchSize=${effectiveBatchSize}; delayMs=${effectiveDelayMs}`,
493
609
  jsonMode: opts?.json === true
494
610
  });
495
611
  const after = opts?.apply ? factsDb.countVectorlessActiveFacts(opts?.source) : before;
612
+ const durationMs = Date.now() - startedAtMs;
496
613
  const report = {
497
614
  apply: opts?.apply === true,
498
615
  source: opts?.source ?? null,
499
616
  before,
617
+ candidates: candidates.length,
500
618
  considered: candidates.length,
501
619
  embedded,
502
620
  skipped,
@@ -505,8 +623,30 @@ function registerManageStorageMaintenance(mem, b) {
505
623
  errors,
506
624
  after,
507
625
  processed,
626
+ remaining: after,
627
+ durationMs,
508
628
  aborted
509
629
  };
630
+ if (adaptiveCatchUp) report.adaptive = {
631
+ enabled: true,
632
+ baselineBatchSize,
633
+ baselineDelayMs,
634
+ effectiveBatchSize,
635
+ effectiveDelayMs,
636
+ adjustments: adaptiveAdjustments
637
+ };
638
+ const globalVectorlessAfter = opts?.apply ? factsDb.countVectorlessActiveFacts() : globalVectorlessBefore;
639
+ report.vectorSloRepair = buildVectorlessSloRepairRecommendation({
640
+ activeFacts: factsDb.getCount(),
641
+ vectorlessBefore: globalVectorlessBefore,
642
+ vectorlessAfter: globalVectorlessAfter,
643
+ embeddedThisRun: embedded,
644
+ runLimit: limit,
645
+ effectiveBatchSize: adaptiveCatchUp ? effectiveBatchSize : batchSize,
646
+ scopedSource: opts?.source,
647
+ scopedVectorlessBefore: opts?.source ? before : void 0,
648
+ scopedVectorlessAfter: opts?.source ? after : void 0
649
+ });
510
650
  if (providerCircuitBreak) {
511
651
  report.failedReason = providerCircuitBreakCause === "provider_5xx" ? "failed_embedding_provider_5xx" : "failed_embedding_provider";
512
652
  process.exitCode = 1;
@@ -515,7 +655,10 @@ function registerManageStorageMaintenance(mem, b) {
515
655
  console.log(JSON.stringify(report, null, 2));
516
656
  return;
517
657
  }
518
- console.log(`Reembed vectorless ${report.apply ? "applied" : "dry-run"}: before ${before}, candidates ${candidates.length}, embedded ${embedded}, skipped ${skipped}, storeFailures ${storeFailures}, after ${after}`);
658
+ console.log(`Reembed vectorless ${report.apply ? "applied" : "dry-run"}: before ${before}, candidates ${candidates.length}, embedded ${embedded}, skipped ${skipped}, storeFailures ${storeFailures}, after ${after}, remaining ${after}, durationMs ${durationMs}`);
659
+ if (adaptiveCatchUp) console.log(`Adaptive pacing: batchSize ${baselineBatchSize}->${effectiveBatchSize}, delayMs ${baselineDelayMs}->${effectiveDelayMs}, adjustments ${adaptiveAdjustments.length}`);
660
+ const slo = report.vectorSloRepair;
661
+ console.log(`Vectorless SLO repair: ratio ${(slo.vectorlessRatioAfter * 100).toFixed(2)}% (target ${(slo.targetVectorlessRatio * 100).toFixed(0)}%), clear ${slo.vectorlessToClearForSlo} more, ~${slo.estimatedRunsToReachSlo} run(s) at limit ${slo.recommendedLimitNextRun} batch ${slo.recommendedBatchSizeNextRun}`);
519
662
  if (candidates.length > 0 && !opts?.apply) {
520
663
  console.log("Examples:");
521
664
  for (const fact of candidates.slice(0, 10)) console.log(` ${fact.id} ${fact.source} ${fact.text.slice(0, 80).replace(/\s+/g, " ")}`);