@remnic/core 9.69.3 → 9.69.5

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 (233) hide show
  1. package/dist/access-admin-ops-surface.d.ts +1 -1
  2. package/dist/access-admin-ops-surface.js +20 -20
  3. package/dist/access-authorization-probe.d.ts +1 -1
  4. package/dist/access-authorization-probe.js +21 -21
  5. package/dist/access-boundary.d.ts +1 -1
  6. package/dist/access-boundary.js +20 -20
  7. package/dist/access-cli.js +68 -68
  8. package/dist/access-extraction-force-flush.d.ts +1 -1
  9. package/dist/access-extraction-force-flush.js +20 -20
  10. package/dist/access-http-lcm-compaction.d.ts +1 -1
  11. package/dist/access-http-lifecycle-flush.d.ts +1 -1
  12. package/dist/access-http-offline-stream.d.ts +1 -1
  13. package/dist/access-http-query.js +22 -22
  14. package/dist/access-http.d.ts +2 -2
  15. package/dist/access-http.js +36 -36
  16. package/dist/access-identity-continuity-surface.js +20 -20
  17. package/dist/access-lcm-surface.d.ts +1 -1
  18. package/dist/access-lcm-surface.js +20 -20
  19. package/dist/access-mcp.d.ts +1 -1
  20. package/dist/access-mcp.js +29 -29
  21. package/dist/access-namespace-preflight.js +20 -20
  22. package/dist/access-observe-write-surface.d.ts +1 -1
  23. package/dist/access-observe-write-surface.js +20 -20
  24. package/dist/access-operations-batch.js +23 -23
  25. package/dist/access-operations.d.ts +6 -6
  26. package/dist/access-operations.js +28 -28
  27. package/dist/access-recall-concurrency.d.ts +1 -1
  28. package/dist/access-recall-concurrency.js +20 -20
  29. package/dist/access-recall-response.d.ts +1 -1
  30. package/dist/access-recall-response.js +20 -20
  31. package/dist/access-recall-surface.d.ts +1 -1
  32. package/dist/access-recall-surface.js +20 -20
  33. package/dist/access-schema.d.ts +89 -89
  34. package/dist/access-schema.js +4 -4
  35. package/dist/access-service-helpers.d.ts +1 -1
  36. package/dist/access-service.d.ts +1 -1
  37. package/dist/access-service.js +20 -20
  38. package/dist/access-surface-catalog.d.ts +1 -1
  39. package/dist/access-surface-catalog.js +22 -22
  40. package/dist/briefing.js +8 -8
  41. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  42. package/dist/causal-consolidation.js +9 -9
  43. package/dist/{chunk-N3VPKMU3.js → chunk-3X7Z467X.js} +2 -2
  44. package/dist/{chunk-EB3V7PJC.js → chunk-4OH6FGAO.js} +13 -13
  45. package/dist/{chunk-EA2C5Z7V.js → chunk-5C4LXMSK.js} +26 -26
  46. package/dist/{chunk-YSD4MK5Q.js → chunk-5HP6LVWU.js} +2 -2
  47. package/dist/{chunk-OM4VYQPH.js → chunk-6EXRODDF.js} +2 -2
  48. package/dist/{chunk-2L5FSNPC.js → chunk-6F5WBXE2.js} +4 -4
  49. package/dist/{chunk-DZPX5WSG.js → chunk-6JYTP3JP.js} +3 -3
  50. package/dist/{chunk-RFYKLES2.js → chunk-6KQLDPKA.js} +2 -2
  51. package/dist/{chunk-J2R275FN.js → chunk-7DXW5V2W.js} +2 -2
  52. package/dist/chunk-7O5EW7KX.js +27 -0
  53. package/dist/chunk-7O5EW7KX.js.map +1 -0
  54. package/dist/{chunk-227UFSEQ.js → chunk-7RZJWZ46.js} +5 -5
  55. package/dist/{chunk-ATS6H6AC.js → chunk-7TCISOAJ.js} +210 -47
  56. package/dist/chunk-7TCISOAJ.js.map +1 -0
  57. package/dist/{chunk-3KURGLO7.js → chunk-7VA7PARC.js} +2 -2
  58. package/dist/{chunk-TOUZM2RQ.js → chunk-AJFKQJQK.js} +2 -2
  59. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  60. package/dist/{chunk-WZBDOI2C.js → chunk-C5FRCM4B.js} +2 -2
  61. package/dist/{chunk-PRCJDCDD.js → chunk-CGFDT752.js} +4 -4
  62. package/dist/{chunk-V63BBOFS.js → chunk-DD2BKHSD.js} +2 -2
  63. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  64. package/dist/{chunk-WJTB4SF5.js → chunk-EAG7YMIS.js} +2 -2
  65. package/dist/{chunk-DA2XDNS5.js → chunk-EJF6AV2U.js} +7 -7
  66. package/dist/{chunk-3HEYRDNF.js → chunk-EJJ57PTY.js} +2 -2
  67. package/dist/{chunk-YHSZTMM3.js → chunk-EVLHZ6F3.js} +2 -2
  68. package/dist/{chunk-35J5ABJC.js → chunk-FGV7V2N4.js} +2 -2
  69. package/dist/{chunk-6AYPXHOF.js → chunk-GM35IHF7.js} +2 -2
  70. package/dist/{chunk-MU4FAKGV.js → chunk-HDEQRI2O.js} +2 -2
  71. package/dist/{chunk-PBSZQBFM.js → chunk-IFHT77WK.js} +2 -2
  72. package/dist/{chunk-OZFHE6FY.js → chunk-IHFN3JTR.js} +3 -3
  73. package/dist/{chunk-LXMYIJOO.js → chunk-ISDSX7GW.js} +1 -1
  74. package/dist/{chunk-EZPBQVGZ.js → chunk-JJAOVJ3E.js} +5 -5
  75. package/dist/{chunk-76X3F4WV.js → chunk-LGVIKA7O.js} +6 -6
  76. package/dist/{chunk-7DQQYJKU.js → chunk-MDQXW235.js} +2 -2
  77. package/dist/{chunk-ASDK4GEV.js → chunk-MOUCCUET.js} +2 -2
  78. package/dist/{chunk-DT7LKLET.js → chunk-MVH7YAWY.js} +2 -2
  79. package/dist/{chunk-GH477IGR.js → chunk-NAB4MKTJ.js} +3 -3
  80. package/dist/{chunk-FGORNFTZ.js → chunk-NM5EOKN7.js} +2 -2
  81. package/dist/{chunk-LXBVTRBG.js → chunk-OUAK37ID.js} +2 -2
  82. package/dist/{chunk-HCERYDRI.js → chunk-PGD3DXZP.js} +2 -2
  83. package/dist/{chunk-6CT4HSVJ.js → chunk-PY5E3UOD.js} +2 -2
  84. package/dist/{chunk-HBOQO4GB.js → chunk-QDBG45NK.js} +7 -7
  85. package/dist/{chunk-EJCKJS4X.js → chunk-R3YVNAJB.js} +2 -2
  86. package/dist/{chunk-XVI2TR26.js → chunk-R4FPBSFD.js} +2 -2
  87. package/dist/{chunk-VVE5SLO5.js → chunk-SKVSBTFQ.js} +2 -2
  88. package/dist/{chunk-S7363OIV.js → chunk-SZ3SRRYZ.js} +2 -2
  89. package/dist/{chunk-WRPRUMUI.js → chunk-SZZGVXKC.js} +2 -2
  90. package/dist/{chunk-TFN3PPYO.js → chunk-TGDFKC7X.js} +2 -2
  91. package/dist/{chunk-7SL6EJLT.js → chunk-TP3N5364.js} +2 -2
  92. package/dist/{chunk-IPLYGWQF.js → chunk-VDX2J7OX.js} +6 -6
  93. package/dist/{chunk-VJERIMIX.js → chunk-W6V2XVUO.js} +3 -3
  94. package/dist/{chunk-5FBA6UXN.js → chunk-WTWHORVW.js} +7 -7
  95. package/dist/{chunk-UFY4G6EC.js → chunk-XOGYSWQZ.js} +10 -10
  96. package/dist/{chunk-J6SWAE74.js → chunk-YERBUSU2.js} +2 -2
  97. package/dist/{chunk-D65XGENZ.js → chunk-YPNTBYEV.js} +3 -3
  98. package/dist/{chunk-FNNWK7G7.js → chunk-ZET6A3OF.js} +2 -2
  99. package/dist/{cli-CFpMhqz5.d.ts → cli-Bvy4jdBu.d.ts} +1 -1
  100. package/dist/cli.d.ts +2 -2
  101. package/dist/cli.js +51 -51
  102. package/dist/coding/export-okf-codegraph.js +8 -8
  103. package/dist/compounding/engine.js +8 -8
  104. package/dist/connectors/codex-materialize-runner.js +8 -8
  105. package/dist/connectors/index.js +8 -8
  106. package/dist/convergence-refresh.js +10 -10
  107. package/dist/conversation-index/backend.js +2 -2
  108. package/dist/corpus-watermark.js +10 -10
  109. package/dist/entity-retrieval.js +8 -8
  110. package/dist/external-wiki-access.d.ts +1 -1
  111. package/dist/external-wiki-access.js +21 -21
  112. package/dist/external-wiki-mcp-tools.d.ts +1 -1
  113. package/dist/extraction.js +8 -8
  114. package/dist/harmonic-retrieval.js +1 -1
  115. package/dist/index.d.ts +757 -681
  116. package/dist/index.js +101 -91
  117. package/dist/lcm/engine.js +2 -2
  118. package/dist/lcm/index.js +5 -5
  119. package/dist/location/index.js +10 -10
  120. package/dist/maintenance/memory-governance.js +8 -8
  121. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +8 -8
  122. package/dist/maintenance/rebuild-memory-projection.js +9 -9
  123. package/dist/mcp-memory-inspector-app.d.ts +1 -1
  124. package/dist/memory-subject-cli.d.ts +1 -1
  125. package/dist/memory-subject.d.ts +1 -1
  126. package/dist/namespaces/migrate.js +9 -9
  127. package/dist/namespaces/search.js +6 -6
  128. package/dist/namespaces/storage.js +8 -8
  129. package/dist/operator-doctor-corpus.js +11 -11
  130. package/dist/operator-toolkit.js +16 -16
  131. package/dist/orchestration/maintenance.js +16 -16
  132. package/dist/orchestrator.js +68 -68
  133. package/dist/{public-http-C9-CHc40.d.ts → public-http-2MyshWxl.d.ts} +1 -1
  134. package/dist/recall-navigate-link.d.ts +9 -3
  135. package/dist/recall-navigate-link.js +3 -15
  136. package/dist/recall-navigate-link.js.map +1 -1
  137. package/dist/recall-navigate-traverse.d.ts +21 -0
  138. package/dist/recall-navigate-traverse.js +44 -0
  139. package/dist/recall-navigate-traverse.js.map +1 -0
  140. package/dist/schemas.d.ts +176 -176
  141. package/dist/search/factory.js +5 -5
  142. package/dist/search/index.js +9 -9
  143. package/dist/semantic-consolidation.js +9 -9
  144. package/dist/semantic-rule-promotion.js +8 -8
  145. package/dist/semantic-rule-verifier.js +8 -8
  146. package/dist/shared-context/manager.d.ts +6 -6
  147. package/dist/source-agent-qualifier.js +8 -8
  148. package/dist/standup/build.js +8 -8
  149. package/dist/storage.js +7 -7
  150. package/dist/support-passport/index.d.ts +4 -4
  151. package/dist/support-passport/index.js +23 -23
  152. package/dist/transfer/autodetect.js +1 -1
  153. package/dist/transfer/backup.js +2 -2
  154. package/dist/transfer/capsule-export.js +3 -3
  155. package/dist/transfer/capsule-import.js +2 -2
  156. package/dist/transfer/export-okf.js +9 -9
  157. package/dist/transfer/types.d.ts +78 -78
  158. package/dist/verified-recall.js +8 -8
  159. package/dist/who-knows-cli.d.ts +1 -1
  160. package/dist/who-knows-cli.js +9 -9
  161. package/dist/who-knows.d.ts +1 -1
  162. package/dist/who-knows.js +8 -8
  163. package/package.json +2 -2
  164. package/src/activity/index.ts +2 -0
  165. package/src/activity/privacy-gate-resolve.test.ts +175 -0
  166. package/src/activity/privacy-gate-resolve.ts +84 -0
  167. package/src/activity/timeline/index.ts +1 -0
  168. package/src/activity/timeline/recap-fallback.test.ts +184 -0
  169. package/src/activity/timeline/recap-fallback.ts +106 -0
  170. package/src/activity/vault-dry-run.test.ts +114 -0
  171. package/src/activity/vault-dry-run.ts +76 -0
  172. package/src/dedup/index.ts +6 -0
  173. package/src/dedup/merge-content.test.ts +116 -0
  174. package/src/dedup/merge-content.ts +40 -0
  175. package/src/recall-navigate-link.test.ts +28 -6
  176. package/src/recall-navigate-link.ts +16 -2
  177. package/src/recall-navigate-traverse.test.ts +247 -0
  178. package/src/recall-navigate-traverse.ts +73 -0
  179. package/dist/chunk-ATS6H6AC.js.map +0 -1
  180. package/dist/{access-service-DcfM0Vf0.d.ts → access-service-LbwWl05g.d.ts} +64 -64
  181. /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  182. /package/dist/{chunk-N3VPKMU3.js.map → chunk-3X7Z467X.js.map} +0 -0
  183. /package/dist/{chunk-EB3V7PJC.js.map → chunk-4OH6FGAO.js.map} +0 -0
  184. /package/dist/{chunk-EA2C5Z7V.js.map → chunk-5C4LXMSK.js.map} +0 -0
  185. /package/dist/{chunk-YSD4MK5Q.js.map → chunk-5HP6LVWU.js.map} +0 -0
  186. /package/dist/{chunk-OM4VYQPH.js.map → chunk-6EXRODDF.js.map} +0 -0
  187. /package/dist/{chunk-2L5FSNPC.js.map → chunk-6F5WBXE2.js.map} +0 -0
  188. /package/dist/{chunk-DZPX5WSG.js.map → chunk-6JYTP3JP.js.map} +0 -0
  189. /package/dist/{chunk-RFYKLES2.js.map → chunk-6KQLDPKA.js.map} +0 -0
  190. /package/dist/{chunk-J2R275FN.js.map → chunk-7DXW5V2W.js.map} +0 -0
  191. /package/dist/{chunk-227UFSEQ.js.map → chunk-7RZJWZ46.js.map} +0 -0
  192. /package/dist/{chunk-3KURGLO7.js.map → chunk-7VA7PARC.js.map} +0 -0
  193. /package/dist/{chunk-TOUZM2RQ.js.map → chunk-AJFKQJQK.js.map} +0 -0
  194. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  195. /package/dist/{chunk-WZBDOI2C.js.map → chunk-C5FRCM4B.js.map} +0 -0
  196. /package/dist/{chunk-PRCJDCDD.js.map → chunk-CGFDT752.js.map} +0 -0
  197. /package/dist/{chunk-V63BBOFS.js.map → chunk-DD2BKHSD.js.map} +0 -0
  198. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  199. /package/dist/{chunk-WJTB4SF5.js.map → chunk-EAG7YMIS.js.map} +0 -0
  200. /package/dist/{chunk-DA2XDNS5.js.map → chunk-EJF6AV2U.js.map} +0 -0
  201. /package/dist/{chunk-3HEYRDNF.js.map → chunk-EJJ57PTY.js.map} +0 -0
  202. /package/dist/{chunk-YHSZTMM3.js.map → chunk-EVLHZ6F3.js.map} +0 -0
  203. /package/dist/{chunk-35J5ABJC.js.map → chunk-FGV7V2N4.js.map} +0 -0
  204. /package/dist/{chunk-6AYPXHOF.js.map → chunk-GM35IHF7.js.map} +0 -0
  205. /package/dist/{chunk-MU4FAKGV.js.map → chunk-HDEQRI2O.js.map} +0 -0
  206. /package/dist/{chunk-PBSZQBFM.js.map → chunk-IFHT77WK.js.map} +0 -0
  207. /package/dist/{chunk-OZFHE6FY.js.map → chunk-IHFN3JTR.js.map} +0 -0
  208. /package/dist/{chunk-LXMYIJOO.js.map → chunk-ISDSX7GW.js.map} +0 -0
  209. /package/dist/{chunk-EZPBQVGZ.js.map → chunk-JJAOVJ3E.js.map} +0 -0
  210. /package/dist/{chunk-76X3F4WV.js.map → chunk-LGVIKA7O.js.map} +0 -0
  211. /package/dist/{chunk-7DQQYJKU.js.map → chunk-MDQXW235.js.map} +0 -0
  212. /package/dist/{chunk-ASDK4GEV.js.map → chunk-MOUCCUET.js.map} +0 -0
  213. /package/dist/{chunk-DT7LKLET.js.map → chunk-MVH7YAWY.js.map} +0 -0
  214. /package/dist/{chunk-GH477IGR.js.map → chunk-NAB4MKTJ.js.map} +0 -0
  215. /package/dist/{chunk-FGORNFTZ.js.map → chunk-NM5EOKN7.js.map} +0 -0
  216. /package/dist/{chunk-LXBVTRBG.js.map → chunk-OUAK37ID.js.map} +0 -0
  217. /package/dist/{chunk-HCERYDRI.js.map → chunk-PGD3DXZP.js.map} +0 -0
  218. /package/dist/{chunk-6CT4HSVJ.js.map → chunk-PY5E3UOD.js.map} +0 -0
  219. /package/dist/{chunk-HBOQO4GB.js.map → chunk-QDBG45NK.js.map} +0 -0
  220. /package/dist/{chunk-EJCKJS4X.js.map → chunk-R3YVNAJB.js.map} +0 -0
  221. /package/dist/{chunk-XVI2TR26.js.map → chunk-R4FPBSFD.js.map} +0 -0
  222. /package/dist/{chunk-VVE5SLO5.js.map → chunk-SKVSBTFQ.js.map} +0 -0
  223. /package/dist/{chunk-S7363OIV.js.map → chunk-SZ3SRRYZ.js.map} +0 -0
  224. /package/dist/{chunk-WRPRUMUI.js.map → chunk-SZZGVXKC.js.map} +0 -0
  225. /package/dist/{chunk-TFN3PPYO.js.map → chunk-TGDFKC7X.js.map} +0 -0
  226. /package/dist/{chunk-7SL6EJLT.js.map → chunk-TP3N5364.js.map} +0 -0
  227. /package/dist/{chunk-IPLYGWQF.js.map → chunk-VDX2J7OX.js.map} +0 -0
  228. /package/dist/{chunk-VJERIMIX.js.map → chunk-W6V2XVUO.js.map} +0 -0
  229. /package/dist/{chunk-5FBA6UXN.js.map → chunk-WTWHORVW.js.map} +0 -0
  230. /package/dist/{chunk-UFY4G6EC.js.map → chunk-XOGYSWQZ.js.map} +0 -0
  231. /package/dist/{chunk-J6SWAE74.js.map → chunk-YERBUSU2.js.map} +0 -0
  232. /package/dist/{chunk-D65XGENZ.js.map → chunk-YPNTBYEV.js.map} +0 -0
  233. /package/dist/{chunk-FNNWK7G7.js.map → chunk-ZET6A3OF.js.map} +0 -0
@@ -1,9 +1,15 @@
1
1
  /**
2
- * Recall navigation link-type parse (issue #1956 leftover).
2
+ * Recall navigation link-type parse (issue #1956).
3
3
  *
4
- * Pure. Surfaces wait. Unknown or empty is unknown_link.
4
+ * One allow-list covering BOTH vocabularies a traversal can meet:
5
+ * the navigation set this module originally defined and the persisted
6
+ * `MemoryLinkType` values (`follows | references | related`) that real
7
+ * memory frontmatter carries. Review found the narrower list silently
8
+ * dropped every persisted `follows`/`references`/`related` edge and
9
+ * rejected `relation: "related"` as unknown — a traversal over actual
10
+ * stored links would lose valid neighbors. Surfaces wait.
5
11
  */
6
- declare const NAVIGATE_LINK_TYPES: readonly ["supports", "contradicts", "elaborates", "causes", "caused_by"];
12
+ declare const NAVIGATE_LINK_TYPES: readonly ["supports", "contradicts", "elaborates", "causes", "caused_by", "follows", "references", "related", "supersedes"];
7
13
  type NavigateLinkType = (typeof NAVIGATE_LINK_TYPES)[number];
8
14
  type ParseNavigateLinkTypeResult = {
9
15
  ok: true;
@@ -1,19 +1,7 @@
1
+ import {
2
+ parseNavigateLinkType
3
+ } from "./chunk-7O5EW7KX.js";
1
4
  import "./chunk-PZ5AY32C.js";
2
-
3
- // src/recall-navigate-link.ts
4
- var NAVIGATE_LINK_TYPES = [
5
- "supports",
6
- "contradicts",
7
- "elaborates",
8
- "causes",
9
- "caused_by"
10
- ];
11
- function parseNavigateLinkType(value) {
12
- if (NAVIGATE_LINK_TYPES.includes(value)) {
13
- return { ok: true, type: value };
14
- }
15
- return { ok: false, error: "unknown_link" };
16
- }
17
5
  export {
18
6
  parseNavigateLinkType
19
7
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/recall-navigate-link.ts"],"sourcesContent":["/**\n * Recall navigation link-type parse (issue #1956 leftover).\n *\n * Pure. Surfaces wait. Unknown or empty is unknown_link.\n */\n\nconst NAVIGATE_LINK_TYPES = [\n \"supports\",\n \"contradicts\",\n \"elaborates\",\n \"causes\",\n \"caused_by\",\n] as const;\n\nexport type NavigateLinkType = (typeof NAVIGATE_LINK_TYPES)[number];\n\nexport type ParseNavigateLinkTypeResult =\n | { ok: true; type: NavigateLinkType }\n | { ok: false; error: \"unknown_link\" };\n\nexport function parseNavigateLinkType(value: string): ParseNavigateLinkTypeResult {\n if ((NAVIGATE_LINK_TYPES as readonly string[]).includes(value)) {\n return { ok: true, type: value as NavigateLinkType };\n }\n return { ok: false, error: \"unknown_link\" };\n}\n"],"mappings":";;;AAMA,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,SAAS,sBAAsB,OAA4C;AAChF,MAAK,oBAA0C,SAAS,KAAK,GAAG;AAC9D,WAAO,EAAE,IAAI,MAAM,MAAM,MAA0B;AAAA,EACrD;AACA,SAAO,EAAE,IAAI,OAAO,OAAO,eAAe;AAC5C;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,21 @@
1
+ declare const DEFAULT_TRAVERSE_LIMIT = 10;
2
+ interface TraverseNeighbor {
3
+ targetId: string;
4
+ linkType: string;
5
+ }
6
+ type TraverseSelectionResult = {
7
+ ok: true;
8
+ neighbors: TraverseNeighbor[];
9
+ truncated: boolean;
10
+ } | {
11
+ ok: false;
12
+ error: "unknown_relation" | "invalid_limit";
13
+ };
14
+ declare function selectTraverseNeighbors(input: {
15
+ links: readonly TraverseNeighbor[];
16
+ /** Optional relation filter; omitted means every known relation. */
17
+ relation?: string;
18
+ limit?: number;
19
+ }): TraverseSelectionResult;
20
+
21
+ export { DEFAULT_TRAVERSE_LIMIT, type TraverseNeighbor, type TraverseSelectionResult, selectTraverseNeighbors };
@@ -0,0 +1,44 @@
1
+ import {
2
+ parseNavigateLinkType
3
+ } from "./chunk-7O5EW7KX.js";
4
+ import "./chunk-PZ5AY32C.js";
5
+
6
+ // src/recall-navigate-traverse.ts
7
+ var DEFAULT_TRAVERSE_LIMIT = 10;
8
+ function selectTraverseNeighbors(input) {
9
+ const limit = input.limit ?? DEFAULT_TRAVERSE_LIMIT;
10
+ if (!Number.isFinite(limit) || !Number.isInteger(limit) || limit < 1) {
11
+ return { ok: false, error: "invalid_limit" };
12
+ }
13
+ if (input.relation !== void 0 && !parseNavigateLinkType(input.relation).ok) {
14
+ return { ok: false, error: "unknown_relation" };
15
+ }
16
+ const kept = [];
17
+ for (const link of input.links) {
18
+ if (!parseNavigateLinkType(link.linkType).ok) continue;
19
+ if (input.relation !== void 0 && link.linkType !== input.relation) continue;
20
+ if (typeof link.targetId !== "string" || link.targetId.trim() === "" || link.targetId.trim() !== link.targetId) {
21
+ continue;
22
+ }
23
+ kept.push({ targetId: link.targetId, linkType: link.linkType });
24
+ }
25
+ kept.sort((a, b) => {
26
+ if (a.linkType !== b.linkType) return a.linkType < b.linkType ? -1 : 1;
27
+ if (a.targetId !== b.targetId) return a.targetId < b.targetId ? -1 : 1;
28
+ return 0;
29
+ });
30
+ const seen = /* @__PURE__ */ new Set();
31
+ const deduped = [];
32
+ for (const link of kept) {
33
+ if (seen.has(link.targetId)) continue;
34
+ seen.add(link.targetId);
35
+ deduped.push(link);
36
+ }
37
+ const truncated = deduped.length > limit;
38
+ return { ok: true, neighbors: truncated ? deduped.slice(0, limit) : deduped, truncated };
39
+ }
40
+ export {
41
+ DEFAULT_TRAVERSE_LIMIT,
42
+ selectTraverseNeighbors
43
+ };
44
+ //# sourceMappingURL=recall-navigate-traverse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/recall-navigate-traverse.ts"],"sourcesContent":["/**\n * Recall navigation traverse selection (issue #1956).\n *\n * Pure selection step for `traverseLinks(id, relation?, limit)`: given a\n * recalled memory's links, pick which neighbors a traverse would visit.\n * Internal; surfaces wire it in a later slice.\n */\nimport { parseNavigateLinkType } from \"./recall-navigate-link.js\";\n\nexport const DEFAULT_TRAVERSE_LIMIT = 10;\n\nexport interface TraverseNeighbor {\n targetId: string;\n linkType: string;\n}\n\nexport type TraverseSelectionResult =\n | { ok: true; neighbors: TraverseNeighbor[]; truncated: boolean }\n | { ok: false; error: \"unknown_relation\" | \"invalid_limit\" };\n\nexport function selectTraverseNeighbors(input: {\n links: readonly TraverseNeighbor[];\n /** Optional relation filter; omitted means every known relation. */\n relation?: string;\n limit?: number;\n}): TraverseSelectionResult {\n const limit = input.limit ?? DEFAULT_TRAVERSE_LIMIT;\n if (!Number.isFinite(limit) || !Number.isInteger(limit) || limit < 1) {\n return { ok: false, error: \"invalid_limit\" };\n }\n if (input.relation !== undefined && !parseNavigateLinkType(input.relation).ok) {\n return { ok: false, error: \"unknown_relation\" };\n }\n\n const kept: TraverseNeighbor[] = [];\n // Asymmetry is intentional: a bad request (unknown relation, invalid\n // limit) is refused, but bad stored data is skipped — stored data may\n // predate a type or carry a malformed id, and one bad row must not fail\n // the whole traverse. A targetId that is not a non-blank string, including\n // undefined/null and whitespace-only, is malformed and skipped. Padded ids\n // are NOT trimmed into validity: an id is an exact identity, and guessing\n // the intended target is worse than skipping the row.\n for (const link of input.links) {\n if (!parseNavigateLinkType(link.linkType).ok) continue;\n if (input.relation !== undefined && link.linkType !== input.relation) continue;\n if (typeof link.targetId !== \"string\" || link.targetId.trim() === \"\" || link.targetId.trim() !== link.targetId) {\n continue;\n }\n kept.push({ targetId: link.targetId, linkType: link.linkType });\n }\n\n // Sort BEFORE deduplicating: first-occurrence dedup on an unsorted list\n // lets input order decide which relation survives for a target that is\n // linked under two types, and after the cap is applied, which target is\n // returned at all. Sorting first makes the survivor deterministic\n // (smallest linkType wins the tie).\n kept.sort((a, b) => {\n if (a.linkType !== b.linkType) return a.linkType < b.linkType ? -1 : 1;\n if (a.targetId !== b.targetId) return a.targetId < b.targetId ? -1 : 1;\n return 0;\n });\n\n const seen = new Set<string>();\n const deduped: TraverseNeighbor[] = [];\n for (const link of kept) {\n if (seen.has(link.targetId)) continue;\n seen.add(link.targetId);\n deduped.push(link);\n }\n\n const truncated = deduped.length > limit;\n return { ok: true, neighbors: truncated ? deduped.slice(0, limit) : deduped, truncated };\n}\n"],"mappings":";;;;;;AASO,IAAM,yBAAyB;AAW/B,SAAS,wBAAwB,OAKZ;AAC1B,QAAM,QAAQ,MAAM,SAAS;AAC7B,MAAI,CAAC,OAAO,SAAS,KAAK,KAAK,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,GAAG;AACpE,WAAO,EAAE,IAAI,OAAO,OAAO,gBAAgB;AAAA,EAC7C;AACA,MAAI,MAAM,aAAa,UAAa,CAAC,sBAAsB,MAAM,QAAQ,EAAE,IAAI;AAC7E,WAAO,EAAE,IAAI,OAAO,OAAO,mBAAmB;AAAA,EAChD;AAEA,QAAM,OAA2B,CAAC;AAQlC,aAAW,QAAQ,MAAM,OAAO;AAC9B,QAAI,CAAC,sBAAsB,KAAK,QAAQ,EAAE,GAAI;AAC9C,QAAI,MAAM,aAAa,UAAa,KAAK,aAAa,MAAM,SAAU;AACtE,QAAI,OAAO,KAAK,aAAa,YAAY,KAAK,SAAS,KAAK,MAAM,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,UAAU;AAC9G;AAAA,IACF;AACA,SAAK,KAAK,EAAE,UAAU,KAAK,UAAU,UAAU,KAAK,SAAS,CAAC;AAAA,EAChE;AAOA,OAAK,KAAK,CAAC,GAAG,MAAM;AAClB,QAAI,EAAE,aAAa,EAAE,SAAU,QAAO,EAAE,WAAW,EAAE,WAAW,KAAK;AACrE,QAAI,EAAE,aAAa,EAAE,SAAU,QAAO,EAAE,WAAW,EAAE,WAAW,KAAK;AACrE,WAAO;AAAA,EACT,CAAC;AAED,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,UAA8B,CAAC;AACrC,aAAW,QAAQ,MAAM;AACvB,QAAI,KAAK,IAAI,KAAK,QAAQ,EAAG;AAC7B,SAAK,IAAI,KAAK,QAAQ;AACtB,YAAQ,KAAK,IAAI;AAAA,EACnB;AAEA,QAAM,YAAY,QAAQ,SAAS;AACnC,SAAO,EAAE,IAAI,MAAM,WAAW,YAAY,QAAQ,MAAM,GAAG,KAAK,IAAI,SAAS,UAAU;AACzF;","names":[]}