@danielmarbach/mnemonic-mcp 0.27.1 → 0.28.0

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 (244) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/auto-relate.d.ts.map +1 -1
  3. package/build/auto-relate.js +11 -5
  4. package/build/auto-relate.js.map +1 -1
  5. package/build/brands.d.ts +38 -0
  6. package/build/brands.d.ts.map +1 -0
  7. package/build/brands.js +51 -0
  8. package/build/brands.js.map +1 -0
  9. package/build/cache.d.ts.map +1 -1
  10. package/build/cache.js +2 -4
  11. package/build/cache.js.map +1 -1
  12. package/build/cli/import-claude-memory.d.ts +4 -0
  13. package/build/cli/import-claude-memory.d.ts.map +1 -0
  14. package/build/cli/import-claude-memory.js +144 -0
  15. package/build/cli/import-claude-memory.js.map +1 -0
  16. package/build/cli/migrate.d.ts +2 -0
  17. package/build/cli/migrate.d.ts.map +1 -0
  18. package/build/cli/migrate.js +104 -0
  19. package/build/cli/migrate.js.map +1 -0
  20. package/build/config.d.ts +2 -0
  21. package/build/config.d.ts.map +1 -1
  22. package/build/config.js +41 -14
  23. package/build/config.js.map +1 -1
  24. package/build/consolidate.d.ts +2 -1
  25. package/build/consolidate.d.ts.map +1 -1
  26. package/build/consolidate.js +3 -6
  27. package/build/consolidate.js.map +1 -1
  28. package/build/context.d.ts +5 -0
  29. package/build/context.d.ts.map +1 -0
  30. package/build/context.js +41 -0
  31. package/build/context.js.map +1 -0
  32. package/build/date-utils.d.ts +3 -0
  33. package/build/date-utils.d.ts.map +1 -0
  34. package/build/date-utils.js +10 -0
  35. package/build/date-utils.js.map +1 -0
  36. package/build/embeddings.d.ts +2 -1
  37. package/build/embeddings.d.ts.map +1 -1
  38. package/build/embeddings.js +24 -2
  39. package/build/embeddings.js.map +1 -1
  40. package/build/error-utils.d.ts +3 -0
  41. package/build/error-utils.d.ts.map +1 -0
  42. package/build/error-utils.js +9 -0
  43. package/build/error-utils.js.map +1 -0
  44. package/build/git-constants.d.ts +2 -0
  45. package/build/git-constants.d.ts.map +1 -0
  46. package/build/git-constants.js +2 -0
  47. package/build/git-constants.js.map +1 -0
  48. package/build/git.d.ts +27 -18
  49. package/build/git.d.ts.map +1 -1
  50. package/build/git.js +39 -22
  51. package/build/git.js.map +1 -1
  52. package/build/helpers/embed.d.ts +13 -0
  53. package/build/helpers/embed.d.ts.map +1 -0
  54. package/build/helpers/embed.js +70 -0
  55. package/build/helpers/embed.js.map +1 -0
  56. package/build/helpers/git-commit.d.ts +43 -0
  57. package/build/helpers/git-commit.d.ts.map +1 -0
  58. package/build/helpers/git-commit.js +129 -0
  59. package/build/helpers/git-commit.js.map +1 -0
  60. package/build/helpers/index.d.ts +19 -0
  61. package/build/helpers/index.d.ts.map +1 -0
  62. package/build/helpers/index.js +83 -0
  63. package/build/helpers/index.js.map +1 -0
  64. package/build/helpers/persistence.d.ts +34 -0
  65. package/build/helpers/persistence.d.ts.map +1 -0
  66. package/build/helpers/persistence.js +176 -0
  67. package/build/helpers/persistence.js.map +1 -0
  68. package/build/helpers/project.d.ts +21 -0
  69. package/build/helpers/project.d.ts.map +1 -0
  70. package/build/helpers/project.js +75 -0
  71. package/build/helpers/project.js.map +1 -0
  72. package/build/helpers/vault.d.ts +50 -0
  73. package/build/helpers/vault.d.ts.map +1 -0
  74. package/build/helpers/vault.js +196 -0
  75. package/build/helpers/vault.js.map +1 -0
  76. package/build/index.js +12 -5425
  77. package/build/index.js.map +1 -1
  78. package/build/lexical.d.ts +1 -1
  79. package/build/lexical.d.ts.map +1 -1
  80. package/build/lexical.js +2 -3
  81. package/build/lexical.js.map +1 -1
  82. package/build/markdown-ast.d.ts.map +1 -1
  83. package/build/markdown-ast.js +4 -2
  84. package/build/markdown-ast.js.map +1 -1
  85. package/build/migration.d.ts.map +1 -1
  86. package/build/migration.js +6 -5
  87. package/build/migration.js.map +1 -1
  88. package/build/project-introspection.d.ts +4 -4
  89. package/build/project-introspection.d.ts.map +1 -1
  90. package/build/project-introspection.js +68 -26
  91. package/build/project-introspection.js.map +1 -1
  92. package/build/project-memory-policy.d.ts.map +1 -1
  93. package/build/project-memory-policy.js +38 -3
  94. package/build/project-memory-policy.js.map +1 -1
  95. package/build/project.d.ts +2 -1
  96. package/build/project.d.ts.map +1 -1
  97. package/build/project.js +5 -4
  98. package/build/project.js.map +1 -1
  99. package/build/projections.d.ts.map +1 -1
  100. package/build/projections.js +2 -1
  101. package/build/projections.js.map +1 -1
  102. package/build/prompts.d.ts +3 -0
  103. package/build/prompts.d.ts.map +1 -0
  104. package/build/prompts.js +138 -0
  105. package/build/prompts.js.map +1 -0
  106. package/build/provenance.d.ts +1 -1
  107. package/build/provenance.d.ts.map +1 -1
  108. package/build/provenance.js +8 -11
  109. package/build/provenance.js.map +1 -1
  110. package/build/recall.d.ts +2 -1
  111. package/build/recall.d.ts.map +1 -1
  112. package/build/recall.js +29 -14
  113. package/build/recall.js.map +1 -1
  114. package/build/relationships.d.ts +2 -2
  115. package/build/relationships.d.ts.map +1 -1
  116. package/build/relationships.js +34 -38
  117. package/build/relationships.js.map +1 -1
  118. package/build/semantic-patch.d.ts.map +1 -1
  119. package/build/semantic-patch.js +10 -4
  120. package/build/semantic-patch.js.map +1 -1
  121. package/build/server-context.d.ts +18 -0
  122. package/build/server-context.d.ts.map +1 -0
  123. package/build/server-context.js +2 -0
  124. package/build/server-context.js.map +1 -0
  125. package/build/startup.d.ts +5 -0
  126. package/build/startup.d.ts.map +1 -0
  127. package/build/startup.js +37 -0
  128. package/build/startup.js.map +1 -0
  129. package/build/storage.d.ts +17 -15
  130. package/build/storage.d.ts.map +1 -1
  131. package/build/storage.js +32 -40
  132. package/build/storage.js.map +1 -1
  133. package/build/structured-content.d.ts +94 -74
  134. package/build/structured-content.d.ts.map +1 -1
  135. package/build/structured-content.js +30 -17
  136. package/build/structured-content.js.map +1 -1
  137. package/build/temporal-interpretation.d.ts +2 -1
  138. package/build/temporal-interpretation.d.ts.map +1 -1
  139. package/build/temporal-interpretation.js +13 -7
  140. package/build/temporal-interpretation.js.map +1 -1
  141. package/build/tools/consolidate-helpers.d.ts +55 -0
  142. package/build/tools/consolidate-helpers.d.ts.map +1 -0
  143. package/build/tools/consolidate-helpers.js +815 -0
  144. package/build/tools/consolidate-helpers.js.map +1 -0
  145. package/build/tools/consolidate.d.ts +4 -0
  146. package/build/tools/consolidate.d.ts.map +1 -0
  147. package/build/tools/consolidate.js +127 -0
  148. package/build/tools/consolidate.js.map +1 -0
  149. package/build/tools/detect-project.d.ts +6 -0
  150. package/build/tools/detect-project.d.ts.map +1 -0
  151. package/build/tools/detect-project.js +79 -0
  152. package/build/tools/detect-project.js.map +1 -0
  153. package/build/tools/discover-tags.d.ts +4 -0
  154. package/build/tools/discover-tags.d.ts.map +1 -0
  155. package/build/tools/discover-tags.js +236 -0
  156. package/build/tools/discover-tags.js.map +1 -0
  157. package/build/tools/forget.d.ts +4 -0
  158. package/build/tools/forget.d.ts.map +1 -0
  159. package/build/tools/forget.js +123 -0
  160. package/build/tools/forget.js.map +1 -0
  161. package/build/tools/get-project-identity.d.ts +4 -0
  162. package/build/tools/get-project-identity.d.ts.map +1 -0
  163. package/build/tools/get-project-identity.js +59 -0
  164. package/build/tools/get-project-identity.js.map +1 -0
  165. package/build/tools/get.d.ts +4 -0
  166. package/build/tools/get.d.ts.map +1 -0
  167. package/build/tools/get.js +115 -0
  168. package/build/tools/get.js.map +1 -0
  169. package/build/tools/index.d.ts +4 -0
  170. package/build/tools/index.d.ts.map +1 -0
  171. package/build/tools/index.js +47 -0
  172. package/build/tools/index.js.map +1 -0
  173. package/build/tools/list.d.ts +4 -0
  174. package/build/tools/list.d.ts.map +1 -0
  175. package/build/tools/list.js +95 -0
  176. package/build/tools/list.js.map +1 -0
  177. package/build/tools/memory-graph.d.ts +4 -0
  178. package/build/tools/memory-graph.d.ts.map +1 -0
  179. package/build/tools/memory-graph.js +84 -0
  180. package/build/tools/memory-graph.js.map +1 -0
  181. package/build/tools/migration.d.ts +5 -0
  182. package/build/tools/migration.d.ts.map +1 -0
  183. package/build/tools/migration.js +157 -0
  184. package/build/tools/migration.js.map +1 -0
  185. package/build/tools/move-memory.d.ts +4 -0
  186. package/build/tools/move-memory.d.ts.map +1 -0
  187. package/build/tools/move-memory.js +170 -0
  188. package/build/tools/move-memory.js.map +1 -0
  189. package/build/tools/policy.d.ts +5 -0
  190. package/build/tools/policy.d.ts.map +1 -0
  191. package/build/tools/policy.js +195 -0
  192. package/build/tools/policy.js.map +1 -0
  193. package/build/tools/project-memory-summary.d.ts +4 -0
  194. package/build/tools/project-memory-summary.d.ts.map +1 -0
  195. package/build/tools/project-memory-summary.js +477 -0
  196. package/build/tools/project-memory-summary.js.map +1 -0
  197. package/build/tools/recall-helpers.d.ts +28 -0
  198. package/build/tools/recall-helpers.d.ts.map +1 -0
  199. package/build/tools/recall-helpers.js +137 -0
  200. package/build/tools/recall-helpers.js.map +1 -0
  201. package/build/tools/recall.d.ts +4 -0
  202. package/build/tools/recall.d.ts.map +1 -0
  203. package/build/tools/recall.js +343 -0
  204. package/build/tools/recall.js.map +1 -0
  205. package/build/tools/recent-memories.d.ts +4 -0
  206. package/build/tools/recent-memories.d.ts.map +1 -0
  207. package/build/tools/recent-memories.js +79 -0
  208. package/build/tools/recent-memories.js.map +1 -0
  209. package/build/tools/relate.d.ts +4 -0
  210. package/build/tools/relate.d.ts.map +1 -0
  211. package/build/tools/relate.js +180 -0
  212. package/build/tools/relate.js.map +1 -0
  213. package/build/tools/remember.d.ts +4 -0
  214. package/build/tools/remember.d.ts.map +1 -0
  215. package/build/tools/remember.js +219 -0
  216. package/build/tools/remember.js.map +1 -0
  217. package/build/tools/set-project-identity.d.ts +4 -0
  218. package/build/tools/set-project-identity.d.ts.map +1 -0
  219. package/build/tools/set-project-identity.js +113 -0
  220. package/build/tools/set-project-identity.js.map +1 -0
  221. package/build/tools/sync.d.ts +4 -0
  222. package/build/tools/sync.d.ts.map +1 -0
  223. package/build/tools/sync.js +127 -0
  224. package/build/tools/sync.js.map +1 -0
  225. package/build/tools/unrelate.d.ts +4 -0
  226. package/build/tools/unrelate.d.ts.map +1 -0
  227. package/build/tools/unrelate.js +179 -0
  228. package/build/tools/unrelate.js.map +1 -0
  229. package/build/tools/update.d.ts +4 -0
  230. package/build/tools/update.d.ts.map +1 -0
  231. package/build/tools/update.js +365 -0
  232. package/build/tools/update.js.map +1 -0
  233. package/build/tools/where-is-memory.d.ts +4 -0
  234. package/build/tools/where-is-memory.d.ts.map +1 -0
  235. package/build/tools/where-is-memory.js +61 -0
  236. package/build/tools/where-is-memory.js.map +1 -0
  237. package/build/validation.d.ts +24 -0
  238. package/build/validation.d.ts.map +1 -0
  239. package/build/validation.js +62 -0
  240. package/build/validation.js.map +1 -0
  241. package/build/vault.d.ts.map +1 -1
  242. package/build/vault.js +11 -5
  243. package/build/vault.js.map +1 -1
  244. package/package.json +2 -1
@@ -0,0 +1,138 @@
1
+ export function registerPrompts(server) {
2
+ // ── mnemonic-workflow-hint prompt ─────────────────────────────────────────────
3
+ server.registerPrompt("mnemonic-workflow-hint", {
4
+ title: "Mnemonic Workflow Hints",
5
+ description: "Optional workflow hints for using the mnemonic memory tools effectively.",
6
+ }, async () => ({
7
+ messages: [
8
+ {
9
+ role: "user",
10
+ content: {
11
+ type: "text",
12
+ text: "## Mnemonic MCP workflow hints\n\n" +
13
+ "Avoid duplicate memories. Prefer inspecting and updating existing memories before creating new ones.\n\n" +
14
+ "- REQUIRES: Before `remember`, call `recall` or `list` first.\n" +
15
+ "- If `recall` or `list` returns a plausible match, call `get` before deciding whether to `update` or `remember`.\n" +
16
+ "- If an existing memory already covers the topic, use `update`, not `remember`.\n" +
17
+ "- When unsure, prefer `recall` over `remember`.\n" +
18
+ "- For repo-related tasks, pass `cwd` so mnemonic can route project memories correctly.\n\n" +
19
+ "Workflow: `recall`/`list` -> `get` -> `update` or `remember` -> `relate`/`consolidate`/`move_memory`. Use `discover_tags` only when tag choice is ambiguous.\n\n" +
20
+ "When a merge/prune decision is uncertain, use optional evidence enrichment: `recall` with `evidence: \"compact\"` and `consolidate` analysis strategies with `evidence: true`. Evidence improves confidence but is not required.\n\n" +
21
+ "Roles are optional prioritization hints, not schema. Lifecycle still governs durability. When `lifecycle` is omitted, `remember` applies soft defaults based on role: `research`, `plan`, and `review` default to `temporary`; `decision`, `summary`, and `reference` default to `permanent`. Explicit `lifecycle` always overrides the role-based default. Inferred roles are internal hints only. Prioritization is language-independent by default.\n\n" +
22
+ "### Working-state continuity\n\n" +
23
+ "Preserve in-progress work as temporary notes when continuation value is high. Recovery happens after project orientation.\n\n" +
24
+ "**Checkpoint note structure (temporary notes):**\n" +
25
+ "- Title pattern: 'WIP: <topic>' or 'Checkpoint: <description>'\n" +
26
+ "- Opening paragraph: current status and next immediate step\n" +
27
+ "- Body: what was attempted, what worked, blockers, alternatives considered\n" +
28
+ "- End with explicit next action and confidence level\n\n" +
29
+ "**Checkpoint note guidance:**\n" +
30
+ "- One checkpoint per active task or investigation thread\n" +
31
+ "- Update the same checkpoint note as work progresses (don't create new ones)\n" +
32
+ "- Link to related decisions: use `relate` to connect temporary checkpoints to permanent decisions\n" +
33
+ "- Consolidate into a durable note when complete; let lifecycle defaults delete temporary scaffolding unless you intentionally need preserved history\n\n" +
34
+ "**Recovery workflow:**\n" +
35
+ "- Call `project_memory_summary` first for orientation (do not skip to recovery)\n" +
36
+ "- Use `lifecycle: temporary` for active plans, WIP checkpoints, draft investigations, and unvalidated options\n" +
37
+ "- Use `lifecycle: permanent` for decisions, discovered constraints, bug causes, and reusable lessons\n" +
38
+ "- After orientation, recover working-state from temporary notes via `recall` with lifecycle filter\n" +
39
+ "- Consolidate temporary notes into durable ones once knowledge stabilizes\n" +
40
+ "- Recovery is a follow-on step, not a replacement for orientation\n\n" +
41
+ "### Anti-patterns\n\n" +
42
+ "- Bad: call `remember` immediately because the user said 'remember'.\n" +
43
+ "- Good: `recall` or `list` first, then `get`, then `update` or `remember`.\n" +
44
+ "- Bad: create another note when `recall` or `list` already found the same decision.\n" +
45
+ "- Good: `update` the existing memory and relate it if needed.\n" +
46
+ "- Bad: skip orientation and jump straight to working-state recovery.\n" +
47
+ "- Good: `project_memory_summary` first, then recover temporary notes.\n\n" +
48
+ "### Storage model\n\n" +
49
+ "Memories can live in:\n" +
50
+ "- `main-vault` for global knowledge\n" +
51
+ "- `project-vault` as the broad project-level filter\n" +
52
+ "- `sub-vault:<folder>` for a specific project sub-vault such as `sub-vault:.mnemonic-lib`\n\n" +
53
+ "Passing `cwd` enables:\n" +
54
+ "- project memory routing\n" +
55
+ "- project-aware recall ranking\n" +
56
+ "- project memory policy lookup\n\n" +
57
+ "### Tiny examples\n\n" +
58
+ "- Existing bug note found by `recall` -> inspect with `get` -> refine with `update`.\n" +
59
+ "- No matching note found by `recall` -> optional `discover_tags` with note context -> create with `remember`.\n" +
60
+ "- Two notes overlap heavily -> inspect -> clean up with `consolidate`.\n" +
61
+ "- Unsure why a recall hit ranked high -> rerun `recall` with `evidence: \"compact\"`.\n" +
62
+ "- Unsure whether to merge/prune -> run `consolidate` analysis with `evidence: true` before `execute-merge` or `prune-superseded`.\n" +
63
+ "- Resume work: `project_memory_summary` -> `recall` (lifecycle: temporary) -> continue from temporary notes.\n\n" +
64
+ "### semanticPatch format\n\n" +
65
+ "When using `update` with `semanticPatch`:\n" +
66
+ "- Each patch is an object with two keys: `selector` and `operation` (not flat `{op, value}` at top level).\n" +
67
+ "- `selector` has exactly one key: `heading`, `headingStartsWith`, `nthChild`, or `lastChild`.\n" +
68
+ "- `operation` has an `op` key plus `value` (except `remove` which has no value).\n" +
69
+ "- The parameter must be a JSON array, NOT a string.\n" +
70
+ "- Use `get` first to read exact heading text, then use those headings (without `##` prefix) as selector values.\n" +
71
+ "- Common mistake: writing `{ \"op\": \"appendChild\", \"value\": \"...\" }` at the top level instead of nesting inside `operation`. Correct shape: `{ \"selector\": { \"heading\": \"Findings\" }, \"operation\": { \"op\": \"insertAfter\", \"value\": \"text\" } }`\n" +
72
+ "- `appendChild`, `prependChild`, and `replaceChildren` do NOT work with `heading` selectors. To add content under a heading, use `insertAfter`. To replace a heading, use `replace`.",
73
+ },
74
+ },
75
+ ],
76
+ }));
77
+ // ── mnemonic-rpi-workflow prompt ───────────────────────────────────────────────
78
+ const rpiWorkflowPrompt = async () => ({
79
+ messages: [
80
+ {
81
+ role: "user",
82
+ content: {
83
+ type: "text",
84
+ text: "## RPIR workflow: research → plan → implement → review\n\n" +
85
+ "mnemonic is the artifact store, not the runtime. Store workflow artifacts with correct roles and lifecycle; do not build orchestration in core.\n\n" +
86
+ "### Request root note\n\n" +
87
+ "For each RPIR workflow, create one request root note: `role: context`, `lifecycle: temporary`, `tags: [\"workflow\", \"request\"]`. All artifacts relate to it.\n\n" +
88
+ "### Stage 1 — Research\n\n" +
89
+ "- Create or update request root note.\n" +
90
+ "- Create research notes: `role: research`, `lifecycle: temporary`.\n" +
91
+ "- Distill a short research summary when findings are scattered.\n" +
92
+ "- Link research `related-to` request root.\n" +
93
+ "- Before creating research notes, call `recall` to check whether existing notes already cover the topic.\n\n" +
94
+ "### Stage 2 — Plan\n\n" +
95
+ "- Create or update one plan note: `role: plan`, `lifecycle: temporary`.\n" +
96
+ "- Link plan `related-to` request root + key research notes.\n" +
97
+ "- Keep plan concise and executable.\n" +
98
+ "- REQUIRES: One current plan per request. Update or supersede when plan evolves.\n" +
99
+ "- Material changes (architecture, scope, ordering, validation, assumptions): update plan note first, then continue.\n" +
100
+ "- Non-material changes (wording, phrasing, detail): update inline without branching.\n\n" +
101
+ "### Stage 3 — Implement\n\n" +
102
+ "- Create temporary apply/task notes, tagged with `apply`.\n" +
103
+ "- Use `role: plan` for executable steps. Use `role: context` for observations and checkpoints.\n" +
104
+ "- Link apply notes `related-to` plan.\n" +
105
+ "- For non-trivial work, hand narrow context to subagent: request note, current plan or relevant slice, key research notes, narrow file/task scope.\n" +
106
+ "- Subagent returns: updated apply note, optional review note, recommendation (continue / block / update plan).\n\n" +
107
+ "### Stage 4 — Review\n\n" +
108
+ "- Create review notes: `role: review`, `lifecycle: temporary`.\n" +
109
+ "- Link review `related-to` apply or plan.\n" +
110
+ "- Fix directly or mark blockers.\n" +
111
+ "- If review changes the plan materially, update plan note first.\n\n" +
112
+ "### Stage 5 — Consolidate\n\n" +
113
+ "At workflow end:\n" +
114
+ "- Create decision note for resolved approaches (`lifecycle: permanent`).\n" +
115
+ "- Create summary note for outcome recaps (`lifecycle: permanent`).\n" +
116
+ "- Promote reusable facts and patterns into permanent reference notes.\n" +
117
+ "- Let pure scaffolding and redundant checkpoints expire as temporary notes.\n\n" +
118
+ "### Relationship conventions\n\n" +
119
+ "Minimal set. Link to immediate upstream artifacts only. No dense cross-linking.\n" +
120
+ "- research → request root\n" +
121
+ "- plan → request root + key research notes\n" +
122
+ "- apply/task → plan\n" +
123
+ "- review → apply or plan\n" +
124
+ "- outcome → plan (optionally request root)\n\n" +
125
+ "### Commit discipline\n\n" +
126
+ "Three classes: memory (research/plan/review artifacts), work (code/test/docs), memory (consolidation/promotion). When plan changes materially: update notes, commit memory, then continue work.\n\n" +
127
+ "### Iterate?\n\n" +
128
+ "Only when review or checks warrant it. Not the default.",
129
+ },
130
+ },
131
+ ],
132
+ });
133
+ server.registerPrompt("mnemonic-rpi-workflow", {
134
+ title: "RPI Workflow: Research → Plan → Implement → Review",
135
+ description: "Stage protocol and conventions for structured task workflows using mnemonic as artifact store.",
136
+ }, rpiWorkflowPrompt);
137
+ }
138
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,6 @@ export declare function buildTemporalHistoryEntry(commit: LastCommit, stats: Com
14
14
  changeType: "metadata-only change" | "minor edit" | "substantial update";
15
15
  };
16
16
  };
17
- export declare function getNoteProvenance(git: GitOps, filePath: string): Promise<Provenance | undefined>;
17
+ export declare function getNoteProvenance(git: GitOps, filePath: string, now?: Date): Promise<Provenance | undefined>;
18
18
  export declare function computeConfidence(lifecycle: NoteLifecycle, updatedAt: string, centrality: number): Confidence;
19
19
  //# sourceMappingURL=provenance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AA0C5E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,WAAW,GAAG,IAAI,EACzB,OAAO,EAAE,OAAO,GACf;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,sBAAsB,GAAG,YAAY,GAAG,oBAAoB,CAAC;KAC1E,CAAC;CACH,CAsBA;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAcjC;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,UAAU,CAcZ"}
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AA2C5E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,WAAW,GAAG,IAAI,EACzB,OAAO,EAAE,OAAO,GACf;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,sBAAsB,GAAG,YAAY,GAAG,oBAAoB,CAAC;KAC1E,CAAC;CACH,CAsBA;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAYjC;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,UAAU,CAYZ"}
@@ -1,13 +1,14 @@
1
+ import { daysSince } from "./date-utils.js";
2
+ import { metadataPrefixes } from "./git-constants.js";
1
3
  const RECENTLY_CHANGED_DAYS = 5;
2
4
  const HIGH_CONFIDENCE_DAYS = 30;
3
5
  const MEDIUM_CONFIDENCE_DAYS = 90;
4
6
  const HIGH_CONFIDENCE_CENTRALITY = 5;
5
7
  function classifyTemporalChange(commit, stats) {
6
- const metadataPrefixes = ["relate:", "unrelate:", "move:", "migrate:", "forget:"];
7
8
  if (stats.additions === 0 && stats.deletions === 0) {
8
9
  return "metadata-only change";
9
10
  }
10
- if (metadataPrefixes.some((prefix) => commit.message.startsWith(prefix))) {
11
+ if (metadataPrefixes.some((prefix) => commit.message.toLowerCase().startsWith(prefix))) {
11
12
  return "metadata-only change";
12
13
  }
13
14
  const totalChangedLines = stats.additions + stats.deletions;
@@ -49,13 +50,11 @@ export function buildTemporalHistoryEntry(commit, stats, verbose) {
49
50
  },
50
51
  };
51
52
  }
52
- export async function getNoteProvenance(git, filePath) {
53
+ export async function getNoteProvenance(git, filePath, now = new Date()) {
53
54
  const commit = await git.getLastCommit(filePath);
54
55
  if (!commit)
55
56
  return undefined;
56
- const commitDate = new Date(commit.timestamp);
57
- const now = new Date();
58
- const daysSinceUpdate = Math.floor((now.getTime() - commitDate.getTime()) / (1000 * 60 * 60 * 24));
57
+ const daysSinceUpdate = Math.floor(daysSince(commit.timestamp));
59
58
  return {
60
59
  lastUpdatedAt: commit.timestamp,
61
60
  lastCommitHash: commit.hash,
@@ -64,13 +63,11 @@ export async function getNoteProvenance(git, filePath) {
64
63
  };
65
64
  }
66
65
  export function computeConfidence(lifecycle, updatedAt, centrality) {
67
- const now = new Date();
68
- const updatedDate = new Date(updatedAt);
69
- const daysSinceUpdate = Math.floor((now.getTime() - updatedDate.getTime()) / (1000 * 60 * 60 * 24));
70
- if (lifecycle === "permanent" && centrality >= HIGH_CONFIDENCE_CENTRALITY && daysSinceUpdate < HIGH_CONFIDENCE_DAYS) {
66
+ const daysSinceUpdateNum = Math.floor(daysSince(updatedAt));
67
+ if (lifecycle === "permanent" && centrality >= HIGH_CONFIDENCE_CENTRALITY && daysSinceUpdateNum < HIGH_CONFIDENCE_DAYS) {
71
68
  return "high";
72
69
  }
73
- if (daysSinceUpdate < MEDIUM_CONFIDENCE_DAYS) {
70
+ if (daysSinceUpdateNum < MEDIUM_CONFIDENCE_DAYS) {
74
71
  return "medium";
75
72
  }
76
73
  return "low";
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
package/build/recall.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import type { Vault } from "./vault.js";
2
2
  import type { EffectiveNoteMetadata } from "./role-suggestions.js";
3
+ import type { Confidence } from "./structured-content.js";
3
4
  import type { RelationshipType } from "./storage.js";
4
5
  export interface TemporalQueryHint {
5
6
  windowDays: number;
6
7
  maxBoost: number;
7
- confidence: "high" | "medium" | "low";
8
+ confidence: Confidence;
8
9
  filterWindowDays?: number;
9
10
  }
10
11
  export interface ScoredRecallCandidate {
@@ -1 +1 @@
1
- {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"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"}
package/build/recall.js CHANGED
@@ -1,6 +1,11 @@
1
1
  import { computeLexicalScore, tokenize } from "./lexical.js";
2
+ import { MS_PER_DAY } from "./date-utils.js";
2
3
  const RRF_K = 60;
3
4
  const CANONICAL_HYBRID_WEIGHT = 0.05;
5
+ // RRF scaling factor: with K=60 and two channels, max RRF ≈ 2/60 ≈ 0.033.
6
+ // Multiplied by 3.5 ≈ 0.115, matching the old additive lexical weight's order-of-magnitude
7
+ // while remaining calibration-free.
8
+ const RRF_SCALING_FACTOR = 3.5;
4
9
  const RECALL_ALWAYS_LOAD_BOOST = 0.01;
5
10
  const RECALL_SUMMARY_BOOST = 0.012;
6
11
  const RECALL_DECISION_BOOST = 0.009;
@@ -64,16 +69,19 @@ function toDays(value, unit) {
64
69
  export function detectTemporalQueryHint(query) {
65
70
  const explicitWindow = query.match(EXPLICIT_TEMPORAL_WINDOW_PATTERN);
66
71
  if (explicitWindow) {
67
- const value = Number.parseInt(explicitWindow[1], 10);
72
+ const valueStr = explicitWindow[1];
68
73
  const unit = explicitWindow[2];
69
- if (Number.isFinite(value) && value > 0) {
70
- const windowDays = toDays(value, unit);
71
- return {
72
- windowDays,
73
- filterWindowDays: windowDays,
74
- maxBoost: Math.min(0.08, 0.03 + Math.log10(value + 1) * 0.02),
75
- confidence: "high",
76
- };
74
+ if (valueStr !== undefined && unit !== undefined) {
75
+ const value = Number.parseInt(valueStr, 10);
76
+ if (Number.isFinite(value) && value > 0) {
77
+ const windowDays = toDays(value, unit);
78
+ return {
79
+ windowDays,
80
+ filterWindowDays: windowDays,
81
+ maxBoost: Math.min(0.08, 0.03 + Math.log10(value + 1) * 0.02),
82
+ confidence: "high",
83
+ };
84
+ }
77
85
  }
78
86
  }
79
87
  for (const entry of TEMPORAL_QUERY_HINTS) {
@@ -88,7 +96,7 @@ export function computeTemporalRecencyBoost(updatedAt, hint, now = new Date()) {
88
96
  if (Number.isNaN(updated.getTime())) {
89
97
  return 0;
90
98
  }
91
- const ageDays = Math.max(0, (now.getTime() - updated.getTime()) / (1000 * 60 * 60 * 24));
99
+ const ageDays = Math.max(0, (now.getTime() - updated.getTime()) / MS_PER_DAY);
92
100
  if (ageDays > hint.windowDays) {
93
101
  return 0;
94
102
  }
@@ -103,7 +111,7 @@ export function isWithinTemporalFilterWindow(updatedAt, windowDays, now = new Da
103
111
  if (Number.isNaN(updated.getTime())) {
104
112
  return true;
105
113
  }
106
- const ageDays = Math.max(0, (now.getTime() - updated.getTime()) / (1000 * 60 * 60 * 24));
114
+ const ageDays = Math.max(0, (now.getTime() - updated.getTime()) / MS_PER_DAY);
107
115
  return ageDays <= windowDays;
108
116
  }
109
117
  /**
@@ -134,7 +142,7 @@ export function computeHybridScore(candidate) {
134
142
  // roughly 2/60 ≈ 0.033. Multiplied by 3.5 this hits ~0.115, matching the
135
143
  // old order-of-magnitude while remaining calibration-free.
136
144
  const rrf = semanticContribution + lexicalContribution;
137
- return candidate.boosted + rrf * 3.5 + canonical * CANONICAL_HYBRID_WEIGHT;
145
+ return candidate.boosted + rrf * RRF_SCALING_FACTOR + canonical * CANONICAL_HYBRID_WEIGHT;
138
146
  }
139
147
  function computeLexicalRankSignal(candidate) {
140
148
  const lexical = candidate.lexicalScore ?? 0;
@@ -147,12 +155,15 @@ export function assignDenseRanks(items, scoreOf, setRank) {
147
155
  let currentRank = 0;
148
156
  let previousScore;
149
157
  for (let i = 0; i < items.length; i++) {
150
- const score = scoreOf(items[i]);
158
+ const item = items[i];
159
+ if (item === undefined)
160
+ continue;
161
+ const score = scoreOf(item);
151
162
  if (previousScore === undefined || Math.abs(score - previousScore) > RANK_EPSILON) {
152
163
  currentRank = i + 1;
153
164
  previousScore = score;
154
165
  }
155
- setRank(items[i], currentRank);
166
+ setRank(item, currentRank);
156
167
  }
157
168
  }
158
169
  function compareByHybridScore(a, b) {
@@ -332,6 +343,10 @@ function getRelationshipMultiplier(type) {
332
343
  case "supersedes":
333
344
  case "follows":
334
345
  return SPREADING_RELATED_TO_MULTIPLIER;
346
+ default: {
347
+ const _exhaustive = type;
348
+ throw new Error(`Unhandled relationship type: ${_exhaustive}`);
349
+ }
335
350
  }
336
351
  }
337
352
  export function applyGraphSpreadingActivation(candidates, getNoteRelationships) {
@@ -1 +1 @@
1
- {"version":3,"file":"recall.js","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recall.js","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,0EAA0E;AAC1E,2FAA2F;AAC3F,oCAAoC;AACpC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAE3C,MAAM,2BAA2B,GAAG,CAAC,CAAC;AACtC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAElD,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,oBAAoB,GAAG;IAC3B,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK;CACN,CAAC;AAmCX,MAAM,UAAU,0BAA0B,CAAC,QAAgC;IACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,QAAQ,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QAC7E,KAAK,IAAI,wBAAwB,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,IAAI,oBAAoB,CAAC;IAChC,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,KAAK,IAAI,qBAAqB,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACnC,KAAK,IAAI,4BAA4B,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,oBAAoB,GAAG;IAC3B,iGAAiG;IACjG,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;IACnG,EAAE,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAC9G,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAClG,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAClG,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IACjG,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAChG,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAC9F,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IACjG,EAAE,OAAO,EAAE,+BAA+B,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;CACjG,CAAC;AAEX,MAAM,gCAAgC,GACpC,2GAA2G,CAAC;AAE9G,SAAS,MAAM,CAAC,KAAa,EAAE,IAAY;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,KAAK,GAAG,CAAC,CAAC;IACtE,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,KAAK,GAAG,EAAE,CAAC;IACzE,OAAO,KAAK,GAAG,GAAG,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACrE,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACzC,OAAO;oBACL,UAAU;oBACV,gBAAgB,EAAE,UAAU;oBAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;oBAC7D,UAAU,EAAE,MAAM;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,IAAuB,EACvB,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IAC9E,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;IAChD,OAAO,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAmC;IAC9E,OAAO,IAAI,EAAE,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,SAAiB,EACjB,UAAkB,EAClB,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IAC9E,OAAO,OAAO,IAAI,UAAU,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAgC;IACjE,MAAM,SAAS,GAAG,SAAS,CAAC,yBAAyB,IAAI,CAAC,CAAC;IAE3D,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,oBAAoB,GAAG,SAAS,CAAC,YAAY,KAAK,SAAS;QAC/D,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC;QACtC,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,mBAAmB,GAAG,SAAS,CAAC,WAAW,KAAK,SAAS;QAC7D,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;QACrC,CAAC,CAAC,CAAC,CAAC;IAEN,uEAAuE;IACvE,sEAAsE;IACtE,yEAAyE;IACzE,2DAA2D;IAC3D,MAAM,GAAG,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;IAEvD,OAAO,SAAS,CAAC,OAAO,GAAG,GAAG,GAAG,kBAAkB,GAAG,SAAS,GAAG,uBAAuB,CAAC;AAC5F,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAgC;IAChE,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,IAAI,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;IAC1C,OAAO,OAAO,GAAG,QAAQ,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;AACjD,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,UAAU,gBAAgB,CAAI,KAAU,EAAE,OAA4B,EAAE,OAAwC;IACpH,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,aAAiC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,YAAY,EAAE,CAAC;YAClF,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAwB,EAAE,CAAwB;IAC9E,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,YAAY,GAAG,wBAAwB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,SAAgC;IAC/E,IAAI,CAAC,SAAS,CAAC,yBAAyB,IAAI,CAAC,CAAC,GAAG,+BAA+B,EAAE,CAAC;QACjF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,KAAK,UAAU;QAClD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS;YACtC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS;gBACtC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,CAAC;IACV,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,mBAAmB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IAE5D,OAAO,UAAU,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,UAAmC;IACpF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,SAAS,CAAC,yBAAyB,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC;IACpF,CAAC;IAED,yEAAyE;IACzE,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAClG,gBAAgB,CAAC,eAAe,EAAE,wBAAwB,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;QAC9E,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAa,EAAE,aAAqB;IACzE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC/F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAa,EAAE,aAAqB,EAAE,WAAqB;IAC/F,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9F,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAClD,WAAW,IAAI,MAAM,CAAC;QACtB,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,aAAa,IAAI,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,WAAW,CAAC;AAC7D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAmC,EACnC,KAAa,EACb,iBAAqD;IAErD,MAAM,WAAW,GAAG,UAAU;SAC3B,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACnD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS,CAAC,YAAY,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9D,SAAS,CAAC,aAAa,GAAG,4BAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACrF,SAAS,CAAC,WAAW,GAAG,6BAA6B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,2EAA2E;IAC3E,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACpG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;QACrF,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,aAAsC,EACtC,KAAa,EACb,iBAAqD;IAErD,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,aAAa;SACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC;SAC5E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpB,CAAC;IACF,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAEjC,MAAM,WAAW,GAAG,aAAa;SAC9B,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACnD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAAE,SAAS;QAC3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS,CAAC,aAAa,GAAG,4BAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACrF,SAAS,CAAC,WAAW,GAAG,6BAA6B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAA+B,EAC/B,KAAa,EACb,KAAmC;IAEnC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEtD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAChF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAgC;IAC5D,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAyC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3I,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7F,OAAO,kBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,cAAc,GAAG,eAAe,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA+B,EAC/B,KAAa,EACb,KAAmC;IAEnC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAChF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAsB;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,qCAAqC,CAAC;QAC/C,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,+BAA+B,CAAC;QACzC,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,IAAI,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,UAAmC,EACnC,oBAA+F;IAE/F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAExE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC;IACxF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAiC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa;YAAE,SAAS;QAE7B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,GAAG,mBAAmB,GAAG,UAAU,CAAC;YAEvE,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,iBAAiB,CAAC,KAAK,IAAI,eAAe,CAAC;gBAC3C,iBAAiB,CAAC,OAAO,IAAI,eAAe,CAAC;gBAC7C,IAAI,iBAAiB,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;oBAC9D,iBAAiB,CAAC,yBAAyB,IAAI,eAAe,CAAC;gBACjE,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;oBACrB,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,KAAK,EAAE,eAAe;oBACtB,yBAAyB,EAAE,eAAe;oBAC1C,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;iBACzC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;gBACzC,QAAQ,CAAC,KAAK,IAAI,eAAe,CAAC;gBAClC,QAAQ,CAAC,OAAO,IAAI,eAAe,CAAC;gBACpC,IAAI,QAAQ,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;oBACrD,QAAQ,CAAC,yBAAyB,IAAI,eAAe,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAAmC,EACnC,oBAAiC,EACjC,YAA8F;IAE9F,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAChE,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAEtD,OAAO,OAAO,CAAC,GAAG,CAChB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CACH,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACnB,CAAC"}
@@ -23,12 +23,12 @@ export declare function isAnchor(note: Note): boolean;
23
23
  /**
24
24
  * Check if note was recently updated.
25
25
  */
26
- export declare function isRecentlyUpdated(note: Note): boolean;
26
+ export declare function isRecentlyUpdated(note: Note, now?: Date): boolean;
27
27
  /**
28
28
  * Compute deterministic score for a related note.
29
29
  * Higher score = higher priority for display.
30
30
  */
31
- export declare function scoreRelatedNote(note: Note, activeProjectId?: string, metadata?: EffectiveNoteMetadata): number;
31
+ export declare function scoreRelatedNote(note: Note, activeProjectId?: string, metadata?: EffectiveNoteMetadata, now?: Date): number;
32
32
  /**
33
33
  * Get all direct related notes for a given note.
34
34
  * Returns note + vault pairs for directly related notes only (1-hop).
@@ -1 +1 @@
1
- {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../src/relationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,EAAwB,KAAK,qBAAqB,EAA8B,MAAM,uBAAuB,CAAC;AAgBrH,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,UAAU,iBAAiB;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AA6CD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAKrD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,eAAe,CAAC,EAAE,MAAM,EACxB,QAAQ,GAAE,qBAAkD,GAC3D,MAAM,CAyCR;AAID;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,KAAK,EAAE,EAClB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyC9B;AAyBD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,iBAAiB,EAAE,EAClC,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,GAAG,SAAS,CAcjC;AAID;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,KAAK,EAAE,EAClB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAQ1C"}
1
+ {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../src/relationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAkC,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnG,OAAO,EAAwB,KAAK,qBAAqB,EAA8B,MAAM,uBAAuB,CAAC;AAiBrH,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,UAAU,iBAAiB;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AA2CD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,eAAe,CAAC,EAAE,MAAM,EACxB,QAAQ,GAAE,qBAAkD,EAC5D,GAAG,CAAC,EAAE,IAAI,GACT,MAAM,CAqCR;AAID;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,KAAK,EAAE,EAClB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA6C9B;AA0BD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,iBAAiB,EAAE,EAClC,OAAO,EAAE,4BAA4B,GACpC,mBAAmB,GAAG,SAAS,CAcjC;AAID;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,KAAK,EAAE,EAClB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAQ1C"}
@@ -1,5 +1,6 @@
1
1
  import { classifyTheme } from "./project-introspection.js";
2
2
  import { getEffectiveMetadata } from "./role-suggestions.js";
3
+ import { daysSince } from "./date-utils.js";
3
4
  const RECENTLY_CHANGED_DAYS = 5;
4
5
  const HIGH_CONFIDENCE_CENTRALITY = 5;
5
6
  const HIGH_CONFIDENCE_DAYS = 30;
@@ -32,10 +33,8 @@ function buildRoleSuggestionContext(note, allNotes) {
32
33
  /**
33
34
  * Compute confidence for a related note (same logic as provenance.ts).
34
35
  */
35
- function computeRelatedNoteConfidence(note) {
36
- const now = new Date();
37
- const updatedDate = new Date(note.updatedAt);
38
- const daysSinceUpdate = Math.floor((now.getTime() - updatedDate.getTime()) / (1000 * 60 * 60 * 24));
36
+ function computeRelatedNoteConfidence(note, now) {
37
+ const daysSinceUpdate = Math.floor(daysSince(note.updatedAt, now ?? new Date()));
39
38
  const centrality = note.relatedTo?.length ?? 0;
40
39
  if (note.lifecycle === "permanent" && centrality >= HIGH_CONFIDENCE_CENTRALITY && daysSinceUpdate < HIGH_CONFIDENCE_DAYS) {
41
40
  return "high";
@@ -54,32 +53,25 @@ export function isAnchor(note) {
54
53
  /**
55
54
  * Check if note was recently updated.
56
55
  */
57
- export function isRecentlyUpdated(note) {
58
- const now = new Date();
59
- const updatedDate = new Date(note.updatedAt);
60
- const daysSinceUpdate = Math.floor((now.getTime() - updatedDate.getTime()) / (1000 * 60 * 60 * 24));
61
- return daysSinceUpdate < RECENTLY_CHANGED_DAYS;
56
+ export function isRecentlyUpdated(note, now) {
57
+ return Math.floor(daysSince(note.updatedAt, now ?? new Date())) < RECENTLY_CHANGED_DAYS;
62
58
  }
63
59
  /**
64
60
  * Compute deterministic score for a related note.
65
61
  * Higher score = higher priority for display.
66
62
  */
67
- export function scoreRelatedNote(note, activeProjectId, metadata = getEffectiveMetadata(note)) {
63
+ export function scoreRelatedNote(note, activeProjectId, metadata = getEffectiveMetadata(note), now) {
68
64
  let score = 0;
69
- // Same project: strong boost (100 points)
70
65
  if (activeProjectId && note.project === activeProjectId) {
71
66
  score += 100;
72
67
  }
73
- // Anchor: medium boost (50 points)
74
68
  if (isAnchor(note)) {
75
69
  score += 50;
76
70
  }
77
- // Recently updated: small boost (20 points)
78
- if (isRecentlyUpdated(note)) {
71
+ if (isRecentlyUpdated(note, now)) {
79
72
  score += 20;
80
73
  }
81
- // High confidence: small boost (10 points)
82
- const confidence = computeRelatedNoteConfidence(note);
74
+ const confidence = computeRelatedNoteConfidence(note, now);
83
75
  if (confidence === "high") {
84
76
  score += 10;
85
77
  }
@@ -111,29 +103,33 @@ export async function getDirectRelatedNotes(note, allVaults, activeProjectId) {
111
103
  return [];
112
104
  }
113
105
  const scored = [];
114
- const notesByVault = new Map();
106
+ const noteById = new Map();
115
107
  for (const vault of allVaults) {
116
- notesByVault.set(vault, await vault.storage.listNotes());
117
- }
118
- const visibleNotes = [...notesByVault.values()].flat();
119
- for (const vault of allVaults) {
120
- for (const relatedId of relatedIds) {
121
- const relatedNote = await vault.storage.readNote(relatedId);
122
- if (!relatedNote)
123
- continue;
124
- const relationship = note.relatedTo.find(r => r.id === relatedId);
125
- if (!relationship)
126
- continue;
127
- const metadata = getEffectiveMetadata(relatedNote, buildRoleSuggestionContext(relatedNote, visibleNotes));
128
- const score = scoreRelatedNote(relatedNote, activeProjectId, metadata);
129
- scored.push({
130
- note: relatedNote,
131
- vault,
132
- relationType: relationship.type,
133
- score,
134
- });
108
+ const notes = await vault.storage.listNotes();
109
+ for (const n of notes) {
110
+ if (!noteById.has(n.id)) {
111
+ noteById.set(n.id, { note: n, vault });
112
+ }
135
113
  }
136
114
  }
115
+ const visibleNotes = [...noteById.values()].map(v => v.note);
116
+ for (const relatedId of relatedIds) {
117
+ const entry = noteById.get(relatedId);
118
+ if (!entry)
119
+ continue;
120
+ const { note: relatedNote, vault } = entry;
121
+ const relationship = note.relatedTo.find(r => r.id === relatedId);
122
+ if (!relationship)
123
+ continue;
124
+ const metadata = getEffectiveMetadata(relatedNote, buildRoleSuggestionContext(relatedNote, visibleNotes));
125
+ const score = scoreRelatedNote(relatedNote, activeProjectId, metadata);
126
+ scored.push({
127
+ note: relatedNote,
128
+ vault,
129
+ relationType: relationship.type,
130
+ score,
131
+ });
132
+ }
137
133
  // Sort by score descending, then by title for determinism
138
134
  scored.sort((a, b) => {
139
135
  if (b.score !== a.score)
@@ -146,7 +142,7 @@ export async function getDirectRelatedNotes(note, allVaults, activeProjectId) {
146
142
  /**
147
143
  * Build a compact related note preview.
148
144
  */
149
- function buildRelatedNotePreview(scored, activeProjectId) {
145
+ function buildRelatedNotePreview(scored, activeProjectId, now) {
150
146
  const { note, relationType } = scored;
151
147
  const theme = classifyTheme(note);
152
148
  return {
@@ -156,7 +152,7 @@ function buildRelatedNotePreview(scored, activeProjectId) {
156
152
  theme: theme !== "other" ? theme : undefined,
157
153
  relationType,
158
154
  updatedAt: note.updatedAt,
159
- confidence: computeRelatedNoteConfidence(note),
155
+ confidence: computeRelatedNoteConfidence(note, now),
160
156
  };
161
157
  }
162
158
  /**