@plebeiantech/lat.md 0.12.3-fork.2 → 0.12.3-fork.20

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 (341) hide show
  1. package/README.md +31 -2
  2. package/dist/src/cli/agent-invocation.d.ts +6 -0
  3. package/dist/src/cli/agent-invocation.js +23 -0
  4. package/dist/src/cli/checklist-menu.d.ts +2 -1
  5. package/dist/src/cli/checklist-menu.js +3 -2
  6. package/dist/src/cli/comment-guard.d.ts +14 -0
  7. package/dist/src/cli/comment-guard.js +10 -33
  8. package/dist/src/cli/comment-reminder.d.ts +65 -6
  9. package/dist/src/cli/comment-reminder.js +164 -28
  10. package/dist/src/cli/fork-instructions.d.ts +20 -0
  11. package/dist/src/cli/fork-instructions.js +184 -0
  12. package/dist/src/cli/fork-scaffold.d.ts +106 -0
  13. package/dist/src/cli/fork-scaffold.js +490 -0
  14. package/dist/src/cli/graph.d.ts +1 -1
  15. package/dist/src/cli/hook.d.ts +26 -0
  16. package/dist/src/cli/hook.js +118 -46
  17. package/dist/src/cli/index.js +166 -64
  18. package/dist/src/cli/init-preferences.d.ts +4 -0
  19. package/dist/src/cli/init-preferences.js +36 -0
  20. package/dist/src/cli/init.d.ts +2 -1
  21. package/dist/src/cli/init.js +107 -50
  22. package/dist/src/cli/reindex.d.ts +1 -1
  23. package/dist/src/cli/reindex.js +7 -10
  24. package/dist/src/cli/search.d.ts +14 -4
  25. package/dist/src/cli/search.js +116 -100
  26. package/dist/src/cli/ui-build-server.d.ts +12 -0
  27. package/dist/src/cli/ui-build-server.js +26 -0
  28. package/dist/src/cli/ui-build.d.ts +4 -0
  29. package/dist/src/cli/ui-build.js +13 -0
  30. package/dist/src/cli/ui.d.ts +1 -1
  31. package/dist/src/cli/ui.js +18 -2
  32. package/dist/src/fork/antigravity-hook.d.ts +47 -0
  33. package/dist/src/fork/antigravity-hook.js +424 -0
  34. package/dist/src/fork/antigravity-init.d.ts +17 -0
  35. package/dist/src/fork/antigravity-init.js +124 -0
  36. package/dist/src/fork/upstream-drift-cli.js +2 -0
  37. package/dist/src/fork/upstream-drift.d.ts +26 -0
  38. package/dist/src/fork/upstream-drift.js +185 -0
  39. package/dist/src/fork/upstream-guard-cli.d.ts +1 -0
  40. package/dist/src/fork/upstream-guard-cli.js +2 -0
  41. package/dist/src/fork/upstream-guard.d.ts +72 -0
  42. package/dist/src/fork/upstream-guard.js +445 -0
  43. package/dist/src/graph-export.d.ts +2 -0
  44. package/dist/src/graph-export.js +38 -19
  45. package/dist/src/knowledge/claude-memory.d.ts +1 -0
  46. package/dist/src/knowledge/claude-memory.js +33 -4
  47. package/dist/src/knowledge/index.js +2 -2
  48. package/dist/src/mcp/server.js +34 -18
  49. package/dist/src/search/cache.d.ts +3 -0
  50. package/dist/src/search/cache.js +104 -0
  51. package/dist/src/search/chunks.d.ts +23 -0
  52. package/dist/src/search/chunks.js +197 -0
  53. package/dist/src/search/db.d.ts +28 -16
  54. package/dist/src/search/db.js +106 -40
  55. package/dist/src/search/embedder.d.ts +2 -1
  56. package/dist/src/search/embedder.js +7 -6
  57. package/dist/src/search/index.d.ts +6 -2
  58. package/dist/src/search/index.js +176 -53
  59. package/dist/src/search/lexical.d.ts +6 -0
  60. package/dist/src/search/lexical.js +36 -0
  61. package/dist/src/search/lock.d.ts +5 -0
  62. package/dist/src/search/lock.js +45 -0
  63. package/dist/src/search/query.d.ts +26 -0
  64. package/dist/src/search/query.js +103 -0
  65. package/dist/src/search/search.d.ts +17 -7
  66. package/dist/src/search/search.js +164 -14
  67. package/dist/src/search/types.d.ts +15 -0
  68. package/dist/src/search/types.js +1 -0
  69. package/dist/src/view/client/assets/GraphView-Dij8mAA_.js +456 -0
  70. package/dist/src/view/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  71. package/dist/src/view/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  72. package/dist/src/view/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  73. package/dist/src/view/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  74. package/dist/src/view/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  75. package/dist/src/view/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  76. package/dist/src/view/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  77. package/dist/src/view/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  78. package/dist/src/view/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  79. package/dist/src/view/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  80. package/dist/src/view/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  81. package/dist/src/view/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  82. package/dist/src/view/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  83. package/dist/src/view/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  84. package/dist/src/view/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  85. package/dist/src/view/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  86. package/dist/src/view/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  87. package/dist/src/view/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  88. package/dist/src/view/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  89. package/dist/src/view/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  90. package/dist/src/view/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  91. package/dist/src/view/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  92. package/dist/src/view/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  93. package/dist/src/view/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  94. package/dist/src/view/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  95. package/dist/src/view/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  96. package/dist/src/view/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  97. package/dist/src/view/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  98. package/dist/src/view/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  99. package/dist/src/view/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  100. package/dist/src/view/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  101. package/dist/src/view/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  102. package/dist/src/view/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  103. package/dist/src/view/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  104. package/dist/src/view/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  105. package/dist/src/view/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  106. package/dist/src/view/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  107. package/dist/src/view/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  108. package/dist/src/view/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  109. package/dist/src/view/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  110. package/dist/src/view/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  111. package/dist/src/view/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  112. package/dist/src/view/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  113. package/dist/src/view/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  114. package/dist/src/view/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  115. package/dist/src/view/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  116. package/dist/src/view/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  117. package/dist/src/view/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  118. package/dist/src/view/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  119. package/dist/src/view/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  120. package/dist/src/view/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  121. package/dist/src/view/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  122. package/dist/src/view/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  123. package/dist/src/view/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  124. package/dist/src/view/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  125. package/dist/src/view/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  126. package/dist/src/view/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  127. package/dist/src/view/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  128. package/dist/src/view/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  129. package/dist/src/view/client/assets/MarkdownEditor-88Wbt0M1.js +28 -0
  130. package/dist/src/view/client/assets/OrbitControls-DwcpQNja.js +1 -0
  131. package/dist/src/view/client/assets/STLLoader-CLWTKt5i.js +1 -0
  132. package/dist/src/view/client/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  133. package/dist/src/view/client/assets/abnfDiagram-VCTEODGH-y0DlYa8E.js +1 -0
  134. package/dist/src/view/client/assets/arc-FlMu8dnO.js +1 -0
  135. package/dist/src/view/client/assets/architectureDiagram-5GKGNRK7-DA_uWZW1.js +36 -0
  136. package/dist/src/view/client/assets/blockDiagram-I7D4REHJ-BHQ5LU85.js +129 -0
  137. package/dist/src/view/client/assets/c4Diagram-7LVT6UL2-BRucKCt2.js +38 -0
  138. package/dist/src/view/client/assets/channel-BgDNA_Ay.js +1 -0
  139. package/dist/src/view/client/assets/chunk-2Q5K7J3B-BJPcFivt.js +1 -0
  140. package/dist/src/view/client/assets/chunk-5VM5RSS4-v2q99bGz.js +15 -0
  141. package/dist/src/view/client/assets/chunk-F27PBJKO-CcHOuJCs.js +1 -0
  142. package/dist/src/view/client/assets/chunk-IMKFNOWR-DNxYuJNq.js +231 -0
  143. package/dist/src/view/client/assets/chunk-JWPE2WC7-C0eHKvLW.js +1 -0
  144. package/dist/src/view/client/assets/chunk-POPQ4Y6H-57CWp2Ve.js +1 -0
  145. package/dist/src/view/client/assets/chunk-SVP7TREG-BqcoxIJw.js +88 -0
  146. package/dist/src/view/client/assets/chunk-TICWLB2K-DRUJR5zH.js +206 -0
  147. package/dist/src/view/client/assets/chunk-XXDRQBXY-Dez0oRoM.js +1 -0
  148. package/dist/src/view/client/assets/classDiagram-ZZMXUADV-CFZ_Sgh5.js +1 -0
  149. package/dist/src/view/client/assets/classDiagram-v2-VYDZK3BY-CFZ_Sgh5.js +1 -0
  150. package/dist/src/view/client/assets/cose-bilkent-JH36ORCC-BHtud6Hg.js +1 -0
  151. package/dist/src/view/client/assets/cynefin-OW5HDTMX-BjBW8VGk.js +166 -0
  152. package/dist/src/view/client/assets/cynefinDiagram-5FMLGOSQ-DwGuD7oF.js +62 -0
  153. package/dist/src/view/client/assets/cytoscape.esm-DzSz-X2X.js +321 -0
  154. package/dist/src/view/client/assets/dagre-GXQ25YYZ-C5zSlGK9.js +4 -0
  155. package/dist/src/view/client/assets/defaultLocale-DX6XiGOO.js +1 -0
  156. package/dist/src/view/client/assets/diagram-S7CK7UJ4-C_NhA3bj.js +30 -0
  157. package/dist/src/view/client/assets/diagram-UQ7AKVKN-az7QPYNb.js +41 -0
  158. package/dist/src/view/client/assets/diagram-VSXAHHWV-BRvDuM8_.js +3 -0
  159. package/dist/src/view/client/assets/diagram-VX7I27RA-BWLgF6S-.js +24 -0
  160. package/dist/src/view/client/assets/diagram-Z3DM3KII-DV3d6mL5.js +24 -0
  161. package/dist/src/view/client/assets/ebnfDiagram-PWID7BFC-yUXrEAvK.js +1 -0
  162. package/dist/src/view/client/assets/erDiagram-RLTQ6QDP-D35FN1Pt.js +99 -0
  163. package/dist/src/view/client/assets/flowDiagram-HODETNUW-BciZqsjT.js +168 -0
  164. package/dist/src/view/client/assets/ganttDiagram-EL5Y4UJY-BysPGgXS.js +292 -0
  165. package/dist/src/view/client/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  166. package/dist/src/view/client/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  167. package/dist/src/view/client/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  168. package/dist/src/view/client/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  169. package/dist/src/view/client/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
  170. package/dist/src/view/client/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
  171. package/dist/src/view/client/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
  172. package/dist/src/view/client/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  173. package/dist/src/view/client/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
  174. package/dist/src/view/client/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
  175. package/dist/src/view/client/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  176. package/dist/src/view/client/assets/gitGraphDiagram-WWUBYQGX-C3DdJ5xG.js +106 -0
  177. package/dist/src/view/client/assets/index-BnENo9bV.js +1 -0
  178. package/dist/src/view/client/assets/index-CJokoRSp.js +13 -0
  179. package/dist/src/view/client/assets/index-DG0Ez15D.css +1 -0
  180. package/dist/src/view/client/assets/infoDiagram-27XIBGKW-D3HZrDRb.js +2 -0
  181. package/dist/src/view/client/assets/init-Gi6I4Gst.js +1 -0
  182. package/dist/src/view/client/assets/ishikawaDiagram-5VMMS53U-BXyVIXTU.js +70 -0
  183. package/dist/src/view/client/assets/journeyDiagram-3NMN7TZE-D4-1NxVU.js +139 -0
  184. package/dist/src/view/client/assets/kanban-definition-UXKFOSKX-4Gu_5yBA.js +89 -0
  185. package/dist/src/view/client/assets/katex-HP8lGamR.js +257 -0
  186. package/dist/src/view/client/assets/layout-Jf1K3TMM.js +1 -0
  187. package/dist/src/view/client/assets/linear-DWfwzUT_.js +1 -0
  188. package/dist/src/view/client/assets/logo-RR_KBOAT.svg +149 -0
  189. package/dist/src/view/client/assets/maplibre-gl-CDX6Zuow.js +800 -0
  190. package/dist/src/view/client/assets/mermaid.core-DMx_DAl8.js +310 -0
  191. package/dist/src/view/client/assets/mindmap-definition-YA3MSWOX-8pxY_RWi.js +96 -0
  192. package/dist/src/view/client/assets/ordinal-Cboi1Yqb.js +1 -0
  193. package/dist/src/view/client/assets/pegDiagram-XKGWAZYB-DNAw_O5t.js +1 -0
  194. package/dist/src/view/client/assets/pieDiagram-E7YTZNPT-uuvRCDkC.js +39 -0
  195. package/dist/src/view/client/assets/quadrantDiagram-AXDQQJYC-BER2O4Aq.js +7 -0
  196. package/dist/src/view/client/assets/railroadDiagram-O6MQD6OU-CxEsJ_0n.js +1 -0
  197. package/dist/src/view/client/assets/requirementDiagram-BXWQKSXE-yS9rspca.js +84 -0
  198. package/dist/src/view/client/assets/sankeyDiagram-P5KCCOFB-Bqt70a2j.js +40 -0
  199. package/dist/src/view/client/assets/sequenceDiagram-WJ2MYXX4-BvOOEJNr.js +162 -0
  200. package/dist/src/view/client/assets/sizeCapture-INFHLROL-CvO_Pjjo.js +1 -0
  201. package/dist/src/view/client/assets/stateDiagram-D77RDMKH-KLmVOZkq.js +1 -0
  202. package/dist/src/view/client/assets/stateDiagram-v2-MP3YSRHH-KCS8Mdzu.js +1 -0
  203. package/dist/src/view/client/assets/swimlanes-42K2YHIH-DC1r4_sq.js +1 -0
  204. package/dist/src/view/client/assets/swimlanesDiagram-VR7AAH4N-B2TcAwis.js +8 -0
  205. package/dist/src/view/client/assets/three.module-PDSP0dbZ.js +4108 -0
  206. package/dist/src/view/client/assets/timeline-definition-24CTP7MA-ChXLOuBL.js +120 -0
  207. package/dist/src/view/client/assets/vennDiagram-4TSXK5OY-D9_h25-Y.js +34 -0
  208. package/dist/src/view/client/assets/wardleyDiagram-VM6X3IG4-CsQJGGW0.js +78 -0
  209. package/dist/src/view/client/assets/xychartDiagram-S5SC5T6Z-DGMuPMlm.js +7 -0
  210. package/dist/src/view/client/index.html +2 -2
  211. package/dist/src/view/client-shell.d.ts +2 -0
  212. package/dist/src/view/client-shell.js +5 -0
  213. package/dist/src/view/diagnostics.d.ts +3 -2
  214. package/dist/src/view/diagnostics.js +49 -58
  215. package/dist/src/view/document-edit.d.ts +8 -0
  216. package/dist/src/view/document-edit.js +25 -0
  217. package/dist/src/view/document-route.d.ts +14 -0
  218. package/dist/src/view/document-route.js +126 -0
  219. package/dist/src/view/document-tree.d.ts +18 -0
  220. package/dist/src/view/document-tree.js +139 -0
  221. package/dist/src/view/external-document-tree.d.ts +3 -0
  222. package/dist/src/view/external-document-tree.js +674 -0
  223. package/dist/src/view/git-diff.js +205 -1
  224. package/dist/src/view/git.js +1 -1
  225. package/dist/src/view/graph.d.ts +7 -0
  226. package/dist/src/view/graph.js +267 -0
  227. package/dist/src/view/highlight.d.ts +10 -2
  228. package/dist/src/view/highlight.js +4547 -1363
  229. package/dist/src/view/markdown.d.ts +8 -3
  230. package/dist/src/view/markdown.js +308 -41
  231. package/dist/src/view/preindexed-search.d.ts +15 -0
  232. package/dist/src/view/preindexed-search.js +25 -0
  233. package/dist/src/view/protocol.d.ts +95 -6
  234. package/dist/src/view/protocol.js +1 -1
  235. package/dist/src/view/publication.d.ts +2 -0
  236. package/dist/src/view/publication.js +78 -0
  237. package/dist/src/view/references.d.ts +13 -26
  238. package/dist/src/view/references.js +150 -119
  239. package/dist/src/view/repository.d.ts +18 -5
  240. package/dist/src/view/repository.js +269 -27
  241. package/dist/src/view/request-security.d.ts +5 -0
  242. package/dist/src/view/request-security.js +46 -0
  243. package/dist/src/view/search-result.d.ts +4 -0
  244. package/dist/src/view/search-result.js +25 -0
  245. package/dist/src/view/search.d.ts +7 -2
  246. package/dist/src/view/search.js +23 -33
  247. package/dist/src/view/server-build.d.ts +21 -0
  248. package/dist/src/view/server-build.js +145 -0
  249. package/dist/src/view/server-deployment.d.ts +31 -0
  250. package/dist/src/view/server-deployment.js +94 -0
  251. package/dist/src/view/server-index-worker.d.ts +6 -0
  252. package/dist/src/view/server-index-worker.js +14 -0
  253. package/dist/src/view/server.d.ts +14 -2
  254. package/dist/src/view/server.js +254 -51
  255. package/dist/src/view/source-target.d.ts +10 -0
  256. package/dist/src/view/source-target.js +43 -0
  257. package/dist/src/view/static-build.d.ts +32 -0
  258. package/dist/src/view/static-build.js +741 -0
  259. package/dist/src/view/static-protocol.d.ts +47 -0
  260. package/dist/src/view/static-protocol.js +15 -0
  261. package/dist/src/view/store.d.ts +26 -3
  262. package/dist/src/view/store.js +325 -44
  263. package/dist/src/view/table-of-contents.d.ts +9 -0
  264. package/dist/src/view/table-of-contents.js +83 -0
  265. package/dist/src/view/vercel-build.d.ts +24 -0
  266. package/dist/src/view/vercel-build.js +140 -0
  267. package/dist/src/view/vercel-server-build.d.ts +10 -0
  268. package/dist/src/view/vercel-server-build.js +61 -0
  269. package/dist/vendor/lat.md-server/cli.d.ts +2 -0
  270. package/dist/vendor/lat.md-server/cli.js +12 -0
  271. package/dist/vendor/lat.md-server/index.d.ts +38 -0
  272. package/dist/vendor/lat.md-server/index.js +128 -0
  273. package/package.json +72 -25
  274. package/plugins/lat-md/README.md +61 -0
  275. package/plugins/lat-md/hooks.json +38 -0
  276. package/plugins/lat-md/plugin.json +9 -0
  277. package/plugins/lat-md/rules/AGENTS.md +118 -0
  278. package/plugins/lat-md/skills/lat-md/SKILL.md +178 -0
  279. package/plugins/lat-md/skills/lat-md-conventions/SKILL.md +182 -0
  280. package/templates/AGENTS.md +19 -18
  281. package/templates/cursor-rules.md +14 -5
  282. package/templates/fork/conventions.md +173 -0
  283. package/templates/opencode-plugin.ts +9 -9
  284. package/templates/pi-extension.ts +11 -11
  285. package/templates/skill/SKILL.md +28 -17
  286. package/dist/src/cli/check-frontmatter.d.ts +0 -12
  287. package/dist/src/cli/check-frontmatter.js +0 -44
  288. package/dist/src/cli/check-mode.d.ts +0 -6
  289. package/dist/src/cli/check-mode.js +0 -303
  290. package/dist/src/cli/check-status.d.ts +0 -74
  291. package/dist/src/cli/check-status.js +0 -217
  292. package/dist/src/cli/check.d.ts +0 -45
  293. package/dist/src/cli/check.js +0 -777
  294. package/dist/src/cli/context.d.ts +0 -11
  295. package/dist/src/cli/context.js +0 -58
  296. package/dist/src/cli/expand.d.ts +0 -8
  297. package/dist/src/cli/expand.js +0 -94
  298. package/dist/src/cli/gen-index.d.ts +0 -45
  299. package/dist/src/cli/gen-index.js +0 -235
  300. package/dist/src/cli/link-scheme.d.ts +0 -54
  301. package/dist/src/cli/link-scheme.js +0 -101
  302. package/dist/src/cli/locate.d.ts +0 -2
  303. package/dist/src/cli/locate.js +0 -17
  304. package/dist/src/cli/refs.d.ts +0 -22
  305. package/dist/src/cli/refs.js +0 -229
  306. package/dist/src/cli/section.d.ts +0 -43
  307. package/dist/src/cli/section.js +0 -252
  308. package/dist/src/cli/select-menu.d.ts +0 -13
  309. package/dist/src/cli/select-menu.js +0 -100
  310. package/dist/src/code-refs.d.ts +0 -17
  311. package/dist/src/code-refs.js +0 -277
  312. package/dist/src/config.d.ts +0 -29
  313. package/dist/src/config.js +0 -83
  314. package/dist/src/context.d.ts +0 -23
  315. package/dist/src/context.js +0 -11
  316. package/dist/src/extensions/wiki-link/from-markdown.d.ts +0 -5
  317. package/dist/src/extensions/wiki-link/from-markdown.js +0 -34
  318. package/dist/src/extensions/wiki-link/index.d.ts +0 -4
  319. package/dist/src/extensions/wiki-link/index.js +0 -3
  320. package/dist/src/extensions/wiki-link/syntax.d.ts +0 -14
  321. package/dist/src/extensions/wiki-link/syntax.js +0 -121
  322. package/dist/src/extensions/wiki-link/to-markdown.d.ts +0 -5
  323. package/dist/src/extensions/wiki-link/to-markdown.js +0 -28
  324. package/dist/src/extensions/wiki-link/types.d.ts +0 -34
  325. package/dist/src/format.d.ts +0 -8
  326. package/dist/src/format.js +0 -43
  327. package/dist/src/init-version.d.ts +0 -10
  328. package/dist/src/init-version.js +0 -49
  329. package/dist/src/lattice.d.ts +0 -108
  330. package/dist/src/lattice.js +0 -816
  331. package/dist/src/parser.d.ts +0 -3
  332. package/dist/src/parser.js +0 -18
  333. package/dist/src/source-parser.d.ts +0 -27
  334. package/dist/src/source-parser.js +0 -916
  335. package/dist/src/untrusted.d.ts +0 -24
  336. package/dist/src/untrusted.js +0 -97
  337. package/dist/src/view/client/assets/index-B0n0u03y.css +0 -1
  338. package/dist/src/view/client/assets/index-xm2_px4q.js +0 -23
  339. package/dist/src/walk.d.ts +0 -18
  340. package/dist/src/walk.js +0 -27
  341. /package/dist/src/{extensions/wiki-link/types.js → fork/upstream-drift-cli.d.ts} +0 -0
@@ -1,82 +1,65 @@
1
1
  import { readFile } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import { openDb, ensureMeta, getStoredModel, setStoredModel, ensureSectionsSchema, dropSections, closeDb, } from '../search/db.js';
4
- import { getLlmKey } from '../config.js';
2
+ import { LEXICAL_VERSION } from '../search/lexical.js';
3
+ import { hasIndex } from '../search/db.js';
4
+ import { embeddingFingerprint } from '../search/chunks.js';
5
+ import { writeIndex } from '../search/cache.js';
6
+ import { dirname, join } from 'node:path';
7
+ import { openDb, setStoredModel, ensureSectionsSchema, closeDb, } from '../search/db.js';
5
8
  import { embedderForIndex, modelKey, ReindexRequiredError, EmbeddingAuthError, } from '../search/embedder.js';
6
- import { indexSections } from '../search/index.js';
7
- import { searchSections } from '../search/search.js';
8
- import { loadAllSections, flattenSections, } from '../lattice.js';
9
- import { formatSectionPreview, formatNavHints } from '../format.js';
10
- import { provenanceNote, formatProvenanceNote } from './check-status.js';
11
- async function withDb(latDir, progress, fn) {
12
- const db = openDb(latDir);
13
- try {
14
- await ensureMeta(db);
15
- const stored = await getStoredModel(db);
16
- // The stored model is authoritative — no silent backend switch. Throws
17
- // ReindexRequiredError if the environment can't serve the stored index.
18
- // Rebuilding / switching backends is `lat reindex`, never `lat search`.
19
- const embedder = await embedderForIndex(stored, latDir);
20
- await ensureSectionsSchema(db, embedder.dimensions);
21
- const countResult = await db.execute('SELECT COUNT(*) as n FROM sections');
22
- let isEmpty = countResult.rows[0].n === 0;
23
- // Legacy cache: a version before the model was recorded left rows behind
24
- // with no `meta.embedding_model`. Those vectors may be a different backend
25
- // (and dimension) than the resolved embedder, and `CREATE TABLE IF NOT
26
- // EXISTS` won't migrate the column width — so drop and rebuild from scratch
27
- // under the resolved backend rather than querying a mismatched table.
28
- if (!stored && !isEmpty) {
29
- await dropSections(db);
30
- await ensureSectionsSchema(db, embedder.dimensions);
31
- isEmpty = true;
9
+ import { indexSections, projectFingerprint, } from '../search/index.js';
10
+ import { searchSections, prepareSearchQuery } from '../search/search.js';
11
+ import { indexMetadata, sameIndexMetadata, resolveSearchMatches, searchIndexedSections, } from '../search/query.js';
12
+ import { analyzeMarkdownProject, commandProjectAnalysis, } from '@plebeiantech/lat.md-core/project-analysis';
13
+ import { formatSectionPreview, formatNavHints, } from '@plebeiantech/lat.md-core/format';
14
+ import { provenanceNote, formatProvenanceNote, } from '@plebeiantech/lat.md-core/cli/check-status';
15
+ async function withDb(latDir, progress, project, cacheDir, fn, prepare) {
16
+ for (let attempt = 0; hasIndex(cacheDir ?? join(latDir, '.cache')); attempt++) {
17
+ if (attempt >= 3)
18
+ throw new Error('Search index keeps changing; retry shortly.');
19
+ const metadataDb = openDb(latDir, cacheDir, true);
20
+ let metadata;
21
+ try {
22
+ metadata = await indexMetadata(metadataDb);
32
23
  }
33
- // If the repo is pinned to local but a key is set, say so — otherwise it
34
- // looks like the key is being silently ignored.
35
- if (isEmpty && embedder.name.startsWith('local:') && process.stderr.isTTY) {
36
- let hasKey = false;
37
- try {
38
- hasKey = !!getLlmKey();
39
- }
40
- catch {
41
- /* key source misconfigured — irrelevant, we're local */
42
- }
43
- if (hasKey) {
44
- process.stderr.write('This repo is configured for local embeddings; ignoring LAT_LLM_KEY.\n');
45
- }
24
+ finally {
25
+ await closeDb(metadataDb);
46
26
  }
47
- progress?.beforeIndex?.(isEmpty);
27
+ const stored = metadata.get('embedding_model') ?? null;
28
+ const embedder = await embedderForIndex(stored, latDir);
29
+ if (metadata.get('fingerprint') !== embeddingFingerprint(embedder))
30
+ throw new ReindexRequiredError('Search chunking or embedding model changed; run lat reindex.');
31
+ if (!stored ||
32
+ metadata.get('lexical_version') !== LEXICAL_VERSION ||
33
+ metadata.get('project_hash') !== projectFingerprint(project))
34
+ break;
35
+ await prepare?.(embedder);
36
+ const db = openDb(latDir, cacheDir, true);
48
37
  try {
49
- const stats = await indexSections(latDir, db, embedder);
50
- // Pin the backend only after a successful index, so a failed build never
51
- // leaves the repo wrongly pinned to an empty index.
52
- if (!stored)
53
- await setStoredModel(db, modelKey(embedder));
54
- progress?.afterIndex?.(stats, isEmpty);
38
+ if (!sameIndexMetadata(metadata, await indexMetadata(db)))
39
+ continue;
40
+ progress?.afterIndex?.({
41
+ added: 0,
42
+ updated: 0,
43
+ removed: 0,
44
+ unchanged: project.sections.length,
45
+ }, false);
46
+ return await fn(db, embedder, project);
55
47
  }
56
- catch (err) {
57
- // Failed fresh build → drop the half-created table so the next run is
58
- // truly fresh (re-resolves the backend cleanly) rather than stuck.
59
- if (!stored)
60
- await dropSections(db);
61
- throw err;
48
+ finally {
49
+ await closeDb(db);
62
50
  }
63
- return await fn(db, embedder);
64
- }
65
- finally {
66
- await closeDb(db);
67
51
  }
68
- }
69
- /** Resolve raw search hits (by id) to full section matches. */
70
- async function resolveMatches(latDir, results, preloadedSections) {
71
- if (results.length === 0)
72
- return [];
73
- const allSections = preloadedSections ?? (await loadAllSections(latDir));
74
- const flat = flattenSections(allSections);
75
- const byId = new Map(flat.map((s) => [s.id, s]));
76
- return results
77
- .map((r) => byId.get(r.id))
78
- .filter((s) => !!s)
79
- .map((s) => ({ section: s, reason: 'semantic match' }));
52
+ return writeIndex(latDir, cacheDir, false, async (db, stored) => {
53
+ const embedder = await embedderForIndex(stored, latDir);
54
+ await ensureSectionsSchema(db, embedder.dimensions);
55
+ const isEmpty = (await db.execute('SELECT COUNT(*) AS n FROM sections')).rows[0].n === 0;
56
+ progress?.beforeIndex?.(isEmpty);
57
+ const stats = await indexSections(latDir, db, embedder, undefined, project);
58
+ await setStoredModel(db, modelKey(embedder));
59
+ progress?.afterIndex?.(stats, isEmpty);
60
+ await prepare?.(embedder);
61
+ return fn(db, embedder, project);
62
+ });
80
63
  }
81
64
  /**
82
65
  * Run a semantic search across lat.md sections.
@@ -90,40 +73,41 @@ async function resolveMatches(latDir, results, preloadedSections) {
90
73
  */
91
74
  export async function runSearch(latDir, query, limit, progress, opts) {
92
75
  if (opts?.buildIndex === false) {
93
- const db = openDb(latDir);
94
- try {
95
- await ensureMeta(db);
96
- const stored = await getStoredModel(db);
97
- // Never built (or a legacy pre-versioning cache) — leave building to
98
- // `lat search`; don't load the embedder just to embed the query.
99
- if (stored === null)
100
- return { query, matches: [] };
101
- const embedder = await embedderForIndex(stored, latDir);
102
- await ensureSectionsSchema(db, embedder.dimensions);
103
- const results = await searchSections(db, query, embedder, limit);
104
- return {
105
- query,
106
- matches: await resolveMatches(latDir, results, opts?.preloadedSections),
107
- };
108
- }
109
- finally {
110
- await closeDb(db);
111
- }
76
+ const sectionById = opts.sectionById ??
77
+ opts.project?.sectionById ??
78
+ (await analyzeMarkdownProject(latDir, dirname(latDir), {
79
+ executor: 'auto',
80
+ })).sectionById;
81
+ return searchIndexedSections(latDir, query, limit, sectionById, {
82
+ cacheDir: opts.cacheDir,
83
+ minSimilarity: opts.minSimilarity,
84
+ });
112
85
  }
113
- return withDb(latDir, progress, async (db, embedder) => {
114
- const results = await searchSections(db, query, embedder, limit);
86
+ const project = opts?.project ??
87
+ (await analyzeMarkdownProject(latDir, dirname(latDir), {
88
+ executor: 'auto',
89
+ }));
90
+ let vector;
91
+ return withDb(latDir, progress, project, opts?.cacheDir, async (db, embedder, analyzed) => {
92
+ const results = await searchSections(db, query, embedder, limit, opts?.minSimilarity, vector);
115
93
  return {
116
94
  query,
117
- matches: await resolveMatches(latDir, results, opts?.preloadedSections),
95
+ matches: resolveSearchMatches(results, analyzed.sectionById),
118
96
  };
97
+ }, async (embedder) => {
98
+ vector = await prepareSearchQuery(query, embedder, limit, opts?.minSimilarity);
119
99
  });
120
100
  }
121
101
  /**
122
102
  * Index-only mode (no query) — builds the index on first use. Rebuilding is
123
103
  * `lat reindex`, not a flag here.
124
104
  */
125
- export async function runIndex(latDir, progress) {
126
- await withDb(latDir, progress, async () => { });
105
+ export async function runIndex(latDir, progress, analyzedProject, options = {}) {
106
+ const project = analyzedProject ??
107
+ (await analyzeMarkdownProject(latDir, dirname(latDir), {
108
+ executor: 'auto',
109
+ }));
110
+ await withDb(latDir, progress, project, options.cacheDir, async () => { });
127
111
  }
128
112
  export function cliProgress(s) {
129
113
  return {
@@ -151,7 +135,7 @@ export function cliProgress(s) {
151
135
  * say whether a person ever checked that claim. Frontmatter is read once per
152
136
  * file rather than once per match, since several matches routinely share one.
153
137
  */
154
- async function formatSearchMatches(ctx, query, matches) {
138
+ async function formatSearchMatches(ctx, query, matches, opts) {
155
139
  const notes = new Map();
156
140
  for (const match of matches) {
157
141
  const filePath = match.section.filePath;
@@ -171,6 +155,32 @@ async function formatSearchMatches(ctx, query, matches) {
171
155
  lines.push('');
172
156
  lines.push(formatSectionPreview(ctx, matches[i].section, {
173
157
  reason: matches[i].reason,
158
+ spans: opts?.preview === 'intro'
159
+ ? undefined
160
+ : matches[i].evidence?.[0]?.spans,
161
+ score: opts?.showScores ? matches[i].rankScore : undefined,
162
+ text: opts?.preview === 'intro'
163
+ ? undefined
164
+ : matches[i].evidence?.length
165
+ ? (opts?.preview === 'both'
166
+ ? matches[i].section.firstParagraph + '\n\n'
167
+ : '') + matches[i].evidence[0].text
168
+ : undefined,
169
+ debug: opts?.showScores && matches[i].rankScore !== undefined
170
+ ? JSON.stringify({
171
+ lexicalRank: matches[i].lexicalRank,
172
+ semanticRank: matches[i].semanticRank,
173
+ lexicalScore: matches[i].lexicalScore,
174
+ semanticSimilarity: matches[i].semanticSimilarity,
175
+ lexicalContribution: matches[i].lexicalRank
176
+ ? 1 / (60 + matches[i].lexicalRank)
177
+ : 0,
178
+ semanticContribution: matches[i].semanticRank
179
+ ? 1 / (60 + matches[i].semanticRank)
180
+ : 0,
181
+ ...matches[i].diagnostics,
182
+ })
183
+ : undefined,
174
184
  }));
175
185
  const note = notes.get(matches[i].section.filePath);
176
186
  if (note)
@@ -183,16 +193,22 @@ export async function searchCommand(ctx, query, opts, progress) {
183
193
  const s = ctx.styler;
184
194
  try {
185
195
  if (!query) {
186
- await runIndex(ctx.latDir, progress);
196
+ await runIndex(ctx.latDir, progress, await commandProjectAnalysis(ctx));
187
197
  return { output: '' };
188
198
  }
189
- const result = await runSearch(ctx.latDir, query, opts.limit, progress);
199
+ const project = await commandProjectAnalysis(ctx);
200
+ const result = await runSearch(ctx.latDir, query, opts.limit, progress, {
201
+ project,
202
+ minSimilarity: opts.minSimilarity,
203
+ });
190
204
  if (result.matches.length === 0) {
191
205
  return { output: 'No results found.' };
192
206
  }
193
207
  return {
194
- output: (await formatSearchMatches(ctx, query, result.matches)) +
195
- formatNavHints(ctx),
208
+ output: (await formatSearchMatches(ctx, query, result.matches, {
209
+ showScores: opts.debug,
210
+ preview: opts.preview ?? 'passage',
211
+ })) + formatNavHints(ctx),
196
212
  };
197
213
  }
198
214
  catch (err) {
@@ -0,0 +1,12 @@
1
+ import type { CmdContext, CmdResult } from '@plebeiantech/lat.md-core/context';
2
+ import { buildServerView, type ServerViewBuildOptions, type ServerViewBuildResult } from '../view/server-build.js';
3
+ export type ServerViewBuildTarget = 'node' | 'vercel';
4
+ export type UiBuildServerOptions = ServerViewBuildOptions & {
5
+ target?: ServerViewBuildTarget;
6
+ };
7
+ export type UiBuildServerDependencies = {
8
+ buildNode: typeof buildServerView;
9
+ buildVercel?: (ctx: CmdContext, output: string, options: ServerViewBuildOptions) => Promise<ServerViewBuildResult>;
10
+ };
11
+ /** Export immutable UI data with a Node or Vercel semantic-search service. */
12
+ export declare function uiBuildServerCommand(ctx: CmdContext, output: string | undefined, options?: UiBuildServerOptions, dependencies?: UiBuildServerDependencies): Promise<CmdResult>;
@@ -0,0 +1,26 @@
1
+ import { buildServerView, } from '../view/server-build.js';
2
+ const defaultDependencies = {
3
+ buildNode: buildServerView,
4
+ };
5
+ /** Export immutable UI data with a Node or Vercel semantic-search service. */
6
+ export async function uiBuildServerCommand(ctx, output, options = {}, dependencies = defaultDependencies) {
7
+ try {
8
+ const { target = 'node', ...buildOptions } = options;
9
+ const resolvedOutput = output ?? (target === 'vercel' ? '.vercel/output' : '.lat-build/server');
10
+ let result;
11
+ if (target === 'vercel') {
12
+ const buildVercel = dependencies.buildVercel ??
13
+ (await import('../view/vercel-server-build.js')).buildVercelServerView;
14
+ result = await buildVercel(ctx, resolvedOutput, buildOptions);
15
+ }
16
+ else {
17
+ result = await dependencies.buildNode(ctx, resolvedOutput, buildOptions);
18
+ }
19
+ return {
20
+ output: `Built ${result.documents} documents and ${result.sources} source views for ${target} at ${result.outputDir}`,
21
+ };
22
+ }
23
+ catch (error) {
24
+ return { output: error.message, isError: true };
25
+ }
26
+ }
@@ -0,0 +1,4 @@
1
+ import type { CmdContext, CmdResult } from '@plebeiantech/lat.md-core/context';
2
+ import { type StaticViewBuildOptions } from '../view/static-build.js';
3
+ /** Export the current vault as a serverless, read-only Lat UI. */
4
+ export declare function uiBuildCommand(ctx: CmdContext, output?: string, options?: StaticViewBuildOptions): Promise<CmdResult>;
@@ -0,0 +1,13 @@
1
+ import { buildStaticView, } from '../view/static-build.js';
2
+ /** Export the current vault as a serverless, read-only Lat UI. */
3
+ export async function uiBuildCommand(ctx, output = '.lat-build/static', options = {}) {
4
+ try {
5
+ const result = await buildStaticView(ctx, output, options);
6
+ return {
7
+ output: `Built ${result.documents} documents and ${result.sources} source views at ${result.outputDir}`,
8
+ };
9
+ }
10
+ catch (error) {
11
+ return { output: error.message, isError: true };
12
+ }
13
+ }
@@ -1,4 +1,4 @@
1
- import type { CmdContext, CmdResult } from '../context.js';
1
+ import type { CmdContext, CmdResult } from '@plebeiantech/lat.md-core/context';
2
2
  import { type ViewServer, type ViewServerOptions } from '../view/server.js';
3
3
  type UiCommandOptions = ViewServerOptions & {
4
4
  openBrowser?: (url: string) => Promise<void>;
@@ -21,9 +21,25 @@ export function openBrowser(url) {
21
21
  }
22
22
  /** Start `lat ui`, report its URL, and launch the default browser. */
23
23
  export async function uiCommand(ctx, options = {}) {
24
- const server = await startViewServer(ctx, options);
24
+ let server;
25
+ try {
26
+ server = await startViewServer(ctx, options);
27
+ }
28
+ catch (error) {
29
+ if (options.port !== undefined &&
30
+ error.code === 'EADDRINUSE') {
31
+ return {
32
+ isError: true,
33
+ output: `Port ${options.port} is already in use. Choose another with --port <number>.`,
34
+ };
35
+ }
36
+ throw error;
37
+ }
25
38
  options.onStarted?.(server);
26
- const lines = [`Viewing lat.md at ${server.url}`];
39
+ const lines = [
40
+ `Viewing lat.md at ${server.url}`,
41
+ 'Note: use `lat ui build static` or `lat ui build server` to build a deployable UI',
42
+ ];
27
43
  try {
28
44
  await (options.openBrowser ?? openBrowser)(server.url);
29
45
  }
@@ -0,0 +1,47 @@
1
+ export type AntigravityPreInvocationInput = {
2
+ conversationId?: string;
3
+ workspacePaths?: string[];
4
+ transcriptPath?: string;
5
+ artifactDirectoryPath?: string;
6
+ modelName?: string;
7
+ user_prompt?: string;
8
+ prompt?: string;
9
+ userPrompt?: string;
10
+ };
11
+ export type AntigravityPreInvocationOutput = {
12
+ injectSteps: Array<{
13
+ ephemeralMessage?: string;
14
+ }>;
15
+ };
16
+ export type AntigravityPreToolUseInput = {
17
+ toolCall?: {
18
+ name?: string;
19
+ args?: Record<string, unknown>;
20
+ };
21
+ stepIdx?: number;
22
+ workspacePaths?: string[];
23
+ };
24
+ export type AntigravityPreToolUseOutput = {
25
+ decision: 'allow' | 'deny';
26
+ reason?: string;
27
+ };
28
+ export type AntigravityStopInput = {
29
+ executionNum?: number;
30
+ execution_num?: number;
31
+ stop_hook_active?: boolean;
32
+ stopHookActive?: boolean;
33
+ terminationReason?: string;
34
+ error?: string;
35
+ fullyIdle?: boolean;
36
+ workspacePaths?: string[];
37
+ };
38
+ export type AntigravityStopOutput = {
39
+ decision?: 'continue';
40
+ reason?: string;
41
+ };
42
+ export declare function extractLastUserPrompt(transcriptPath?: string): string | null;
43
+ export declare function handleAntigravityPreInvocation(rawInput?: string, writeOutput?: boolean): Promise<AntigravityPreInvocationOutput>;
44
+ export declare function handleAntigravityPreToolUse(rawInput?: string, writeOutput?: boolean): Promise<AntigravityPreToolUseOutput>;
45
+ export declare function handleAntigravityPostToolUse(rawInput?: string, writeOutput?: boolean): Promise<Record<string, unknown>>;
46
+ export declare function handleAntigravityStop(rawInput?: string, writeOutput?: boolean): Promise<AntigravityStopOutput>;
47
+ export declare function handleAntigravityHook(event: string, rawInput?: string): Promise<void>;