@remnic/core 9.7.2 → 9.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/access-admin-ops-surface.d.ts +6 -6
  2. package/dist/access-admin-ops-surface.js +8 -8
  3. package/dist/access-boundary.d.ts +6 -6
  4. package/dist/access-boundary.js +9 -9
  5. package/dist/access-cli.js +32 -32
  6. package/dist/access-http.d.ts +15 -6
  7. package/dist/access-http.js +13 -13
  8. package/dist/access-identity-continuity-surface.d.ts +5 -5
  9. package/dist/access-identity-continuity-surface.js +8 -8
  10. package/dist/access-lcm-surface.d.ts +6 -6
  11. package/dist/access-lcm-surface.js +8 -8
  12. package/dist/access-mcp.d.ts +6 -6
  13. package/dist/access-mcp.js +12 -12
  14. package/dist/access-observe-write-surface.d.ts +6 -6
  15. package/dist/access-observe-write-surface.js +8 -8
  16. package/dist/access-operations-batch.js +10 -10
  17. package/dist/access-operations.d.ts +9 -9
  18. package/dist/access-operations.js +11 -11
  19. package/dist/access-recall-surface.d.ts +6 -6
  20. package/dist/access-recall-surface.js +8 -8
  21. package/dist/access-schema.d.ts +64 -64
  22. package/dist/{access-service-CJ5hrLqR.d.ts → access-service-CxDZXTKt.d.ts} +4 -4
  23. package/dist/access-service.d.ts +6 -6
  24. package/dist/access-service.js +8 -8
  25. package/dist/access-surface-catalog.d.ts +6 -6
  26. package/dist/action-confidence.d.ts +1 -1
  27. package/dist/active-memory-bridge.d.ts +1 -1
  28. package/dist/active-recall.d.ts +1 -1
  29. package/dist/active-recall.js +1 -1
  30. package/dist/behavior-learner.d.ts +1 -1
  31. package/dist/behavior-signals.d.ts +1 -1
  32. package/dist/bootstrap.d.ts +5 -5
  33. package/dist/briefing.d.ts +2 -2
  34. package/dist/briefing.js +3 -3
  35. package/dist/buffer-surprise-report.d.ts +1 -1
  36. package/dist/buffer.d.ts +2 -2
  37. package/dist/bulk-import/index.d.ts +3 -3
  38. package/dist/calibration.d.ts +1 -1
  39. package/dist/capabilities.d.ts +1 -1
  40. package/dist/{catalog-XCOyxXKw.d.ts → catalog-DzU9HowE.d.ts} +1 -1
  41. package/dist/causal-behavior.d.ts +1 -1
  42. package/dist/causal-consolidation.d.ts +1 -1
  43. package/dist/causal-consolidation.js +4 -4
  44. package/dist/causal-trajectory-graph.d.ts +1 -1
  45. package/dist/{chunk-NS4GEMLR.js → chunk-3CRHW42H.js} +3 -3
  46. package/dist/{chunk-X6FSCBJZ.js → chunk-3UPBVNBX.js} +21 -17
  47. package/dist/chunk-3UPBVNBX.js.map +1 -0
  48. package/dist/{chunk-QFOLNA2C.js → chunk-6C35R7P4.js} +2 -2
  49. package/dist/{chunk-PUPQ2PMC.js → chunk-74MJH7I3.js} +2 -2
  50. package/dist/{chunk-AWHOZTF6.js → chunk-AD2KK5MT.js} +2 -2
  51. package/dist/{chunk-RZEJDF3S.js → chunk-AH3M6F4X.js} +2 -2
  52. package/dist/{chunk-ARD5NE4M.js → chunk-BFCQPJ5B.js} +3 -3
  53. package/dist/{chunk-KWJP22WP.js → chunk-CNWC274T.js} +8 -8
  54. package/dist/{chunk-RQTCDICG.js → chunk-CRFTLUWT.js} +2 -2
  55. package/dist/{chunk-BLXNPBJI.js → chunk-DQPPRXFO.js} +2 -2
  56. package/dist/{chunk-DSWYYEIK.js → chunk-EJCVMPIM.js} +12 -2
  57. package/dist/chunk-EJCVMPIM.js.map +1 -0
  58. package/dist/{chunk-Y4EMHIQ5.js → chunk-ESE55PZJ.js} +11 -7
  59. package/dist/chunk-ESE55PZJ.js.map +1 -0
  60. package/dist/{chunk-NGJT7IW5.js → chunk-GL3SMLMZ.js} +16 -16
  61. package/dist/{chunk-4YUPLX7U.js → chunk-HXDKC3BI.js} +2 -2
  62. package/dist/{chunk-QMUERLZK.js → chunk-JO5AT6QT.js} +1 -1
  63. package/dist/chunk-JO5AT6QT.js.map +1 -0
  64. package/dist/{chunk-QRYNEVHP.js → chunk-KTOH7EJE.js} +2 -2
  65. package/dist/{chunk-VD56CJRR.js → chunk-O3BZ6PFY.js} +2 -2
  66. package/dist/{chunk-WGE3OYC3.js → chunk-P2UA6XQG.js} +4 -4
  67. package/dist/{chunk-ZXUG3AFP.js → chunk-PKGWJFNR.js} +2 -2
  68. package/dist/{chunk-UKA7GNI2.js → chunk-QDCJNRKK.js} +3 -3
  69. package/dist/{chunk-FMECZFUT.js → chunk-R2SJDIPO.js} +2 -2
  70. package/dist/{chunk-PSQ32V5P.js → chunk-T7VNN3ZM.js} +13 -3
  71. package/dist/chunk-T7VNN3ZM.js.map +1 -0
  72. package/dist/{chunk-CBOHQNTJ.js → chunk-TBQ4CFIP.js} +2 -2
  73. package/dist/{chunk-53Y3TETS.js → chunk-TVRPRFUB.js} +2 -2
  74. package/dist/{chunk-O24E5CFS.js → chunk-TZJVTH3F.js} +3 -3
  75. package/dist/{chunk-Z3HJ5L3Z.js → chunk-UVIQHSS7.js} +2 -2
  76. package/dist/{chunk-HT2DQ27U.js → chunk-UYZUJ4EB.js} +2 -2
  77. package/dist/{chunk-DDHT5J5M.js → chunk-VMGMY2AI.js} +6 -6
  78. package/dist/{chunk-E47TABDR.js → chunk-WKE4VXSZ.js} +2 -2
  79. package/dist/{chunk-GWMTFDHF.js → chunk-ZHKD4EZM.js} +3 -3
  80. package/dist/{chunk-D6KNJRGX.js → chunk-ZUFJ7ZTR.js} +2 -2
  81. package/dist/{chunk-PML3GU4Q.js → chunk-ZW6OKHVX.js} +2 -2
  82. package/dist/{cli-CtECZr1q.d.ts → cli-BqyGVyOe.d.ts} +9 -5
  83. package/dist/cli.d.ts +8 -8
  84. package/dist/cli.js +26 -26
  85. package/dist/compounding/engine.d.ts +2 -2
  86. package/dist/compounding/engine.js +3 -3
  87. package/dist/compounding/preference-consolidator.d.ts +1 -1
  88. package/dist/compression-optimizer.d.ts +1 -1
  89. package/dist/config.d.ts +1 -1
  90. package/dist/config.js +1 -1
  91. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  92. package/dist/connectors/codex-materialize-runner.js +3 -3
  93. package/dist/connectors/codex-materialize.d.ts +1 -1
  94. package/dist/connectors/index.d.ts +1 -1
  95. package/dist/connectors/index.js +3 -3
  96. package/dist/consolidation-provenance-check.d.ts +2 -2
  97. package/dist/consolidation-undo.d.ts +2 -2
  98. package/dist/contradiction/index.d.ts +2 -2
  99. package/dist/conversation-index/backend.d.ts +1 -1
  100. package/dist/conversation-index/chunker.d.ts +1 -1
  101. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  102. package/dist/conversation-index/indexer.d.ts +1 -1
  103. package/dist/conversation-index/search.d.ts +1 -1
  104. package/dist/day-summary.d.ts +1 -1
  105. package/dist/delinearize.d.ts +1 -1
  106. package/dist/direct-answer-wiring.d.ts +1 -1
  107. package/dist/direct-answer.d.ts +1 -1
  108. package/dist/embedding-fallback.d.ts +1 -1
  109. package/dist/enrichment/index.d.ts +1 -1
  110. package/dist/entity-retrieval.d.ts +2 -2
  111. package/dist/entity-retrieval.js +3 -3
  112. package/dist/entity-schema.d.ts +1 -1
  113. package/dist/explicit-capture.d.ts +5 -5
  114. package/dist/extraction-faithfulness.d.ts +1 -1
  115. package/dist/extraction-judge-telemetry.d.ts +1 -1
  116. package/dist/extraction-judge-training.d.ts +1 -1
  117. package/dist/extraction-judge.d.ts +1 -1
  118. package/dist/extraction.d.ts +1 -1
  119. package/dist/fallback-llm.d.ts +1 -1
  120. package/dist/graph-dashboard-diff.d.ts +1 -1
  121. package/dist/graph-dashboard-key.d.ts +1 -1
  122. package/dist/graph-dashboard-parser.d.ts +1 -1
  123. package/dist/graph-edge-reinforcement.d.ts +1 -1
  124. package/dist/graph-snapshot.d.ts +1 -1
  125. package/dist/graph.d.ts +1 -1
  126. package/dist/identity-continuity.d.ts +1 -1
  127. package/dist/importance.d.ts +1 -1
  128. package/dist/importers/index.d.ts +1 -1
  129. package/dist/index.d.ts +13 -13
  130. package/dist/index.js +32 -32
  131. package/dist/intent.d.ts +1 -1
  132. package/dist/lcm/engine.d.ts +1 -1
  133. package/dist/lcm/index.d.ts +1 -1
  134. package/dist/lcm/tools.d.ts +1 -1
  135. package/dist/lifecycle.d.ts +1 -1
  136. package/dist/live-connectors-runner.d.ts +1 -1
  137. package/dist/local-llm.d.ts +1 -1
  138. package/dist/local-model-endpoint.d.ts +1 -1
  139. package/dist/maintenance/memory-governance.d.ts +1 -1
  140. package/dist/maintenance/memory-governance.js +3 -3
  141. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  142. package/dist/maintenance/rebuild-memory-projection.js +4 -4
  143. package/dist/mcp-memory-inspector-app.d.ts +6 -6
  144. package/dist/memory-action-policy.d.ts +1 -1
  145. package/dist/memory-cache.d.ts +1 -1
  146. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  147. package/dist/memory-projection-store.d.ts +1 -1
  148. package/dist/memory-provenance.d.ts +1 -1
  149. package/dist/memory-worth-outcomes.d.ts +2 -2
  150. package/dist/models-json.d.ts +1 -1
  151. package/dist/namespaces/migrate.d.ts +3 -3
  152. package/dist/namespaces/migrate.js +5 -5
  153. package/dist/namespaces/principal.d.ts +1 -1
  154. package/dist/namespaces/search.d.ts +1 -1
  155. package/dist/namespaces/search.js +1 -1
  156. package/dist/namespaces/storage.d.ts +3 -3
  157. package/dist/namespaces/storage.js +3 -3
  158. package/dist/native-knowledge.d.ts +1 -1
  159. package/dist/operator-toolkit.d.ts +2 -2
  160. package/dist/operator-toolkit.js +9 -9
  161. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  162. package/dist/orchestration/maintenance.d.ts +2 -2
  163. package/dist/orchestration/maintenance.js +5 -5
  164. package/dist/{orchestrator-CKctWsw9.d.ts → orchestrator-37Cx7yyw.d.ts} +4 -4
  165. package/dist/orchestrator.d.ts +5 -5
  166. package/dist/orchestrator.js +32 -32
  167. package/dist/patterns-cli.d.ts +1 -1
  168. package/dist/{pipeline-BWwGIys5.d.ts → pipeline-C6onljHc.d.ts} +1 -1
  169. package/dist/policy-runtime.d.ts +1 -1
  170. package/dist/provenance.d.ts +1 -1
  171. package/dist/{qmd-DFuUrBWW.d.ts → qmd-J08G7MEm.d.ts} +1 -1
  172. package/dist/qmd-preflight.d.ts +2 -2
  173. package/dist/qmd-recall-cache.d.ts +1 -1
  174. package/dist/qmd.d.ts +2 -2
  175. package/dist/recall-disclosure-escalation.d.ts +1 -1
  176. package/dist/recall-explain-renderer.d.ts +1 -1
  177. package/dist/recall-explain-renderer.js +3 -3
  178. package/dist/recall-planner-llm.d.ts +1 -1
  179. package/dist/recall-state.d.ts +1 -1
  180. package/dist/recall-tag-filter.d.ts +1 -1
  181. package/dist/recall-timings.d.ts +1 -1
  182. package/dist/recall-xray-cli.d.ts +1 -1
  183. package/dist/recall-xray-cli.js +4 -4
  184. package/dist/recall-xray-renderer.d.ts +1 -1
  185. package/dist/recall-xray-renderer.js +3 -3
  186. package/dist/recall-xray.d.ts +1 -1
  187. package/dist/recall-xray.js +2 -2
  188. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  189. package/dist/replay/normalizers/claude.d.ts +1 -1
  190. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  191. package/dist/replay/normalizers/shared.d.ts +1 -1
  192. package/dist/replay/runner.d.ts +1 -1
  193. package/dist/replay/types.d.ts +1 -1
  194. package/dist/resolve-auth-token.d.ts +1 -1
  195. package/dist/resume-bundles.js +2 -2
  196. package/dist/retrieval-agents.d.ts +2 -2
  197. package/dist/retrieval-tiers.d.ts +1 -1
  198. package/dist/routing/engine.d.ts +1 -1
  199. package/dist/routing/store.d.ts +1 -1
  200. package/dist/schemas.d.ts +74 -74
  201. package/dist/search/embed-helper.d.ts +1 -1
  202. package/dist/search/factory.d.ts +1 -1
  203. package/dist/search/index.d.ts +1 -1
  204. package/dist/search/lancedb-backend.d.ts +1 -1
  205. package/dist/search/meilisearch-backend.d.ts +1 -1
  206. package/dist/search/noop-backend.d.ts +1 -1
  207. package/dist/search/orama-backend.d.ts +1 -1
  208. package/dist/search/port.d.ts +1 -1
  209. package/dist/search/remote-backend.d.ts +1 -1
  210. package/dist/{semantic-consolidation-1Wlr7NWL.d.ts → semantic-consolidation-BFtoVosl.d.ts} +1 -1
  211. package/dist/semantic-consolidation.d.ts +2 -2
  212. package/dist/semantic-consolidation.js +4 -4
  213. package/dist/semantic-rule-promotion.js +3 -3
  214. package/dist/semantic-rule-verifier.d.ts +1 -1
  215. package/dist/semantic-rule-verifier.js +3 -3
  216. package/dist/session-observer-bands.d.ts +1 -1
  217. package/dist/session-observer-state.d.ts +1 -1
  218. package/dist/shared-context/manager.d.ts +9 -9
  219. package/dist/signal.d.ts +1 -1
  220. package/dist/{storage-BQwP90sb.d.ts → storage-CXjwBr69.d.ts} +1 -1
  221. package/dist/storage.d.ts +2 -2
  222. package/dist/storage.js +2 -2
  223. package/dist/summarizer.d.ts +1 -1
  224. package/dist/summary-snapshot.d.ts +1 -1
  225. package/dist/temporal-supersession.d.ts +2 -2
  226. package/dist/temporal-timeline-recall.d.ts +1 -1
  227. package/dist/temporal-validity.d.ts +1 -1
  228. package/dist/threading.d.ts +1 -1
  229. package/dist/tier-migration.d.ts +2 -2
  230. package/dist/tier-routing.d.ts +1 -1
  231. package/dist/topics.d.ts +1 -1
  232. package/dist/transcript.d.ts +1 -1
  233. package/dist/transfer/types.d.ts +66 -66
  234. package/dist/trust-score-stage.d.ts +1 -1
  235. package/dist/trust-score.d.ts +1 -1
  236. package/dist/{types-DgIkyAsK.d.ts → types-DpxqC8dI.d.ts} +4 -0
  237. package/dist/types.d.ts +1 -1
  238. package/dist/types.js +1 -1
  239. package/dist/utility-runtime.d.ts +1 -1
  240. package/dist/verified-recall.js +3 -3
  241. package/package.json +2 -2
  242. package/src/access-http.ts +27 -2
  243. package/src/cli.ts +8 -0
  244. package/src/config.ts +10 -0
  245. package/src/namespaces/search.test.ts +74 -9
  246. package/src/namespaces/search.ts +12 -3
  247. package/src/types.ts +4 -0
  248. package/dist/chunk-DSWYYEIK.js.map +0 -1
  249. package/dist/chunk-PSQ32V5P.js.map +0 -1
  250. package/dist/chunk-QMUERLZK.js.map +0 -1
  251. package/dist/chunk-X6FSCBJZ.js.map +0 -1
  252. package/dist/chunk-Y4EMHIQ5.js.map +0 -1
  253. /package/dist/{chunk-NS4GEMLR.js.map → chunk-3CRHW42H.js.map} +0 -0
  254. /package/dist/{chunk-QFOLNA2C.js.map → chunk-6C35R7P4.js.map} +0 -0
  255. /package/dist/{chunk-PUPQ2PMC.js.map → chunk-74MJH7I3.js.map} +0 -0
  256. /package/dist/{chunk-AWHOZTF6.js.map → chunk-AD2KK5MT.js.map} +0 -0
  257. /package/dist/{chunk-RZEJDF3S.js.map → chunk-AH3M6F4X.js.map} +0 -0
  258. /package/dist/{chunk-ARD5NE4M.js.map → chunk-BFCQPJ5B.js.map} +0 -0
  259. /package/dist/{chunk-KWJP22WP.js.map → chunk-CNWC274T.js.map} +0 -0
  260. /package/dist/{chunk-RQTCDICG.js.map → chunk-CRFTLUWT.js.map} +0 -0
  261. /package/dist/{chunk-BLXNPBJI.js.map → chunk-DQPPRXFO.js.map} +0 -0
  262. /package/dist/{chunk-NGJT7IW5.js.map → chunk-GL3SMLMZ.js.map} +0 -0
  263. /package/dist/{chunk-4YUPLX7U.js.map → chunk-HXDKC3BI.js.map} +0 -0
  264. /package/dist/{chunk-QRYNEVHP.js.map → chunk-KTOH7EJE.js.map} +0 -0
  265. /package/dist/{chunk-VD56CJRR.js.map → chunk-O3BZ6PFY.js.map} +0 -0
  266. /package/dist/{chunk-WGE3OYC3.js.map → chunk-P2UA6XQG.js.map} +0 -0
  267. /package/dist/{chunk-ZXUG3AFP.js.map → chunk-PKGWJFNR.js.map} +0 -0
  268. /package/dist/{chunk-UKA7GNI2.js.map → chunk-QDCJNRKK.js.map} +0 -0
  269. /package/dist/{chunk-FMECZFUT.js.map → chunk-R2SJDIPO.js.map} +0 -0
  270. /package/dist/{chunk-CBOHQNTJ.js.map → chunk-TBQ4CFIP.js.map} +0 -0
  271. /package/dist/{chunk-53Y3TETS.js.map → chunk-TVRPRFUB.js.map} +0 -0
  272. /package/dist/{chunk-O24E5CFS.js.map → chunk-TZJVTH3F.js.map} +0 -0
  273. /package/dist/{chunk-Z3HJ5L3Z.js.map → chunk-UVIQHSS7.js.map} +0 -0
  274. /package/dist/{chunk-HT2DQ27U.js.map → chunk-UYZUJ4EB.js.map} +0 -0
  275. /package/dist/{chunk-DDHT5J5M.js.map → chunk-VMGMY2AI.js.map} +0 -0
  276. /package/dist/{chunk-E47TABDR.js.map → chunk-WKE4VXSZ.js.map} +0 -0
  277. /package/dist/{chunk-GWMTFDHF.js.map → chunk-ZHKD4EZM.js.map} +0 -0
  278. /package/dist/{chunk-D6KNJRGX.js.map → chunk-ZUFJ7ZTR.js.map} +0 -0
  279. /package/dist/{chunk-PML3GU4Q.js.map → chunk-ZW6OKHVX.js.map} +0 -0
@@ -461,7 +461,7 @@ test("ensureNamespaceCollection forwards abort signals to backend collection che
461
461
  assert.deepEqual(backend.ensureCollections, ["openclaw-engram--ns-6d61696e"]);
462
462
  });
463
463
 
464
- test("legacy default namespace root checks collection without auto-creating broad root", async () => {
464
+ test("legacy default namespace root auto-creates its base collection (broad root, #1929)", async () => {
465
465
  const backend = new FakeBackend(false);
466
466
  const router = new NamespaceSearchRouter(
467
467
  config(),
@@ -474,14 +474,17 @@ test("legacy default namespace root checks collection without auto-creating broa
474
474
  signal: controller.signal,
475
475
  });
476
476
 
477
+ // The default namespace at the flat root targets the BASE collection (not a
478
+ // tokenized name) on both index and search sides, and that collection is now
479
+ // auto-created so recall has something to read. Skipping creation left a
480
+ // configured default namespace with maintenance "ran" but 0 results (#1929).
477
481
  assert.equal(state, "present");
478
- assert.deepEqual(backend.checkSignals, [controller.signal]);
479
- assert.deepEqual(backend.checkCollections, ["openclaw-engram"]);
480
- assert.deepEqual(backend.ensureCollections, []);
482
+ assert.deepEqual(backend.ensureSignals, [controller.signal]);
483
+ assert.deepEqual(backend.ensureCollections, ["openclaw-engram"]);
481
484
  });
482
485
 
483
- test("legacy default namespace root fail-opens missing guarded collections", async () => {
484
- const backend = new FakeBackend(false, [], { check: "missing" });
486
+ test("legacy default namespace root auto-creates a missing base collection (#1929)", async () => {
487
+ const backend = new FakeBackend(false, [], { check: "missing", ensure: "present" });
485
488
  const router = new NamespaceSearchRouter(
486
489
  config(),
487
490
  { storageFor: async () => ({ dir: "/tmp/remnic" }) },
@@ -490,9 +493,71 @@ test("legacy default namespace root fail-opens missing guarded collections", asy
490
493
 
491
494
  const state = await router.ensureNamespaceCollection("main");
492
495
 
493
- assert.equal(state, "unknown");
494
- assert.deepEqual(backend.checkCollections, ["openclaw-engram"]);
495
- assert.deepEqual(backend.ensureCollections, []);
496
+ // A missing base collection is no longer left missing (the old fail-open path);
497
+ // it is created so a fresh install with a flat-root default namespace gets a
498
+ // working QMD collection instead of silently returning 0 results.
499
+ assert.equal(state, "present");
500
+ assert.deepEqual(backend.ensureCollections, ["openclaw-engram"]);
501
+ });
502
+
503
+ test("configured non-legacy default namespace still recalls from its flat-root base collection (#1929)", async () => {
504
+ // Reporter's config: defaultNamespace "geek", data at the flat root. The
505
+ // default record must search the SAME base collection the index side creates,
506
+ // so recall returns results instead of 0.
507
+ const geekConfig = { ...config(), defaultNamespace: "geek" } as PluginConfig;
508
+ const created: FakeBackend[] = [];
509
+ const router = new NamespaceSearchRouter(
510
+ geekConfig,
511
+ { storageFor: async () => ({ dir: "/tmp/remnic" }) },
512
+ () => {
513
+ const backend = new FakeBackend(false, [
514
+ { docid: "1", path: "facts/geek-fact.md", snippet: "geek", score: 1 },
515
+ ]);
516
+ created.push(backend);
517
+ return backend;
518
+ },
519
+ );
520
+
521
+ const ensured = await router.ensureNamespaceCollection("geek");
522
+ assert.equal(ensured, "present");
523
+ assert.deepEqual(created[0]?.ensureCollections, ["openclaw-engram"]);
524
+
525
+ const results = await router.searchAcrossNamespaces({
526
+ query: "geek",
527
+ namespaces: ["geek"],
528
+ maxResults: 10,
529
+ });
530
+
531
+ assert.deepEqual(
532
+ created.flatMap((backend) => backend.calls.map((call) => call.collection)),
533
+ ["openclaw-engram"],
534
+ );
535
+ assert.equal(results.length, 1);
536
+ assert.equal(results[0]?.snippet, "geek");
537
+ });
538
+
539
+ test("configured non-legacy default namespace filters nested namespace files from its base collection (#1929)", async () => {
540
+ // The broad-root base collection also indexes nested `namespaces/` files; the
541
+ // default namespace search must strip them so auto-creation does not leak
542
+ // cross-namespace data into the default recall path.
543
+ const geekConfig = { ...config(), defaultNamespace: "geek" } as PluginConfig;
544
+ const backend = new FakeBackend(false, [
545
+ { docid: "1", path: "facts/geek-fact.md", snippet: "geek", score: 2 },
546
+ { docid: "2", path: "namespaces/ns-736861726564/facts/shared.md", snippet: "shared", score: 1 },
547
+ ]);
548
+ const router = new NamespaceSearchRouter(
549
+ geekConfig,
550
+ { storageFor: async () => ({ dir: "/tmp/remnic" }) },
551
+ () => backend,
552
+ );
553
+
554
+ const results = await router.searchAcrossNamespaces({
555
+ query: "geek",
556
+ namespaces: ["geek"],
557
+ maxResults: 10,
558
+ });
559
+
560
+ assert.deepEqual(results.map((result) => result.snippet), ["geek"]);
496
561
  });
497
562
 
498
563
  test("healthForNamespace checks namespace collection without auto-creating or caching state", async () => {
@@ -379,10 +379,20 @@ export class NamespaceSearchRouter {
379
379
  });
380
380
  const collectionState = available
381
381
  ? await awaitWithAbort(
382
+ // The legacy default namespace at the flat root (`filtersNestedNamespaces`)
383
+ // shares its `memoryDir` with the `namespaces/` container, so its base
384
+ // collection is a "broad root" that also indexes nested-namespace files.
385
+ // We STILL auto-create it (issue #1929): the search side already targets
386
+ // this exact base collection and `filterNamespaceSubtreeResults` strips
387
+ // the nested `namespaces/` subtree out of its results, so index and
388
+ // search stay symmetric. Skipping creation left a configured default
389
+ // namespace (e.g. `geek`) with maintenance "ran" but no collection and 0
390
+ // recall results. `ensureCollection` is a no-op when the collection is
391
+ // already present, so legacy installs that pre-created the broad root are
392
+ // unaffected.
382
393
  this.collectionStateForBackend(backend, storage.dir, scopedConfig.qmdCollection, {
383
394
  autoCreate: options.autoCreateCollection,
384
395
  failOpenMissingGuardedCollection: options.failOpenMissingGuardedCollection,
385
- skipAutoCreate: filtersNestedNamespaces,
386
396
  execution,
387
397
  }),
388
398
  execution?.signal,
@@ -417,11 +427,10 @@ export class NamespaceSearchRouter {
417
427
  options: {
418
428
  autoCreate: boolean;
419
429
  failOpenMissingGuardedCollection: boolean;
420
- skipAutoCreate: boolean;
421
430
  execution?: SearchExecutionOptions;
422
431
  },
423
432
  ): Promise<CollectionState> {
424
- if (!options.autoCreate || options.skipAutoCreate) {
433
+ if (!options.autoCreate) {
425
434
  if (!backend.checkCollection) return "unknown";
426
435
  const collectionState = await backend
427
436
  .checkCollection(collection, options.execution)
package/src/types.ts CHANGED
@@ -255,6 +255,10 @@ export interface AgentAccessHttpConfig {
255
255
  authToken?: AgentAccessAuthToken;
256
256
  principal?: string;
257
257
  maxBodyBytes: number;
258
+ /** Max write requests per rolling window before 429 write_rate_limited (issue #1937). */
259
+ writeRateLimitMaxRequests: number;
260
+ /** Rolling window for the write rate limit, in ms (issue #1937). */
261
+ writeRateLimitWindowMs: number;
258
262
  }
259
263
 
260
264
  export interface DreamingConfig {