feat: generate TypeScript view types via panproto Protolens The DB projection lens is now expressed as a chain of elementary Protolens transforms (drop_sort, add_sort, rename_sort), composed into a ProtolensChain, and applied to the Lexicon source schema via chain.instantiate() to produce the target schema. TypeScript interfaces are emitted by walking the target schema's vertices and kinds — no hand-written type mappings. All field types come from panproto's vertex kind system. - Upgrade panproto to v0.22.1 (fixes add_sort vertex kind propagation) - Add panproto-lens dependency to cospan-codegen - New emit_typescript_views.rs uses Protolens for schema transformation - Generated views.ts replaces hand-written types in API client files - Fix all undefined .length crashes (labels, artifacts, etc.) - Fix field name mismatches (creatorDid→did, ref→refName, etc.) - Remove dead fields (mergePreview, algebraicChecks on wrong types)

Author: Aaron Steven White
Commit b4f15f0cef93e4d188e7cf50b359dd3c8df4395e
Parent: d7c80c19fb
Structural diff unavailable

These commits were pushed via plain git push, so no pre-parsed schemas are available. Install git-remote-cospan and re-push via panproto:// to see scope-level changes, breaking change detection, and semantic diffs.

brew install panproto/tap/git-remote-cospan
23 files changed +1141 -370
@@ -255,16 +255,16 @@ dependencies = [
255255 
256256 [[package]]
257257 name = "blake3"
258-version = "1.8.3"
258+version = "1.8.4"
259259 source = "registry+https://github.com/rust-lang/crates.io-index"
260-checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d"
260+checksum = "4d2d5991425dfd0785aed03aedcf0b321d61975c9b5b3689c774a2610ae0b51e"
261261 dependencies = [
262262  "arrayref",
263263  "arrayvec",
264264  "cc",
265265  "cfg-if",
266266  "constant_time_eq",
267- "cpufeatures",
267+ "cpufeatures 0.3.0",
268268 ]
269269 
270270 [[package]]
@@ -306,9 +306,9 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
306306 
307307 [[package]]
308308 name = "cc"
309-version = "1.2.57"
309+version = "1.2.58"
310310 source = "registry+https://github.com/rust-lang/crates.io-index"
311-checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423"
311+checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1"
312312 dependencies = [
313313  "find-msvc-tools",
314314  "jobserver",
@@ -489,6 +489,7 @@ dependencies = [
489489  "panproto-expr",
490490  "panproto-gat",
491491  "panproto-inst",
492+ "panproto-lens",
492493  "panproto-mig",
493494  "panproto-protocols",
494495  "panproto-schema",
@@ -543,6 +544,15 @@ dependencies = [
543544 ]
544545 
545546 [[package]]
547+name = "cpufeatures"
548+version = "0.3.0"
549+source = "registry+https://github.com/rust-lang/crates.io-index"
550+checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
551+dependencies = [
552+ "libc",
553+]
554+
555+[[package]]
546556 name = "crc"
547557 version = "3.4.0"
548558 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -613,9 +623,9 @@ dependencies = [
613623 
614624 [[package]]
615625 name = "crypto-common"
616-version = "0.1.7"
626+version = "0.1.6"
617627 source = "registry+https://github.com/rust-lang/crates.io-index"
618-checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
628+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
619629 dependencies = [
620630  "generic-array",
621631  "typenum",
@@ -985,9 +995,9 @@ dependencies = [
985995 
986996 [[package]]
987997 name = "generic-array"
988-version = "0.14.7"
998+version = "0.14.9"
989999 source = "registry+https://github.com/rust-lang/crates.io-index"
990-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
1000+checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
9911001 dependencies = [
9921002  "typenum",
9931003  "version_check",
@@ -1239,9 +1249,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
12391249 
12401250 [[package]]
12411251 name = "hyper"
1242-version = "1.8.1"
1252+version = "1.9.0"
12431253 source = "registry+https://github.com/rust-lang/crates.io-index"
1244-checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
1254+checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
12451255 dependencies = [
12461256  "atomic-waker",
12471257  "bytes",
@@ -1254,7 +1264,6 @@ dependencies = [
12541264  "httpdate",
12551265  "itoa",
12561266  "pin-project-lite",
1257- "pin-utils",
12581267  "smallvec 1.15.1",
12591268  "tokio",
12601269  "want",
@@ -1310,7 +1319,7 @@ dependencies = [
13101319  "libc",
13111320  "percent-encoding",
13121321  "pin-project-lite",
1313- "socket2 0.5.10",
1322+ "socket2 0.6.3",
13141323  "system-configuration",
13151324  "tokio",
13161325  "tower-service",
@@ -1470,9 +1479,9 @@ checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
14701479 
14711480 [[package]]
14721481 name = "iri-string"
1473-version = "0.7.11"
1482+version = "0.7.12"
14741483 source = "registry+https://github.com/rust-lang/crates.io-index"
1475-checksum = "d8e7418f59cc01c88316161279a7f665217ae316b388e58a0d10e29f54f1e5eb"
1484+checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20"
14761485 dependencies = [
14771486  "memchr",
14781487  "serde",
@@ -1511,10 +1520,12 @@ dependencies = [
15111520 
15121521 [[package]]
15131522 name = "js-sys"
1514-version = "0.3.91"
1523+version = "0.3.93"
15151524 source = "registry+https://github.com/rust-lang/crates.io-index"
1516-checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
1525+checksum = "797146bb2677299a1eb6b7b50a890f4c361b29ef967addf5b2fa45dae1bb6d7d"
15171526 dependencies = [
1527+ "cfg-if",
1528+ "futures-util",
15181529  "once_cell",
15191530  "wasm-bindgen",
15201531 ]
@@ -1767,9 +1778,9 @@ dependencies = [
17671778 
17681779 [[package]]
17691780 name = "mio"
1770-version = "1.1.1"
1781+version = "1.2.0"
17711782 source = "registry+https://github.com/rust-lang/crates.io-index"
1772-checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
1783+checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
17731784 dependencies = [
17741785  "libc",
17751786  "wasi",
@@ -2001,8 +2012,8 @@ dependencies = [
20012012 
20022013 [[package]]
20032014 name = "panproto-check"
2004-version = "0.22.0"
2005-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2015+version = "0.22.1"
2016+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20062017 dependencies = [
20072018  "panproto-gat",
20082019  "panproto-lens",
@@ -2016,8 +2027,8 @@ dependencies = [
20162027 
20172028 [[package]]
20182029 name = "panproto-core"
2019-version = "0.22.0"
2020-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2030+version = "0.22.1"
2031+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20212032 dependencies = [
20222033  "panproto-check",
20232034  "panproto-gat",
@@ -2032,8 +2043,8 @@ dependencies = [
20322043 
20332044 [[package]]
20342045 name = "panproto-expr"
2035-version = "0.22.0"
2036-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2046+version = "0.22.1"
2047+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20372048 dependencies = [
20382049  "rustc-hash",
20392050  "serde",
@@ -2042,8 +2053,8 @@ dependencies = [
20422053 
20432054 [[package]]
20442055 name = "panproto-expr-parser"
2045-version = "0.22.0"
2046-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2056+version = "0.22.1"
2057+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20472058 dependencies = [
20482059  "chumsky",
20492060  "logos",
@@ -2052,8 +2063,8 @@ dependencies = [
20522063 
20532064 [[package]]
20542065 name = "panproto-gat"
2055-version = "0.22.0"
2056-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2066+version = "0.22.1"
2067+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20572068 dependencies = [
20582069  "panproto-expr",
20592070  "rustc-hash",
@@ -2063,8 +2074,8 @@ dependencies = [
20632074 
20642075 [[package]]
20652076 name = "panproto-git"
2066-version = "0.22.0"
2067-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2077+version = "0.22.1"
2078+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20682079 dependencies = [
20692080  "git2",
20702081  "miette",
@@ -2081,8 +2092,8 @@ dependencies = [
20812092 
20822093 [[package]]
20832094 name = "panproto-grammars"
2084-version = "0.22.0"
2085-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2095+version = "0.22.1"
2096+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20862097 dependencies = [
20872098  "cc",
20882099  "serde",
@@ -2093,8 +2104,8 @@ dependencies = [
20932104 
20942105 [[package]]
20952106 name = "panproto-inst"
2096-version = "0.22.0"
2097-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2107+version = "0.22.1"
2108+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
20982109 dependencies = [
20992110  "bumpalo",
21002111  "panproto-expr",
@@ -2109,8 +2120,8 @@ dependencies = [
21092120 
21102121 [[package]]
21112122 name = "panproto-io"
2112-version = "0.22.0"
2113-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2123+version = "0.22.1"
2124+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
21142125 dependencies = [
21152126  "bumpalo",
21162127  "memchr",
@@ -2132,8 +2143,8 @@ dependencies = [
21322143 
21332144 [[package]]
21342145 name = "panproto-lens"
2135-version = "0.22.0"
2136-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2146+version = "0.22.1"
2147+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
21372148 dependencies = [
21382149  "panproto-expr",
21392150  "panproto-gat",
@@ -2149,8 +2160,8 @@ dependencies = [
21492160 
21502161 [[package]]
21512162 name = "panproto-mig"
2152-version = "0.22.0"
2153-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2163+version = "0.22.1"
2164+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
21542165 dependencies = [
21552166  "panproto-expr",
21562167  "panproto-gat",
@@ -2163,8 +2174,8 @@ dependencies = [
21632174 
21642175 [[package]]
21652176 name = "panproto-parse"
2166-version = "0.22.0"
2167-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2177+version = "0.22.1"
2178+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
21682179 dependencies = [
21692180  "memchr",
21702181  "miette",
@@ -2182,8 +2193,8 @@ dependencies = [
21822193 
21832194 [[package]]
21842195 name = "panproto-project"
2185-version = "0.22.0"
2186-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2196+version = "0.22.1"
2197+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
21872198 dependencies = [
21882199  "blake3",
21892200  "globset",
@@ -2202,8 +2213,8 @@ dependencies = [
22022213 
22032214 [[package]]
22042215 name = "panproto-protocols"
2205-version = "0.22.0"
2206-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2216+version = "0.22.1"
2217+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
22072218 dependencies = [
22082219  "blake3",
22092220  "panproto-gat",
@@ -2217,8 +2228,8 @@ dependencies = [
22172228 
22182229 [[package]]
22192230 name = "panproto-schema"
2220-version = "0.22.0"
2221-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2231+version = "0.22.1"
2232+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
22222233 dependencies = [
22232234  "panproto-expr",
22242235  "panproto-gat",
@@ -2230,8 +2241,8 @@ dependencies = [
22302241 
22312242 [[package]]
22322243 name = "panproto-vcs"
2233-version = "0.22.0"
2234-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2244+version = "0.22.1"
2245+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
22352246 dependencies = [
22362247  "blake3",
22372248  "panproto-check",
@@ -2251,8 +2262,8 @@ dependencies = [
22512262 
22522263 [[package]]
22532264 name = "panproto-xrpc"
2254-version = "0.22.0"
2255-source = "git+https://github.com/panproto/panproto.git?tag=v0.22.0#9614c9e266727261af4b5a36896241469a30b15a"
2265+version = "0.22.1"
2266+source = "git+https://github.com/panproto/panproto.git?tag=v0.22.1#ee8b6e75fbb71b8b66a1932a5f031d3ff092c510"
22562267 dependencies = [
22572268  "hex",
22582269  "miette",
@@ -2327,12 +2338,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
23272338 checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
23282339 
23292340 [[package]]
2330-name = "pin-utils"
2331-version = "0.1.0"
2332-source = "registry+https://github.com/rust-lang/crates.io-index"
2333-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
2334-
2335-[[package]]
23362341 name = "pkcs1"
23372342 version = "0.7.5"
23382343 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2500,7 +2505,7 @@ dependencies = [
25002505  "quinn-udp",
25012506  "rustc-hash",
25022507  "rustls",
2503- "socket2 0.5.10",
2508+ "socket2 0.6.3",
25042509  "thiserror",
25052510  "tokio",
25062511  "tracing",
@@ -2537,7 +2542,7 @@ dependencies = [
25372542  "cfg_aliases",
25382543  "libc",
25392544  "once_cell",
2540- "socket2 0.5.10",
2545+ "socket2 0.6.3",
25412546  "tracing",
25422547  "windows-sys 0.60.2",
25432548 ]
@@ -2856,9 +2861,9 @@ checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d"
28562861 
28572862 [[package]]
28582863 name = "rustc-hash"
2859-version = "2.1.1"
2864+version = "2.1.2"
28602865 source = "registry+https://github.com/rust-lang/crates.io-index"
2861-checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
2866+checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
28622867 
28632868 [[package]]
28642869 name = "rustix"
@@ -3072,7 +3077,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
30723077 checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
30733078 dependencies = [
30743079  "cfg-if",
3075- "cpufeatures",
3080+ "cpufeatures 0.2.17",
30763081  "digest",
30773082 ]
30783083 
@@ -3089,7 +3094,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
30893094 checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
30903095 dependencies = [
30913096  "cfg-if",
3092- "cpufeatures",
3097+ "cpufeatures 0.2.17",
30933098  "digest",
30943099 ]
30953100 
@@ -3130,9 +3135,9 @@ dependencies = [
31303135 
31313136 [[package]]
31323137 name = "simd-adler32"
3133-version = "0.3.8"
3138+version = "0.3.9"
31343139 source = "registry+https://github.com/rust-lang/crates.io-index"
3135-checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
3140+checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
31363141 
31373142 [[package]]
31383143 name = "simd-json"
@@ -4081,9 +4086,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
40814086 
40824087 [[package]]
40834088 name = "uuid"
4084-version = "1.22.0"
4089+version = "1.23.0"
40854090 source = "registry+https://github.com/rust-lang/crates.io-index"
4086-checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37"
4091+checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9"
40874092 dependencies = [
40884093  "getrandom 0.4.2",
40894094  "js-sys",
@@ -4161,9 +4166,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
41614166 
41624167 [[package]]
41634168 name = "wasm-bindgen"
4164-version = "0.2.114"
4169+version = "0.2.116"
41654170 source = "registry+https://github.com/rust-lang/crates.io-index"
4166-checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
4171+checksum = "7dc0882f7b5bb01ae8c5215a1230832694481c1a4be062fd410e12ea3da5b631"
41674172 dependencies = [
41684173  "cfg-if",
41694174  "once_cell",
@@ -4174,23 +4179,19 @@ dependencies = [
41744179 
41754180 [[package]]
41764181 name = "wasm-bindgen-futures"
4177-version = "0.4.64"
4182+version = "0.4.66"
41784183 source = "registry+https://github.com/rust-lang/crates.io-index"
4179-checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8"
4184+checksum = "19280959e2844181895ef62f065c63e0ca07ece4771b53d89bfdb967d97cbf05"
41804185 dependencies = [
4181- "cfg-if",
4182- "futures-util",
41834186  "js-sys",
4184- "once_cell",
41854187  "wasm-bindgen",
4186- "web-sys",
41874188 ]
41884189 
41894190 [[package]]
41904191 name = "wasm-bindgen-macro"
4191-version = "0.2.114"
4192+version = "0.2.116"
41924193 source = "registry+https://github.com/rust-lang/crates.io-index"
4193-checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
4194+checksum = "75973d3066e01d035dbedaad2864c398df42f8dd7b1ea057c35b8407c015b537"
41944195 dependencies = [
41954196  "quote",
41964197  "wasm-bindgen-macro-support",
@@ -4198,9 +4199,9 @@ dependencies = [
41984199 
41994200 [[package]]
42004201 name = "wasm-bindgen-macro-support"
4201-version = "0.2.114"
4202+version = "0.2.116"
42024203 source = "registry+https://github.com/rust-lang/crates.io-index"
4203-checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
4204+checksum = "91af5e4be765819e0bcfee7322c14374dc821e35e72fa663a830bbc7dc199eac"
42044205 dependencies = [
42054206  "bumpalo",
42064207  "proc-macro2",
@@ -4211,9 +4212,9 @@ dependencies = [
42114212 
42124213 [[package]]
42134214 name = "wasm-bindgen-shared"
4214-version = "0.2.114"
4215+version = "0.2.116"
42154216 source = "registry+https://github.com/rust-lang/crates.io-index"
4216-checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
4217+checksum = "c9bf0406a78f02f336bf1e451799cca198e8acde4ffa278f0fb20487b150a633"
42174218 dependencies = [
42184219  "unicode-ident",
42194220 ]
@@ -4254,9 +4255,9 @@ dependencies = [
42544255 
42554256 [[package]]
42564257 name = "web-sys"
4257-version = "0.3.91"
4258+version = "0.3.93"
42584259 source = "registry+https://github.com/rust-lang/crates.io-index"
4259-checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"
4260+checksum = "749466a37ee189057f54748b200186b59a03417a117267baf3fd89cecc9fb837"
42604261 dependencies = [
42614262  "js-sys",
42624263  "wasm-bindgen",
@@ -4729,18 +4730,18 @@ dependencies = [
47294730 
47304731 [[package]]
47314732 name = "zerocopy"
4732-version = "0.8.47"
4733+version = "0.8.48"
47334734 source = "registry+https://github.com/rust-lang/crates.io-index"
4734-checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87"
4735+checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
47354736 dependencies = [
47364737  "zerocopy-derive",
47374738 ]
47384739 
47394740 [[package]]
47404741 name = "zerocopy-derive"
4741-version = "0.8.47"
4742+version = "0.8.48"
47424743 source = "registry+https://github.com/rust-lang/crates.io-index"
4743-checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89"
4744+checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
47444745 dependencies = [
47454746  "proc-macro2",
47464747  "quote",
@@ -16,22 +16,22 @@ repository = "https://github.com/cospan-dev/cospan"
1616 # panproto — all from git because panproto-grammars needs vendored C sources
1717 # (too large for crates.io). All crates must come from the same source to avoid
1818 # type mismatches between git and crates.io versions of panproto-schema etc.
19-panproto-core = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
20-panproto-vcs = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
21-panproto-schema = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
22-panproto-check = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
23-panproto-lens = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
24-panproto-protocols = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
25-panproto-io = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
26-panproto-inst = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
27-panproto-gat = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
28-panproto-mig = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
29-panproto-expr = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
30-panproto-expr-parser = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
31-panproto-xrpc = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
32-panproto-parse = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0", features = ["group-all"] }
33-panproto-git = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
34-panproto-project = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.0" }
19+panproto-core = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
20+panproto-vcs = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
21+panproto-schema = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
22+panproto-check = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
23+panproto-lens = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
24+panproto-protocols = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
25+panproto-io = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
26+panproto-inst = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
27+panproto-gat = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
28+panproto-mig = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
29+panproto-expr = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
30+panproto-expr-parser = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
31+panproto-xrpc = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
32+panproto-parse = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1", features = ["group-all"] }
33+panproto-git = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
34+panproto-project = { git = "https://github.com/panproto/panproto.git", tag = "v0.22.1" }
3535 git2 = "0.20"
3636 
3737 # Web framework
@@ -1,10 +1,10 @@
11 import { xrpcQuery } from './client.js';
2+import type { ActorProfileView } from '$lib/generated/views.js';
23 
3-export interface ActorProfile {
4-	did: string;
4+// The getProfile endpoint returns an enriched view with counts and a resolved handle.
5+// These fields are not on the base ActorProfileView Row.
6+export interface ActorProfile extends ActorProfileView {
57 	handle: string;
6-	displayName: string | null;
7-	description: string | null;
88 	avatarUrl: string | null;
99 	followerCount: number;
1010 	followingCount: number;
@@ -1,50 +1,18 @@
11 import { xrpcQuery } from './client.js';
2+import type { IssueView, IssueCommentView, IssueStateView, IssueListResponse as RawIssueListResponse } from '$lib/generated/views.js';
23 
3-export interface Issue {
4-	rkey: string;
5-	repo: string;
6-	did: string;
7-	title: string;
8-	body: string | null;
9-	state: 'open' | 'closed';
10-	labels: string[];
11-	commentCount: number;
12-	creatorDid: string;
13-	creatorHandle: string | null;
14-	createdAt: string;
15-	updatedAt: string;
16-}
4+export type Issue = IssueView;
5+export type IssueComment = IssueCommentView;
6+export type IssueStateChange = IssueStateView;
177 
188 export interface IssueListResponse {
199 	items: Issue[];
2010 	cursor: string | null;
2111 }
2212 
23-export interface IssueComment {
24-	rkey: string;
25-	issue: string;
26-	body: string;
27-	creatorDid: string;
28-	creatorHandle: string | null;
29-	createdAt: string;
30-}
31-
32-export interface IssueStateChange {
33-	rkey: string;
34-	issue: string;
35-	state: 'open' | 'closed';
36-	reason: string | null;
37-	actorDid: string;
38-	actorHandle: string | null;
39-	createdAt: string;
40-}
41-
42-export type TimelineEvent =
43-	| { type: 'comment'; data: IssueComment }
44-	| { type: 'stateChange'; data: IssueStateChange };
45-
13+// Timeline is a composite type — not directly generated from a single Row
4614 export interface IssueTimelineResponse {
47-	events: TimelineEvent[];
15+	timeline: Record<string, unknown>[];
4816 	cursor: string | null;
4917 }
5018 
@@ -55,7 +23,7 @@ export async function listIssues(params: {
5523 	limit?: number;
5624 	cursor?: string;
5725 }): Promise<IssueListResponse> {
58-	const raw = await xrpcQuery<{ issues: Issue[]; cursor: string | null }>(
26+	const raw = await xrpcQuery<RawIssueListResponse>(
5927 		'dev.cospan.repo.issue.list',
6028 		params
6129 	);
@@ -1,14 +1,16 @@
11 import { xrpcQuery } from './client.js';
2+import type {
3+	OrgView,
4+	OrgMemberView,
5+	OrgListResponse as RawOrgListResponse,
6+	OrgMemberListResponse as RawOrgMemberListResponse,
7+} from '$lib/generated/views.js';
28 
3-export interface OrgSummary {
4-	did: string;
5-	rkey: string;
6-	name: string;
7-	description: string | null;
9+// The list endpoint returns enriched orgs with counts and avatarUrl.
10+export interface OrgSummary extends OrgView {
811 	avatarUrl: string | null;
912 	memberCount: number;
1013 	repoCount: number;
11-	createdAt: string;
1214 }
1315 
1416 export interface OrgListResponse {
@@ -16,11 +18,10 @@ export interface OrgListResponse {
1618 	cursor: string | null;
1719 }
1820 
19-export interface OrgMember {
20-	did: string;
21+// The list endpoint returns enriched members with handle and displayName.
22+export interface OrgMember extends OrgMemberView {
2123 	handle: string | null;
2224 	displayName: string | null;
23-	role: 'admin' | 'member';
2425 	joinedAt: string;
2526 }
2627 
@@ -33,7 +34,7 @@ export async function listOrgs(params?: {
3334 	limit?: number;
3435 	cursor?: string;
3536 }): Promise<OrgListResponse> {
36-	const raw = await xrpcQuery<{ orgs: OrgSummary[]; cursor: string | null }>('dev.cospan.org.list', params);
37+	const raw = await xrpcQuery<RawOrgListResponse & { orgs: OrgSummary[] }>('dev.cospan.org.list', params);
3738 	return { items: raw.orgs ?? [], cursor: raw.cursor ?? null };
3839 }
3940 
@@ -47,6 +48,6 @@ export async function listOrgMembers(params: {
4748 	limit?: number;
4849 	cursor?: string;
4950 }): Promise<OrgMemberListResponse> {
50-	const raw = await xrpcQuery<{ members: OrgMember[]; cursor: string | null }>('dev.cospan.org.member.list', params);
51+	const raw = await xrpcQuery<RawOrgMemberListResponse & { members: OrgMember[] }>('dev.cospan.org.member.list', params);
5152 	return { items: raw.members ?? [], cursor: raw.cursor ?? null };
5253 }
cospan · schematic version control on atproto built on AT Protocol