@birdcc/lsp 0.0.1-alpha.0 → 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +25 -23
  2. package/dist/asn-completion.d.ts +21 -0
  3. package/dist/asn-completion.d.ts.map +1 -0
  4. package/dist/asn-completion.js +42 -0
  5. package/dist/asn-completion.js.map +1 -0
  6. package/dist/asn-context.d.ts +9 -0
  7. package/dist/asn-context.d.ts.map +1 -0
  8. package/dist/asn-context.js +203 -0
  9. package/dist/asn-context.js.map +1 -0
  10. package/dist/asn-hover.d.ts +11 -0
  11. package/dist/asn-hover.d.ts.map +1 -0
  12. package/dist/asn-hover.js +33 -0
  13. package/dist/asn-hover.js.map +1 -0
  14. package/dist/asn-inlay-hints.d.ts +13 -0
  15. package/dist/asn-inlay-hints.d.ts.map +1 -0
  16. package/dist/asn-inlay-hints.js +47 -0
  17. package/dist/asn-inlay-hints.js.map +1 -0
  18. package/dist/diagnostic.d.ts.map +1 -1
  19. package/dist/diagnostic.js +2 -10
  20. package/dist/diagnostic.js.map +1 -1
  21. package/dist/document-symbol.js +1 -1
  22. package/dist/document-symbol.js.map +1 -1
  23. package/dist/hover-context.d.ts +31 -0
  24. package/dist/hover-context.d.ts.map +1 -0
  25. package/dist/hover-context.js +125 -0
  26. package/dist/hover-context.js.map +1 -0
  27. package/dist/hover-docs/00-base.yaml +5 -0
  28. package/dist/hover-docs/10-global-options.yaml +442 -0
  29. package/dist/hover-docs/20-filter-language.yaml +209 -0
  30. package/dist/hover-docs/30-channel-options.yaml +244 -0
  31. package/dist/hover-docs/40-protocol-common.yaml +59 -0
  32. package/dist/hover-docs/41-protocol-igp.yaml +305 -0
  33. package/dist/hover-docs/42-protocol-kernel-static.yaml +220 -0
  34. package/dist/hover-docs/43-protocol-mpls.yaml +40 -0
  35. package/dist/hover-docs/44-protocol-extended.yaml +635 -0
  36. package/dist/hover-docs/50-protocol-bgp.yaml +482 -0
  37. package/dist/hover-docs/60-protocol-ospf.yaml +527 -0
  38. package/dist/hover-docs.d.ts +5 -1
  39. package/dist/hover-docs.d.ts.map +1 -1
  40. package/dist/hover-docs.js +376 -51
  41. package/dist/hover-docs.js.map +1 -1
  42. package/dist/hover-usage/00-base.yaml +2 -0
  43. package/dist/hover-usage/10-global-usage.yaml +73 -0
  44. package/dist/hover-usage/20-filter-usage.yaml +41 -0
  45. package/dist/hover-usage/30-channel-usage.yaml +41 -0
  46. package/dist/hover-usage/40-protocol-usage.yaml +258 -0
  47. package/dist/hover-usage/50-bgp-usage.yaml +254 -0
  48. package/dist/hover-usage/60-ospf-usage.yaml +340 -0
  49. package/dist/hover.d.ts +10 -0
  50. package/dist/hover.d.ts.map +1 -1
  51. package/dist/hover.js +152 -46
  52. package/dist/hover.js.map +1 -1
  53. package/dist/index.d.ts +7 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +6 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/init/workspace-init.d.ts +28 -0
  58. package/dist/init/workspace-init.d.ts.map +1 -0
  59. package/dist/init/workspace-init.js +72 -0
  60. package/dist/init/workspace-init.js.map +1 -0
  61. package/dist/lsp-server.d.ts +7 -1
  62. package/dist/lsp-server.d.ts.map +1 -1
  63. package/dist/lsp-server.js +277 -65
  64. package/dist/lsp-server.js.map +1 -1
  65. package/dist/project-config.d.ts +22 -0
  66. package/dist/project-config.d.ts.map +1 -0
  67. package/dist/project-config.js +307 -0
  68. package/dist/project-config.js.map +1 -0
  69. package/dist/shared.d.ts +1 -0
  70. package/dist/shared.d.ts.map +1 -1
  71. package/dist/shared.js +4 -24
  72. package/dist/shared.js.map +1 -1
  73. package/dist/symbol-utils.d.ts +6 -6
  74. package/dist/symbol-utils.d.ts.map +1 -1
  75. package/dist/symbol-utils.js +24 -25
  76. package/dist/symbol-utils.js.map +1 -1
  77. package/dist/type-hint-inlay.d.ts +4 -0
  78. package/dist/type-hint-inlay.d.ts.map +1 -0
  79. package/dist/type-hint-inlay.js +27 -0
  80. package/dist/type-hint-inlay.js.map +1 -0
  81. package/dist/utils.d.ts +65 -0
  82. package/dist/utils.d.ts.map +1 -0
  83. package/dist/utils.js +97 -0
  84. package/dist/utils.js.map +1 -0
  85. package/package.json +20 -9
  86. package/.oxfmtrc.json +0 -16
  87. package/dist/hover-docs.yaml +0 -600
  88. package/scripts/copy-hover-yaml.mjs +0 -14
  89. package/src/completion.ts +0 -223
  90. package/src/definition.ts +0 -50
  91. package/src/diagnostic.ts +0 -48
  92. package/src/document-symbol.ts +0 -27
  93. package/src/hover-docs.ts +0 -223
  94. package/src/hover-docs.yaml +0 -600
  95. package/src/hover.ts +0 -122
  96. package/src/index.ts +0 -8
  97. package/src/lsp-server.ts +0 -350
  98. package/src/references.ts +0 -107
  99. package/src/server.ts +0 -4
  100. package/src/shared.ts +0 -182
  101. package/src/symbol-utils.ts +0 -126
  102. package/src/validation.ts +0 -85
  103. package/test/hover-docs.test.ts +0 -18
  104. package/test/lsp.test.ts +0 -304
  105. package/test/perf-baseline.test.ts +0 -96
  106. package/test/validation.test.ts +0 -212
  107. package/tsconfig.json +0 -8
@@ -0,0 +1,305 @@
1
+ entries:
2
+ # ── Babel protocol ───────────────────────────────────────────────
3
+ - keyword: babel
4
+ description: Babel routing protocol
5
+ detail: A loop-avoiding distance-vector routing protocol that is robust and efficient for both wired and wireless networks.
6
+ diff: same
7
+ version: v2+
8
+ anchor: proto-babel
9
+ path: protocol
10
+ related:
11
+ - interface
12
+ - ipv4
13
+ - ipv6
14
+ - randomize router id
15
+ - keyword: randomize router id
16
+ description: Babel random router ID
17
+ detail: Randomize the upper 32 bits of the Babel router ID on each startup for privacy.
18
+ diff: same
19
+ version: v2+
20
+ anchor: proto-babel
21
+ path: protocol.babel
22
+ related:
23
+ - babel
24
+ - router id
25
+ parameters:
26
+ - name: switch
27
+ description: Enable router ID randomization (default no).
28
+ - keyword: rxcost
29
+ description: Babel interface receive cost
30
+ detail: Set the nominal RX cost for this Babel interface, used in metric computation.
31
+ diff: same
32
+ version: v2+
33
+ anchor: proto-babel
34
+ path: protocol.babel.interface
35
+ related:
36
+ - babel
37
+ - interface
38
+ - type
39
+ parameters:
40
+ - name: number
41
+ description: Interface RX cost value.
42
+ - keyword: hello interval
43
+ description: Babel hello interval
44
+ detail: Set the interval between Babel Hello messages on this interface.
45
+ diff: same
46
+ version: v2+
47
+ anchor: proto-babel
48
+ path: protocol.babel.interface
49
+ related:
50
+ - babel
51
+ - update interval
52
+ parameters:
53
+ - name: seconds
54
+ description: Hello interval in seconds.
55
+ - keyword: update interval
56
+ description: Babel update interval
57
+ detail: Set the interval between full routing table updates on this Babel interface.
58
+ diff: same
59
+ version: v2+
60
+ anchor: proto-babel
61
+ path: protocol.babel.interface
62
+ related:
63
+ - babel
64
+ - hello interval
65
+ parameters:
66
+ - name: seconds
67
+ description: Update interval in seconds.
68
+ - keyword: rtt cost
69
+ description: Babel RTT-based cost
70
+ detail: Add extra routing cost based on measured round-trip time to Babel neighbors.
71
+ diff: same
72
+ version: v2+
73
+ anchor: proto-babel
74
+ path: protocol.babel.interface
75
+ related:
76
+ - babel
77
+ - rtt min
78
+ - rtt max
79
+ parameters:
80
+ - name: number
81
+ description: Maximum additional cost applied at rtt_max.
82
+ - keyword: rtt min
83
+ description: Babel minimum RTT threshold
84
+ detail: RTT below this threshold adds no extra cost to routes via this Babel interface.
85
+ diff: same
86
+ version: v2+
87
+ anchor: proto-babel
88
+ path: protocol.babel.interface
89
+ related:
90
+ - rtt cost
91
+ - rtt max
92
+ parameters:
93
+ - name: milliseconds
94
+ description: Minimum RTT threshold.
95
+ - keyword: rtt max
96
+ description: Babel maximum RTT threshold
97
+ detail: RTT at or above this threshold applies the full rtt_cost penalty.
98
+ diff: same
99
+ version: v2+
100
+ anchor: proto-babel
101
+ path: protocol.babel.interface
102
+ related:
103
+ - rtt cost
104
+ - rtt min
105
+ parameters:
106
+ - name: milliseconds
107
+ description: Maximum RTT threshold.
108
+ # ── RIP protocol ─────────────────────────────────────────────────
109
+ - keyword: rip
110
+ description: RIP protocol
111
+ detail: Routing Information Protocol - a distance-vector interior gateway protocol.
112
+ diff: same
113
+ version: v2+
114
+ anchor: proto-rip
115
+ path: protocol
116
+ related:
117
+ - interface
118
+ - import
119
+ - export
120
+ - infinity
121
+ - ecmp
122
+ - keyword: infinity
123
+ description: RIP infinity metric
124
+ detail: Set the infinity (unreachable) metric value for RIP. Routes with this metric are considered dead.
125
+ diff: same
126
+ version: v2+
127
+ anchor: proto-rip
128
+ path: protocol.rip
129
+ related:
130
+ - rip
131
+ parameters:
132
+ - name: number
133
+ description: Infinity metric value (default 16).
134
+ - keyword: update time
135
+ description: RIP periodic update interval
136
+ detail: Set the interval between full routing table broadcasts to RIP neighbors.
137
+ diff: same
138
+ version: v2+
139
+ anchor: proto-rip
140
+ path: protocol.rip.interface
141
+ related:
142
+ - rip
143
+ - timeout time
144
+ - garbage time
145
+ parameters:
146
+ - name: seconds
147
+ description: Update interval in seconds (default 30).
148
+ - keyword: timeout time
149
+ description: RIP route timeout
150
+ detail: Set the time after which a route is considered expired if no updates are received.
151
+ diff: same
152
+ version: v2+
153
+ anchor: proto-rip
154
+ path: protocol.rip.interface
155
+ related:
156
+ - rip
157
+ - update time
158
+ - garbage time
159
+ parameters:
160
+ - name: seconds
161
+ description: Timeout interval in seconds (default 180).
162
+ - keyword: garbage time
163
+ description: RIP garbage collection timer
164
+ detail: Time to keep an expired route as unreachable before removing it completely.
165
+ diff: same
166
+ version: v2+
167
+ anchor: proto-rip
168
+ path: protocol.rip.interface
169
+ related:
170
+ - rip
171
+ - update time
172
+ - timeout time
173
+ parameters:
174
+ - name: seconds
175
+ description: Garbage collection interval in seconds (default 120).
176
+ - keyword: split horizon
177
+ description: RIP split horizon
178
+ detail: Enable split horizon to prevent routing loops by not advertising routes back to their source.
179
+ diff: same
180
+ version: v2+
181
+ anchor: proto-rip
182
+ path: protocol.rip.interface
183
+ related:
184
+ - rip
185
+ - poison reverse
186
+ parameters:
187
+ - name: switch
188
+ description: Enable split horizon (default yes).
189
+ - keyword: poison reverse
190
+ description: RIP poison reverse
191
+ detail: Advertise routes learned from a neighbor back with infinity metric to speed up convergence.
192
+ diff: same
193
+ version: v2+
194
+ anchor: proto-rip
195
+ path: protocol.rip.interface
196
+ related:
197
+ - rip
198
+ - split horizon
199
+ parameters:
200
+ - name: switch
201
+ description: Enable poison reverse (default yes).
202
+ - keyword: version
203
+ description: RIP protocol version
204
+ detail: Set the RIP protocol version used on this interface (RIPv1 or RIPv2).
205
+ diff: same
206
+ version: v2+
207
+ anchor: proto-rip
208
+ path: protocol.rip.interface
209
+ related:
210
+ - rip
211
+ parameters:
212
+ - name: number
213
+ description: "RIP version: 1 or 2."
214
+ # ── BFD protocol ─────────────────────────────────────────────────
215
+ - keyword: bfd
216
+ description: Bidirectional Forwarding Detection
217
+ detail: Fast failure detection protocol that can be used by other protocols like BGP and OSPF.
218
+ diff: same
219
+ version: v2+
220
+ anchor: proto-bfd
221
+ path: protocol
222
+ related:
223
+ - ospf
224
+ - bgp
225
+ - interval
226
+ - multiplier
227
+ - keyword: interval
228
+ description: BFD detection interval
229
+ detail: Set both the minimum transmit and receive intervals for BFD sessions simultaneously.
230
+ diff: same
231
+ version: v2+
232
+ anchor: proto-bfd
233
+ path:
234
+ - protocol.bfd.interface
235
+ - protocol.bfd.multihop
236
+ related:
237
+ - bfd
238
+ - min rx interval
239
+ - min tx interval
240
+ - multiplier
241
+ parameters:
242
+ - name: milliseconds
243
+ description: Combined min TX and RX interval.
244
+ - keyword: min rx interval
245
+ description: BFD minimum receive interval
246
+ detail: Set the minimum interval between received BFD control packets.
247
+ diff: same
248
+ version: v2+
249
+ anchor: proto-bfd
250
+ path:
251
+ - protocol.bfd.interface
252
+ - protocol.bfd.multihop
253
+ related:
254
+ - bfd
255
+ - min tx interval
256
+ - interval
257
+ parameters:
258
+ - name: milliseconds
259
+ description: Minimum receive interval.
260
+ - keyword: min tx interval
261
+ description: BFD minimum transmit interval
262
+ detail: Set the desired minimum interval between transmitted BFD control packets.
263
+ diff: same
264
+ version: v2+
265
+ anchor: proto-bfd
266
+ path:
267
+ - protocol.bfd.interface
268
+ - protocol.bfd.multihop
269
+ related:
270
+ - bfd
271
+ - min rx interval
272
+ - interval
273
+ parameters:
274
+ - name: milliseconds
275
+ description: Minimum transmit interval.
276
+ - keyword: idle tx interval
277
+ description: BFD idle transmit interval
278
+ detail: Transmit interval used when the BFD session is not yet established.
279
+ diff: same
280
+ version: v2+
281
+ anchor: proto-bfd
282
+ path:
283
+ - protocol.bfd.interface
284
+ - protocol.bfd.multihop
285
+ related:
286
+ - bfd
287
+ - min tx interval
288
+ parameters:
289
+ - name: milliseconds
290
+ description: Idle transmit interval.
291
+ - keyword: multiplier
292
+ description: BFD detection multiplier
293
+ detail: Number of missed BFD packets before declaring the session down.
294
+ diff: same
295
+ version: v2+
296
+ anchor: proto-bfd
297
+ path:
298
+ - protocol.bfd.interface
299
+ - protocol.bfd.multihop
300
+ related:
301
+ - bfd
302
+ - interval
303
+ parameters:
304
+ - name: number
305
+ description: Failure detection multiplier (default 5).
@@ -0,0 +1,220 @@
1
+ entries:
2
+ # ── Device protocol ───────────────────────────────────────────────
3
+ - keyword: device
4
+ description: Device scan protocol
5
+ detail:
6
+ Scan network interfaces for link state changes and generate routes for directly connected
7
+ networks.
8
+ diff: same
9
+ version: v2+
10
+ anchor: proto-device
11
+ path: protocol
12
+ related:
13
+ - direct
14
+ - scan time
15
+ - keyword: scan time
16
+ description: Device interface scan interval
17
+ detail: Set how often BIRD scans host interfaces for changes. Default is operating system event-driven.
18
+ diff: same
19
+ version: v2+
20
+ anchor: proto-device
21
+ path: protocol.device
22
+ related:
23
+ - device
24
+ parameters:
25
+ - name: seconds
26
+ description: Scan interval in seconds.
27
+ # ── Direct protocol ──────────────────────────────────────────────
28
+ - keyword: direct
29
+ description: Direct routes protocol
30
+ detail: Generate routes for directly connected networks based on interface addresses.
31
+ diff: same
32
+ version: v2+
33
+ anchor: proto-direct
34
+ path: protocol
35
+ related:
36
+ - device
37
+ - interface
38
+ - check link
39
+ parameters:
40
+ - name: interface-pattern
41
+ description: Interface name/pattern selection.
42
+ - keyword: check link
43
+ description: Hardware link state detection
44
+ detail: Use hardware link state to immediately detect interface up/down events.
45
+ diff: same
46
+ version: v2+
47
+ anchor: proto-direct
48
+ path:
49
+ - protocol.direct
50
+ - protocol.static
51
+ related:
52
+ - direct
53
+ - interface
54
+ parameters:
55
+ - name: switch
56
+ description: Enable or disable link state awareness.
57
+ # ── Kernel protocol ──────────────────────────────────────────────
58
+ - keyword: kernel
59
+ description: Kernel synchronization protocol
60
+ detail: Synchronize routes between BIRD and the operating system kernel routing table.
61
+ diff: same
62
+ version: v2+
63
+ anchor: proto-kernel
64
+ path: protocol
65
+ related:
66
+ - table
67
+ - export
68
+ - import
69
+ - persist
70
+ - learn
71
+ - scan time
72
+ - keyword: persist
73
+ description: Persist kernel routes on shutdown
74
+ detail: Keep routes installed by BIRD in the kernel routing table when BIRD exits.
75
+ diff: same
76
+ version: v2+
77
+ anchor: proto-kernel
78
+ path: protocol.kernel
79
+ related:
80
+ - kernel
81
+ - graceful restart
82
+ parameters:
83
+ - name: switch
84
+ description: Enable route persistence (default no).
85
+ - keyword: learn
86
+ description: Learn non-BIRD kernel routes
87
+ detail: Import routes added to the kernel routing table by other routing software or manual configuration.
88
+ diff: same
89
+ version: v2+
90
+ anchor: proto-kernel
91
+ path: protocol.kernel
92
+ related:
93
+ - kernel
94
+ - scan time
95
+ parameters:
96
+ - name: switch
97
+ description: Enable learning of alien routes (default no).
98
+ - keyword: kernel table
99
+ description: Select kernel routing table
100
+ detail: Choose which kernel routing table to synchronize with. Linux supports multiple tables (0-4 billion).
101
+ diff: same
102
+ version: v2+
103
+ anchor: proto-kernel
104
+ path: protocol.kernel
105
+ related:
106
+ - kernel
107
+ parameters:
108
+ - name: number
109
+ description: Kernel routing table number.
110
+ - keyword: metric
111
+ description: Kernel route metric/priority
112
+ detail: Set the routing metric (priority on Linux) for routes installed into the kernel.
113
+ diff: same
114
+ version: v2+
115
+ anchor: proto-kernel
116
+ path: protocol.kernel
117
+ related:
118
+ - kernel
119
+ parameters:
120
+ - name: number
121
+ description: Route metric value (default 32).
122
+ - keyword: merge paths
123
+ description: Merge equal-cost paths in kernel
124
+ detail: Merge multiple equal-cost routes into a single kernel multipath (ECMP) route.
125
+ diff: same
126
+ version: v2+
127
+ anchor: proto-kernel
128
+ path: protocol.kernel
129
+ related:
130
+ - kernel
131
+ - ecmp
132
+ parameters:
133
+ - name: switch
134
+ description: Enable ECMP merging (default no).
135
+ # ── Static protocol ──────────────────────────────────────────────
136
+ - keyword: static
137
+ description: Static routes protocol
138
+ detail: Define static routes that are not learned from any routing protocol.
139
+ diff: same
140
+ version: v2+
141
+ anchor: proto-static
142
+ path: protocol
143
+ related:
144
+ - route
145
+ - preference
146
+ - igp table
147
+ - keyword: igp table
148
+ description: IGP route lookup table
149
+ detail: Specify the routing table used for recursive next-hop resolution in static routes.
150
+ diff: same
151
+ version: v2+
152
+ anchor: proto-static
153
+ path:
154
+ - protocol.static
155
+ - protocol.bgp.channel
156
+ related:
157
+ - route
158
+ - recursive
159
+ - gateway
160
+ parameters:
161
+ - name: name
162
+ description: Routing table name for recursive lookups.
163
+ - keyword: recursive
164
+ description: Recursive static route
165
+ detail: Define a static route with a recursive next hop that is resolved through another routing table.
166
+ diff: same
167
+ version: v2+
168
+ anchor: proto-static-route
169
+ path: protocol.static.route
170
+ related:
171
+ - route
172
+ - igp table
173
+ - next hop
174
+ parameters:
175
+ - name: address
176
+ description: Recursive next-hop IP address.
177
+ required: true
178
+ - keyword: prohibit
179
+ description: Static route prohibit action
180
+ detail: Send ICMP administratively prohibited for traffic matching this static route.
181
+ diff: same
182
+ version: v2+
183
+ anchor: proto-static-route
184
+ path: protocol.static.route
185
+ related:
186
+ - route
187
+ - blackhole
188
+ - unreachable
189
+ # ── Pipe protocol ────────────────────────────────────────────────
190
+ - keyword: pipe
191
+ description: Protocol pipe
192
+ detail: Connect two routing tables, forwarding routes between them with optional filtering.
193
+ diff: same
194
+ version: v2+
195
+ anchor: proto-pipe
196
+ path: protocol
197
+ related:
198
+ - table
199
+ - peer table
200
+ - export
201
+ - import
202
+ parameters:
203
+ - name: table-name
204
+ description: Primary table to bridge.
205
+ - name: peer-table-name
206
+ description: Peer table to bridge with.
207
+ - keyword: peer table
208
+ description: Pipe peer routing table
209
+ detail: Specify the secondary routing table that the pipe protocol connects to.
210
+ diff: same
211
+ version: v2+
212
+ anchor: proto-pipe
213
+ path: protocol.pipe
214
+ related:
215
+ - pipe
216
+ - table
217
+ parameters:
218
+ - name: name
219
+ description: Peer routing table name.
220
+ required: true
@@ -0,0 +1,40 @@
1
+ entries:
2
+ - keyword: mpls domain
3
+ description: Define an MPLS domain
4
+ detail: Create a named MPLS domain for label distribution and MPLS forwarding.
5
+ diff: same
6
+ version: v2+
7
+ anchor: mpls-opts
8
+ path: protocol
9
+ related:
10
+ - label policy
11
+ - label range
12
+ parameters:
13
+ - name: domain-name
14
+ description: MPLS domain identifier.
15
+ - keyword: label policy
16
+ description: MPLS label policy
17
+ detail: Configure how MPLS labels are assigned and distributed.
18
+ diff: same
19
+ version: v2+
20
+ anchor: mpls-label-policy
21
+ path: protocol
22
+ related:
23
+ - mpls domain
24
+ - label range
25
+ parameters:
26
+ - name: mode
27
+ description: Label allocation behavior.
28
+ - keyword: label range
29
+ description: MPLS label range
30
+ detail: Define the range of MPLS labels to use.
31
+ diff: same
32
+ version: v2+
33
+ anchor: mpls-label-range
34
+ path: protocol
35
+ related:
36
+ - mpls domain
37
+ - label policy
38
+ parameters:
39
+ - name: range-name
40
+ description: Named MPLS label range.