@remnic/core 10.0.8 → 10.0.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 (188) hide show
  1. package/dist/access-admin-ops-surface.js +14 -14
  2. package/dist/access-authorization-probe.js +15 -15
  3. package/dist/access-boundary.js +14 -14
  4. package/dist/access-cli.js +52 -52
  5. package/dist/access-extraction-force-flush.js +14 -14
  6. package/dist/access-http-briefing.js +15 -15
  7. package/dist/access-http-query.js +16 -16
  8. package/dist/access-http.js +30 -30
  9. package/dist/access-identity-continuity-surface.js +14 -14
  10. package/dist/access-lcm-surface.js +14 -14
  11. package/dist/access-mcp.js +23 -23
  12. package/dist/access-namespace-preflight.js +14 -14
  13. package/dist/access-observe-write-surface.js +14 -14
  14. package/dist/access-operations-batch.js +15 -15
  15. package/dist/access-operations.js +22 -22
  16. package/dist/access-recall-concurrency.js +14 -14
  17. package/dist/access-recall-response.js +14 -14
  18. package/dist/access-recall-surface.js +14 -14
  19. package/dist/access-service.js +14 -14
  20. package/dist/access-surface-catalog.js +16 -16
  21. package/dist/active-recall.js +1 -1
  22. package/dist/briefing.js +2 -2
  23. package/dist/causal-consolidation.js +3 -3
  24. package/dist/{chunk-ZQYAE2C5.js → chunk-2U4BM3TW.js} +2 -2
  25. package/dist/{chunk-QFIPSKPC.js → chunk-3ZCRHW7U.js} +2 -2
  26. package/dist/{chunk-76KHEHT2.js → chunk-4N2MFNTG.js} +2 -2
  27. package/dist/{chunk-FBVLTTVV.js → chunk-4TP3MJ3D.js} +5 -5
  28. package/dist/{chunk-JSIQSZXI.js → chunk-56GJLXBA.js} +3 -3
  29. package/dist/{chunk-MVRIW6MI.js → chunk-6OAXWYE3.js} +2 -2
  30. package/dist/{chunk-KDYQYMJZ.js → chunk-7SUWY37K.js} +2 -2
  31. package/dist/{chunk-KRIEQCKE.js → chunk-A2L3P2IY.js} +2 -2
  32. package/dist/{chunk-AMFCRZYB.js → chunk-AV2OQF2O.js} +2 -2
  33. package/dist/{chunk-WJLGUY27.js → chunk-BD5QEP3T.js} +2 -1
  34. package/dist/{chunk-C3WJNRGR.js → chunk-BH44JOLA.js} +2 -2
  35. package/dist/{chunk-NYVKLB2I.js → chunk-BX4WDBTE.js} +11 -11
  36. package/dist/{chunk-V4WSQYO6.js → chunk-CAUNCRLQ.js} +21 -21
  37. package/dist/{chunk-RH6QEGCT.js → chunk-D5UPBXZM.js} +2 -2
  38. package/dist/{chunk-77HNHT6S.js → chunk-E57LYSHI.js} +114 -4
  39. package/dist/chunk-E57LYSHI.js.map +1 -0
  40. package/dist/{chunk-IOM5QSNR.js → chunk-EKKAHJ4B.js} +2 -2
  41. package/dist/{chunk-JK3DYMOC.js → chunk-GKOML66M.js} +2 -2
  42. package/dist/{chunk-QW7G7PWN.js → chunk-I2M4ZVDD.js} +2 -2
  43. package/dist/{chunk-JTUKDLAD.js → chunk-J6FFBORM.js} +2 -2
  44. package/dist/{chunk-MAJ2OKE4.js → chunk-J7MDPTX7.js} +6 -6
  45. package/dist/{chunk-5FNVK7MW.js → chunk-JVNEXW6X.js} +2 -2
  46. package/dist/{chunk-IJWEXCWF.js → chunk-JXWTPOMJ.js} +2 -2
  47. package/dist/{chunk-3R6SLDTH.js → chunk-KJOGIRMF.js} +2 -2
  48. package/dist/{chunk-GDI64ITR.js → chunk-KWVI52ER.js} +2 -2
  49. package/dist/{chunk-AV46CT77.js → chunk-KX36OCGK.js} +2 -2
  50. package/dist/{chunk-2K7D6EFT.js → chunk-L3G5CGL5.js} +674 -126
  51. package/dist/chunk-L3G5CGL5.js.map +1 -0
  52. package/dist/{chunk-CSUAHUOH.js → chunk-MK552I5J.js} +2 -2
  53. package/dist/{chunk-BPY4RRTF.js → chunk-MO25AN7J.js} +10 -10
  54. package/dist/{chunk-NAHUBSUF.js → chunk-N75Q5ZSP.js} +2 -2
  55. package/dist/{chunk-HZVYDWUP.js → chunk-NQMG2W5L.js} +2 -2
  56. package/dist/{chunk-L3Z4NXDO.js → chunk-O52WWLKU.js} +3 -3
  57. package/dist/{chunk-OC6JYPZX.js → chunk-O5MW6CQL.js} +2 -2
  58. package/dist/{chunk-6PHB45IU.js → chunk-O6YDGTH4.js} +2 -2
  59. package/dist/{chunk-E5274WUC.js → chunk-OAIWPB2I.js} +19 -2
  60. package/dist/chunk-OAIWPB2I.js.map +1 -0
  61. package/dist/{chunk-5NOPZYNI.js → chunk-OFDIGTC2.js} +7 -7
  62. package/dist/{chunk-5EOV7ANU.js → chunk-OGWEWJRH.js} +2 -2
  63. package/dist/{chunk-3ENX2RB4.js → chunk-OM3RWZQK.js} +2 -2
  64. package/dist/{chunk-GSAZBZMA.js → chunk-PDVWGGX4.js} +2 -2
  65. package/dist/{chunk-N44GZ73R.js → chunk-SOJ3IQD3.js} +3 -3
  66. package/dist/{chunk-4OKPH6FG.js → chunk-SQA2MM2F.js} +2 -2
  67. package/dist/{chunk-7O252IE6.js → chunk-SSAXGPXY.js} +2 -2
  68. package/dist/{chunk-R2AWYR4Q.js → chunk-SVDU4OHO.js} +2 -2
  69. package/dist/{chunk-WPFSZZ35.js → chunk-UOA2VQ7C.js} +2 -2
  70. package/dist/{chunk-S4GUMZRB.js → chunk-VA2HNBGQ.js} +17 -17
  71. package/dist/{chunk-YAF3NRNC.js → chunk-VBJD4RSJ.js} +2 -2
  72. package/dist/{chunk-A6G7K273.js → chunk-VDXTXVFZ.js} +3 -3
  73. package/dist/{chunk-5Q4NQNW7.js → chunk-VJGDQA3D.js} +2 -2
  74. package/dist/{chunk-QN77HA6P.js → chunk-WCTL3PVM.js} +2 -2
  75. package/dist/{chunk-NXLQQ6WI.js → chunk-WH4QXVKU.js} +2 -2
  76. package/dist/{chunk-3VTNNO2B.js → chunk-WXFKXCOQ.js} +3 -3
  77. package/dist/{chunk-K3DZ3G5I.js → chunk-XQIHFXYP.js} +2 -2
  78. package/dist/{chunk-VSHRMIJH.js → chunk-YYNHJF3N.js} +2 -2
  79. package/dist/cli.js +40 -40
  80. package/dist/coding/export-okf-codegraph.js +1 -1
  81. package/dist/compounding/engine.d.ts +1 -5
  82. package/dist/compounding/engine.d.ts.map +1 -1
  83. package/dist/compounding/engine.js +5 -3
  84. package/dist/compounding/iso-week.d.ts +18 -0
  85. package/dist/compounding/iso-week.d.ts.map +1 -0
  86. package/dist/compounding/weekly-evidence.d.ts +123 -0
  87. package/dist/compounding/weekly-evidence.d.ts.map +1 -0
  88. package/dist/config.js +1 -1
  89. package/dist/connectors/codex-materialize-runner.js +2 -2
  90. package/dist/connectors/index.js +2 -2
  91. package/dist/convergence-refresh.js +4 -4
  92. package/dist/corpus-watermark.js +4 -4
  93. package/dist/entity-retrieval.js +2 -2
  94. package/dist/external-wiki-access.js +15 -15
  95. package/dist/extraction.js +2 -2
  96. package/dist/harmonic-retrieval.js +2 -2
  97. package/dist/index.js +52 -52
  98. package/dist/location/index.js +4 -4
  99. package/dist/maintenance/memory-governance.js +2 -2
  100. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +2 -2
  101. package/dist/maintenance/rebuild-memory-projection-runner.js +4 -4
  102. package/dist/maintenance/rebuild-memory-projection.js +3 -3
  103. package/dist/memory-browse-operations.js +15 -15
  104. package/dist/memory-browse.js +2 -2
  105. package/dist/namespaces/migrate.js +3 -3
  106. package/dist/namespaces/storage.js +2 -2
  107. package/dist/operator-doctor-corpus.js +5 -5
  108. package/dist/operator-toolkit.js +10 -10
  109. package/dist/orchestration/generic-recall-paths.d.ts.map +1 -1
  110. package/dist/orchestration/maintenance.js +11 -11
  111. package/dist/orchestrator.js +52 -52
  112. package/dist/recall-navigation-operations.js +15 -15
  113. package/dist/recall-navigation.js +14 -14
  114. package/dist/recall-state-view-admission.js +2 -2
  115. package/dist/recall-why-service.js +2 -2
  116. package/dist/resume-bundles.js +1 -1
  117. package/dist/semantic-consolidation.js +3 -3
  118. package/dist/semantic-rule-promotion.js +2 -2
  119. package/dist/semantic-rule-verifier.js +2 -2
  120. package/dist/shared-context/manager.d.ts +18 -0
  121. package/dist/shared-context/manager.d.ts.map +1 -1
  122. package/dist/shared-context/manager.js +7 -1
  123. package/dist/source-agent-qualifier.js +2 -2
  124. package/dist/standup/build.js +2 -2
  125. package/dist/storage.js +1 -1
  126. package/dist/support-passport/index.js +17 -17
  127. package/dist/transfer/export-okf.js +2 -2
  128. package/dist/verified-recall.js +2 -2
  129. package/dist/who-knows-cli.js +3 -3
  130. package/dist/who-knows.js +2 -2
  131. package/package.json +2 -2
  132. package/src/compounding/engine.ts +135 -130
  133. package/src/compounding/iso-week.ts +60 -0
  134. package/src/compounding/weekly-evidence.ts +698 -0
  135. package/src/orchestration/generic-recall-paths.ts +27 -1
  136. package/src/shared-context/manager.ts +132 -3
  137. package/dist/chunk-2K7D6EFT.js.map +0 -1
  138. package/dist/chunk-77HNHT6S.js.map +0 -1
  139. package/dist/chunk-E5274WUC.js.map +0 -1
  140. /package/dist/{chunk-ZQYAE2C5.js.map → chunk-2U4BM3TW.js.map} +0 -0
  141. /package/dist/{chunk-QFIPSKPC.js.map → chunk-3ZCRHW7U.js.map} +0 -0
  142. /package/dist/{chunk-76KHEHT2.js.map → chunk-4N2MFNTG.js.map} +0 -0
  143. /package/dist/{chunk-FBVLTTVV.js.map → chunk-4TP3MJ3D.js.map} +0 -0
  144. /package/dist/{chunk-JSIQSZXI.js.map → chunk-56GJLXBA.js.map} +0 -0
  145. /package/dist/{chunk-MVRIW6MI.js.map → chunk-6OAXWYE3.js.map} +0 -0
  146. /package/dist/{chunk-KDYQYMJZ.js.map → chunk-7SUWY37K.js.map} +0 -0
  147. /package/dist/{chunk-KRIEQCKE.js.map → chunk-A2L3P2IY.js.map} +0 -0
  148. /package/dist/{chunk-AMFCRZYB.js.map → chunk-AV2OQF2O.js.map} +0 -0
  149. /package/dist/{chunk-WJLGUY27.js.map → chunk-BD5QEP3T.js.map} +0 -0
  150. /package/dist/{chunk-C3WJNRGR.js.map → chunk-BH44JOLA.js.map} +0 -0
  151. /package/dist/{chunk-NYVKLB2I.js.map → chunk-BX4WDBTE.js.map} +0 -0
  152. /package/dist/{chunk-V4WSQYO6.js.map → chunk-CAUNCRLQ.js.map} +0 -0
  153. /package/dist/{chunk-RH6QEGCT.js.map → chunk-D5UPBXZM.js.map} +0 -0
  154. /package/dist/{chunk-IOM5QSNR.js.map → chunk-EKKAHJ4B.js.map} +0 -0
  155. /package/dist/{chunk-JK3DYMOC.js.map → chunk-GKOML66M.js.map} +0 -0
  156. /package/dist/{chunk-QW7G7PWN.js.map → chunk-I2M4ZVDD.js.map} +0 -0
  157. /package/dist/{chunk-JTUKDLAD.js.map → chunk-J6FFBORM.js.map} +0 -0
  158. /package/dist/{chunk-MAJ2OKE4.js.map → chunk-J7MDPTX7.js.map} +0 -0
  159. /package/dist/{chunk-5FNVK7MW.js.map → chunk-JVNEXW6X.js.map} +0 -0
  160. /package/dist/{chunk-IJWEXCWF.js.map → chunk-JXWTPOMJ.js.map} +0 -0
  161. /package/dist/{chunk-3R6SLDTH.js.map → chunk-KJOGIRMF.js.map} +0 -0
  162. /package/dist/{chunk-GDI64ITR.js.map → chunk-KWVI52ER.js.map} +0 -0
  163. /package/dist/{chunk-AV46CT77.js.map → chunk-KX36OCGK.js.map} +0 -0
  164. /package/dist/{chunk-CSUAHUOH.js.map → chunk-MK552I5J.js.map} +0 -0
  165. /package/dist/{chunk-BPY4RRTF.js.map → chunk-MO25AN7J.js.map} +0 -0
  166. /package/dist/{chunk-NAHUBSUF.js.map → chunk-N75Q5ZSP.js.map} +0 -0
  167. /package/dist/{chunk-HZVYDWUP.js.map → chunk-NQMG2W5L.js.map} +0 -0
  168. /package/dist/{chunk-L3Z4NXDO.js.map → chunk-O52WWLKU.js.map} +0 -0
  169. /package/dist/{chunk-OC6JYPZX.js.map → chunk-O5MW6CQL.js.map} +0 -0
  170. /package/dist/{chunk-6PHB45IU.js.map → chunk-O6YDGTH4.js.map} +0 -0
  171. /package/dist/{chunk-5NOPZYNI.js.map → chunk-OFDIGTC2.js.map} +0 -0
  172. /package/dist/{chunk-5EOV7ANU.js.map → chunk-OGWEWJRH.js.map} +0 -0
  173. /package/dist/{chunk-3ENX2RB4.js.map → chunk-OM3RWZQK.js.map} +0 -0
  174. /package/dist/{chunk-GSAZBZMA.js.map → chunk-PDVWGGX4.js.map} +0 -0
  175. /package/dist/{chunk-N44GZ73R.js.map → chunk-SOJ3IQD3.js.map} +0 -0
  176. /package/dist/{chunk-4OKPH6FG.js.map → chunk-SQA2MM2F.js.map} +0 -0
  177. /package/dist/{chunk-7O252IE6.js.map → chunk-SSAXGPXY.js.map} +0 -0
  178. /package/dist/{chunk-R2AWYR4Q.js.map → chunk-SVDU4OHO.js.map} +0 -0
  179. /package/dist/{chunk-WPFSZZ35.js.map → chunk-UOA2VQ7C.js.map} +0 -0
  180. /package/dist/{chunk-S4GUMZRB.js.map → chunk-VA2HNBGQ.js.map} +0 -0
  181. /package/dist/{chunk-YAF3NRNC.js.map → chunk-VBJD4RSJ.js.map} +0 -0
  182. /package/dist/{chunk-A6G7K273.js.map → chunk-VDXTXVFZ.js.map} +0 -0
  183. /package/dist/{chunk-5Q4NQNW7.js.map → chunk-VJGDQA3D.js.map} +0 -0
  184. /package/dist/{chunk-QN77HA6P.js.map → chunk-WCTL3PVM.js.map} +0 -0
  185. /package/dist/{chunk-NXLQQ6WI.js.map → chunk-WH4QXVKU.js.map} +0 -0
  186. /package/dist/{chunk-3VTNNO2B.js.map → chunk-WXFKXCOQ.js.map} +0 -0
  187. /package/dist/{chunk-K3DZ3G5I.js.map → chunk-XQIHFXYP.js.map} +0 -0
  188. /package/dist/{chunk-VSHRMIJH.js.map → chunk-YYNHJF3N.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/activity/journal.ts","../src/orchestration/generic-recall-paths.ts"],"sourcesContent":["/**\n * User-owned daily journal (issue #1984 PR1).\n *\n * Files live at `<memoryDir>/journal/<YYYY-MM-DD>.md` — inside the memory\n * directory but outside scan roots, same placement as activity digests.\n * Once written, Remnic never rewrites the file except `seed` with force.\n * All writes go through writeJournalFile, which stats first.\n */\nimport { mkdirSync, statSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\n\nimport { isValidActivityDate } from \"./digest.js\";\n\nexport const JOURNAL_DIR_NAME = \"journal\";\n\n/** Minimal card shape the seed renderer needs. TimelineCard is assignable. */\nexport interface JournalSeedCard {\n title: string;\n startUtc: string;\n endUtc: string;\n}\n\nexport interface SeedJournalInput {\n memoryDir: string;\n date: string;\n cards?: readonly JournalSeedCard[];\n force?: boolean;\n}\n\nexport interface SeedJournalResult {\n path: string;\n wrote: boolean;\n}\n\nconst JOURNAL_DAY_TOPLEVEL = /^journal[\\\\/]\\d{4}-\\d{2}-\\d{2}\\.md$/i;\nconst JOURNAL_DAY_ANYWHERE = /(?:^|[\\\\/])journal[\\\\/]\\d{4}-\\d{2}-\\d{2}\\.md$/i;\n\nexport function journalPath(memoryDir: string, date: string): string {\n if (!isValidActivityDate(date)) {\n throw new RangeError(`Invalid journal date \"${date}\"; expected YYYY-MM-DD.`);\n }\n return path.join(memoryDir, JOURNAL_DIR_NAME, `${date}.md`);\n}\n\n/**\n * Root-aware journal day-file check. With a memory root, only the top-level\n * `journal/<date>.md` matches so a nested `facts/journal/<date>.md` stays\n * recallable. Without a root, fall back to the day-file shape anywhere.\n */\nexport function isJournalDayPath(filePath: string, memoryRoot?: string): boolean {\n if (memoryRoot !== undefined && memoryRoot.length > 0) {\n const relative = path.relative(memoryRoot, path.resolve(memoryRoot, filePath));\n return JOURNAL_DAY_TOPLEVEL.test(relative);\n }\n return JOURNAL_DAY_ANYWHERE.test(filePath);\n}\n\nexport function todayJournalDate(now: Date = new Date()): string {\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, \"0\");\n const day = String(now.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\nfunction formatCardDuration(card: JournalSeedCard): string {\n const start = Date.parse(card.startUtc);\n const end = Date.parse(card.endUtc);\n const minutes =\n Number.isFinite(start) && Number.isFinite(end) && end > start\n ? Math.round((end - start) / 60_000)\n : 0;\n return `${minutes}m`;\n}\n\nfunction renderJournalSeed(date: string, cards: readonly JournalSeedCard[]): string {\n const ordered = [...cards].sort((left, right) => {\n const byStart = left.startUtc.localeCompare(right.startUtc);\n return byStart !== 0 ? byStart : left.title.localeCompare(right.title);\n });\n const glance =\n ordered.length === 0\n ? [\"_No cards._\"]\n : ordered.map((card) => `- ${formatCardDuration(card)} ${card.title}`);\n return [`# Journal — ${date}`, \"\", \"## Day at a glance\", \"\", ...glance, \"\", \"## Notes\", \"\", \"\"].join(\n \"\\n\",\n );\n}\n\n/** The only journal write. Stats first; existing files are a no-op unless force. */\nexport function writeJournalFile(filePath: string, content: string, force: boolean): boolean {\n let exists = false;\n try {\n statSync(filePath);\n exists = true;\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code !== \"ENOENT\") throw err;\n }\n if (exists && !force) return false;\n mkdirSync(path.dirname(filePath), { recursive: true });\n writeFileSync(filePath, content);\n return true;\n}\n\nexport function seedJournal(input: SeedJournalInput): SeedJournalResult {\n const filePath = journalPath(input.memoryDir, input.date);\n const wrote = writeJournalFile(\n filePath,\n renderJournalSeed(input.date, input.cards ?? []),\n input.force === true,\n );\n return { path: filePath, wrote };\n}\n","import path from \"node:path\";\nimport type { QmdSearchResult } from \"../types.js\";\nimport { isExternalWikiCollectionName } from \"../external-wiki-guard.js\";\nexport { isExternalWikiCollectionName } from \"../external-wiki-guard.js\";\nimport { ALL_CATEGORY_DIRS } from \"../utils/category-dir.js\";\nimport {\n isActivityDigestPath,\n isArtifactMemoryPath,\n isLocationDayPath,\n isMeetingRecordPath,\n} from \"./orchestrator-helpers.js\";\nimport { isJournalDayPath } from \"../activity/journal.js\";\nimport { DIRECTORY_SIDECAR_BASENAME } from \"../directory-sidecars.js\";\nimport { OKF_RESERVED_BASENAMES } from \"../okf/type-mapping.js\";\n\n\nexport interface GenericRecallPathPolicy {\n readonly memoryDir?: string;\n readonly qmdCollection?: string;\n readonly qmdColdCollection?: string;\n /**\n * The collection THIS request named, when it named one. A caller may select\n * a custom collection whose name is also a memory category, which the\n * configured names alone cannot disambiguate.\n */\n readonly requestedCollection?: string;\n}\n\ntype GenericRecallPathSource = \"filesystem\" | \"qmd\";\n\nconst CATEGORY_MEMORY_ROOTS: Record<string, true> = Object.fromEntries(\n ALL_CATEGORY_DIRS.map((directory) => [directory, true]),\n);\nconst RESERVED_ARCHIVE_ROOTS: Record<string, true> = { archive: true, namespaces: true };\n\nfunction isQmdCollectionPrefix(\n prefix: string,\n collection: string | undefined,\n source: GenericRecallPathSource,\n): boolean {\n if (typeof collection !== \"string\" || collection.length === 0) return false;\n if (prefix.startsWith(`${collection}--`)) return true;\n if (prefix !== collection) return false;\n if (source === \"qmd\") return true;\n return (\n !Object.hasOwn(CATEGORY_MEMORY_ROOTS, prefix) &&\n !Object.hasOwn(RESERVED_ARCHIVE_ROOTS, prefix)\n );\n}\n\nfunction normalizeQmdUriPath(relativePath: string, source: GenericRecallPathSource): string {\n if (source !== \"qmd\" || !relativePath.startsWith(\"qmd://\")) return relativePath;\n try {\n const parsed = new URL(relativePath);\n if (parsed.protocol !== \"qmd:\" || !parsed.hostname) return relativePath;\n const collection = decodeURIComponent(parsed.hostname);\n const pathname = decodeURIComponent(parsed.pathname.replace(/^\\/+/, \"\"));\n return pathname ? `${collection}/${pathname}` : collection;\n } catch {\n return relativePath;\n }\n}\n\nfunction stripQmdCollectionPrefix(\n relativePath: string,\n policy: GenericRecallPathPolicy,\n source: GenericRecallPathSource,\n): string {\n const normalized = path.posix.normalize(normalizeQmdUriPath(relativePath, source).replace(/\\\\/g, \"/\"));\n const slashIndex = normalized.indexOf(\"/\");\n if (slashIndex <= 0 || slashIndex >= normalized.length - 1) return normalized;\n\n const prefix = normalized.slice(0, slashIndex);\n const matchesHotCollection = isQmdCollectionPrefix(prefix, policy.qmdCollection, source);\n const matchesColdCollection = isQmdCollectionPrefix(prefix, policy.qmdColdCollection, source);\n return matchesHotCollection || matchesColdCollection\n ? normalized.slice(slashIndex + 1)\n : normalized;\n}\n\nexport function isTopLevelArchivePath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n const isAbsolutePath = path.isAbsolute(filePath);\n const relative =\n policy.memoryDir && isAbsolutePath\n ? path.relative(policy.memoryDir, path.resolve(filePath))\n : filePath;\n const normalized = !isAbsolutePath\n ? stripQmdCollectionPrefix(relative, policy, source)\n : relative;\n return /^(?:archive|namespaces[\\\\/][^\\\\/]+[\\\\/]archive)(?:[\\\\/]|$)/i.test(normalized);\n}\n\nfunction isExternalWikiQmdPath(\n filePath: string,\n source: GenericRecallPathSource,\n): boolean {\n if (source !== \"qmd\") return false;\n const normalized = normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\");\n const slashIndex = normalized.indexOf(\"/\");\n const collection = slashIndex === -1 ? normalized : normalized.slice(0, slashIndex);\n return isExternalWikiCollectionName(collection);\n}\n\n/**\n * Paths an EXPLICIT ranked search must not return.\n *\n * Narrower than {@link isGenericRecallExcludedPath} on purpose. Recall\n * injection also drops archived memories because they are cold by definition,\n * but archive is explicitly reserved for \"explicit read or search surfaces\"\n * (docs/architecture/memory-lifecycle.md) — hiding it from `memory_search`\n * would remove the only way to find it. Everything else stays excluded: those\n * paths flow through their own dedicated surfaces, never a generic search.\n */\nexport function isSearchExcludedPath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n if (isExternalWikiQmdPath(filePath, source)) return true;\n // A QMD transport hands back collection-qualified paths\n // (`qmd://<collection>/activity/<date>.md`, or `<collection>/activity/…`),\n // and the collection is not always one this policy knows: a caller may name\n // a custom one, and global search spans every collection. The activity\n // predicate is ROOT-AWARE — it matches only the top-level\n // `activity/<date>.md` so a nested ordinary memory stays recallable — so an\n // un-stripped prefix reads as a nested path and the digest would be served.\n //\n // Both spellings are therefore tested. Widening is safe in this direction\n // and only here: a leading segment is dropped ONLY to re-test the dedicated\n // surface shapes, never to decide anything else, and a segment that names a\n // memory CATEGORY (`facts/proj/activity/…`) is never treated as a\n // collection, so ordinary nested memories stay searchable.\n for (const candidate of collectionSpellings(filePath, policy, source)) {\n if (\n isArtifactMemoryPath(candidate) ||\n isNamespacedActivityDigestPath(candidate, policy.memoryDir) ||\n isNamespacedLocationDayPath(candidate, policy.memoryDir) ||\n isNamespacedJournalDayPath(candidate, policy.memoryDir) ||\n isMeetingRecordPath(candidate) ||\n isCompoundingReportPath(candidate, policy.memoryDir)\n ) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Derived compounding reports sit at `<root>/compounding/` and\n * `namespaces/<namespace>/compounding/`. Generic recall must not return them:\n * a root report can quote another namespace, and injection already has a\n * filtered compounding section. A namespace literally named `compounding`,\n * and an ordinary memory nested under a category, stay searchable.\n */\nfunction isCompoundingReportPath(candidate: string, memoryDir?: string): boolean {\n let relative = candidate.replace(/\\\\/g, \"/\");\n if (memoryDir && memoryDir.length > 0) {\n const absolute = path.resolve(memoryDir, candidate).replace(/\\\\/g, \"/\");\n const root = path.resolve(memoryDir).replace(/\\\\/g, \"/\");\n if (absolute !== root && !absolute.startsWith(`${root}/`)) return false;\n relative = absolute.slice(root.length);\n if (relative.startsWith(\"/\")) relative = relative.slice(1);\n }\n if (relative.startsWith(\"../\")) return false;\n if (relative.startsWith(\"namespaces/\")) {\n const slash = relative.indexOf(\"/\", \"namespaces/\".length);\n if (slash < 0) return false;\n relative = relative.slice(slash + 1);\n }\n return relative === \"compounding\" || relative.startsWith(\"compounding/\");\n}\n\n/**\n * The activity check, applied against the NAMESPACE root a hit came from.\n *\n * `isActivityDigestPath` is root-aware — the digest must sit directly under\n * the root it is given — but a namespaced search rewrites hits to absolute\n * paths beneath `…/namespaces/<ns>/`, and only the global `memoryDir` is\n * available here. Measured against that root, a real digest at\n * `<memoryDir>/namespaces/team/activity/<date>.md` reads as nested and is\n * served. Re-measuring against the namespace's own root closes that.\n */\nfunction isNamespacedActivityDigestPath(candidate: string, memoryDir?: string): boolean {\n if (isActivityDigestPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isActivityDigestPath(namespaced[2] ?? \"\", memoryDir);\n}\n\n/**\n * The location day-file check, applied against the NAMESPACE root a hit came\n * from — same rationale as `isNamespacedActivityDigestPath`: a namespaced\n * search rewrites hits to absolute paths beneath `…/namespaces/<ns>/`, so the\n * root-aware predicate is re-measured against the namespace's own root.\n */\nfunction isNamespacedLocationDayPath(candidate: string, memoryDir?: string): boolean {\n if (isLocationDayPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isLocationDayPath(namespaced[2] ?? \"\", memoryDir);\n}\n\nfunction isNamespacedJournalDayPath(candidate: string, memoryDir?: string): boolean {\n if (isJournalDayPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isJournalDayPath(namespaced[2] ?? \"\", memoryDir);\n}\n\n/** A path as given, plus its form with a leading COLLECTION segment removed. */\nfunction collectionSpellings(\n filePath: string,\n policy: GenericRecallPathPolicy,\n source: GenericRecallPathSource,\n): string[] {\n if (path.isAbsolute(filePath)) return [filePath];\n // A `qmd://<collection>/<path>` URI states its collection UNAMBIGUOUSLY in\n // the authority, so the leading segment of its normalized form is never a\n // memory category — strip it outright rather than guessing.\n if (source === \"qmd\" && filePath.startsWith(\"qmd://\")) {\n const normalized = path.posix.normalize(normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\"));\n const slashIndex = normalized.indexOf(\"/\");\n return slashIndex <= 0 || slashIndex >= normalized.length - 1\n ? [normalized]\n : [normalized, normalized.slice(slashIndex + 1)];\n }\n const normalized = path.posix.normalize(\n normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\"),\n );\n const stripped = stripQmdCollectionPrefix(filePath, policy, source);\n const spellings = [stripped];\n // If the AUTHORITATIVE strip already fired — the prefix matched a configured\n // collection — stop. Removing a second segment would take a real directory\n // with it: `memories/projects/activity/<date>.md` would become\n // `activity/<date>.md` and an ordinary nested memory would read as a\n // top-level digest, vanishing from search AND recall.\n if (stripped !== normalized) return spellings;\n const slashIndex = stripped.indexOf(\"/\");\n if (slashIndex <= 0 || slashIndex >= stripped.length - 1) return spellings;\n const prefix = stripped.slice(0, slashIndex);\n // The CALLER's own collection is authoritative: a request for\n // `collection: \"facts\"` means that segment is the collection, whatever it is\n // also the name of. Otherwise a category-shaped prefix stays part of the\n // path, so an ordinary `facts/proj/activity/<date>.md` memory is searchable.\n const requested = policy.requestedCollection;\n if (\n prefix !== requested &&\n (Object.hasOwn(CATEGORY_MEMORY_ROOTS, prefix) || Object.hasOwn(RESERVED_ARCHIVE_ROOTS, prefix))\n ) {\n return spellings;\n }\n spellings.push(stripped.slice(slashIndex + 1));\n return spellings;\n}\n\nexport function isGenericRecallExcludedPath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n return (\n isSearchExcludedPath(filePath, policy, source) ||\n isTopLevelArchivePath(filePath, policy, source) ||\n OKF_RESERVED_BASENAMES[path.basename(filePath)] === true ||\n // Derived per-directory sidecars (#2977): recall-excluded like OKF index\n // files, still searchable. Basename-only, the same accepted tradeoff.\n path.basename(filePath) === DIRECTORY_SIDECAR_BASENAME\n );\n}\n\nexport function filterRecallCandidates(\n candidates: QmdSearchResult[],\n options: {\n namespacesEnabled: boolean;\n recallNamespaces: string[];\n resolveNamespace: (path: string) => string;\n limit: number;\n pathPolicy?: GenericRecallPathPolicy;\n memoryRoot?: string;\n },\n): QmdSearchResult[] {\n const pathPolicy =\n options.pathPolicy ??\n (options.memoryRoot === undefined ? undefined : { memoryDir: options.memoryRoot });\n const scopedByNamespace = options.namespacesEnabled\n ? candidates.filter((r) =>\n options.recallNamespaces.includes(r.namespace ?? options.resolveNamespace(r.path)),\n )\n : candidates;\n return scopedByNamespace\n .filter((r) => !isGenericRecallExcludedPath(r.path, pathPolicy, \"qmd\"))\n .slice(0, Math.max(0, options.limit));\n}\n"],"mappings":"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","names":["path","path","normalized","slashIndex"]}
@@ -3,7 +3,7 @@ import {
3
3
  readNamespaceMaintenanceLastRanStatuses,
4
4
  readNamespaceMaintenanceStatuses,
5
5
  runNamespaceMaintenancePlan
6
- } from "./chunk-L3Z4NXDO.js";
6
+ } from "./chunk-O52WWLKU.js";
7
7
  import {
8
8
  analyzeSessionIntegrity,
9
9
  applySessionRepair,
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-CMTINOFS.js";
15
15
  import {
16
16
  summarizeCorpusAndReplica
17
- } from "./chunk-JTUKDLAD.js";
17
+ } from "./chunk-J6FFBORM.js";
18
18
  import {
19
19
  readJudgeVerdictStats
20
20
  } from "./chunk-OZKOPQCM.js";
@@ -41,14 +41,14 @@ import {
41
41
  } from "./chunk-VUQDJ3JB.js";
42
42
  import {
43
43
  readAggregateExtractionWatermark
44
- } from "./chunk-5Q4NQNW7.js";
44
+ } from "./chunk-VJGDQA3D.js";
45
45
  import {
46
46
  listMemoryGovernanceRuns,
47
47
  readMemoryGovernanceRunArtifact
48
- } from "./chunk-AV46CT77.js";
48
+ } from "./chunk-KX36OCGK.js";
49
49
  import {
50
50
  listNamespaces
51
- } from "./chunk-GDI64ITR.js";
51
+ } from "./chunk-KWVI52ER.js";
52
52
  import {
53
53
  analyzeGraphHealth
54
54
  } from "./chunk-BTJ6CAIA.js";
@@ -57,7 +57,7 @@ import {
57
57
  } from "./chunk-AWD36R4D.js";
58
58
  import {
59
59
  StorageManager
60
- } from "./chunk-WJLGUY27.js";
60
+ } from "./chunk-BD5QEP3T.js";
61
61
  import {
62
62
  lintWorkspaceFiles
63
63
  } from "./chunk-DM2T26WE.js";
@@ -1683,4 +1683,4 @@ export {
1683
1683
  runBenchmarkRecall,
1684
1684
  runOperatorRepair
1685
1685
  };
1686
- //# sourceMappingURL=chunk-5NOPZYNI.js.map
1686
+ //# sourceMappingURL=chunk-OFDIGTC2.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-WJLGUY27.js";
3
+ } from "./chunk-BD5QEP3T.js";
4
4
  import {
5
5
  getCachedRuleMemories,
6
6
  setCachedRuleMemories
@@ -119,4 +119,4 @@ export {
119
119
  compareVerifiedSemanticRuleResults,
120
120
  searchVerifiedSemanticRules
121
121
  };
122
- //# sourceMappingURL=chunk-5EOV7ANU.js.map
122
+ //# sourceMappingURL=chunk-OGWEWJRH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseEntityFile
3
- } from "./chunk-WJLGUY27.js";
3
+ } from "./chunk-BD5QEP3T.js";
4
4
  import {
5
5
  inferMemoryStatus
6
6
  } from "./chunk-7RJUVTVF.js";
@@ -253,4 +253,4 @@ export {
253
253
  WHO_KNOWS_MCP_TOOLS,
254
254
  handleWhoKnowsHttpQuery
255
255
  };
256
- //# sourceMappingURL=chunk-3ENX2RB4.js.map
256
+ //# sourceMappingURL=chunk-OM3RWZQK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineOperation
3
- } from "./chunk-NYVKLB2I.js";
3
+ } from "./chunk-BX4WDBTE.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -92,4 +92,4 @@ defineOperation({
92
92
  };
93
93
  }
94
94
  });
95
- //# sourceMappingURL=chunk-GSAZBZMA.js.map
95
+ //# sourceMappingURL=chunk-PDVWGGX4.js.map
@@ -49,10 +49,10 @@ import {
49
49
  } from "./chunk-KIUVEMBI.js";
50
50
  import {
51
51
  getOperation
52
- } from "./chunk-NYVKLB2I.js";
52
+ } from "./chunk-BX4WDBTE.js";
53
53
  import {
54
54
  WHO_KNOWS_MCP_TOOLS
55
- } from "./chunk-3ENX2RB4.js";
55
+ } from "./chunk-OM3RWZQK.js";
56
56
  import {
57
57
  PROMOTION_CANDIDATES_MCP_TOOLS
58
58
  } from "./chunk-VFTK5WKI.js";
@@ -3986,4 +3986,4 @@ export {
3986
3986
  MCP_MIGRATED_OPERATIONS,
3987
3987
  EngramMcpServer
3988
3988
  };
3989
- //# sourceMappingURL=chunk-N44GZ73R.js.map
3989
+ //# sourceMappingURL=chunk-SOJ3IQD3.js.map
@@ -2,7 +2,7 @@ import {
2
2
  SupportPassportError,
3
3
  SupportPassportOwnerCreateGrantRequestSchema,
4
4
  getOperation
5
- } from "./chunk-NYVKLB2I.js";
5
+ } from "./chunk-BX4WDBTE.js";
6
6
 
7
7
  // src/support-passport/access-http.ts
8
8
  var OWNER_ROOT = "/engram/v1/support-passport";
@@ -137,4 +137,4 @@ export {
137
137
  SUPPORT_PASSPORT_OWNER_HTTP_ROUTES,
138
138
  handleSupportPassportOwnerHttp
139
139
  };
140
- //# sourceMappingURL=chunk-4OKPH6FG.js.map
140
+ //# sourceMappingURL=chunk-SQA2MM2F.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runLocationSync
3
- } from "./chunk-A6G7K273.js";
3
+ } from "./chunk-VDXTXVFZ.js";
4
4
  import {
5
5
  log
6
6
  } from "./chunk-3WCASNQZ.js";
@@ -58,4 +58,4 @@ export {
58
58
  LOCATION_SYNC_DEFAULT_INTERVAL_MS,
59
59
  startLocationAutoSync
60
60
  };
61
- //# sourceMappingURL=chunk-7O252IE6.js.map
61
+ //# sourceMappingURL=chunk-SSAXGPXY.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-DBB5JPSL.js";
4
4
  import {
5
5
  isGenericRecallExcludedPath
6
- } from "./chunk-E5274WUC.js";
6
+ } from "./chunk-OAIWPB2I.js";
7
7
  import {
8
8
  isChangeOrientedQuery
9
9
  } from "./chunk-EH3HNCAM.js";
@@ -69,4 +69,4 @@ export {
69
69
  filterRecentScanMemoriesForStateView,
70
70
  indexStateViewAnnotatedResults
71
71
  };
72
- //# sourceMappingURL=chunk-R2AWYR4Q.js.map
72
+ //# sourceMappingURL=chunk-SVDU4OHO.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportError,
3
3
  getOperation
4
- } from "./chunk-NYVKLB2I.js";
4
+ } from "./chunk-BX4WDBTE.js";
5
5
  import {
6
6
  abortError,
7
7
  isAbortError
@@ -499,4 +499,4 @@ export {
499
499
  buildSupportPassportPublicRequestHandler,
500
500
  composeSupportPassportExternalRequestHandlers
501
501
  };
502
- //# sourceMappingURL=chunk-WPFSZZ35.js.map
502
+ //# sourceMappingURL=chunk-UOA2VQ7C.js.map
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  exportOkfBundle,
18
18
  parseIncludeStatus
19
- } from "./chunk-VSHRMIJH.js";
19
+ } from "./chunk-YYNHJF3N.js";
20
20
  import {
21
21
  exportSqlite
22
22
  } from "./chunk-BV2TIZ4F.js";
@@ -55,7 +55,7 @@ import {
55
55
  } from "./chunk-PYIFUBRK.js";
56
56
  import {
57
57
  rebuildMemoryLifecycleLedger
58
- } from "./chunk-IOM5QSNR.js";
58
+ } from "./chunk-EKKAHJ4B.js";
59
59
  import {
60
60
  rebuildObservations
61
61
  } from "./chunk-WHCD4Z3D.js";
@@ -87,16 +87,16 @@ import {
87
87
  } from "./chunk-EBA5DA77.js";
88
88
  import {
89
89
  searchVerifiedEpisodes
90
- } from "./chunk-IJWEXCWF.js";
90
+ } from "./chunk-JXWTPOMJ.js";
91
91
  import {
92
92
  ThreadingManager
93
93
  } from "./chunk-R7WYAXPO.js";
94
94
  import {
95
95
  promoteSemanticRuleFromMemory
96
- } from "./chunk-NXLQQ6WI.js";
96
+ } from "./chunk-WH4QXVKU.js";
97
97
  import {
98
98
  searchVerifiedSemanticRules
99
- } from "./chunk-5EOV7ANU.js";
99
+ } from "./chunk-OGWEWJRH.js";
100
100
  import {
101
101
  buildResumeBundleFromState,
102
102
  getResumeBundleStatus,
@@ -125,7 +125,7 @@ import {
125
125
  runOperatorInventory,
126
126
  runOperatorRepair,
127
127
  runOperatorSetup
128
- } from "./chunk-5NOPZYNI.js";
128
+ } from "./chunk-OFDIGTC2.js";
129
129
  import {
130
130
  analyzeSessionIntegrity,
131
131
  applySessionRepair,
@@ -176,7 +176,7 @@ import {
176
176
  rebuildMemoryProjection,
177
177
  repairMemoryProjection,
178
178
  verifyMemoryProjection
179
- } from "./chunk-JSIQSZXI.js";
179
+ } from "./chunk-56GJLXBA.js";
180
180
  import {
181
181
  buildConnectorRowsFromDefinitions,
182
182
  parseConnectorsListOptions,
@@ -210,7 +210,7 @@ import {
210
210
  import {
211
211
  EngramAccessHttpServer,
212
212
  MeetingsInputError
213
- } from "./chunk-BPY4RRTF.js";
213
+ } from "./chunk-MO25AN7J.js";
214
214
  import {
215
215
  WearablesInputError
216
216
  } from "./chunk-V7IZKJI3.js";
@@ -220,10 +220,10 @@ import {
220
220
  loadChatSession,
221
221
  processChatMessage,
222
222
  sessionBelongsToPrincipal
223
- } from "./chunk-N44GZ73R.js";
223
+ } from "./chunk-SOJ3IQD3.js";
224
224
  import {
225
225
  EngramAccessService
226
- } from "./chunk-NYVKLB2I.js";
226
+ } from "./chunk-BX4WDBTE.js";
227
227
  import {
228
228
  WorkStorage
229
229
  } from "./chunk-MPC7TYTZ.js";
@@ -243,16 +243,16 @@ import {
243
243
  } from "./chunk-OFEHITAZ.js";
244
244
  import {
245
245
  readAggregateExtractionWatermark
246
- } from "./chunk-5Q4NQNW7.js";
246
+ } from "./chunk-VJGDQA3D.js";
247
247
  import {
248
248
  getObjectiveStateStoreStatus
249
249
  } from "./chunk-HM7RHKS4.js";
250
250
  import {
251
251
  journalPath
252
- } from "./chunk-E5274WUC.js";
252
+ } from "./chunk-OAIWPB2I.js";
253
253
  import {
254
254
  searchHarmonicRetrieval
255
- } from "./chunk-OC6JYPZX.js";
255
+ } from "./chunk-O5MW6CQL.js";
256
256
  import {
257
257
  getCueAnchorStoreStatus
258
258
  } from "./chunk-BMWN7B3Y.js";
@@ -261,12 +261,12 @@ import {
261
261
  readMemoryGovernanceRunArtifact,
262
262
  restoreMemoryGovernanceRun,
263
263
  runMemoryGovernance
264
- } from "./chunk-AV46CT77.js";
264
+ } from "./chunk-KX36OCGK.js";
265
265
  import {
266
266
  listNamespaces,
267
267
  runNamespaceMigration,
268
268
  verifyNamespaces
269
- } from "./chunk-GDI64ITR.js";
269
+ } from "./chunk-KWVI52ER.js";
270
270
  import {
271
271
  resolveNamespaceChildRoot
272
272
  } from "./chunk-3UXOZBHV.js";
@@ -303,7 +303,7 @@ import {
303
303
  } from "./chunk-BOOFTFFE.js";
304
304
  import {
305
305
  meetingIdDate
306
- } from "./chunk-WJLGUY27.js";
306
+ } from "./chunk-BD5QEP3T.js";
307
307
  import {
308
308
  isValidTranscriptDate
309
309
  } from "./chunk-UHVXE24Y.js";
@@ -10136,4 +10136,4 @@ export {
10136
10136
  listMemoryMarkdownFilePaths,
10137
10137
  registerCli
10138
10138
  };
10139
- //# sourceMappingURL=chunk-S4GUMZRB.js.map
10139
+ //# sourceMappingURL=chunk-VA2HNBGQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getOperation
3
- } from "./chunk-NYVKLB2I.js";
3
+ } from "./chunk-BX4WDBTE.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -21,4 +21,4 @@ async function respondBriefingHttp(options) {
21
21
  export {
22
22
  respondBriefingHttp
23
23
  };
24
- //# sourceMappingURL=chunk-YAF3NRNC.js.map
24
+ //# sourceMappingURL=chunk-VBJD4RSJ.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot
3
- } from "./chunk-RH6QEGCT.js";
3
+ } from "./chunk-D5UPBXZM.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-WJLGUY27.js";
6
+ } from "./chunk-BD5QEP3T.js";
7
7
  import {
8
8
  composeLocationDayBody,
9
9
  composeLocationDayMeta,
@@ -728,4 +728,4 @@ export {
728
728
  runLocationBackfill,
729
729
  runLocationCliCommand
730
730
  };
731
- //# sourceMappingURL=chunk-A6G7K273.js.map
731
+ //# sourceMappingURL=chunk-VDXTXVFZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveCorpusNamespaceRoots
3
- } from "./chunk-5FNVK7MW.js";
3
+ } from "./chunk-JVNEXW6X.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-IG747LRN.js";
@@ -200,4 +200,4 @@ async function readAggregateExtractionWatermark(options) {
200
200
  export {
201
201
  readAggregateExtractionWatermark
202
202
  };
203
- //# sourceMappingURL=chunk-5Q4NQNW7.js.map
203
+ //# sourceMappingURL=chunk-VJGDQA3D.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineOperation
3
- } from "./chunk-NYVKLB2I.js";
3
+ } from "./chunk-BX4WDBTE.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -71,4 +71,4 @@ defineOperation({
71
71
  })
72
72
  })
73
73
  });
74
- //# sourceMappingURL=chunk-QN77HA6P.js.map
74
+ //# sourceMappingURL=chunk-WCTL3PVM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-WJLGUY27.js";
3
+ } from "./chunk-BD5QEP3T.js";
4
4
  import {
5
5
  composeMemoryEnvelope
6
6
  } from "./chunk-OFCHT2TN.js";
@@ -546,4 +546,4 @@ export {
546
546
  setSemanticRulePromotionTestHooks,
547
547
  promoteSemanticRuleFromMemory
548
548
  };
549
- //# sourceMappingURL=chunk-NXLQQ6WI.js.map
549
+ //# sourceMappingURL=chunk-WH4QXVKU.js.map
@@ -21,13 +21,13 @@ import {
21
21
  defineOperation,
22
22
  parseNamespacePreflightWriteOp,
23
23
  resolveAuthorizedNamespaceWritablePreflight
24
- } from "./chunk-NYVKLB2I.js";
24
+ } from "./chunk-BX4WDBTE.js";
25
25
  import {
26
26
  parseSharedWriteOutputControls
27
27
  } from "./chunk-IFBSZGW3.js";
28
28
  import {
29
29
  validateBriefingFormat
30
- } from "./chunk-C3WJNRGR.js";
30
+ } from "./chunk-BH44JOLA.js";
31
31
  import {
32
32
  parseDeepRecallMaxSteps
33
33
  } from "./chunk-A7AISUJI.js";
@@ -603,4 +603,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
603
603
  defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
604
604
  defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
605
605
  defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
606
- //# sourceMappingURL=chunk-3VTNNO2B.js.map
606
+ //# sourceMappingURL=chunk-WXFKXCOQ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportCreateGrantRequestSchema,
3
3
  defineOperation
4
- } from "./chunk-NYVKLB2I.js";
4
+ } from "./chunk-BX4WDBTE.js";
5
5
  import {
6
6
  SupportPassportCardCategorySchema,
7
7
  SupportPassportMemoryIdSchema,
@@ -220,4 +220,4 @@ var supportPassportGrantAskOperation = defineOperation({
220
220
  result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
221
221
  })
222
222
  });
223
- //# sourceMappingURL=chunk-K3DZ3G5I.js.map
223
+ //# sourceMappingURL=chunk-XQIHFXYP.js.map
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-3UXOZBHV.js";
15
15
  import {
16
16
  StorageManager
17
- } from "./chunk-WJLGUY27.js";
17
+ } from "./chunk-BD5QEP3T.js";
18
18
  import {
19
19
  OKF_PROFILE_TYPE,
20
20
  okfTypeForMemory
@@ -272,4 +272,4 @@ export {
272
272
  exportOkfBundle,
273
273
  firstHeading
274
274
  };
275
- //# sourceMappingURL=chunk-VSHRMIJH.js.map
275
+ //# sourceMappingURL=chunk-YYNHJF3N.js.map