@plebeiantech/lat.md 0.12.3-fork.1
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/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/src/cli/check-frontmatter.d.ts +12 -0
- package/dist/src/cli/check-frontmatter.js +44 -0
- package/dist/src/cli/check-mode.d.ts +6 -0
- package/dist/src/cli/check-mode.js +303 -0
- package/dist/src/cli/check-status.d.ts +74 -0
- package/dist/src/cli/check-status.js +217 -0
- package/dist/src/cli/check.d.ts +45 -0
- package/dist/src/cli/check.js +777 -0
- package/dist/src/cli/checklist-menu.d.ts +12 -0
- package/dist/src/cli/checklist-menu.js +111 -0
- package/dist/src/cli/comment-guard.d.ts +16 -0
- package/dist/src/cli/comment-guard.js +111 -0
- package/dist/src/cli/comment-reminder.d.ts +62 -0
- package/dist/src/cli/comment-reminder.js +210 -0
- package/dist/src/cli/context.d.ts +11 -0
- package/dist/src/cli/context.js +58 -0
- package/dist/src/cli/expand.d.ts +8 -0
- package/dist/src/cli/expand.js +94 -0
- package/dist/src/cli/gen-index.d.ts +45 -0
- package/dist/src/cli/gen-index.js +235 -0
- package/dist/src/cli/gen.d.ts +6 -0
- package/dist/src/cli/gen.js +42 -0
- package/dist/src/cli/graph.d.ts +7 -0
- package/dist/src/cli/graph.js +47 -0
- package/dist/src/cli/hook.d.ts +1 -0
- package/dist/src/cli/hook.js +432 -0
- package/dist/src/cli/index.d.ts +2 -0
- package/dist/src/cli/index.js +307 -0
- package/dist/src/cli/init.d.ts +9 -0
- package/dist/src/cli/init.js +1031 -0
- package/dist/src/cli/link-scheme.d.ts +54 -0
- package/dist/src/cli/link-scheme.js +101 -0
- package/dist/src/cli/locate.d.ts +2 -0
- package/dist/src/cli/locate.js +17 -0
- package/dist/src/cli/refs.d.ts +22 -0
- package/dist/src/cli/refs.js +229 -0
- package/dist/src/cli/reindex.d.ts +13 -0
- package/dist/src/cli/reindex.js +136 -0
- package/dist/src/cli/search.d.ts +36 -0
- package/dist/src/cli/search.js +217 -0
- package/dist/src/cli/section.d.ts +43 -0
- package/dist/src/cli/section.js +252 -0
- package/dist/src/cli/select-menu.d.ts +13 -0
- package/dist/src/cli/select-menu.js +100 -0
- package/dist/src/cli/templates.d.ts +1 -0
- package/dist/src/cli/templates.js +15 -0
- package/dist/src/cli/ui.d.ts +11 -0
- package/dist/src/cli/ui.js +34 -0
- package/dist/src/code-refs.d.ts +17 -0
- package/dist/src/code-refs.js +277 -0
- package/dist/src/config.d.ts +29 -0
- package/dist/src/config.js +83 -0
- package/dist/src/context.d.ts +23 -0
- package/dist/src/context.js +11 -0
- package/dist/src/extensions/wiki-link/from-markdown.d.ts +5 -0
- package/dist/src/extensions/wiki-link/from-markdown.js +34 -0
- package/dist/src/extensions/wiki-link/index.d.ts +4 -0
- package/dist/src/extensions/wiki-link/index.js +3 -0
- package/dist/src/extensions/wiki-link/syntax.d.ts +14 -0
- package/dist/src/extensions/wiki-link/syntax.js +121 -0
- package/dist/src/extensions/wiki-link/to-markdown.d.ts +5 -0
- package/dist/src/extensions/wiki-link/to-markdown.js +28 -0
- package/dist/src/extensions/wiki-link/types.d.ts +34 -0
- package/dist/src/extensions/wiki-link/types.js +1 -0
- package/dist/src/format.d.ts +8 -0
- package/dist/src/format.js +43 -0
- package/dist/src/graph-export.d.ts +60 -0
- package/dist/src/graph-export.js +309 -0
- package/dist/src/init-version.d.ts +10 -0
- package/dist/src/init-version.js +49 -0
- package/dist/src/knowledge/bd.d.ts +2 -0
- package/dist/src/knowledge/bd.js +107 -0
- package/dist/src/knowledge/claude-memory.d.ts +13 -0
- package/dist/src/knowledge/claude-memory.js +204 -0
- package/dist/src/knowledge/cq.d.ts +2 -0
- package/dist/src/knowledge/cq.js +74 -0
- package/dist/src/knowledge/index.d.ts +49 -0
- package/dist/src/knowledge/index.js +271 -0
- package/dist/src/knowledge/ranking.d.ts +17 -0
- package/dist/src/knowledge/ranking.js +62 -0
- package/dist/src/knowledge/session.d.ts +46 -0
- package/dist/src/knowledge/session.js +203 -0
- package/dist/src/knowledge/types.d.ts +47 -0
- package/dist/src/knowledge/types.js +10 -0
- package/dist/src/lattice.d.ts +108 -0
- package/dist/src/lattice.js +816 -0
- package/dist/src/mcp/server.d.ts +1 -0
- package/dist/src/mcp/server.js +58 -0
- package/dist/src/parser.d.ts +3 -0
- package/dist/src/parser.js +18 -0
- package/dist/src/search/db.d.ts +16 -0
- package/dist/src/search/db.js +54 -0
- package/dist/src/search/embedder.d.ts +25 -0
- package/dist/src/search/embedder.js +58 -0
- package/dist/src/search/index.d.ts +9 -0
- package/dist/src/search/index.js +66 -0
- package/dist/src/search/search.d.ts +9 -0
- package/dist/src/search/search.js +16 -0
- package/dist/src/source-parser.d.ts +27 -0
- package/dist/src/source-parser.js +916 -0
- package/dist/src/untrusted.d.ts +24 -0
- package/dist/src/untrusted.js +97 -0
- package/dist/src/version.d.ts +7 -0
- package/dist/src/version.js +39 -0
- package/dist/src/view/client/assets/index-B0n0u03y.css +1 -0
- package/dist/src/view/client/assets/index-xm2_px4q.js +23 -0
- package/dist/src/view/client/index.html +14 -0
- package/dist/src/view/diagnostics.d.ts +5 -0
- package/dist/src/view/diagnostics.js +171 -0
- package/dist/src/view/git-diff.d.ts +3 -0
- package/dist/src/view/git-diff.js +255 -0
- package/dist/src/view/git.d.ts +22 -0
- package/dist/src/view/git.js +193 -0
- package/dist/src/view/highlight.d.ts +2 -0
- package/dist/src/view/highlight.js +3767 -0
- package/dist/src/view/markdown.d.ts +22 -0
- package/dist/src/view/markdown.js +322 -0
- package/dist/src/view/protocol.d.ts +89 -0
- package/dist/src/view/protocol.js +1 -0
- package/dist/src/view/references.d.ts +62 -0
- package/dist/src/view/references.js +345 -0
- package/dist/src/view/repository.d.ts +12 -0
- package/dist/src/view/repository.js +167 -0
- package/dist/src/view/search.d.ts +14 -0
- package/dist/src/view/search.js +64 -0
- package/dist/src/view/server.d.ts +20 -0
- package/dist/src/view/server.js +233 -0
- package/dist/src/view/store.d.ts +57 -0
- package/dist/src/view/store.js +404 -0
- package/dist/src/walk.d.ts +18 -0
- package/dist/src/walk.js +27 -0
- package/package.json +85 -0
- package/templates/AGENTS.md +118 -0
- package/templates/README +1 -0
- package/templates/cursor-rules.md +77 -0
- package/templates/init/lat.md +1 -0
- package/templates/logo-dark.svg +182 -0
- package/templates/logo-light.svg +182 -0
- package/templates/logo.txt +7 -0
- package/templates/opencode-plugin.ts +180 -0
- package/templates/pi-extension.ts +364 -0
- package/templates/skill/SKILL.md +189 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 73224 16688" fill="#ddd">
|
|
2
|
+
<defs>
|
|
3
|
+
<path id="g2588" d="M-20 -512V1576H1253V-512Z"/>
|
|
4
|
+
<path id="g2591" d="M934 -512V-251H1094V-512ZM298 -512V-251H457V-512ZM616 -147V114H775V-147ZM-20 -147V114H138V-147ZM934 219V480H1094V219ZM298 219V480H457V219ZM616 584V845H775V584ZM-20 584V845H138V584ZM934 950V1211H1094V950ZM298 950V1211H457V950ZM616 1315V1576H775V1315ZM-20 1315V1576H138V1315Z"/>
|
|
5
|
+
</defs>
|
|
6
|
+
<use href="#g2591" transform="translate(0,0) scale(1,-1) translate(0,-1901)"/>
|
|
7
|
+
<use href="#g2588" transform="translate(1356,0) scale(1,-1) translate(0,-1901)"/>
|
|
8
|
+
<use href="#g2588" transform="translate(2712,0) scale(1,-1) translate(0,-1901)"/>
|
|
9
|
+
<use href="#g2591" transform="translate(21696,0) scale(1,-1) translate(0,-1901)"/>
|
|
10
|
+
<use href="#g2588" transform="translate(23052,0) scale(1,-1) translate(0,-1901)"/>
|
|
11
|
+
<use href="#g2588" transform="translate(24408,0) scale(1,-1) translate(0,-1901)"/>
|
|
12
|
+
<use href="#g2591" transform="translate(69156,0) scale(1,-1) translate(0,-1901)"/>
|
|
13
|
+
<use href="#g2588" transform="translate(70512,0) scale(1,-1) translate(0,-1901)"/>
|
|
14
|
+
<use href="#g2588" transform="translate(71868,0) scale(1,-1) translate(0,-1901)"/>
|
|
15
|
+
<use href="#g2591" transform="translate(0,2384) scale(1,-1) translate(0,-1901)"/>
|
|
16
|
+
<use href="#g2588" transform="translate(1356,2384) scale(1,-1) translate(0,-1901)"/>
|
|
17
|
+
<use href="#g2588" transform="translate(2712,2384) scale(1,-1) translate(0,-1901)"/>
|
|
18
|
+
<use href="#g2591" transform="translate(21696,2384) scale(1,-1) translate(0,-1901)"/>
|
|
19
|
+
<use href="#g2588" transform="translate(23052,2384) scale(1,-1) translate(0,-1901)"/>
|
|
20
|
+
<use href="#g2588" transform="translate(24408,2384) scale(1,-1) translate(0,-1901)"/>
|
|
21
|
+
<use href="#g2591" transform="translate(69156,2384) scale(1,-1) translate(0,-1901)"/>
|
|
22
|
+
<use href="#g2588" transform="translate(70512,2384) scale(1,-1) translate(0,-1901)"/>
|
|
23
|
+
<use href="#g2588" transform="translate(71868,2384) scale(1,-1) translate(0,-1901)"/>
|
|
24
|
+
<use href="#g2591" transform="translate(0,4768) scale(1,-1) translate(0,-1901)"/>
|
|
25
|
+
<use href="#g2588" transform="translate(1356,4768) scale(1,-1) translate(0,-1901)"/>
|
|
26
|
+
<use href="#g2588" transform="translate(2712,4768) scale(1,-1) translate(0,-1901)"/>
|
|
27
|
+
<use href="#g2591" transform="translate(6780,4768) scale(1,-1) translate(0,-1901)"/>
|
|
28
|
+
<use href="#g2588" transform="translate(8136,4768) scale(1,-1) translate(0,-1901)"/>
|
|
29
|
+
<use href="#g2588" transform="translate(9492,4768) scale(1,-1) translate(0,-1901)"/>
|
|
30
|
+
<use href="#g2588" transform="translate(10848,4768) scale(1,-1) translate(0,-1901)"/>
|
|
31
|
+
<use href="#g2588" transform="translate(12204,4768) scale(1,-1) translate(0,-1901)"/>
|
|
32
|
+
<use href="#g2588" transform="translate(13560,4768) scale(1,-1) translate(0,-1901)"/>
|
|
33
|
+
<use href="#g2588" transform="translate(14916,4768) scale(1,-1) translate(0,-1901)"/>
|
|
34
|
+
<use href="#g2591" transform="translate(18984,4768) scale(1,-1) translate(0,-1901)"/>
|
|
35
|
+
<use href="#g2588" transform="translate(20340,4768) scale(1,-1) translate(0,-1901)"/>
|
|
36
|
+
<use href="#g2588" transform="translate(21696,4768) scale(1,-1) translate(0,-1901)"/>
|
|
37
|
+
<use href="#g2588" transform="translate(23052,4768) scale(1,-1) translate(0,-1901)"/>
|
|
38
|
+
<use href="#g2588" transform="translate(24408,4768) scale(1,-1) translate(0,-1901)"/>
|
|
39
|
+
<use href="#g2588" transform="translate(25764,4768) scale(1,-1) translate(0,-1901)"/>
|
|
40
|
+
<use href="#g2588" transform="translate(27120,4768) scale(1,-1) translate(0,-1901)"/>
|
|
41
|
+
<use href="#g2591" transform="translate(37968,4768) scale(1,-1) translate(0,-1901)"/>
|
|
42
|
+
<use href="#g2588" transform="translate(39324,4768) scale(1,-1) translate(0,-1901)"/>
|
|
43
|
+
<use href="#g2588" transform="translate(40680,4768) scale(1,-1) translate(0,-1901)"/>
|
|
44
|
+
<use href="#g2588" transform="translate(42036,4768) scale(1,-1) translate(0,-1901)"/>
|
|
45
|
+
<use href="#g2588" transform="translate(43392,4768) scale(1,-1) translate(0,-1901)"/>
|
|
46
|
+
<use href="#g2588" transform="translate(44748,4768) scale(1,-1) translate(0,-1901)"/>
|
|
47
|
+
<use href="#g2588" transform="translate(46104,4768) scale(1,-1) translate(0,-1901)"/>
|
|
48
|
+
<use href="#g2588" transform="translate(47460,4768) scale(1,-1) translate(0,-1901)"/>
|
|
49
|
+
<use href="#g2588" transform="translate(48816,4768) scale(1,-1) translate(0,-1901)"/>
|
|
50
|
+
<use href="#g2588" transform="translate(50172,4768) scale(1,-1) translate(0,-1901)"/>
|
|
51
|
+
<use href="#g2588" transform="translate(51528,4768) scale(1,-1) translate(0,-1901)"/>
|
|
52
|
+
<use href="#g2588" transform="translate(52884,4768) scale(1,-1) translate(0,-1901)"/>
|
|
53
|
+
<use href="#g2588" transform="translate(54240,4768) scale(1,-1) translate(0,-1901)"/>
|
|
54
|
+
<use href="#g2588" transform="translate(55596,4768) scale(1,-1) translate(0,-1901)"/>
|
|
55
|
+
<use href="#g2591" transform="translate(61020,4768) scale(1,-1) translate(0,-1901)"/>
|
|
56
|
+
<use href="#g2588" transform="translate(62376,4768) scale(1,-1) translate(0,-1901)"/>
|
|
57
|
+
<use href="#g2588" transform="translate(63732,4768) scale(1,-1) translate(0,-1901)"/>
|
|
58
|
+
<use href="#g2588" transform="translate(65088,4768) scale(1,-1) translate(0,-1901)"/>
|
|
59
|
+
<use href="#g2588" transform="translate(66444,4768) scale(1,-1) translate(0,-1901)"/>
|
|
60
|
+
<use href="#g2588" transform="translate(67800,4768) scale(1,-1) translate(0,-1901)"/>
|
|
61
|
+
<use href="#g2588" transform="translate(69156,4768) scale(1,-1) translate(0,-1901)"/>
|
|
62
|
+
<use href="#g2588" transform="translate(70512,4768) scale(1,-1) translate(0,-1901)"/>
|
|
63
|
+
<use href="#g2588" transform="translate(71868,4768) scale(1,-1) translate(0,-1901)"/>
|
|
64
|
+
<use href="#g2591" transform="translate(0,7152) scale(1,-1) translate(0,-1901)"/>
|
|
65
|
+
<use href="#g2588" transform="translate(1356,7152) scale(1,-1) translate(0,-1901)"/>
|
|
66
|
+
<use href="#g2588" transform="translate(2712,7152) scale(1,-1) translate(0,-1901)"/>
|
|
67
|
+
<use href="#g2591" transform="translate(13560,7152) scale(1,-1) translate(0,-1901)"/>
|
|
68
|
+
<use href="#g2588" transform="translate(14916,7152) scale(1,-1) translate(0,-1901)"/>
|
|
69
|
+
<use href="#g2588" transform="translate(16272,7152) scale(1,-1) translate(0,-1901)"/>
|
|
70
|
+
<use href="#g2591" transform="translate(21696,7152) scale(1,-1) translate(0,-1901)"/>
|
|
71
|
+
<use href="#g2588" transform="translate(23052,7152) scale(1,-1) translate(0,-1901)"/>
|
|
72
|
+
<use href="#g2588" transform="translate(24408,7152) scale(1,-1) translate(0,-1901)"/>
|
|
73
|
+
<use href="#g2591" transform="translate(37968,7152) scale(1,-1) translate(0,-1901)"/>
|
|
74
|
+
<use href="#g2588" transform="translate(39324,7152) scale(1,-1) translate(0,-1901)"/>
|
|
75
|
+
<use href="#g2588" transform="translate(40680,7152) scale(1,-1) translate(0,-1901)"/>
|
|
76
|
+
<use href="#g2591" transform="translate(46104,7152) scale(1,-1) translate(0,-1901)"/>
|
|
77
|
+
<use href="#g2588" transform="translate(47460,7152) scale(1,-1) translate(0,-1901)"/>
|
|
78
|
+
<use href="#g2588" transform="translate(48816,7152) scale(1,-1) translate(0,-1901)"/>
|
|
79
|
+
<use href="#g2591" transform="translate(54240,7152) scale(1,-1) translate(0,-1901)"/>
|
|
80
|
+
<use href="#g2588" transform="translate(55596,7152) scale(1,-1) translate(0,-1901)"/>
|
|
81
|
+
<use href="#g2588" transform="translate(56952,7152) scale(1,-1) translate(0,-1901)"/>
|
|
82
|
+
<use href="#g2591" transform="translate(59664,7152) scale(1,-1) translate(0,-1901)"/>
|
|
83
|
+
<use href="#g2588" transform="translate(61020,7152) scale(1,-1) translate(0,-1901)"/>
|
|
84
|
+
<use href="#g2588" transform="translate(62376,7152) scale(1,-1) translate(0,-1901)"/>
|
|
85
|
+
<use href="#g2591" transform="translate(69156,7152) scale(1,-1) translate(0,-1901)"/>
|
|
86
|
+
<use href="#g2588" transform="translate(70512,7152) scale(1,-1) translate(0,-1901)"/>
|
|
87
|
+
<use href="#g2588" transform="translate(71868,7152) scale(1,-1) translate(0,-1901)"/>
|
|
88
|
+
<use href="#g2591" transform="translate(0,9536) scale(1,-1) translate(0,-1901)"/>
|
|
89
|
+
<use href="#g2588" transform="translate(1356,9536) scale(1,-1) translate(0,-1901)"/>
|
|
90
|
+
<use href="#g2588" transform="translate(2712,9536) scale(1,-1) translate(0,-1901)"/>
|
|
91
|
+
<use href="#g2591" transform="translate(6780,9536) scale(1,-1) translate(0,-1901)"/>
|
|
92
|
+
<use href="#g2588" transform="translate(8136,9536) scale(1,-1) translate(0,-1901)"/>
|
|
93
|
+
<use href="#g2588" transform="translate(9492,9536) scale(1,-1) translate(0,-1901)"/>
|
|
94
|
+
<use href="#g2588" transform="translate(10848,9536) scale(1,-1) translate(0,-1901)"/>
|
|
95
|
+
<use href="#g2588" transform="translate(12204,9536) scale(1,-1) translate(0,-1901)"/>
|
|
96
|
+
<use href="#g2588" transform="translate(13560,9536) scale(1,-1) translate(0,-1901)"/>
|
|
97
|
+
<use href="#g2588" transform="translate(14916,9536) scale(1,-1) translate(0,-1901)"/>
|
|
98
|
+
<use href="#g2588" transform="translate(16272,9536) scale(1,-1) translate(0,-1901)"/>
|
|
99
|
+
<use href="#g2591" transform="translate(21696,9536) scale(1,-1) translate(0,-1901)"/>
|
|
100
|
+
<use href="#g2588" transform="translate(23052,9536) scale(1,-1) translate(0,-1901)"/>
|
|
101
|
+
<use href="#g2588" transform="translate(24408,9536) scale(1,-1) translate(0,-1901)"/>
|
|
102
|
+
<use href="#g2591" transform="translate(37968,9536) scale(1,-1) translate(0,-1901)"/>
|
|
103
|
+
<use href="#g2588" transform="translate(39324,9536) scale(1,-1) translate(0,-1901)"/>
|
|
104
|
+
<use href="#g2588" transform="translate(40680,9536) scale(1,-1) translate(0,-1901)"/>
|
|
105
|
+
<use href="#g2591" transform="translate(46104,9536) scale(1,-1) translate(0,-1901)"/>
|
|
106
|
+
<use href="#g2588" transform="translate(47460,9536) scale(1,-1) translate(0,-1901)"/>
|
|
107
|
+
<use href="#g2588" transform="translate(48816,9536) scale(1,-1) translate(0,-1901)"/>
|
|
108
|
+
<use href="#g2591" transform="translate(54240,9536) scale(1,-1) translate(0,-1901)"/>
|
|
109
|
+
<use href="#g2588" transform="translate(55596,9536) scale(1,-1) translate(0,-1901)"/>
|
|
110
|
+
<use href="#g2588" transform="translate(56952,9536) scale(1,-1) translate(0,-1901)"/>
|
|
111
|
+
<use href="#g2591" transform="translate(59664,9536) scale(1,-1) translate(0,-1901)"/>
|
|
112
|
+
<use href="#g2588" transform="translate(61020,9536) scale(1,-1) translate(0,-1901)"/>
|
|
113
|
+
<use href="#g2588" transform="translate(62376,9536) scale(1,-1) translate(0,-1901)"/>
|
|
114
|
+
<use href="#g2591" transform="translate(69156,9536) scale(1,-1) translate(0,-1901)"/>
|
|
115
|
+
<use href="#g2588" transform="translate(70512,9536) scale(1,-1) translate(0,-1901)"/>
|
|
116
|
+
<use href="#g2588" transform="translate(71868,9536) scale(1,-1) translate(0,-1901)"/>
|
|
117
|
+
<use href="#g2591" transform="translate(0,11920) scale(1,-1) translate(0,-1901)"/>
|
|
118
|
+
<use href="#g2588" transform="translate(1356,11920) scale(1,-1) translate(0,-1901)"/>
|
|
119
|
+
<use href="#g2588" transform="translate(2712,11920) scale(1,-1) translate(0,-1901)"/>
|
|
120
|
+
<use href="#g2591" transform="translate(5424,11920) scale(1,-1) translate(0,-1901)"/>
|
|
121
|
+
<use href="#g2588" transform="translate(6780,11920) scale(1,-1) translate(0,-1901)"/>
|
|
122
|
+
<use href="#g2588" transform="translate(8136,11920) scale(1,-1) translate(0,-1901)"/>
|
|
123
|
+
<use href="#g2591" transform="translate(13560,11920) scale(1,-1) translate(0,-1901)"/>
|
|
124
|
+
<use href="#g2588" transform="translate(14916,11920) scale(1,-1) translate(0,-1901)"/>
|
|
125
|
+
<use href="#g2588" transform="translate(16272,11920) scale(1,-1) translate(0,-1901)"/>
|
|
126
|
+
<use href="#g2591" transform="translate(21696,11920) scale(1,-1) translate(0,-1901)"/>
|
|
127
|
+
<use href="#g2588" transform="translate(23052,11920) scale(1,-1) translate(0,-1901)"/>
|
|
128
|
+
<use href="#g2588" transform="translate(24408,11920) scale(1,-1) translate(0,-1901)"/>
|
|
129
|
+
<use href="#g2591" transform="translate(37968,11920) scale(1,-1) translate(0,-1901)"/>
|
|
130
|
+
<use href="#g2588" transform="translate(39324,11920) scale(1,-1) translate(0,-1901)"/>
|
|
131
|
+
<use href="#g2588" transform="translate(40680,11920) scale(1,-1) translate(0,-1901)"/>
|
|
132
|
+
<use href="#g2591" transform="translate(46104,11920) scale(1,-1) translate(0,-1901)"/>
|
|
133
|
+
<use href="#g2588" transform="translate(47460,11920) scale(1,-1) translate(0,-1901)"/>
|
|
134
|
+
<use href="#g2588" transform="translate(48816,11920) scale(1,-1) translate(0,-1901)"/>
|
|
135
|
+
<use href="#g2591" transform="translate(54240,11920) scale(1,-1) translate(0,-1901)"/>
|
|
136
|
+
<use href="#g2588" transform="translate(55596,11920) scale(1,-1) translate(0,-1901)"/>
|
|
137
|
+
<use href="#g2588" transform="translate(56952,11920) scale(1,-1) translate(0,-1901)"/>
|
|
138
|
+
<use href="#g2591" transform="translate(59664,11920) scale(1,-1) translate(0,-1901)"/>
|
|
139
|
+
<use href="#g2588" transform="translate(61020,11920) scale(1,-1) translate(0,-1901)"/>
|
|
140
|
+
<use href="#g2588" transform="translate(62376,11920) scale(1,-1) translate(0,-1901)"/>
|
|
141
|
+
<use href="#g2591" transform="translate(67800,11920) scale(1,-1) translate(0,-1901)"/>
|
|
142
|
+
<use href="#g2588" transform="translate(69156,11920) scale(1,-1) translate(0,-1901)"/>
|
|
143
|
+
<use href="#g2588" transform="translate(70512,11920) scale(1,-1) translate(0,-1901)"/>
|
|
144
|
+
<use href="#g2588" transform="translate(71868,11920) scale(1,-1) translate(0,-1901)"/>
|
|
145
|
+
<use href="#g2591" transform="translate(0,14304) scale(1,-1) translate(0,-1901)"/>
|
|
146
|
+
<use href="#g2588" transform="translate(1356,14304) scale(1,-1) translate(0,-1901)"/>
|
|
147
|
+
<use href="#g2588" transform="translate(2712,14304) scale(1,-1) translate(0,-1901)"/>
|
|
148
|
+
<use href="#g2591" transform="translate(6780,14304) scale(1,-1) translate(0,-1901)"/>
|
|
149
|
+
<use href="#g2588" transform="translate(8136,14304) scale(1,-1) translate(0,-1901)"/>
|
|
150
|
+
<use href="#g2588" transform="translate(9492,14304) scale(1,-1) translate(0,-1901)"/>
|
|
151
|
+
<use href="#g2588" transform="translate(10848,14304) scale(1,-1) translate(0,-1901)"/>
|
|
152
|
+
<use href="#g2588" transform="translate(12204,14304) scale(1,-1) translate(0,-1901)"/>
|
|
153
|
+
<use href="#g2588" transform="translate(13560,14304) scale(1,-1) translate(0,-1901)"/>
|
|
154
|
+
<use href="#g2591" transform="translate(14916,14304) scale(1,-1) translate(0,-1901)"/>
|
|
155
|
+
<use href="#g2588" transform="translate(16272,14304) scale(1,-1) translate(0,-1901)"/>
|
|
156
|
+
<use href="#g2588" transform="translate(17628,14304) scale(1,-1) translate(0,-1901)"/>
|
|
157
|
+
<use href="#g2591" transform="translate(23052,14304) scale(1,-1) translate(0,-1901)"/>
|
|
158
|
+
<use href="#g2588" transform="translate(24408,14304) scale(1,-1) translate(0,-1901)"/>
|
|
159
|
+
<use href="#g2588" transform="translate(25764,14304) scale(1,-1) translate(0,-1901)"/>
|
|
160
|
+
<use href="#g2588" transform="translate(27120,14304) scale(1,-1) translate(0,-1901)"/>
|
|
161
|
+
<use href="#g2591" transform="translate(31188,14304) scale(1,-1) translate(0,-1901)"/>
|
|
162
|
+
<use href="#g2588" transform="translate(32544,14304) scale(1,-1) translate(0,-1901)"/>
|
|
163
|
+
<use href="#g2588" transform="translate(33900,14304) scale(1,-1) translate(0,-1901)"/>
|
|
164
|
+
<use href="#g2591" transform="translate(37968,14304) scale(1,-1) translate(0,-1901)"/>
|
|
165
|
+
<use href="#g2588" transform="translate(39324,14304) scale(1,-1) translate(0,-1901)"/>
|
|
166
|
+
<use href="#g2588" transform="translate(40680,14304) scale(1,-1) translate(0,-1901)"/>
|
|
167
|
+
<use href="#g2591" transform="translate(46104,14304) scale(1,-1) translate(0,-1901)"/>
|
|
168
|
+
<use href="#g2588" transform="translate(47460,14304) scale(1,-1) translate(0,-1901)"/>
|
|
169
|
+
<use href="#g2588" transform="translate(48816,14304) scale(1,-1) translate(0,-1901)"/>
|
|
170
|
+
<use href="#g2591" transform="translate(54240,14304) scale(1,-1) translate(0,-1901)"/>
|
|
171
|
+
<use href="#g2588" transform="translate(55596,14304) scale(1,-1) translate(0,-1901)"/>
|
|
172
|
+
<use href="#g2588" transform="translate(56952,14304) scale(1,-1) translate(0,-1901)"/>
|
|
173
|
+
<use href="#g2591" transform="translate(61020,14304) scale(1,-1) translate(0,-1901)"/>
|
|
174
|
+
<use href="#g2588" transform="translate(62376,14304) scale(1,-1) translate(0,-1901)"/>
|
|
175
|
+
<use href="#g2588" transform="translate(63732,14304) scale(1,-1) translate(0,-1901)"/>
|
|
176
|
+
<use href="#g2588" transform="translate(65088,14304) scale(1,-1) translate(0,-1901)"/>
|
|
177
|
+
<use href="#g2588" transform="translate(66444,14304) scale(1,-1) translate(0,-1901)"/>
|
|
178
|
+
<use href="#g2588" transform="translate(67800,14304) scale(1,-1) translate(0,-1901)"/>
|
|
179
|
+
<use href="#g2591" transform="translate(69156,14304) scale(1,-1) translate(0,-1901)"/>
|
|
180
|
+
<use href="#g2588" transform="translate(70512,14304) scale(1,-1) translate(0,-1901)"/>
|
|
181
|
+
<use href="#g2588" transform="translate(71868,14304) scale(1,-1) translate(0,-1901)"/>
|
|
182
|
+
</svg>
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { type Plugin, tool } from "@opencode-ai/plugin"
|
|
2
|
+
import { execSync } from "child_process"
|
|
3
|
+
|
|
4
|
+
/** Absolute path to the lat binary, injected by `lat init`. */
|
|
5
|
+
const LAT = "__LAT_BIN__"
|
|
6
|
+
|
|
7
|
+
function run(args: string[]): string {
|
|
8
|
+
return execSync(`${LAT} ${args.join(" ")}`, {
|
|
9
|
+
cwd: process.cwd(),
|
|
10
|
+
encoding: "utf-8",
|
|
11
|
+
timeout: 30_000,
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function tryRun(args: string[]): string {
|
|
16
|
+
try {
|
|
17
|
+
return run(args)
|
|
18
|
+
} catch {
|
|
19
|
+
return ""
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const LatPlugin: Plugin = async (ctx) => {
|
|
24
|
+
return {
|
|
25
|
+
tool: {
|
|
26
|
+
lat_search: tool({
|
|
27
|
+
description:
|
|
28
|
+
"Semantic search across lat.md sections using embeddings. Use before starting any task to find relevant design context.",
|
|
29
|
+
args: {
|
|
30
|
+
query: tool.schema.string("Search query in natural language"),
|
|
31
|
+
limit: tool.schema.optional(
|
|
32
|
+
tool.schema.number("Max results (default 5)"),
|
|
33
|
+
),
|
|
34
|
+
},
|
|
35
|
+
async execute(args) {
|
|
36
|
+
const cliArgs = ["search", JSON.stringify(args.query)]
|
|
37
|
+
if (args.limit) cliArgs.push("--limit", String(args.limit))
|
|
38
|
+
const output = tryRun(cliArgs)
|
|
39
|
+
return output || "No results found."
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
|
|
43
|
+
lat_section: tool({
|
|
44
|
+
description:
|
|
45
|
+
"Show full content of a lat.md section with outgoing/incoming refs",
|
|
46
|
+
args: {
|
|
47
|
+
query: tool.schema.string(
|
|
48
|
+
'Section ID or name (e.g. "cli#init", "Tests#User login")',
|
|
49
|
+
),
|
|
50
|
+
},
|
|
51
|
+
async execute(args) {
|
|
52
|
+
const output = tryRun(["section", JSON.stringify(args.query)])
|
|
53
|
+
return output || "Section not found."
|
|
54
|
+
},
|
|
55
|
+
}),
|
|
56
|
+
|
|
57
|
+
lat_locate: tool({
|
|
58
|
+
description:
|
|
59
|
+
"Find a section by name (exact, subsection tail, or fuzzy match)",
|
|
60
|
+
args: {
|
|
61
|
+
query: tool.schema.string("Section name to locate"),
|
|
62
|
+
},
|
|
63
|
+
async execute(args) {
|
|
64
|
+
const output = tryRun(["locate", JSON.stringify(args.query)])
|
|
65
|
+
return output || "No sections matching query."
|
|
66
|
+
},
|
|
67
|
+
}),
|
|
68
|
+
|
|
69
|
+
lat_check: tool({
|
|
70
|
+
description:
|
|
71
|
+
"Run full lat.md validation. Returns errors or 'All checks passed'",
|
|
72
|
+
args: {},
|
|
73
|
+
async execute() {
|
|
74
|
+
try {
|
|
75
|
+
return run(["check"])
|
|
76
|
+
} catch (err: unknown) {
|
|
77
|
+
const e = err as { stdout?: string; stderr?: string }
|
|
78
|
+
return e.stdout || e.stderr || "Check failed"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
}),
|
|
82
|
+
|
|
83
|
+
lat_expand: tool({
|
|
84
|
+
description:
|
|
85
|
+
"Expand [[refs]] in text to resolved file locations and context",
|
|
86
|
+
args: {
|
|
87
|
+
text: tool.schema.string("Text containing [[refs]] to expand"),
|
|
88
|
+
},
|
|
89
|
+
async execute(args) {
|
|
90
|
+
const output = tryRun(["expand", JSON.stringify(args.text)])
|
|
91
|
+
return output || args.text
|
|
92
|
+
},
|
|
93
|
+
}),
|
|
94
|
+
|
|
95
|
+
lat_refs: tool({
|
|
96
|
+
description:
|
|
97
|
+
"Find what references a given section via wiki links or @lat code comments",
|
|
98
|
+
args: {
|
|
99
|
+
query: tool.schema.string(
|
|
100
|
+
'Section ID (e.g. "cli#init", "file#Section")',
|
|
101
|
+
),
|
|
102
|
+
},
|
|
103
|
+
async execute(args) {
|
|
104
|
+
const output = tryRun(["refs", JSON.stringify(args.query)])
|
|
105
|
+
return output || "No references found."
|
|
106
|
+
},
|
|
107
|
+
}),
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
hooks: {
|
|
111
|
+
// Convention, not automated here: a code comment that explains WHY
|
|
112
|
+
// (a reason, trade-off, rejected alternative, or invariant) belongs in
|
|
113
|
+
// a lat.md/ section, with an `@lat:` pointer (comment-prefixed per
|
|
114
|
+
// language, naming the section in double brackets) left behind in the
|
|
115
|
+
// code. `lat hook claude PostToolUse` enforces this as a reminder after
|
|
116
|
+
// every Edit/Write in Claude Code and Codex; OpenCode has no per-edit
|
|
117
|
+
// hook wired up yet.
|
|
118
|
+
"session.idle": async () => {
|
|
119
|
+
let checkFailed = false
|
|
120
|
+
let checkOutput = ""
|
|
121
|
+
try {
|
|
122
|
+
checkOutput = run(["check"])
|
|
123
|
+
} catch (err: unknown) {
|
|
124
|
+
checkFailed = true
|
|
125
|
+
checkOutput = (err as { stdout?: string }).stdout || ""
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Check git diff for lat.md/ sync status
|
|
129
|
+
let needsSync = false
|
|
130
|
+
let codeLines = 0
|
|
131
|
+
try {
|
|
132
|
+
const numstat = execSync("git diff HEAD --numstat", {
|
|
133
|
+
encoding: "utf-8",
|
|
134
|
+
cwd: process.cwd(),
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
let latMdLines = 0
|
|
138
|
+
for (const line of numstat.split("\n")) {
|
|
139
|
+
const parts = line.split("\t")
|
|
140
|
+
if (parts.length < 3) continue
|
|
141
|
+
const added = parseInt(parts[0], 10) || 0
|
|
142
|
+
const removed = parseInt(parts[1], 10) || 0
|
|
143
|
+
const file = parts[2]
|
|
144
|
+
const changed = added + removed
|
|
145
|
+
if (file.startsWith("lat.md/")) {
|
|
146
|
+
latMdLines += changed
|
|
147
|
+
} else if (/\.(ts|tsx|js|jsx|py|rs|go|c|h)$/.test(file)) {
|
|
148
|
+
codeLines += changed
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (codeLines >= 5) {
|
|
153
|
+
const effectiveLatMd =
|
|
154
|
+
latMdLines === 0 ? 0 : Math.max(latMdLines, 1)
|
|
155
|
+
needsSync = effectiveLatMd < codeLines * 0.05
|
|
156
|
+
}
|
|
157
|
+
} catch {
|
|
158
|
+
// git not available or no HEAD — skip diff check
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (!checkFailed && !needsSync) return
|
|
162
|
+
|
|
163
|
+
const message =
|
|
164
|
+
checkFailed && needsSync
|
|
165
|
+
? `lat check failed and lat.md/ may be out of sync (${codeLines} code lines changed). Run lat_check, fix errors, and update only relevant current-state lat.md/ sections. Do not add journal/changelog notes.`
|
|
166
|
+
: checkFailed
|
|
167
|
+
? `lat check failed. Run lat_check and fix the errors.`
|
|
168
|
+
: `lat.md/ may be out of sync — ${codeLines} code lines changed but lat.md/ was not updated. Review whether current-state lat.md/ sections need updates; do not add journal/changelog notes. Run lat_check.`
|
|
169
|
+
|
|
170
|
+
await ctx.client.app.log({
|
|
171
|
+
body: {
|
|
172
|
+
service: "lat.md",
|
|
173
|
+
level: "warn",
|
|
174
|
+
message,
|
|
175
|
+
},
|
|
176
|
+
})
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
}
|
|
180
|
+
}
|