lsp: foundational types + annotate pb runtime entry + lazy views
Add lua-language-server scaffolding so editors and LLM assistants get
parameter / return types for the public pb runtime. Pure metadata --
no runtime behavior change. 748 tests still pass.
- .luarc.json at repo root: declare LuaJIT runtime, project require
paths (so require('full.hello.hello_pb') resolves), ignored
directories (.rocks, generated dylibs, bench/starwing third-party).
- runtime/pb/_types.lua (@meta): foundational @class declarations
for the descriptor contract (pb.Descriptor, pb.Field, pb.Enum-
Descriptor, pb.OneofDescriptor), the public pb module surface
(pb.Module), lazy view classes (pb.MessageView / pb.ArrayView /
pb.MapView), gRPC transport contract (pb.GrpcTransport plus
Service / Method descriptors), and the json / text / wire
sub-modules. Mirrors docs/codegen.md's descriptor shape.
- runtime/pb/init.lua: @type pb.Module annotation on the returned
table so hover on pb.encode / pb.decode_lazy / pb.parse picks up
the signatures from _types.lua.
- runtime/pb/lazy.lua: @class annotations on the three view locals
so lua-language-server merges them with the pb.MessageView /
pb.ArrayView / pb.MapView declarations in _types.lua.
Next phases: annotate codec/grpc/json (phase 2), emit per-message
@class blocks from the plugin codegen (phase 3).