ocean-brain 0.8.2 → 0.10.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.
- package/README.md +2 -0
- package/dist/mcp.js +47 -75
- package/package.json +3 -2
- package/server/client/dist/assets/{ArrowRight.es-g2YZTklZ.js → ArrowRight.es-Bm-ZXpEC.js} +1 -1
- package/server/client/dist/assets/Calendar-BsNs3NzO.js +25 -0
- package/server/client/dist/assets/{Callout-B_IPSF_5.js → Callout-CviyPHKO.js} +1 -1
- package/server/client/dist/assets/{Copy.es-CNxe4ujr.js → Copy.es-BPreRnP9.js} +1 -1
- package/server/client/dist/assets/{Graph-D9GeO71k.js → Graph-vXQQ0a-Q.js} +1 -1
- package/server/client/dist/assets/Graph-yPE3ljW0.js +46 -0
- package/server/client/dist/assets/{Image.es-DnON8cv2.js → Image.es-DnR3qc_c.js} +1 -1
- package/server/client/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/server/client/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/server/client/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/server/client/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/server/client/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/server/client/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/server/client/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/server/client/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/server/client/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/server/client/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/server/client/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/server/client/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/server/client/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/server/client/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/server/client/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/server/client/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/server/client/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/server/client/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/server/client/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/server/client/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/server/client/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/server/client/dist/assets/Note-CmreVzvQ.js +25 -0
- package/server/client/dist/assets/{NotePropertiesPanel-2DgXEM4B.js → NotePropertiesPanel-DXYgE8h2.js} +2 -2
- package/server/client/dist/assets/PencilLine.es-B9V6u64t.js +1 -0
- package/server/client/dist/assets/{Plus.es-CQ8wn2is.js → Plus.es-CRRp2u5J.js} +1 -1
- package/server/client/dist/assets/Reminders-BOtfNeYD.js +1 -0
- package/server/client/dist/assets/Search-C-FB3pKf.js +1 -0
- package/server/client/dist/assets/SurfaceCard-GMt5xM7v.js +1 -0
- package/server/client/dist/assets/Tag-lBxDRE77.js +1 -0
- package/server/client/dist/assets/TagNotes-Bgorp_rC.js +1 -0
- package/server/client/dist/assets/{Trash.es-0aPpA-3S.js → Trash.es-svHOb5LN.js} +1 -1
- package/server/client/dist/assets/ViewNotes-C7d10VFf.js +1 -0
- package/server/client/dist/assets/ViewSectionDialog-Bhw-ILop.js +102 -0
- package/server/client/dist/assets/Views-C7V3saUo.js +1 -0
- package/server/client/dist/assets/abnfDiagram-VRR7QNED-CWlV5dXw.js +1 -0
- package/server/client/dist/assets/app-DQBV36r_.js +50 -0
- package/server/client/dist/assets/app-ZgwR5t_I.css +1 -0
- package/server/client/dist/assets/arc-BV-n6RUX.js +1 -0
- package/server/client/dist/assets/architectureDiagram-ZJ3FMSHR-CekzMXdu.js +36 -0
- package/server/client/dist/assets/blockDiagram-677ZJIJ3-B49yHoxq.js +132 -0
- package/server/client/dist/assets/c4Diagram-LMCZKHZV-0AfB9NBC.js +10 -0
- package/server/client/dist/assets/channel-CigOulR-.js +1 -0
- package/server/client/dist/assets/chunk-2Q5K7J3B-DaPQAU1q.js +1 -0
- package/server/client/dist/assets/chunk-32BRIVSS-CfL3kZAg.js +1 -0
- package/server/client/dist/assets/chunk-5VM5RSS4-DeOwWPE_.js +15 -0
- package/server/client/dist/assets/chunk-EX3LRPZG-C3W1oc9y.js +231 -0
- package/server/client/dist/assets/chunk-JWPE2WC7-_Oqh79OY.js +1 -0
- package/server/client/dist/assets/chunk-MOJQB5TN-DDKNNzI6.js +88 -0
- package/server/client/dist/assets/chunk-RYQCIY6F-DCHah7CC.js +1 -0
- package/server/client/dist/assets/chunk-V7JOEXUC-uUOIzgxj.js +206 -0
- package/server/client/dist/assets/chunk-VR4S4FIN-DDVw2WPs.js +1 -0
- package/server/client/dist/assets/chunk-XXDRQBXY-Coo4UFm2.js +1 -0
- package/server/client/dist/assets/classDiagram-OUVF2IWQ-D13ISIOW.js +1 -0
- package/server/client/dist/assets/classDiagram-v2-EOCWNBFH-D13ISIOW.js +1 -0
- package/server/client/dist/assets/colors-Cc3OSVma.js +1 -0
- package/server/client/dist/assets/cose-bilkent-JH36ORCC-C3pHmHpD.js +1 -0
- package/server/client/dist/assets/cynefin-VYW2F7L2-DU_G4Atc.js +166 -0
- package/server/client/dist/assets/cynefinDiagram-TSTJHNR4-DZ6iiJFo.js +62 -0
- package/server/client/dist/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
- package/server/client/dist/assets/dagre-VKFMJZFB-DNELbhwC.js +4 -0
- package/server/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/server/client/dist/assets/diagram-FQU43EPY-CMEvZJ61.js +3 -0
- package/server/client/dist/assets/diagram-G47NLZAW-BYDtf6j9.js +24 -0
- package/server/client/dist/assets/diagram-NH7WQ7WH-CmXfcCQA.js +24 -0
- package/server/client/dist/assets/diagram-OA4YK3LP-BflTKJxU.js +30 -0
- package/server/client/dist/assets/diagram-WEI45ONY-KW3fKqna.js +41 -0
- package/server/client/dist/assets/ebnfDiagram-CCIWWBDH-CbyhY5Nj.js +1 -0
- package/server/client/dist/assets/erDiagram-Q63AITRT-CC2eZV8g.js +85 -0
- package/server/client/dist/assets/{floating-ui.react-dom-wWLZ1CdM.js → floating-ui.react-dom-BWTnA00G.js} +1 -1
- package/server/client/dist/assets/flowDiagram-23GEKE2U-unplo7Qm.js +156 -0
- package/server/client/dist/assets/ganttDiagram-NO4QXBWP-BcBK5HcZ.js +292 -0
- package/server/client/dist/assets/gitGraphDiagram-IHSO6WYX-DgVbbb5k.js +106 -0
- package/server/client/dist/assets/graph-C5DFNLrC.js +1 -0
- package/server/client/dist/assets/image-delete-confirmation-D7xrODQV.js +1 -0
- package/server/client/dist/assets/image.api-QmHYjp3z.js +17 -0
- package/server/client/dist/assets/index-CaF9d-zG.js +1 -0
- package/server/client/dist/assets/infoDiagram-FWYZ7A6U-N_D9RdfG.js +2 -0
- package/server/client/dist/assets/init-Gi6I4Gst.js +1 -0
- package/server/client/dist/assets/isObject-U9U2HXiq.js +1 -0
- package/server/client/dist/assets/ishikawaDiagram-FXEZZL3T-BBKrzmB2.js +70 -0
- package/server/client/dist/assets/journeyDiagram-5HDEW3XC-NdCxLmQB.js +139 -0
- package/server/client/dist/assets/kanban-definition-HUTT4EX6-Ck7t4-tt.js +89 -0
- package/server/client/dist/assets/katex-DywYRkvg.css +1 -0
- package/server/client/dist/assets/katex-HP8lGamR.js +257 -0
- package/server/client/dist/assets/katex-x288kqHd.js +257 -0
- package/server/client/dist/assets/layout-Cz0MDlGi.js +1 -0
- package/server/client/dist/assets/linear-D6yRgDLq.js +1 -0
- package/server/client/dist/assets/manage-image-DCDF8AM9.js +1 -0
- package/server/client/dist/assets/manage-image-detail-e0ViRAj-.js +1 -0
- package/server/client/dist/assets/map-Mm1V-_Na.js +1 -0
- package/server/client/dist/assets/mcp-admin-adapter-D39G3udJ.js +1 -0
- package/server/client/dist/assets/{mcp-CT_9IV2c.js → mcp-uFZkdhCi.js} +4 -4
- package/server/client/dist/assets/mermaid.core-B14ZAmWA.js +308 -0
- package/server/client/dist/assets/min-tv6RD-6E.js +1 -0
- package/server/client/dist/assets/mindmap-definition-LN4V7U3C-BTUqSdcP.js +96 -0
- package/server/client/dist/assets/{note-core-Buwzyxi7.js → note-core-DUTqUh5N.js} +2 -2
- package/server/client/dist/assets/{note-runtime-CPDVOFEo.js → note-runtime-zN5ddTba.js} +1 -1
- package/server/client/dist/assets/{note-ui-CHI-tzj-.js → note-ui-CxK8ymUc.js} +1 -1
- package/server/client/dist/assets/{note.api-D_00ZzJC.js → note.api-BQovzEzd.js} +6 -6
- package/server/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/server/client/dist/assets/pegDiagram-2B236MQR-Cjcu3mVz.js +1 -0
- package/server/client/dist/assets/pieDiagram-ENE6RG2P-BxI_c22Z.js +39 -0
- package/server/client/dist/assets/{placeholder-DbdGiYGL.js → placeholder-D3b8lZGE.js} +4 -4
- package/server/client/dist/assets/properties-M-yWq1D7.js +1 -0
- package/server/client/dist/assets/quadrantDiagram-ABIIQ3AL-DGm0a-yR.js +7 -0
- package/server/client/dist/assets/railroadDiagram-RFXS5EU6-DmCDu89O.js +1 -0
- package/server/client/dist/assets/requirementDiagram-TGXJPOKE-CBpUt7Ig.js +84 -0
- package/server/client/dist/assets/route-preload.js +2 -2
- package/server/client/dist/assets/sankeyDiagram-HTMAVEWB-BjGnDZlp.js +40 -0
- package/server/client/dist/assets/search-DFnzZKLd.js +1 -0
- package/server/client/dist/assets/sequenceDiagram-DBY2YBRQ-B7rpCfS6.js +162 -0
- package/server/client/dist/assets/sizeCapture-X5ZJPWSS-CUJhD0uW.js +1 -0
- package/server/client/dist/assets/stateDiagram-2N3HPSRC-Y9-3XqRX.js +1 -0
- package/server/client/dist/assets/stateDiagram-v2-6OUMAXLB-DbHXhT02.js +1 -0
- package/server/client/dist/assets/swimlanes-5IMT3BWC-Cs1NO9ng.js +2 -0
- package/server/client/dist/assets/swimlanesDiagram-G3AALYLV-DQnrq2ZC.js +8 -0
- package/server/client/dist/assets/{tag.api-CX0SE06J.js → tag.api-DUfjr8bg.js} +3 -3
- package/server/client/dist/assets/time-CfAYZipR.js +9 -0
- package/server/client/dist/assets/timeline-definition-FHXFAJF6-8fqD4WNL.js +120 -0
- package/server/client/dist/assets/toNumber-DE3J3kMD.js +1 -0
- package/server/client/dist/assets/transform-BUB79_za.js +1 -0
- package/server/client/dist/assets/trash-CClKfP1x.js +1 -0
- package/server/client/dist/assets/url-9nrbQs7Z.js +1 -0
- package/server/client/dist/assets/{useReminderMutate-CLK1tHvT.js → useReminderMutate--omDLmBV.js} +4 -4
- package/server/client/dist/assets/vennDiagram-L72KCM5P-BPqKkd5a.js +34 -0
- package/server/client/dist/assets/wardleyDiagram-EHGQE667-Cq11kU2M.js +78 -0
- package/server/client/dist/assets/xychartDiagram-FW5EYKEG-DJ6UzFj-.js +7 -0
- package/server/client/dist/index.html +7 -7
- package/server/dist/features/image/services/delete.js +25 -1
- package/server/dist/features/note/graphql/note.mutation.resolver.js +38 -12
- package/server/dist/features/note/graphql/note.type-defs.js +1 -1
- package/server/dist/features/note/http/mcp.js +1 -60
- package/server/dist/features/note/services/authoring.js +2 -70
- package/server/dist/features/note/services/markdown-patch.js +80 -8
- package/server/dist/features/note/services/properties.js +21 -1
- package/server/dist/features/note/services/property-restore.js +26 -0
- package/server/dist/features/note/services/snapshot.js +79 -59
- package/server/dist/features/note/services/trash.js +16 -31
- package/server/dist/features/search/embedding-api-key-store.js +57 -0
- package/server/dist/features/search/embedding-client.js +179 -0
- package/server/dist/features/search/graphql/index.js +6 -0
- package/server/dist/features/search/graphql/resolver.js +20 -0
- package/server/dist/features/search/graphql/type-defs.js +30 -0
- package/server/dist/features/search/http/handlers.js +108 -0
- package/server/dist/features/search/hybrid-ranking.js +55 -0
- package/server/dist/features/search/hybrid-search.js +174 -0
- package/server/dist/features/search/note-change.js +16 -0
- package/server/dist/features/search/note-chunking.js +75 -0
- package/server/dist/features/search/search-config.js +150 -0
- package/server/dist/features/search/search-manager.js +431 -0
- package/server/dist/features/search/semantic-indexer.js +138 -0
- package/server/dist/features/search/sqlite-vector-index.js +636 -0
- package/server/dist/features/search/url-normalization.js +10 -0
- package/server/dist/features/tag/services/organization.js +3 -0
- package/server/dist/features/view/services/workspace.js +1 -1
- package/server/dist/main.js +2 -0
- package/server/dist/modules/blocknote.js +4 -5
- package/server/dist/paths.js +7 -2
- package/server/dist/routes/api.js +37 -0
- package/server/dist/routes/mcp.js +0 -5
- package/server/dist/schema/index.js +3 -0
- package/server/client/dist/assets/Calendar-BP6HTuSn.js +0 -25
- package/server/client/dist/assets/Graph-Xha3fwhp.js +0 -46
- package/server/client/dist/assets/Image-BLEjLUqd.js +0 -1
- package/server/client/dist/assets/Note-DjrCYtat.js +0 -24
- package/server/client/dist/assets/Reminders-B4l3KdlK.js +0 -1
- package/server/client/dist/assets/Search-BN5sf7bE.js +0 -1
- package/server/client/dist/assets/SurfaceCard-BZm73nyS.js +0 -1
- package/server/client/dist/assets/Tag-oSnmViVp.js +0 -1
- package/server/client/dist/assets/TagNotes-BDTCcJcL.js +0 -1
- package/server/client/dist/assets/ViewNotes-CiZtGJNE.js +0 -1
- package/server/client/dist/assets/ViewSectionDialog-Ctl_694Y.js +0 -102
- package/server/client/dist/assets/Views-D-zlatYD.js +0 -1
- package/server/client/dist/assets/app-DmqIOMWF.css +0 -1
- package/server/client/dist/assets/app-cTRcKMGc.js +0 -26
- package/server/client/dist/assets/image.api-CVuuvTBk.js +0 -17
- package/server/client/dist/assets/index-DKJChPr4.js +0 -1
- package/server/client/dist/assets/manage-image-BZjaxp-f.js +0 -1
- package/server/client/dist/assets/manage-image-detail-DPv0FQ2m.js +0 -1
- package/server/client/dist/assets/mcp-admin-adapter-xAuyZc_M.js +0 -1
- package/server/client/dist/assets/properties-D447wsWk.js +0 -1
- package/server/client/dist/assets/time-B3pt8vt4.js +0 -9
- package/server/client/dist/assets/trash-8sH7EZgc.js +0 -1
- package/server/client/dist/assets/url-BSnWpmJx.js +0 -1
|
@@ -180,7 +180,7 @@ function restoreTagPlaceholdersInMarkdown(markdown, placeholderToTag) {
|
|
|
180
180
|
function preprocessMarkdownExplicitTags(markdown) {
|
|
181
181
|
const placeholderToTag = /* @__PURE__ */ new Map();
|
|
182
182
|
let nextPlaceholderIndex = 0;
|
|
183
|
-
const preprocessedMarkdown = markdown.replace(/\[([
|
|
183
|
+
const preprocessedMarkdown = markdown.replace(/\[(@[^\s[\]]+)\]/g, (_match, tagToken) => {
|
|
184
184
|
const placeholder = createTagPlaceholder(nextPlaceholderIndex++);
|
|
185
185
|
placeholderToTag.set(placeholder, tagToken);
|
|
186
186
|
return placeholder;
|
|
@@ -872,14 +872,13 @@ async function restoreCustomInlineContent(blocks, deps, placeholderToTag, placeh
|
|
|
872
872
|
const noteCache = /* @__PURE__ */ new Map();
|
|
873
873
|
const noteByIdCache = /* @__PURE__ */ new Map();
|
|
874
874
|
const getTag = (token) => {
|
|
875
|
-
|
|
876
|
-
let existing = tagCache.get(normalizedToken);
|
|
875
|
+
let existing = tagCache.get(token);
|
|
877
876
|
if (!existing) {
|
|
878
|
-
existing = deps.ensureTag(
|
|
877
|
+
existing = deps.ensureTag(token.slice(1)).then((result) => ({
|
|
879
878
|
id: "tag" in result ? result.tag.id : result.id,
|
|
880
879
|
tag: "tag" in result ? result.tag.name : result.name
|
|
881
880
|
}));
|
|
882
|
-
tagCache.set(
|
|
881
|
+
tagCache.set(token, existing);
|
|
883
882
|
}
|
|
884
883
|
return existing;
|
|
885
884
|
};
|
package/server/dist/paths.js
CHANGED
|
@@ -2,12 +2,17 @@ import path from "path";
|
|
|
2
2
|
import { fileURLToPath } from "url";
|
|
3
3
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
4
4
|
const PACKAGE_ROOT = process.env.OCEAN_BRAIN_PACKAGE_ROOT || path.resolve(__dirname, "..");
|
|
5
|
-
const
|
|
5
|
+
const DATA_DIR = process.env.OCEAN_BRAIN_DATA_DIR || ".";
|
|
6
|
+
const IMAGE_DIR = process.env.OCEAN_BRAIN_IMAGE_DIR || path.resolve(DATA_DIR, "assets/images");
|
|
7
|
+
const SEARCH_INDEX_PATH = process.env.OCEAN_BRAIN_SEARCH_INDEX_PATH || path.resolve(DATA_DIR, "search.sqlite3");
|
|
8
|
+
const EMBEDDING_API_KEY_PATH = path.resolve(DATA_DIR, "embedding-api-key");
|
|
6
9
|
const paths = {
|
|
7
10
|
packageRoot: path.resolve(PACKAGE_ROOT),
|
|
8
11
|
clientDist: path.resolve(PACKAGE_ROOT, "client/dist"),
|
|
9
12
|
clientIndex: path.resolve(PACKAGE_ROOT, "client/dist/index.html"),
|
|
10
|
-
imageDir: path.resolve(IMAGE_DIR)
|
|
13
|
+
imageDir: path.resolve(IMAGE_DIR),
|
|
14
|
+
searchIndex: path.resolve(SEARCH_INDEX_PATH),
|
|
15
|
+
embeddingApiKey: path.resolve(EMBEDDING_API_KEY_PATH)
|
|
11
16
|
};
|
|
12
17
|
export {
|
|
13
18
|
paths
|
|
@@ -7,6 +7,13 @@ import {
|
|
|
7
7
|
createMcpAdminSetEnabledHandler,
|
|
8
8
|
createMcpAdminStatusHandler
|
|
9
9
|
} from "../features/mcp-admin/http/handlers.js";
|
|
10
|
+
import {
|
|
11
|
+
createSearchAdminListModelsHandler,
|
|
12
|
+
createSearchAdminReindexHandler,
|
|
13
|
+
createSearchAdminSaveConfigHandler,
|
|
14
|
+
createSearchAdminStatusHandler,
|
|
15
|
+
createSearchAdminTestConnectionHandler
|
|
16
|
+
} from "../features/search/http/handlers.js";
|
|
10
17
|
import { createCsrfProtection, requireSessionForWrite } from "../modules/auth-guard.js";
|
|
11
18
|
import { createAuthAttemptRateLimit, createSessionAccessRateLimit } from "../modules/rate-limit.js";
|
|
12
19
|
import { createServerEventsHandler } from "../modules/server-events-handler.js";
|
|
@@ -46,6 +53,36 @@ const createApiRouter = (authConfig, mcpAdminService) => {
|
|
|
46
53
|
requireSession,
|
|
47
54
|
csrfProtection,
|
|
48
55
|
useAsync(createMcpAdminRevokeTokenHandler(mcpAdminService))
|
|
56
|
+
).get(
|
|
57
|
+
"/search-admin/status",
|
|
58
|
+
sessionAccessRateLimit,
|
|
59
|
+
requireSession,
|
|
60
|
+
csrfProtection,
|
|
61
|
+
useAsync(createSearchAdminStatusHandler())
|
|
62
|
+
).post(
|
|
63
|
+
"/search-admin/config",
|
|
64
|
+
sessionAccessRateLimit,
|
|
65
|
+
requireSession,
|
|
66
|
+
csrfProtection,
|
|
67
|
+
useAsync(createSearchAdminSaveConfigHandler())
|
|
68
|
+
).post(
|
|
69
|
+
"/search-admin/models",
|
|
70
|
+
sessionAccessRateLimit,
|
|
71
|
+
requireSession,
|
|
72
|
+
csrfProtection,
|
|
73
|
+
useAsync(createSearchAdminListModelsHandler())
|
|
74
|
+
).post(
|
|
75
|
+
"/search-admin/test",
|
|
76
|
+
sessionAccessRateLimit,
|
|
77
|
+
requireSession,
|
|
78
|
+
csrfProtection,
|
|
79
|
+
useAsync(createSearchAdminTestConnectionHandler())
|
|
80
|
+
).post(
|
|
81
|
+
"/search-admin/reindex",
|
|
82
|
+
sessionAccessRateLimit,
|
|
83
|
+
requireSession,
|
|
84
|
+
csrfProtection,
|
|
85
|
+
useAsync(createSearchAdminReindexHandler())
|
|
49
86
|
).post("/image", sessionAccessRateLimit, requireSession, csrfProtection, useAsync(createUploadImageHandler())).get("/events", sessionAccessRateLimit, requireSession, csrfProtection, createServerEventsHandler());
|
|
50
87
|
};
|
|
51
88
|
export {
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
createMcpNoteWriteBaselineHandler,
|
|
7
7
|
createMcpPatchNoteMarkdownHandler,
|
|
8
8
|
createMcpReplaceNoteMarkdownHandler,
|
|
9
|
-
createMcpUpdateNoteHandler,
|
|
10
9
|
createMcpUpdateNoteMetadataHandler
|
|
11
10
|
} from "../features/note/http/mcp.js";
|
|
12
11
|
import { createMcpCreateTagHandler } from "../features/tag/http/mcp.js";
|
|
@@ -16,10 +15,6 @@ const createMcpRouter = (authConfig, mcpAdminService) => Router().post(
|
|
|
16
15
|
"/notes/create",
|
|
17
16
|
createMcpAuthMiddleware(authConfig, mcpAdminService),
|
|
18
17
|
useAsync(createMcpCreateNoteHandler())
|
|
19
|
-
).post(
|
|
20
|
-
"/notes/update",
|
|
21
|
-
createMcpAuthMiddleware(authConfig, mcpAdminService),
|
|
22
|
-
useAsync(createMcpUpdateNoteHandler())
|
|
23
18
|
).post(
|
|
24
19
|
"/notes/baseline",
|
|
25
20
|
createMcpAuthMiddleware(authConfig, mcpAdminService),
|
|
@@ -4,6 +4,7 @@ import { imageResolvers, imageTypeDefs } from "../features/image/graphql/index.j
|
|
|
4
4
|
import { noteResolvers, noteTypeDefs } from "../features/note/graphql/index.js";
|
|
5
5
|
import { placeholderResolvers, placeholderTypeDefs } from "../features/placeholder/graphql/index.js";
|
|
6
6
|
import { reminderResolvers, reminderTypeDefs } from "../features/reminder/graphql/index.js";
|
|
7
|
+
import { searchResolvers, searchTypeDefs } from "../features/search/graphql/index.js";
|
|
7
8
|
import { tagResolvers, tagTypeDefs } from "../features/tag/graphql/index.js";
|
|
8
9
|
import { viewResolvers, viewTypeDefs } from "../features/view/graphql/index.js";
|
|
9
10
|
const schema = makeExecutableSchema({
|
|
@@ -14,6 +15,7 @@ const schema = makeExecutableSchema({
|
|
|
14
15
|
tagTypeDefs,
|
|
15
16
|
placeholderTypeDefs,
|
|
16
17
|
reminderTypeDefs,
|
|
18
|
+
searchTypeDefs,
|
|
17
19
|
viewTypeDefs
|
|
18
20
|
],
|
|
19
21
|
resolvers: [
|
|
@@ -23,6 +25,7 @@ const schema = makeExecutableSchema({
|
|
|
23
25
|
tagResolvers,
|
|
24
26
|
placeholderResolvers,
|
|
25
27
|
reminderResolvers,
|
|
28
|
+
searchResolvers,
|
|
26
29
|
viewResolvers
|
|
27
30
|
]
|
|
28
31
|
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import{j as e,r as d}from"./floating-ui.react-dom-wWLZ1CdM.js";import{Z as b,ad as te,a5 as F,at as S,_ as se,a0 as H,au as O,av as ae,af as re,T as q,a6 as V,aj as ne,ac as oe,ai as ie}from"./note.api-D_00ZzJC.js";import{i as f,g as le,d as z}from"./time-B3pt8vt4.js";import{N as ce,C as de}from"./url-BSnWpmJx.js";import{s as ue,a as me}from"./app-cTRcKMGc.js";import{C as he}from"./Callout-B_IPSF_5.js";import"./preload-helper-BXl3LOEh.js";import"./Graph-D9GeO71k.js";const ge=({day:a,cellClassName:t,dayNumberClassName:s,isCurrentMonth:i,items:o,overflowCount:l,onOpenOverflow:m})=>e.jsxs("div",{className:`min-h-[196px] rounded-[16px] border p-2.5 ${t}`.trim(),children:[e.jsx("div",{className:"mb-2.5 flex justify-end",children:e.jsx(b,{as:"span",variant:"label",className:`flex h-7 w-7 items-center justify-center rounded-[10px] ${s}`.trim(),children:a})}),i&&o.length>0?e.jsxs("div",{className:"flex flex-col gap-1.5",children:[o,l>0?e.jsxs("button",{type:"button",onClick:m,className:"focus-ring-soft w-full rounded-[10px] border border-dashed border-border-subtle/70 bg-subtle/70 py-1 text-center text-micro font-semibold text-fg-tertiary outline-none transition-colors hover:border-border-secondary/70 hover:bg-hover-subtle hover:text-fg-secondary",children:["+",l," more"]}):null]}):null]}),B=({params:a,toneClassName:t="",header:s,title:i,meta:o,titleClassName:l=""})=>e.jsx(te,{to:ce,params:a,className:"focus-ring-soft group block rounded-[8px] outline-none",children:e.jsxs("div",{className:F("flex items-start gap-1.5 rounded-[8px] px-1.5 py-1 transition-colors group-hover:bg-hover-subtle",t),children:[s?e.jsx("span",{className:"mt-[2px] flex h-4 w-4 shrink-0 items-center justify-center text-fg-tertiary",children:s}):e.jsx("span",{"aria-hidden":"true",className:"mt-[6px] h-1.5 w-1.5 shrink-0 rounded-full bg-fg-placeholder"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx(b,{as:"div",variant:"label",weight:"medium",tone:"secondary",className:F("line-clamp-1",l),children:i}),o?e.jsx(b,{as:"div",variant:"micro",weight:"medium",tone:"tertiary",className:"mt-0.5",children:o}):null]})]})}),pe=({note:a,type:t})=>e.jsx(B,{params:{id:a.id},header:e.jsx(ue,{size:12}),title:a.title,meta:f(Number(t==="create"?a.createdAt:a.updatedAt)).format("HH:mm")}),xe=({reminder:a})=>e.jsx(B,{params:{id:String(a.note?.id??a.noteId)},header:e.jsx(le,{size:12}),title:a.content||a.note?.title||"No title",titleClassName:a.completed?"line-through":"",meta:f(Number(a.reminderDate)).format("HH:mm")}),A=3,Q=(a,t)=>a.map(s=>s.type==="note"?e.jsx(pe,{note:s.item,type:t},`note-${s.item.id}`):e.jsx(xe,{reminder:s.item},`reminder-${s.item.id}`)),ye=({year:a,month:t,day:s,isCurrentMonth:i,isSunday:o,isToday:l,isPast:m,notes:h,reminders:g,type:N})=>{const[D,v]=d.useState(!1),x=d.useMemo(()=>{const r=h.map(u=>({type:"note",item:u})),c=g.map(u=>({type:"reminder",item:u}));return m?[...r,...c]:[...c,...r]},[m,h,g]),M=x.length>A,w=d.useMemo(()=>Q(x.slice(0,A),N),[x,N]),$=d.useMemo(()=>Q(x,N),[x,N]),k=d.useCallback(()=>v(!0),[]),C=d.useCallback(()=>v(!1),[]),E=()=>i?l?"border-border-secondary/70 bg-[color:color-mix(in_srgb,var(--surface)_88%,var(--accent-soft-primary)_12%)]":"bg-surface border-border-subtle":"bg-muted/18 border-border-subtle/70",I=()=>l?"bg-cta text-fg-on-filled font-semibold":i?o?"text-fg-weekend font-bold":"text-fg-secondary font-bold":"text-fg-disabled opacity-55";return e.jsxs(e.Fragment,{children:[e.jsx(ge,{day:s,cellClassName:E(),dayNumberClassName:I(),isCurrentMonth:i,items:w,overflowCount:M?x.length-A:0,onOpenOverflow:k}),M&&e.jsxs(S,{isOpen:D,onClose:C,variant:"inspect",children:[e.jsx(S.Header,{title:`${a}/${String(t).padStart(2,"0")}/${String(s).padStart(2,"0")}`,onClose:C}),e.jsxs(S.Body,{children:[e.jsxs(S.Description,{className:"sr-only",children:["View all notes and reminders scheduled for day ",s,"."]}),e.jsx("div",{className:"flex max-h-[60vh] flex-col gap-2 overflow-y-auto",children:$})]})]})]})},fe=d.memo(ye),be=["January","February","March","April","May","June","July","August","September","October","November","December"],je=({month:a,year:t,type:s,onPrevMonth:i,onNextMonth:o,onToday:l,onTypeChange:m})=>e.jsxs("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-end gap-x-2.5 gap-y-1",children:[e.jsx(b,{as:"h1",variant:"display",weight:"bold",tracking:"tighter",className:"text-2xl leading-none sm:text-[2.15rem]",children:be[a-1]}),e.jsx(b,{as:"span",variant:"subheading",weight:"medium",tone:"secondary",tracking:"tight",className:"pb-0.5",children:t})]}),e.jsx(b,{as:"p",variant:"meta",weight:"medium",tone:"secondary",children:"Track note activity and reminders across the month"})]}),e.jsx("div",{className:"flex lg:justify-end",children:e.jsxs("div",{className:"surface-base inline-flex flex-wrap items-center gap-3 rounded-[16px] px-3.5 py-2.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(me,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),e.jsx(b,{id:"calendar-note-date-label",as:"span",variant:"label",weight:"medium",tone:"tertiary",children:"Note date"}),e.jsxs(se,{value:s,"aria-labelledby":"calendar-note-date-label",onValueChange:g=>m(g),variant:"ghost",size:"sm",children:[e.jsx(H,{value:"create",children:"Created"}),e.jsx(H,{value:"update",children:"Updated"})]})]}),e.jsx("div",{className:"h-5 w-px bg-divider"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(O,{variant:"ghost",size:"sm",onClick:l,children:"Today"}),e.jsx(O,{variant:"ghost",size:"icon-sm","aria-label":"Previous month",onClick:i,children:e.jsx(ae,{width:18,height:18})}),e.jsx(O,{variant:"ghost",size:"icon-sm","aria-label":"Next month",onClick:o,children:e.jsx(re,{width:18,height:18})})]})]})})]}),Ne=`
|
|
2
|
-
query NotesInDateRange($dateRange: DateRangeInput) {
|
|
3
|
-
notesInDateRange(dateRange: $dateRange) {
|
|
4
|
-
id
|
|
5
|
-
title
|
|
6
|
-
createdAt
|
|
7
|
-
updatedAt
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
`,ve=`
|
|
11
|
-
query RemindersInDateRange($dateRange: DateRangeInput) {
|
|
12
|
-
remindersInDateRange(dateRange: $dateRange) {
|
|
13
|
-
id
|
|
14
|
-
noteId
|
|
15
|
-
reminderDate
|
|
16
|
-
completed
|
|
17
|
-
priority
|
|
18
|
-
content
|
|
19
|
-
note {
|
|
20
|
-
id
|
|
21
|
-
title
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
`,De=async a=>{const t=await V(Ne,{dateRange:a});if(t.type==="error")throw t;return t.notesInDateRange},Me=async a=>{const t=await V(ve,{dateRange:a});if(t.type==="error")throw t;return t.remindersInDateRange},Ce=({year:a,month:t})=>{const s=`${a}-${String(t).padStart(2,"0")}-01`,i=t===12?1:t+1,l=`${t===12?a+1:a}-${String(i).padStart(2,"0")}-01`,m={start:s,end:l},h=z({queryKey:q.calendar.notesInDateRange(a,t),queryFn:()=>De(m)}),g=z({queryKey:q.reminders.inDateRange(a,t),queryFn:()=>Me(m)});return{notes:h.data??[],reminders:g.data??[],isLoading:h.isLoading||g.isLoading,isError:h.isError||g.isError}},Re=["SUN","MON","TUE","WED","THU","FRI","SAT"],Se=[],we=[],K=ie(de);function _e(){const a=K.useNavigate(),{year:t,month:s,type:i}=K.useSearch(),o=d.useRef(null),l=d.useRef(!1),m=d.useRef(0),h=d.useRef(0),g=d.useCallback(r=>{l.current=!0,m.current=r.pageX-(o.current?.offsetLeft??0),h.current=o.current?.scrollLeft??0,o.current&&(o.current.style.cursor="grabbing",o.current.style.userSelect="none")},[]),N=d.useCallback(r=>{if(!l.current||!o.current)return;r.preventDefault();const u=(r.pageX-o.current.offsetLeft-m.current)*1.2;o.current.scrollLeft=h.current-u},[]),D=d.useCallback(()=>{l.current=!1,o.current&&(o.current.style.cursor="grab",o.current.style.userSelect="")},[]),{notes:v,reminders:x,isLoading:M,isError:w}=Ce({year:t,month:s}),$=d.useMemo(()=>{const r=f(),c=`${r.year()}-${r.month()+1}-${r.date()}`,u=new Map;for(const n of v){const y=i==="create"?f(Number(n.createdAt)):f(Number(n.updatedAt)),p=`${y.year()}-${y.month()+1}-${y.date()}`,j=u.get(p)||[];j.push(n),u.set(p,j)}const T=new Map;for(const n of x){const y=f(Number(n.reminderDate)),p=`${y.year()}-${y.month()+1}-${y.date()}`,j=T.get(p)||[];j.push(n),T.set(p,j)}const W=new Date(t,s-1,1),X=new Date(t,s,0),L=W.getDay(),_=X.getDate(),R=[],Y=s===1?12:s-1,U=s===1?t-1:t,J=new Date(U,Y,0).getDate();for(let n=L-1;n>=0;n--)R.push({day:J-n,isCurrentMonth:!1,year:U,month:Y});for(let n=1;n<=_;n++)R.push({day:n,isCurrentMonth:!0,year:t,month:s});const P=(L+_)%7,Z=P===0?0:7-P,G=s===12?1:s+1,ee=s===12?t+1:t;for(let n=1;n<=Z;n++)R.push({day:n,isCurrentMonth:!1,year:ee,month:G});return R.map((n,y)=>{const p=`${n.year}-${n.month}-${n.day}`,j=f(`${n.year}-${String(n.month).padStart(2,"0")}-${String(n.day).padStart(2,"0")}`);return{key:p,year:n.year,month:n.month,day:n.day,isCurrentMonth:n.isCurrentMonth,isSunday:y%7===0,isToday:p===c,isPast:j.isBefore(r,"day"),notes:u.get(p)||Se,reminders:T.get(p)||we}})},[t,s,v,x,i]),k=()=>{const r=s===1?12:s-1,c=s===1?t-1:t;a({search:u=>({...u,month:r,year:c})})},C=()=>{const r=s===12?1:s+1,c=s===12?t+1:t;a({search:u=>({...u,month:r,year:c})})},E=()=>{a({search:r=>({...r,month:f().month()+1,year:f().year()})})},I=r=>{r&&a({search:c=>({...c,type:r})})};return e.jsx(ne,{title:"Calendar",variant:"none",children:w?e.jsx(he,{children:"Failed to load calendar data. Please try again later."}):e.jsxs("div",{className:"surface-base",children:[e.jsx("div",{className:"border-b border-border-subtle/80 px-4 py-4 sm:px-5",children:e.jsx(je,{month:s,year:t,type:i,onPrevMonth:k,onNextMonth:C,onToday:E,onTypeChange:I})}),e.jsx("div",{ref:o,className:"cursor-grab overflow-x-auto px-4 pb-4 pt-3 sm:px-5",onMouseDown:g,onMouseMove:N,onMouseUp:D,onMouseLeave:D,children:e.jsxs("div",{className:"min-w-[1260px]",children:[e.jsx("div",{className:"mb-2.5 grid grid-cols-7 gap-1.5",children:Re.map((r,c)=>e.jsx(b,{as:"div",variant:"label",weight:"semibold",tracking:"wider",transform:"uppercase",className:`py-2 text-center ${c===0?"text-fg-weekend":"text-fg-tertiary"}`,children:r},r))}),M?e.jsx("div",{className:"grid grid-cols-7 gap-1.5",children:Array.from({length:35}).map((r,c)=>e.jsx(oe,{height:180},c))}):e.jsx("div",{className:"grid grid-cols-7 gap-1.5",children:$.map(r=>e.jsx(fe,{year:r.year,month:r.month,day:r.day,isCurrentMonth:r.isCurrentMonth,isSunday:r.isSunday,isToday:r.isToday,isPast:r.isPast,notes:r.notes,reminders:r.reminders,type:i},r.key))})]})})]})})}export{_e as default};
|