PageSourceSearch

https://agntn.dev/libraries

html agntn.dev collected 2026-10-05 06:31:56 UTC 171,284 bytes, 98 lines download raw bytes

1<!DOCTYPE html><html  data-color-mode-forced="dark" lang="en" dir="ltr"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Libraries - agntn</title>
1<script type="importmap">{"imports":{"#entry":"/_nuxt/-yWJRB1I.js"}}</script>
1<meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://agntn.dev/_og/s/c_Docs,headline_Libraries,title_Libraries,description_~RXZlcnkgQGFnbnRuIHBhY2thZ2UgaW4gb25lIHRhYmxlLiBTb3J0IGl0IGJ5IGRvbWFpbiBvciBwcm92aWRlcnMgb3Igc3RhdHVzLg,p_Ii9saWJyYXJpZXMi.png"><meta name="twitter:image:src" content="https://agntn.dev/_og/s/c_Docs,headline_Libraries,title_Libraries,description_~RXZlcnkgQGFnbnRuIHBhY2thZ2UgaW4gb25lIHRhYmxlLiBTb3J0IGl0IGJ5IGRvbWFpbiBvciBwcm92aWRlcnMgb3Igc3RhdHVzLg,p_Ii9saWJyYXJpZXMi.png"><meta property="og:image" content="https://agntn.dev/_og/s/c_Docs,headline_Libraries,title_Libraries,description_~RXZlcnkgQGFnbnRuIHBhY2thZ2UgaW4gb25lIHRhYmxlLiBTb3J0IGl0IGJ5IGRvbWFpbiBvciBwcm92aWRlcnMgb3Igc3RhdHVzLg,p_Ii9saWJyYXJpZXMi.png"><meta property="og:image:type" content="image/png"><meta property="og:image:width" content="1200"><meta name="twitter:image:width" content="1200"><meta property="og:image:height" content="600"><meta name="twitter:image:height" content="600"><meta property="og:image:alt" content="agntn: one interface, every provider"><meta name="twitter:image:alt" content="agntn: one interface, every provider"><style id="nuxt-ui-colors">@layer theme {
2  :root, :host {
3  --ui-color-primary-50: var(--color-amber-50, oklch(98.7% 0.022 95.277));
4  --ui-color-primary-100: var(--color-amber-100, oklch(96.2% 0.059 95.617));
5  --ui-color-primary-200: var(--color-amber-200, oklch(92.4% 0.12 95.746));
6  --ui-color-primary-300: var(--color-amber-300, oklch(87.9% 0.169 91.605));
7  --ui-color-primary-400: var(--color-amber-400, oklch(82.8% 0.189 84.429));
8  --ui-color-primary-500: var(--color-amber-500, oklch(76.9% 0.188 70.08));
9  --ui-color-primary-600: var(--color-amber-600, oklch(66.6% 0.179 58.318));
10  --ui-color-primary-700: var(--color-amber-700, oklch(55.5% 0.163 48.998));
11  --ui-color-primary-800: var(--color-amber-800, oklch(47.3% 0.137 46.201));
12  --ui-color-primary-900: var(--color-amber-900, oklch(41.4% 0.112 45.904));
13  --ui-color-primary-950: var(--color-amber-950, oklch(27.9% 0.077 45.635));
14  --ui-color-secondary-50: var(--color-blue-50, oklch(97% 0.014 254.604));
15  --ui-color-secondary-100: var(--color-blue-100, oklch(93.2% 0.032 255.585));
16  --ui-color-secondary-200: var(--color-blue-200, oklch(88.2% 0.059 254.128));
17  --ui-color-secondary-300: var(--color-blue-300, oklch(80.9% 0.105 251.813));
18  --ui-color-secondary-400: var(--color-blue-400, oklch(70.7% 0.165 254.624));
19  --ui-color-secondary-500: var(--color-blue-500, oklch(62.3% 0.214 259.815));
20  --ui-color-secondary-600: var(--color-blue-600, oklch(54.6% 0.245 262.881));
21  --ui-color-secondary-700: var(--color-blue-700, oklch(48.8% 0.243 264.376));
22  --ui-color-secondary-800: var(--color-blue-800, oklch(42.4% 0.199 265.638));
23  --ui-color-secondary-900: var(--color-blue-900, oklch(37.9% 0.146 265.522));
24  --ui-color-secondary-950: var(--color-blue-950, oklch(28.2% 0.091 267.935));
25  --ui-color-success-50: var(--color-green-50, oklch(98.2% 0.018 155.826));
26  --ui-color-success-100: var(--color-green-100, oklch(96.2% 0.044 156.743));
27  --ui-color-success-200: var(--color-green-200, oklch(92.5% 0.084 155.995));
28  --ui-color-success-300: var(--color-green-300, oklch(87.1% 0.15 154.449));
29  --ui-color-success-400: var(--color-green-400, oklch(79.2% 0.209 151.711));
30  --ui-color-success-500: var(--color-green-500, oklch(72.3% 0.219 149.579));
31  --ui-color-success-600: var(--color-green-600, oklch(62.7% 0.194 149.214));
32  --ui-color-success-700: var(--color-green-700, oklch(52.7% 0.154 150.069));
33  --ui-color-success-800: var(--color-green-800, oklch(44.8% 0.119 151.328));
34  --ui-color-success-900: var(--color-green-900, oklch(39.3% 0.095 152.535));
35  --ui-color-success-950: var(--color-green-950, oklch(26.6% 0.065 152.934));
36  --ui-color-info-50: var(--color-blue-50, oklch(97% 0.014 254.604));
37  --ui-color-info-100: var(--color-blue-100, oklch(93.2% 0.032 255.585));
38  --ui-color-info-200: var(--color-blue-200, oklch(88.2% 0.059 254.128));
39  --ui-color-info-300: var(--color-blue-300, oklch(80.9% 0.105 251.813));
40  --ui-color-info-400: var(--color-blue-400, oklch(70.7% 0.165 254.624));
41  --ui-color-info-500: var(--color-blue-500, oklch(62.3% 0.214 259.815));
42  --ui-color-info-600: var(--color-blue-600, oklch(54.6% 0.245 262.881));
43  --ui-color-info-700: var(--color-blue-700, oklch(48.8% 0.243 264.376));
44  --ui-color-info-800: var(--color-blue-800, oklch(42.4% 0.199 265.638));
45  --ui-color-info-900: var(--color-blue-900, oklch(37.9% 0.146 265.522));
46  --ui-color-info-950: var(--color-blue-950, oklch(28.2% 0.091 267.935));
47  --ui-color-warning-50: var(--color-yellow-50, oklch(98.7% 0.026 102.212));
48  --ui-color-warning-100: var(--color-yellow-100, oklch(97.3% 0.071 103.193));
49  --ui-color-warning-200: var(--color-yellow-200, oklch(94.5% 0.129 101.54));
50  --ui-color-warning-300: var(--color-yellow-300, oklch(90.5% 0.182 98.111));
51  --ui-color-warning-400: var(--color-yellow-400, oklch(85.2% 0.199 91.936));
52  --ui-color-warning-500: var(--color-yellow-500, oklch(79.5% 0.184 86.047));
53  --ui-color-warning-600: var(--color-yellow-600, oklch(68.1% 0.162 75.834));
54  --ui-color-warning-700: var(--color-yellow-700, oklch(55.4% 0.135 66.442));
55  --ui-color-warning-800: var(--color-yellow-800, oklch(47.6% 0.114 61.907));
56  --ui-color-warning-900: var(--color-yellow-900, oklch(42.1% 0.095 57.708));
57  --ui-color-warning-950: var(--color-yellow-950, oklch(28.6% 0.066 53.813));
58  --ui-color-error-50: var(--color-red-50, oklch(97.1% 0.013 17.38));
59  --ui-color-error-100: var(--color-red-100, oklch(93.6% 0.032 17.717));
60  --ui-color-error-200: var(--color-red-200, oklch(88.5% 0.062 18.334));
61  --ui-color-error-300: var(--color-red-300, oklch(80.8% 0.114 19.571));
62  --ui-color-error-400: var(--color-red-400, oklch(70.4% 0.191 22.216));
63  --ui-color-error-500: var(--color-red-500, oklch(63.7% 0.237 25.331));
64  --ui-color-error-600: var(--color-red-600, oklch(57.7% 0.245 27.325));
65  --ui-color-error-700: var(--color-red-700, oklch(50.5% 0.213 27.518));
66  --ui-color-error-800: var(--color-red-800, oklch(44.4% 0.177 26.899));
67  --ui-color-error-900: var(--color-red-900, oklch(39.6% 0.141 25.723));
68  --ui-color-error-950: var(--color-red-950, oklch(25.8% 0.092 26.042));
69  --ui-color-neutral-50: var(--color-slate-50, oklch(98.4% 0.003 247.858));
70  --ui-color-neutral-100: var(--color-slate-100, oklch(96.8% 0.007 247.896));
71  --ui-color-neutral-200: var(--color-slate-200, oklch(92.9% 0.013 255.508));
72  --ui-color-neutral-300: var(--color-slate-300, oklch(86.9% 0.022 252.894));
73  --ui-color-neutral-400: var(--color-slate-400, oklch(70.4% 0.04 256.788));
74  --ui-color-neutral-500: var(--color-slate-500, oklch(55.4% 0.046 257.417));
75  --ui-color-neutral-600: var(--color-slate-600, oklch(44.6% 0.043 257.281));
76  --ui-color-neutral-700: var(--color-slate-700, oklch(37.2% 0.044 257.287));
77  --ui-color-neutral-800: var(--color-slate-800, oklch(27.9% 0.041 260.031));
78  --ui-color-neutral-900: var(--color-slate-900, oklch(20.8% 0.042 265.755));
79  --ui-color-neutral-950: var(--color-slate-950, oklch(12.9% 0.042 264.695));
80  }
81  :root, :host, .light {
82  --ui-primary: var(--ui-color-primary-500);
83  --ui-secondary: var(--ui-color-secondary-500);
84  --ui-success: var(--ui-color-success-500);
85  --ui-info: var(--ui-color-info-500);
86  --ui-warning: var(--ui-color-warning-500);
87  --ui-error: var(--ui-color-error-500);
88  }
89  .dark {
90  --ui-primary: var(--ui-color-primary-400);
91  --ui-secondary: var(--ui-color-secondary-400);
92  --ui-success: var(--ui-color-success-400);
93  --ui-info: var(--ui-color-info-400);
94  --ui-warning: var(--ui-color-warning-400);
95  --ui-error: var(--ui-color-error-400);
96  }
97}</style><style>.site-logo[data-v-8f61cd91]{align-items:center;gap:10px;display:inline-flex}.site-logo-cell[data-v-8f61cd91]{width:26px;height:26px;color:var(--console-accent);background:color-mix(in srgb,var(--ui-text-muted) 5%,var(--ui-bg));box-shadow:inset 0 0 0 1px var(--console-line);clip-path:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,0 100%);place-items:center;display:grid}.site-logo-cell[data-v-8f61cd91]>*{width:14px;
97height:14px}.site-logo-name[data-v-8f61cd91]{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--ui-text-highlighted);font-size:14px}a:hover .site-logo-cell[data-v-8f61cd91]{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--console-accent) 55%,transparent)}</style><style>.site-nav[data-v-9ce0618e]{align-items:center;gap:4px;display:none}@media (width>=64rem){.site-nav[data-v-9ce0618e]{display:flex}}.site-nav-link[data-v-9ce0618e]{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ui-text-muted);padding:6px 10px 6px 18px;font-size:11px;transition:color .15s;position:relative}.site-nav-link[data-v-9ce0618e]:before{content:"";width:5px;height:5px;box-shadow:inset 0 0 0 1px var(--console-line);transition:background .15s,box-shadow .15s;position:absolute;top:50%;left:6px;transform:translateY(-50%)}.site-nav-link[data-v-9ce0618e]:hover,.site-nav-link[aria-current=page][data-v-9ce0618e]{color:var(--ui-text-highlighted)}.site-nav-link[aria-current=page][data-v-9ce0618e]:before{background:var(--console-accent);box-shadow:none}.site-nav-link[data-v-9ce0618e]:focus-visible{outline:1px solid var(--ui-primary);outline-offset:2px}.site-nav-rule[data-v-9ce0618e]{background:var(--console-line);width:1px;height:20px;margin-inline:8px 4px}@media (prefers-reduced-motion:reduce){.site-nav-link[data-v-9ce0618e],.site-nav-link[data-v-9ce0618e]:before{transition:none}}</style><style>.docs-nav[data-v-309c995b]{gap:22px;display:grid}.nav-title[data-v-309c995b]{margin:0 0 10px}.nav-title>span[data-v-309c995b]:first-child{letter-spacing:.12em;color:var(--ui-text-highlighted);align-items:center;gap:10px;font-size:12px;display:inline-flex}.nav-title-cell[data-v-309c995b]{width:24px;height:24px;color:var(--console-accent);background:color-mix(in srgb,var(--ui-text-muted) 5%,var(--ui-bg));box-shadow:inset 0 0 0 1px var(--console-line);place-items:center;display:grid}.nav-title-cell[data-v-309c995b]>*{width:13px;height:13px}.nav-title>.console-mark[data-v-309c995b]{width:22px}.nav-index[data-v-309c995b]{font-family:var(--font-sans);color:var(--ui-text-muted);align-items:baseline;gap:10px;margin:0 0 10px;padding:3px 0;font-size:13.5px;transition:color .15s;display:flex}.nav-index>.console-tag[data-v-309c995b]{text-align:center;flex:none;min-width:4.5rem;margin:0}.nav-index-text[data-v-309c995b]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.nav-index[data-v-309c995b]:hover,.nav-index[aria-current=page][data-v-309c995b]{color:var(--ui-text-highlighted)}.nav-index:hover .console-leader[data-v-309c995b]:after,.nav-index[aria-current=page] .console-leader[data-v-309c995b]:after{background:var(--console-accent);box-shadow:none}.nav-index[aria-current=page]>.console-tag[data-v-309c995b]{color:var(--ui-text-highlighted);box-shadow:inset 0 0 0 1px var(--console-accent)}.nav-index[data-v-309c995b]:focus-visible{outline:1px solid var(--ui-primary);outline-offset:2px}.nav-list[data-v-309c995b]{grid-template-columns:minmax(0,1fr);gap:1px;margin:0;padding:0 0 0 16px;list-style:none;display:grid;position:relative}.nav-list[data-v-309c995b]:before{content:"";border-left:1px solid var(--console-line);background-image:repeating-linear-gradient(180deg,var(--console-corner) 0 1px,transparent 1px 12px);opacity:.7;background-repeat:no-repeat;background-size:3px 100%;width:5px;position:absolute;top:4px;bottom:4px;left:3px}.nav-list>li[data-v-309c995b]{min-width:0;position:relative}.nav-list>li[data-active=true][data-v-309c995b]:before{content:"";background:var(--console-accent);width:7px;height:7px;position:absolute;top:11px;left:-16px}.nav-link[data-v-309c995b]{min-width:0;font-family:var(--font-sans);color:var(--ui-text-muted);align-items:center;gap:9px;padding:5px 0;font-size:13.5px;line-height:1.4;display:flex}.nav-icon[data-v-309c995b],.nav-link[data-v-309c995b]{transition:color .15s}.nav-icon[data-v-309c995b]{width:15px;height:15px;color:var(--ui-text-dimmed);flex:none}.nav-text[data-v-309c995b]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.nav-link[data-v-309c995b]:hover{color:var(--ui-text-highlighted)}.nav-link:hover .nav-icon[data-v-309c995b]{color:var(--ui-text-muted)}.nav-link[aria-current=page][data-v-309c995b]{color:var(--ui-text-highlighted)}.nav-link[aria-current=page] .nav-icon[data-v-309c995b]{color:var(--console-accent)}.nav-link[data-v-309c995b]:focus-visible{outline:1px solid var(--ui-primary);outline-offset:2px}.nav-sublist[data-v-309c995b]{grid-template-columns:minmax(0,1fr);margin:0 0 4px;padding:0 0 0 24px;list-style:none;display:grid}.nav-sub[data-v-309c995b]{padding:3px 0 3px 12px;font-size:13px;position:relative}.nav-sub[data-v-309c995b]:before{content:"";background:var(--console-line);width:6px;height:1px;position:absolute;top:50%;left:0}.nav-sub[aria-current=page][data-v-309c995b]:before{background:var(--console-accent)}
97@media (prefers-reduced-motion:reduce){.nav-icon[data-v-309c995b],.nav-link[data-v-309c995b]{transition:none}}</style><style>.footer-left[data-v-4957ec37]{justify-items:start;gap:10px;max-width:40rem;display:grid}.footer-link[data-v-4957ec37]{color:var(--ui-text-dimmed);-webkit-text-decoration:underline dotted var(--console-line);-webkit-text-decoration:underline dotted var(--console-line);text-decoration:underline dotted var(--console-line);text-underline-offset:3px}.footer-link[data-v-4957ec37]:hover{color:var(--console-accent)}.footer-link[data-v-4957ec37]:focus-visible{outline:1px solid var(--ui-primary);outline-offset:2px}.footer-note[data-v-4957ec37]{font-family:var(--font-sans);color:var(--ui-text-muted);margin:0;font-size:13px;line-height:1.6}</style><style>@media (width>=1024px){.docus-sub-header{--ui-header-height:112px}}</style><style>.page-links[data-v-96d1f948]{isolation:isolate;padding:1px;display:inline-flex;position:relative}.page-links[data-v-96d1f948]:after,.page-links[data-v-96d1f948]:before{content:"";pointer-events:none;clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%);position:absolute}.page-links[data-v-96d1f948]:before{z-index:-2;background:var(--console-line);inset:0}.page-links[data-v-96d1f948]:after{z-index:-1;background:color-mix(in srgb,var(--ui-text-muted) 5%,var(--ui-bg));inset:1px}.page-link[data-v-96d1f948]{height:30px;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-highlighted);cursor:pointer;background:0 0;border:0;align-items:stretch;padding:0;font-size:11px;display:inline-flex}.page-link-cell[data-v-96d1f948]{width:30px;color:var(--ui-text-muted);box-shadow:inset -1px 0 0 var(--console-line);justify-content:center}.page-link-cell[data-v-96d1f948],.page-link-label[data-v-96d1f948]{align-items:center;display:inline-flex}.page-link-label[data-v-96d1f948]{padding:0 12px}.page-link-more[data-v-96d1f948]{box-shadow:inset 1px 0 0 var(--console-line)}.page-link-more .page-link-cell[data-v-96d1f948]{box-shadow:none;padding-right:4px}.page-link:hover .page-link-cell[data-v-96d1f948],.page-link[data-copied=true] .page-link-cell[data-v-96d1f948],.page-link[data-state=open] .page-link-cell[data-v-96d1f948]{color:var(--console-accent)}.page-link[data-v-96d1f948]:focus-visible{outline:1px solid var(--ui-primary);outline-offset:2px}</style><style>.surround[data-v-ac94fe34]{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.surround-card[data-v-ac94fe34]{--surround-edge:var(--console-line);isolation:isolate;color:inherit;grid-template-columns:40px minmax(0,1fr);padding:1px;display:grid;position:relative}.surround-card[data-direction=next][data-v-ac94fe34]{grid-template-columns:minmax(0,1fr) 40px}.surround-card[data-direction=next] .surround-strip[data-v-ac94fe34]{border-right:0;border-left:1px solid var(--console-line);order:2}.surround-card[data-v-ac94fe34]:after,.surround-card[data-v-ac94fe34]:before{content:"";pointer-events:none;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));position:absolute}.surround-card[data-v-ac94fe34]:before{z-index:-2;background:var(--surround-edge);transition:background .15s;inset:0}.surround-card[data-v-ac94fe34]:after{z-index:-1;background:var(--ui-bg);inset:1px}.surround-card[data-v-ac94fe34]:hover{--surround-edge:color-mix(in srgb, var(--console-accent) 50%, var(--console-line))}.surround-card[data-v-ac94fe34]:focus-visible{outline:1px solid var(--ui-primary);outline-offset:3px}.surround-cross-tl[data-v-ac94fe34]{top:-7px;left:-7px}.surround-cross-br[data-v-ac94fe34]{bottom:-7px;right:-7px}.surround-strip[data-v-ac94fe34]{border-right:1px solid var(--console-line);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--ui-text-muted) 30%,transparent) 0 1px,transparent 1px 5px);position:relative}.surround-card[data-direction=previous] .surround-strip[data-v-ac94fe34]{clip-path:polygon(0 0,100% 0,100% 100%,11px 100%,0 calc(100% - 11px))}.surround-glyph[data-v-ac94fe34]{width:24px;height:24px;color:var(--ui-text-muted);background:var(--ui-bg);box-shadow:inset 0 0 0 1px var(--console-line);place-items:center;transition:color .15s;display:grid;position:absolute;top:8px;left:50%;transform:translate(-50%)}.surround-glyph[data-v-ac94fe34]>*{width:14px;
97height:14px}.surround-card:hover .surround-glyph[data-v-ac94fe34]{color:var(--console-accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--console-accent) 55%,transparent)}.surround-main[data-v-ac94fe34]{flex-direction:column;min-width:0;display:flex}.surround-bar[data-v-ac94fe34]{background:color-mix(in srgb,var(--ui-text-muted) 5%,var(--ui-bg));align-items:center;gap:12px;min-height:40px;padding:8px 20px 8px 14px;display:flex}.surround-card[data-direction=previous] .surround-bar[data-v-ac94fe34]{clip-path:polygon(0 0,calc(100% - 11px) 0,100% 11px,100% 100%,0 100%)}.surround-tag[data-v-ac94fe34]{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ui-text-muted);box-shadow:inset 0 0 0 1px var(--console-line);flex:none;padding:1px 6px;font-size:10px;line-height:1.4}.surround-title[data-v-ac94fe34]{min-width:0;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;color:var(--ui-text-highlighted);font-size:13px;overflow:hidden}.surround-card:hover .surround-title[data-v-ac94fe34]{color:var(--console-accent)}.surround-bar>.console-mark[data-v-ac94fe34]{width:28px;margin-left:auto}.surround-body[data-v-ac94fe34]{gap:8px;padding:12px 16px 14px;display:grid}.surround-about[data-v-ac94fe34]{-webkit-line-clamp:2;font-family:var(--font-sans);color:var(--ui-text-muted);-webkit-box-orient:vertical;font-size:13px;line-height:1.6;display:-webkit-box;overflow:hidden}.surround-path[data-v-ac94fe34]{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ui-text-dimmed);font-size:11px}@media (width<640px){.surround[data-v-ac94fe34]{grid-template-columns:minmax(0,1fr)}.surround-bar>.console-mark[data-v-ac94fe34],.surround-empty[data-v-ac94fe34]{display:none}}</style><style>.toc-narrow[data-v-f5c59eeb]{display:block}.toc-wide[data-v-f5c59eeb]{display:none}@media (width>=64rem){.docs-aside[data-v-f5c59eeb]{top:var(--ui-header-height);max-height:calc(100vh - var(--ui-header-height));scrollbar-width:none;position:sticky;overflow-y:auto}.toc-narrow[data-v-f5c59eeb]{display:none}.toc-wide[data-v-f5c59eeb]{padding-block:32px;display:block}}.toc-title[data-v-f5c59eeb]{margin:0 0 14px}.toc-title>.console-mark[data-v-f5c59eeb]{width:22px}.toc-list[data-v-f5c59eeb]{gap:2px;margin:0;padding:0 0 0 16px;list-style:none;display:grid;position:relative}.toc-list[data-v-f5c59eeb]:before{content:"";border-left:1px solid var(--console-line);background-image:repeating-linear-gradient(180deg,var(--console-corner) 0 1px,transparent 1px 12px);opacity:.7;background-repeat:no-repeat;background-size:3px 100%;width:5px;position:absolute;top:4px;bottom:4px;left:3px}.toc-list>li[data-v-f5c59eeb]{position:relative}.toc-list>li[data-v-f5c59eeb]:before{content:"";background:var(--ui-bg);width:7px;height:7px;box-shadow:inset 0 0 0 1px var(--console-line);transition:background .2s,box-shadow .2s;position:absolute;top:9px;left:-16px}.toc-list>li[data-active=true][data-v-f5c59eeb]:before{background:var(--console-accent);box-shadow:none}.toc-link[data-v-f5c59eeb]{font-family:var(--font-sans);color:var(--ui-text-muted);grid-template-columns:1.6rem minmax(0,1fr);align-items:baseline;gap:6px;padding:4px 0;font-size:13px;line-height:1.45;transition:color .15s;display:grid}.toc-index[data-v-f5c59eeb]{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ui-text-dimmed);font-size:10px}.toc-link[data-v-f5c59eeb]:hover,.toc-list>li[data-active=true]>.toc-link[data-v-f5c59eeb]{color:var(--ui-text-highlighted)}.toc-list>li[data-active=true]>.toc-link>.toc-index[data-v-f5c59eeb]{color:var(--console-accent)}.toc-link[data-v-f5c59eeb]:focus-visible{outline:1px solid var(--ui-primary);outline-offset:2px}.toc-sublist[data-v-f5c59eeb]{margin:0 0 4px;padding:0 0 0 calc(1.6rem + 6px);list-style:none;display:grid}.toc-sub[data-v-f5c59eeb]{padding:3px 0 3px 12px;font-size:12.5px;display:block;position:relative}.toc-sub[data-v-f5c59eeb]:before{content:"";background:var(--console-line);width:6px;height:1px;position:absolute;top:.95em;left:0}.toc-sub[data-active=true][data-v-f5c59eeb]{color:var(--ui-text-highlighted)}.toc-sub[data-active=true][data-v-f5c59eeb]:before{background:var(--console-accent)}@media (prefers-reduced-motion:reduce){.toc-link[data-v-f5c59eeb],.toc-list>li[data-v-f5c59eeb]:before{transition:none}}</style><link rel="stylesheet" href="/_nuxt/entry.VjOIohfh.css" crossorigin><style>@layer base {:where(.i-lucide\:alert-circle){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:app-window){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='M10 4v4M2 8h20M6 4v4'/%3E%3C/g%3E%3C/svg%3E")}
97:where(.i-lucide\:archive){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='20' height='5' x='2' y='3' rx='1'/%3E%3Cpath d='M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8m-10 4h4'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:arrow-left){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m12 19l-7-7l7-7m7 7H5'/%3E%3C/svg%3E")}:where(.i-lucide\:arrow-right){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7l7 7l-7 7'/%3E%3C/svg%3E")}:where(.i-lucide\:binary){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='4' height='6' x='14' y='14' rx='2'/%3E%3Crect width='4' height='6' x='6' y='4' rx='2'/%3E%3Cpath d='M6 20h4m4-10h4M6 14h2v6m6-16h2v6'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:book-open){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 5v16m8.001-2A2 2 0 0 0 22 17V5a2 2 0 0 0-1.999-2L16 3.002A5 5 0 0 0 12 5a5 5 0 0 0-4-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 1.999 2H8a5 5 0 0 1 4 2a5 5 0 0 1 4-2z'/%3E%3C/svg%3E")}:where(.i-lucide\:bot){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12 8V4H8'/%3E%3Crect width='16' height='12' x='4' y='8' rx='2'/%3E%3Cpath d='M2 14h2m16 0h2m-7-1v2m-6-2v2'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:brain){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12 18V5m3 8a4.17 4.17 0 0 1-3-4a4.17 4.17 0 0 1-3 4m8.598-6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5'/%3E%3Cpath d='M17.997 5.125a4 4 0 0 1 2.526 5.77'/%3E%3Cpath d='M18 18a4 4 0 0 0 2-7.464'/%3E%3Cpath d='M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517'/%3E%3Cpath d='M6 18a4 4 0 0 1-2-7.464'/%3E%3Cpath d='M6.003 5.125a4 4 0 0 0-2.526 5.77'/%3E%3C/g%3E%3C/svg%3E")}
97:where(.i-lucide\:chevron-down){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9l6 6l6-6'/%3E%3C/svg%3E")}:where(.i-lucide\:chevrons-up-down){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m7 15l5 5l5-5M7 9l5-5l5 5'/%3E%3C/svg%3E")}:where(.i-lucide\:circle-dot){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:copy){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:database){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cellipse cx='12' cy='5' rx='9' ry='3'/%3E%3Cpath d='M3 5v14a9 3 0 0 0 18 0V5'/%3E%3Cpath d='M3 12a9 3 0 0 0 18 0'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:git-branch){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 6a9 9 0 0 0-9 9V3'/%3E%3Ccircle cx='18' cy='6' r='3'/%3E%3Ccircle cx='6' cy='18' r='3'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:globe){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 2a14.5 14.5 0 0 0 0 20a14.5 14.5 0 0 0 0-20M2 12h20'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:history){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M3 12a9 9 0 1 0 9-9a9.75 9.75 0 0 0-6.74 2.74L3 8'/%3E%3Cpath d='M3 3v5h5m4-1v5l4 2'/%3
97E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:image){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='18' x='3' y='3' rx='2' ry='2'/%3E%3Ccircle cx='9' cy='9' r='2'/%3E%3Cpath d='m21 15l-3.086-3.086a2 2 0 0 0-2.828 0L6 21'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:key-round){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z'/%3E%3Ccircle cx='16.5' cy='7.5' r='.5' fill='black'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:library){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m16 6l4 14M12 6v14M8 8v12M4 4v16'/%3E%3C/svg%3E")}:where(.i-lucide\:link){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:link-2){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 17H7A5 5 0 0 1 7 7h2m6 0h2a5 5 0 1 1 0 10h-2m-7-5h8'/%3E%3C/svg%3E")}:where(.i-lucide\:map-pin){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:music){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9 18V5l12-2v13'/%3E%3Ccircle cx='6' cy='18' r='3'/%3E%3Ccircle cx='18' cy='16' r='3'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:package){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12'/%3E%3Cpath d='M3.29 7L12 12l8.71-5M7.5 4.27l9 5.15'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:pen){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z'/%3E%3C/svg%3E")}:where(.i-lucide\:plug){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 22v-5m3-9V2m2 6a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1zM9 8V2'/%3E%3C/svg%3E")}:where(.i-lucide\:puzzle){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15.39 4.39a1 1 0 0 0 1.68-.474a2.5 2.5 0 1 1 3.014 3.015a1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474a2.5 2.5 0 1 0-3.014 3.015a1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474a2.5 2.5 0 1 1-3.014-3.015a1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474a2.5 2.5 0 1 0 3.014-3.015a1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z'/%3E%3C/svg%3E")}:where(.i-lucide\:scan-search){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M3 7V5a2 2 0 0 1 2-2h2m10 0h2a2 2 0 0 1 2 2v2m0 10v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='m16 16l-1.9-1.9'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:search){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:server){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='20' height='8' x='2' y='2' rx='2' ry='2'/%3E%3Crect width='20' height='8' x='2' y='14' rx='2' ry='2'/%3E%3Cpath d='M6 6h.01M6 18h.01'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:shapes){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Ccircle cx='17.5' cy='17.5' r='3.5'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:shield-alert){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1zm-8-5v4m0 4h.01'/%3E%3C/svg%3E")}:where(.i-lucide\:wrench){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z'/%3E%3C/svg%3E")}:where(.i-simple-icons\:github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}:where(.i-simple-icons\:npm){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019l-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}}</style><link rel="preload" as="fetch" crossorigin="anonymous" href="/libraries/_payload.json?_b=9fcaeed0-9952-4d69-babc-fdc416dfe34a"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/-yWJRB1I.js"><link rel="preload" as="font" crossorigin href="/fonts/figtree-400.ttf"><link rel="preload" as="font" crossorigin href="/fonts/fira-code-400.ttf"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bk95V-Ic.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Car86Ubo.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BUpcpq0-.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BaPciInh.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BYTXBI1V.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CZg4qYci.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BW3xJdEx.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C9413yWo.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B-UPWRKE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BnDTbt6S.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BHdzfTOJ.js">
97<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BVsyvBw7.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CdMgnjZ4.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CzZsURBt.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CXTpTOZ-.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/rnw2XPsf.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CVLwZTJS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BbWmFZ0M.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/P-uim12T.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/3tJE-g4b.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DHihWhf5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bxedm45V.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CcDshmpr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/IHOBnhbX.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/6GIpqN-x.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CGmlyUcp.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Ck2QpTY2.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bng2rRDf.js">
97<link rel="modulepreload" as="script" crossorigin href="/_nuxt/eMM_kmK9.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C3x-n3yc.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/-5TED6iv.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DI812x1A.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C7azYY1Q.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CdPK1fwV.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BcOEWrQM.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/61T3VGof.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D05i5DnO.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ndukUIER.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DjDOKJKJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BDNMzG2s.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BycSaiUS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/QgrkfmRB.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DeYYu_u9.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Do8IjbnP.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CGUsgC_F.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/SJmvQWkh.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/REeZJxQi.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B10ldKkt.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BVa8IdWM.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DRErRO7w.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DNRkbvW0.js">
97<script type="module" src="/_nuxt/-yWJRB1I.js" crossorigin></script>
97<link rel="prefetch" as="script" crossorigin href="/_nuxt/BdTSifyu.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CgYt7o08.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/D3ZPyNEe.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BcFuUm6Z.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/ANU92Hpt.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DzjTih-Z.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Bi34hmG8.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DpM_S53U.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DDZGrv7b.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/D5oQE1W8.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BL82z0NS.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DCoT7Sr_.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DsSJFHi1.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BsCyfkOX.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/G7s8ce7w.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CLzTP2hO.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BdFNi9_3.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/FGbEr4QG.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DWs7fwl1.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/YJTUDbN7.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DpRbRZbp.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BcPTWBJS.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Dg8IvygW.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/MNa6wb5p.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Hvvb1luy.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/E1ZWY1j0.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BIXjyMP2.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CYf65hwX.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Bwtok_F2.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CdlkpNBg.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CjEmpn_d.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BW0KjuTv.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DQhlUnmr.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DsUZJkND.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BK_zEO52.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CxYsbiu6.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BG_qmu3N.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CWKs-dUP.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Dp4ddNHL.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/KxW_jNlC.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DL554jMH.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DN0uZJg-.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/es4X00_x.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DzNPhrWg.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/gpNf5wpe.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/eaoOInXI.js"><meta name="theme-color" content="#0b0d10"><meta name="apple-mobile-web-app-title" content="agntn"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><link rel="icon" href="/favicon.ico"><meta name="description" content="Every @agntn package in one table. Sort it by domain or providers or status."><meta property="og:site_name" content="agntn"><meta property="og:title" content="Libraries"><meta property="og:description" content="Every @agntn package in one table. Sort it by domain or providers or status."><meta property="og:type" content="article"><meta property="og:url" content="https://agntn.dev/libraries"><link rel="canonical" href="https://agntn.dev/libraries">
97<script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"Libraries","description":"Every @agntn package in one table. Sort it by domain or providers or status.","url":"https://agntn.dev/libraries","mainEntityOfPage":{"@type":"WebPage","@id":"https://agntn.dev/libraries"},"publisher":{"@type":"Organization","name":"agntn"}}</script>
97<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Libraries","item":"https://agntn.dev/libraries"}]}</script>
97<script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","name":"agntn libraries","numberOfItems":14,"itemListElement":[{"@type":"ListItem","position":1,"name":"@agntn/web","url":"https://agntn.dev/libraries/web"},{"@type":"ListItem","position":2,"name":"@agntn/archives","url":"https://agntn.dev/libraries/archives"},{"@type":"ListItem","position":3,"name":"@agntn/registries","url":"https://agntn.dev/libraries/registries"},{"@type":"ListItem","position":4,"name":"@agntn/forges","url":"https://agntn.dev/libraries/forges"},{"@type":"ListItem","position":5,"name":"@agntn/keys","url":"https://agntn.dev/libraries/keys"},{"@type":"ListItem","position":6,"name":"@agntn/harnesses","url":"https://agntn.dev/libraries/harnesses"},{"@type":"ListItem","position":7,"name":"@agntn/explorers","url":"https://agntn.dev/libraries/explorers"},{"@type":"ListItem","position":8,"name":"@agntn/chains","url":"https://agntn.dev/libraries/chains"},{"@type":"ListItem","position":9,"name":"@agntn/ciphers","url":"https://agntn.dev/libraries/ciphers"},{"@type":"ListItem","position":10,"name":"@agntn/puzzles","url":"https://agntn.dev/libraries/puzzles"},{"@type":"ListItem","position":11,"name":"@agntn/browsers","url":"https://agntn.dev/libraries/browsers"},{"@type":"ListItem","position":12,"name":"@agntn/urls","url":"https://agntn.dev/libraries/urls"},{"@type":"ListItem","position":13,"name":"@agntn/lyrics","url":"https://agntn.dev/libraries/lyrics"},{"@type":"ListItem","position":14,"name":"@agntn/ox","url":"https://agntn.dev/libraries/ox"}]}</script>
97<script>"use strict";(()=>{const o=window,e=document.documentElement,c=["dark","light"],s=getStorageValue("localStorage","nuxt-color-mode")||"dark";let r=s==="system"?f():s;const l=e.getAttribute("data-color-mode-forced");l&&(r=l),i(r),o["__NUXT_COLOR_MODE__"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=""+t+"",n="";e.classList?e.classList.add(a):e.className+=" "+a,n&&e.setAttribute("data-"+n,t)}function d(t){const a=""+t+"",n="";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,"g"),""),n&&e.removeAttribute("data-"+n)}function u(t){return o.matchMedia("(prefers-color-scheme"+t+")")}function f(){if(o.matchMedia&&u("").media!=="not all"){for(const t of c)if(u(":"+t).matches)return t}return"light"}})();function getStorageValue(o,e){switch(o){case"localStorage":try{return window.localStorage.getItem(e)}catch{return null}case"sessionStorage":try{return window.sessionStorage.getItem(e)}catch{return null}case"cookie":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=("; "+window.document.cookie).split("; "+o+"=");if(c.length===2){const s=c.pop();return s?s.split(";").shift():null}}</script>
97<script data-cfasync="false" nonce="80de1ca1-7452-430c-b401-0b9bd01ac76c">try{(function(w,d){!function(kP,kQ,kR,kS){if(kP.zaraz)console.error("zaraz is loaded twice");else{kP[kR]=kP[kR]||{};kP[kR].executed=[];kP.zaraz={deferred:[],listeners:[]};kP.zaraz._v="20";kP.zaraz._n="80de1ca1-7452-430c-b401-0b9bd01ac76c";kP.zaraz.q=[];kP.zaraz._f=function(kT){return async function(){var kU=Array.prototype.slice.call(arguments);kP.zaraz.q.push({m:kT,a:kU})}};for(const kV of["track","set","debug"])kP.zaraz[kV]=kP.zaraz._f(kV);kP.zaraz.init=()=>{var kW=kQ.getElementsByTagName(kS)[0],kX=kQ.createElement(kS),kY=kQ.getElementsByTagName("title")[0];kY&&(kP[kR].t=kQ.getElementsByTagName("title")[0].text);kP[kR].x=Math.random();kP[kR].w=kP.screen.width;kP[kR].h=kP.screen.height;kP[kR].j=kP.innerHeight;kP[kR].e=kP.innerWidth;kP[kR].l=kP.location.href;kP[kR].r=kQ.referrer;kP[kR].k=kP.screen.colorDepth;kP[kR].n=kQ.characterSet;kP[kR].o=(new Date).getTimezoneOffset();if(kP.dataLayer)for(const kZ of Object.entries(Object.entries(dataLayer).reduce((k$,la)=>({...k$[1],...la[1]}),{})))zaraz.set(kZ[0],kZ[1],{scope:"page"});kP[kR].q=[];for(;kP.zaraz.q.length;){const lb=kP.zaraz.q.shift();kP[kR].q.push(lb)}kX.defer=!0;for(const lc of[localStorage,sessionStorage])Object.keys(lc||{}).filter(le=>le.startsWith("_zaraz_")).forEach(ld=>{try{kP[kR]["z_"+ld.slice(7)]=JSON.parse(lc.getItem(ld))}catch{kP[kR]["z_"+ld.slice(7)]=lc.getItem(ld)}});kX.referrerPolicy="origin";kX.src="/cdn-cgi/zaraz/s.js?z="+btoa(encodeURIComponent(JSON.stringify(kP[kR])));kW.parentNode.insertBefore(kX,kW)};["complete","interactive"].includes(kQ.readyState)?zaraz.init():kP.addEventListener("DOMContentLoaded",zaraz.init)}}(w,d,"zarazData","script");window.zaraz._p=async kH=>new Promise(kI=>{if(kH){kH.e&&kH.e.forEach(kJ=>{try{const kK=d.querySelector("script[nonce]"),kL=kK?.nonce||kK?.getAttribute("nonce"),kM=d.createElement("script");kL&&(kM.nonce=kL);kM.innerHTML=kJ;kM.onload=()=>{d.head.removeChild(kM)};d.head.appendChild(kM)}catch(kN){console.error(`Error executing script: ${kJ}\n`,kN)}});Promise.allSettled((kH.f||[]).map(kO=>fetch(kO[0],kO[1])))}kI()});zaraz._p({"e":["(function(w,d){})(window,document)"]});})(window,document)}catch(e){throw fetch("/cdn-cgi/zaraz/t"),e;};</script>
97</head><body><div id="__nuxt" class="isolate"><!--[--><!--[--><!--[--><!--[--><!--[--><div class="nuxt-loading-indicator" style="position:fixed;top:0;right:0;left:0;pointer-events:none;width:auto;height:3px;opacity:0;background:var(--ui-primary);background-size:0% auto;transform:scaleX(0%);transform-origin:left;transition:transform 0.1s, height 0.4s, opacity 0.4s;z-index:999999;"></div><div class="flex"><div class="flex-1 min-w-0"><!--[--><!----><!----><!----><header data-slot="root" class="bg-default/75 backdrop-blur-sm border-b border-default h-(--ui-header-height) sticky top-0 z-50 org-site-header"><!--[--><!--]--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 flex items-center justify-between gap-3 h-full" data-slot="container"><!--[--><div data-slot="left" class="lg:flex-1 flex items-center gap-1.5"><!----><!--[--><a href="/" class="" aria-label="agntn"><span class="site-logo h-6 w-auto shrink-0" data-v-8f61cd91><span class="site-logo-cell" aria-hidden="true" data-v-8f61cd91><span class="iconify i-lucide:circle-dot" aria-hidden="true" style="" data-v-8f61cd91></span></span><span class="site-logo-name" data-v-8f61cd91>agntn</span></span></a><!--]--></div><div data-slot="center" class="hidden lg:flex flex-1"><!--[--><!--[--><!----><button type="button" data-slot="base" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 outline-inverted/25 focus-visible:outline-3 disabled:bg-elevated aria-disabled:bg-elevated org-search org-search w-full"><!--[--><!--[--><span class="iconify i-lucide:search shrink-0 size-4 mx-0.5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><span data-slot="label" class="truncate">Search…</span><!--]--><!--[--><div data-slot="trailing" class="hidden lg:flex items-center gap-0.5 ms-auto"><!--[--><!--[--><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase org-kbd h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[--> <!--]--></kbd><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase org-kbd h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[-->k<!--]--></kbd><!--]--><!--]--></div><!--]--><!--]--></button><!--]--><!--]--></div><div data-slot="right" class="flex items-center justify-end lg:flex-1 gap-1.5"><!--[--><nav aria-label="Primary" class="site-nav" data-v-9ce0618e><!--[--><a href="/about" class="site-nav-link" data-v-9ce0618e>About</a><a aria-current="page" href="/libraries" class="router-link-active router-link-exact-active site-nav-link" data-v-9ce0618e>Libraries</a><!--]--><span class="site-nav-rule" aria-hidden="true" data-v-9ce0618e></span></nav><!----><!----><!--[--><!----><button type="button" data-slot="base" aria-label="Search…" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated outline-inverted/25 focus-visible:outline-3 hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 org-search org-search lg:hidden"><!--[--><!--[--><span class="iconify i-lucide:search shrink-0 size-5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><span data-slot="label" class="truncate hidden">Search…</span><!--]--><!--[--><div data-slot="trailing" class="hidden items-center gap-0.5 ms-auto lg:hidden"><!--[--><!--[--><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase org-kbd h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[--> <!--]--></kbd><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase org-kbd h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[-->k<!--]--></kbd><!--]--><!--]--></div><!--]--><!--]--></button><!--]--><!----><!--[--><a href="https://github.com/agntn/website" rel="noopener noreferrer" target="_blank" data-slot="base" aria-label="GitHub" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated outline-inverted/25 focus-visible:outline-3 hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a>
97<!--]--><!--]--><!--[--><button type="button" data-slot="base" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated outline-inverted/25 focus-visible:outline-3 hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 -me-1.5 lg:hidden"><!--[--><!--[--><!----><!--]--><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="6" x2="20" y2="6" class="outline-none"></line><line x1="4" y1="12" x2="20" y2="12" class="outline-none"></line><line x1="4" y1="18" x2="20" y2="18" class="outline-none"></line></svg><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--></div><!--]--></div><!--[--><!--]--></header><!--[--><!----><!----><!--v-if--><!--]--><!--]--><main class="min-h-[calc(100vh-var(--ui-header-height))]"><!--[--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8"><!--[--><div data-slot="root" class="flex flex-col lg:grid lg:grid-cols-10 lg:gap-10"><aside data-slot="left" class="hidden overflow-y-auto lg:block lg:max-h-[calc(100vh-var(--ui-header-height))] lg:sticky lg:top-(--ui-header-height) py-8 lg:ps-4 lg:-ms-4 lg:pe-6.5 lg:col-span-2"><div data-slot="container" class="relative"><!----><!--[--><div></div><nav class="docs-nav" aria-label="Documentation" data-v-309c995b><!--[--><section class="nav-group" data-v-309c995b><p class="console-label console-rule-title nav-title" data-v-309c995b><span data-v-309c995b><span class="nav-title-cell" aria-hidden="true" data-v-309c995b><span class="iconify i-lucide:book-open" aria-hidden="true" style="" data-v-309c995b></span></span> About</span><span class="console-mark" aria-hidden="true" data-v-309c995b></span></p><!--[--><a href="/about" class="nav-index" data-v-309c995b><span class="console-tag" data-v-309c995b>Index</span><span class="nav-index-text" data-v-309c995b>Overview</span><span class="console-leader" aria-hidden="true" data-v-309c995b></span></a><!--]--><ol class="nav-list" data-v-309c995b><!--[--><li data-active="false" data-v-309c995b><a href="/about/shape" class="nav-link" data-v-309c995b><span class="iconify i-lucide:shapes nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>The shape</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/about/surfaces" class="nav-link" data-v-309c995b><span class="iconify i-lucide:plug nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>Surfaces</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/about/conventions" class="nav-link" data-v-309c995b><span class="iconify i-lucide:wrench nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>Conventions</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/about/security" class="nav-link" data-v-309c995b><span class="iconify i-lucide:shield-alert nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>Security</span></a><!----></li><!--]--></ol></section><section class="nav-group" data-v-309c995b><p class="console-label console-rule-title nav-title" data-v-309c995b><span data-v-309c995b><span class="nav-title-cell" aria-hidden="true" data-v-309c995b><span class="iconify i-lucide:library" aria-hidden="true" style="" data-v-309c995b></span></span> Libraries</span><span class="console-mark" aria-hidden="true" data-v-309c995b></span></p><!--[--><a aria-current="page" href="/libraries" class="router-link-active router-link-exact-active nav-index" data-v-309c995b><span class="console-tag" data-v-309c995b>Index</span><span class="nav-index-text" data-v-309c995b>All libraries</span><span class="console-leader" aria-hidden="true" data-v-309c995b></span></a>
97<!--]--><ol class="nav-list" data-v-309c995b><!--[--><li data-active="false" data-v-309c995b><a href="/libraries/web" class="nav-link" data-v-309c995b><span class="iconify i-lucide:globe nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>web</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/archives" class="nav-link" data-v-309c995b><span class="iconify i-lucide:archive nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>archives</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/registries" class="nav-link" data-v-309c995b><span class="iconify i-lucide:package nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>registries</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/forges" class="nav-link" data-v-309c995b><span class="iconify i-lucide:git-branch nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>forges</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/keys" class="nav-link" data-v-309c995b><span class="iconify i-lucide:key-round nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>keys</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/harnesses" class="nav-link" data-v-309c995b><span class="iconify i-lucide:bot nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>harnesses</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/explorers" class="nav-link" data-v-309c995b><span class="iconify i-lucide:scan-search nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>explorers</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/chains" class="nav-link" data-v-309c995b><span class="iconify i-lucide:link nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>chains</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/ciphers" class="nav-link" data-v-309c995b><span class="iconify i-lucide:binary nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>ciphers</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/puzzles" class="nav-link" data-v-309c995b><span class="iconify i-lucide:puzzle nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>puzzles</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/browsers" class="nav-link" data-v-309c995b><span class="iconify i-lucide:app-window nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>browsers</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/sessions" class="nav-link" data-v-309c995b><span class="iconify i-lucide:history nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>sessions</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/memory" class="nav-link" data-v-309c995b><span class="iconify i-lucide:brain nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>memory</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/urls" class="nav-link" data-v-309c995b><span class="iconify i-lucide:link-2 nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>urls</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/nodes" class="nav-link" data-v-309c995b><span class="iconify i-lucide:server nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>nodes</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/nfts" class="nav-link" data-v-309c995b><span class="iconify i-lucide:image nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>nfts</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/storages" class="nav-link" data-v-309c995b><span class="iconify i-lucide:database nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>storages</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/maps" class="nav-link" data-v-309c995b><span class="iconify i-lucide:map-pin nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>maps</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/lyrics" class="nav-link" data-v-309c995b><span class="iconify i-lucide:music nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>lyrics</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/books" class="nav-link" data-v-309c995b><span class="iconify i-lucide:library nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>books</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/wiki" class="nav-link" data-v-309c995b><span class="iconify i-lucide:book-open nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>wiki</span></a><!----></li><li data-active="false" data-v-309c995b><a href="/libraries/ox" class="nav-link" data-v-309c995b><span class="iconify i-lucide:wrench nav-icon" aria-hidden="true" style="" data-v-309c995b></span><span class="nav-text" data-v-309c995b>ox</span></a><!----></li>
97<!--]--></ol></section><!--]--></nav><!--]--><!--[--><!--]--></div></aside><div data-slot="center" class="lg:col-span-8"><!--[--><!--[--><div data-slot="root" class="flex flex-col lg:grid lg:gap-10 lg:grid-cols-[minmax(0,1fr)_min(13.75rem,20%)]"><!----><div data-slot="center" class="lg:col-span-1"><!--[--><div data-slot="root" class="relative border-default org-page-header py-8 border-b-0"><div data-slot="headline" class="text-sm font-semibold text-primary flex items-center gap-1.5 org-eyebrow mb-3"><!--[-->Libraries<!--]--></div><div data-slot="container" class=""><div data-slot="wrapper" class="flex lg:flex-row lg:items-center lg:justify-between gap-4 flex-row items-center flex-wrap justify-between"><h1 data-slot="title" class="text-pretty text-3xl sm:text-4xl font-medium tracking-tight text-highlighted"><!--[-->Libraries<!--]--></h1><div data-slot="links" class="flex flex-wrap items-center gap-1.5"><!--[--><!--[--><!--]--><div class="page-links" data-v-96d1f948><button type="button" class="page-link" data-copied="false" aria-label="Copy page" data-v-96d1f948><span class="page-link-cell" aria-hidden="true" data-v-96d1f948><span class="iconify i-lucide:copy size-3.5" aria-hidden="true" style="" data-v-96d1f948></span></span><span class="page-link-label" data-v-96d1f948>Copy page</span></button><!--[--><!--[--><!--[--><button id="reka-dropdown-menu-trigger-v-0-4-28-0" type="button" aria-haspopup="menu" aria-expanded="false" data-state="closed" class="page-link page-link-more" aria-label="More ways to read this page" data-v-96d1f948><span class="page-link-cell" aria-hidden="true" data-v-96d1f948><span class="iconify i-lucide:chevron-down size-3.5" aria-hidden="true" style="" data-v-96d1f948></span></span></button><!--[--><!----><!--v-if--><!--]--><!--]--><!--]--><!--]--></div><!--]--></div></div><div data-slot="description" class="text-pretty text-base leading-7 text-muted mt-4"><!--[-->Every @agntn package in one table. Sort it by domain or providers or status.<!--]--></div><!--[--><!--]--></div></div><div class="mt-8 pb-24 space-y-12"><!--[--><div><p class="my-5 leading-7 text-pretty"><!--[-->A published library links to its page here, and that page links on to wherever it lives: docs site, GitHub, npm. One marked in progress is being built in a private repo and shows up on npm once the first release is cut.<!--]--></p><section class="roster not-prose my-6" aria-label="Libraries"><span class="console-cross console-cross-tl" aria-hidden="true">+</span><span class="console-cross console-cross-br" aria-hidden="true">+</span><header class="flex flex-wrap items-center justify-between gap-x-4 gap-y-2 py-2.5 pl-5 pr-7 max-[400px]:px-3.5 text-[11px] tracking-[0.08em] uppercase text-muted bg-[color-mix(in_srgb,var(--ui-text-muted)_5%,var(--ui-bg))] [clip-path:polygon(0_0,calc(100%-15px)_0,100%_15px,100%_100%,0_100%)]"><span class="text-[13px] tracking-normal normal-case text-highlighted">@agntn/*</span><span class="normal-case tracking-[0.04em] text-dimmed">22 libraries · catalogue order</span></header><div class="roster-ruler" aria-hidden="true"></div><!--[--><!----><!----><div data-slot="root" class="relative outline-primary/25 focus-visible:outline-3 @container/roster overflow-visible"><table data-slot="base" class="min-w-full overflow-clip w-full table-fixed @max-[52rem]/roster:block"><!----><thead data-slot="thead" class="relative @max-[52rem]/roster:sr-only"><!--[--><tr data-slot="tr" class="data-[selected=true]:bg-elevated/50"><!--[--><th data-pinned="false" scope="col" data-slot="th" class="py-3.5 text-start [&amp;:has([role=checkbox])]:pe-0 px-2 pt-[7px] pb-1.5 first:pl-5 last:pr-5 last:text-end text-[10px] font-normal tracking-[0.08em] uppercase text-dimmed shadow-[inset_0_-1px_0_var(--console-line)] w-[10rem]" style=""><!--[--><button type="button" class="inline-flex cursor-pointer items-center gap-1 uppercase hover:text-highlighted focus-visible:text-highlighted focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-(--console-accent) data-sorted:text-(--console-accent)" aria-label="Library, sort">
97Library <span class="iconify i-lucide:chevrons-up-down size-3 opacity-50" aria-hidden="true" style=""></span></button><!--]--></th><th data-pinned="false" scope="col" data-slot="th" class="py-3.5 text-start [&amp;:has([role=checkbox])]:pe-0 px-2 pt-[7px] pb-1.5 first:pl-5 last:pr-5 last:text-end text-[10px] font-normal tracking-[0.08em] uppercase text-dimmed shadow-[inset_0_-1px_0_var(--console-line)] w-[6.5rem]" style=""><!--[--><button type="button" class="inline-flex cursor-pointer items-center gap-1 uppercase hover:text-highlighted focus-visible:text-highlighted focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-(--console-accent) data-sorted:text-(--console-accent)" aria-label="Domain, sort">Domain <span class="iconify i-lucide:chevrons-up-down size-3 opacity-50" aria-hidden="true" style=""></span></button><!--]--></th><th data-pinned="false" scope="col" data-slot="th" class="py-3.5 text-start [&amp;:has([role=checkbox])]:pe-0 px-2 pt-[7px] pb-1.5 first:pl-5 last:pr-5 last:text-end text-[10px] font-normal tracking-[0.08em] uppercase text-dimmed shadow-[inset_0_-1px_0_var(--console-line)]" style=""><!--[-->What it covers<!--]--></th><th data-pinned="false" scope="col" data-slot="th" class="py-3.5 [&amp;:has([role=checkbox])]:pe-0 px-2 pt-[7px] pb-1.5 first:pl-5 last:pr-5 last:text-end text-[10px] font-normal tracking-[0.08em] uppercase text-dimmed shadow-[inset_0_-1px_0_var(--console-line)] w-[6.5rem] text-end" style=""><!--[--><button type="button" class="inline-flex cursor-pointer items-center gap-1 uppercase hover:text-highlighted focus-visible:text-highlighted focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-(--console-accent) data-sorted:text-(--console-accent)" aria-label="Providers, sort">Providers <span class="iconify i-lucide:chevrons-up-down size-3 opacity-50" aria-hidden="true" style=""></span></button><!--]--></th><th data-pinned="false" scope="col" data-slot="th" class="py-3.5 text-start [&amp;:has([role=checkbox])]:pe-0 px-2 pt-[7px] pb-1.5 first:pl-5 last:pr-5 last:text-end text-[10px] font-normal tracking-[0.08em] uppercase text-dimmed shadow-[inset_0_-1px_0_var(--console-line)] w-[8.5rem]" style=""><!--[--><button type="button" class="inline-flex cursor-pointer items-center gap-1 uppercase hover:text-highlighted focus-visible:text-highlighted focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-(--console-accent) data-sorted:text-(--console-accent)" aria-label="Status, sort">Status <span class="iconify i-lucide:chevrons-up-down size-3 opacity-50" aria-hidden="true" style=""></span></button><!--]--></th><!--]--></tr><!--]--><tr data-slot="separator" class="absolute z-1 start-0 w-full h-px bg-(--ui-border-accented) hidden"></tr></thead><tbody data-slot="tbody" class="isolate [&amp;&gt;tr]:data-[selectable=true]:hover:bg-elevated/50 [&amp;&gt;tr]:data-[selectable=true]:outline-primary/25 [&amp;&gt;tr]:data-[selectable=true]:focus-visible:outline-3 divide-default divide-y-0 [&amp;&gt;tr]:bg-default [&amp;&gt;tr:hover]:bg-[color-mix(in_srgb,var(--ui-text-muted)_4%,var(--ui-bg))] [&amp;&gt;tr+tr&gt;td]:shadow-[inset_0_1px_0_var(--console-line)] @max-[52rem]/roster:block @max-[52rem]/roster:[&amp;&gt;tr]:grid @max-[52rem]/roster:[&amp;&gt;tr]:grid-cols-[minmax(0,1fr)_auto] @max-[52rem]/roster:[&amp;&gt;tr]:items-baseline @max-[52rem]/roster:[&amp;&gt;tr]:gap-x-4 @max-[52rem]/roster:[&amp;&gt;tr]:gap-y-1 @max-[52rem]/roster:[&amp;&gt;tr]:px-5 @max-[52rem]/roster:[&amp;&gt;tr]:py-[9px] @max-[25rem]/roster:[&amp;&gt;tr]:px-3.5 @max-[52rem]/roster:[&amp;&gt;tr+tr]:shadow-[inset_0_1px_0_var(--console-line)] @max-[52rem]/roster:[&amp;&gt;tr+tr&gt;td]:shadow-none"><!--[--><!--]--><!--[--><!--[--><!--]--><!--[--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/web" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:globe relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>web</span></a>
97<!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Web</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Web search, reverse image search and page reading over Brave, Exa, Tavily, Firecrawl, Jina, SearXNG and six more.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">12</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/archives" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:archive relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>archives</span></a><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Web</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Snapshots, content and diffs from the Wayback Machine, Arquivo.pt, archive.today, Common Crawl, Memento and five more web archives.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">10</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/registries" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:package relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>registries</span></a>
97<!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Code</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Package, versions, dependencies and maintainers from npm, PyPI, crates.io, RubyGems, Packagist and Arch Linux. One PURL in, one Package out.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">6</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/forges" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:git-branch relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>forges</span></a><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Code</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Repositories, issues, pull requests, review threads, commits and code search on GitHub, GitLab, Gitea and GitBucket.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">4</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/keys" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:key-round relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>keys</span></a>
97<!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Chains</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Key generation, HD derivation, addresses and message signing for Bitcoin, Ethereum, Solana, Stellar, Tron, Aptos, Sui, Cardano, Base, Litecoin and Decred.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">11</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/harnesses" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:bot relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>harnesses</span></a><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Agents</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Metadata registry for AI coding harnesses. Binaries, configs, sessions and capabilities, plus running one harness from another.</sp
97an><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">13</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/explorers" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:scan-search relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>explorers</span></a><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Chains</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Balances, transactions, tokens, contracts and gas from block explorers across many chains, same shape every time.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">15</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/chains" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:link relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>chains</span></a>
97<!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Chains</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Canonical blockchain classes with a registry, aliases, chain ids and address validation. Every library that touches a chain builds on it.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">30</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/ciphers" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:binary relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>ciphers</span></a><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Data</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Classical and puzzle ciphers with encode, decode, frequency analysis and brute force. Built for CTFs and riddles.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">20</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/puzzles" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:puzzle relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>puzzles</span></a>
97<!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Chains</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Public crypto puzzles and bounties as typed records. Addresses, key material, solvers and live balances for eleven collections on five chains.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">11</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">docs</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/browsers" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:app-window relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>browsers</span></a><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Web</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Browser as a service. Sessions, scraping, screenshots, PDFs and crawling on Browserbase, Browserless, Steel, Hyperbrowser and Kernel.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">8</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">
97on npm</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:history relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>sessions</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Agents</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Reads AI coding sessions across harnesses in one shape, so one tool can search what another one said.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">9</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:brain relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>memory</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Agents</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">One interface for agent memory systems. Remember, recall, supersede and delete, with namespaces and profiles.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">2</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/urls" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:link-2 relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>urls</span></a>
97<!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Web</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Passive URL discovery for a domain from web archives, crawl indexes and threat intel feeds. Never touches the target.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">7</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">on npm</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:server relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>nodes</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Chains</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Node access over HTTP and WebSocket RPC across Bitcoin, Decred, EVM, Solana and Arweave. Public endpoint resolved for you, or bring your own.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">3</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:image relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>nfts</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Chains</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">NFT collections, items, holdings and stats across chains through one provider interface.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">4</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:database relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>storages</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Data</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Object storage on Cloudflare R2 and AI Search. Containers, put, get, stat, list and delete, one shape.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">2</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:map-pin relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>maps</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Data</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Geocoding, reverse geocoding and distances from map providers, boiled down to one place shape.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">2</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-
97self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/lyrics" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:music relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>lyrics</span></a><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Data</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Song lyrics, plain and with timestamps, plus search and a lookup of the line playing at a given second.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">6</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">on npm</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:library relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>books</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Data</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Book catalog search and public domain full text from library and archive providers.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">5</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><span class="inline-flex min-w-0 items-baseline gap-2 text-muted"><span class="iconify i-lucide:book-open relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>wiki</span></span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Agents</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Structured wiki toolkit for agents and humans. Page elements, ingesting a repo, search, lint and reference health.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">1</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-dimmed">in progress</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--[--><tr data-selected="false" data-selectable="false" data-expanded="false" data-slot="tr" class="data-[selected=true]:bg-elevated/50" style=""><!--[--><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full" style=""><!--[--><a href="/libraries/ox" class="inline-flex min-w-0 gap-2 text-highlighted hover:text-(--console-accent) items-baseline"><span class="iconify i-lucide:wrench relative top-0.5 size-3.5 flex-none" aria-hidden="true" style=""></span><span>ox</span></a>
97<!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-start!" style=""><!--[--><span class="inline-block max-w-full truncate px-[5px] py-px text-[10px] leading-[1.4] tracking-[0.08em] text-muted shadow-[inset_0_0_0_1px_var(--console-line)]">Code</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-3" style=""><!--[--><span class="min-w-0 font-sans text-[13px] leading-normal text-muted">Shared oxlint and oxfmt policy every agntn repo consumes. Lint rules get decided once.</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full text-end @max-[52rem]/roster:order-2 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="whitespace-nowrap text-highlighted">2</span><!--]--></td><td data-pinned="false" data-slot="td" class="p-4 [&amp;:has([role=checkbox])]:pe-0 px-2 py-[9px] @min-[52rem]/roster:first:pl-5 @min-[52rem]/roster:last:pr-5 align-baseline text-xs text-inherit whitespace-normal @max-[52rem]/roster:block @max-[52rem]/roster:p-0 @max-[52rem]/roster:nth-2:justify-self-end @max-[52rem]/roster:nth-[n+3]:col-span-full @max-[52rem]/roster:order-1 @max-[52rem]/roster:col-span-1! @max-[52rem]/roster:justify-self-end" style=""><!--[--><span class="flex items-baseline gap-2.5 text-[11px] text-dimmed [overflow-wrap:anywhere]"><span class="h-1 min-w-4 flex-1 border-b border-dotted border-(--console-line) @max-[52rem]/roster:hidden" aria-hidden="true"></span><span class="whitespace-nowrap text-(--console-accent)">on npm</span></span><!--]--></td><!--]--></tr><!----><!--]--><!--]--><!--[--><!--]--><!--]--><!--[--><!--]--></tbody><!----></table></div><!--]--><footer class="flex flex-wrap items-center justify-between gap-x-4 gap-y-2 px-5 py-2.5 max-[400px]:px-3.5 text-[11px] tracking-[0.04em] text-muted border-t border-(--console-line)"><span>
9714 of 22 on npm</span><span class="normal-case tracking-[0.04em] text-dimmed">read from the catalogue / no network</span></footer></section></div><!--[--><!----><div data-orientation="horizontal" role="separator" data-slot="root" class="flex items-center align-center text-center w-full flex-row"><!--[--><!--[--><!----><div data-slot="border" class="border-default w-full border-solid border-t"></div><!--[--><div data-slot="container" class="font-medium text-default flex whitespace-nowrap mx-3"><!--[--><div class="flex items-center gap-2 text-sm text-muted"><a href="https://github.com/agntn/website/edit/main/content/2.libraries/0.index.md" rel="noopener noreferrer" target="_blank" data-slot="base" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-muted hover:text-default active:text-default disabled:text-muted aria-disabled:text-muted outline-inverted/25 focus-visible:outline-3"><!--[--><!--[--><span class="iconify i-lucide:pen shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[-->Edit this page<!--]--><!--[--><!----><!--]--><!--]--></a><!--[--><span>or</span><a href="https://github.com/agntn/website/issues/new/choose" rel="noopener noreferrer" target="_blank" data-slot="base" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-muted hover:text-default active:text-default disabled:text-muted aria-disabled:text-muted outline-inverted/25 focus-visible:outline-3"><!--[--><!--[--><span class="iconify i-lucide:alert-circle shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[-->Report an issue<!--]--><!--[--><!----><!--]--><!--]--></a><!--]--></div><!--]--></div><div data-slot="border" class="border-default w-full border-solid border-t"></div><!--]--><!----><!--]--><!--]--></div><!--]--><nav class="surround" aria-label="Previous and next page" data-v-ac94fe34><!--[--><!--[--><a href="/about/security" class="surround-card" data-direction="previous" data-v-ac94fe34><span class="console-cross surround-cross-tl" aria-hidden="true" data-v-ac94fe34>+</span><span class="console-cross surround-cross-br" aria-hidden="true" data-v-ac94fe34>+</span><span class="surround-strip" aria-hidden="true" data-v-ac94fe34><span class="surround-glyph" data-v-ac94fe34><span class="iconify i-lucide:arrow-left" aria-hidden="true" style="" data-v-ac94fe34></span></span></span><span class="surround-main" data-v-ac94fe34><span class="surround-bar" data-v-ac94fe34><span class="surround-tag" data-v-ac94fe34>previous</span><span class="surround-title" data-v-ac94fe34>Security</span><span class="console-mark" aria-hidden="true" data-v-ac94fe34></span></span><span class="console-ruler" aria-hidden="true" data-v-ac94fe34></span><span class="surround-body" data-v-ac94fe34><span class="surround-about" data-v-ac94fe34>Provider output is data, credentials stay in the environment, and nothing a provider returns is treated as an instruction.</span><span class="surround-path" data-v-ac94fe34>/about/security</span></span></span></a><!--]--><!--[--><a href="/libraries/web" class="surround-card" data-direction="next" data-v-ac94fe34><span class="console-cross surround-cross-tl" aria-hidden="true" data-v-ac94fe34>+</span><span class="console-cross surround-cross-br" aria-hidden="true" data-v-ac94fe34>+</span><span class="surround-strip" aria-hidden="true" data-v-ac94fe34><span class="surround-glyph" data-v-ac94fe34><span class="iconify i-lucide:arrow-right" aria-hidden="true" style="" data-v-ac94fe34></span></span></span><span class="surround-main" data-v-ac94fe34><span class="surround-bar" data-v-ac94fe34><span class="surround-tag" data-v-ac94fe34>next</span><span class="surround-title" data-v-ac94fe34>web</span><span class="console-mark" aria-hidden="true" data-v-ac94fe34></span></span><span class="console-ruler" aria-hidden="true" data-v-ac94fe34></span><span class="surround-body" data-v-ac94fe34><span class="surround-about" data-v-ac94fe34>Web search, reverse image search and page reading over Brave, Exa, Tavily, Firecrawl, Jina, SearXNG and six more.</span><span class="surround-path" data-v-ac94fe34>/libraries/web</span></span></span></a>
97<!--]--><!--]--></nav><!--]--></div><!--]--></div><div class="docs-aside order-first lg:order-last lg:col-span-1" data-slot="right" data-v-f5c59eeb><!----><!----></div></div><!--]--><!--]--></div><!----></div><!--]--></div><!--]--></main><footer data-slot="root"><!----><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 py-8 lg:py-4 lg:flex lg:items-center lg:justify-between lg:gap-x-3" data-slot="container"><!--[--><div data-slot="right" class="lg:flex-1 flex items-center justify-center lg:justify-end gap-x-1.5 lg:order-3"><!--[--><!--[--><!--[--><a href="https://github.com/agntn" rel="noopener noreferrer" target="_blank" data-slot="base" aria-label="github social link" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated outline-inverted/25 focus-visible:outline-3 hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a><a href="https://www.npmjs.com/org/agntn" rel="noopener noreferrer" target="_blank" data-slot="base" aria-label="npm social link" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated outline-inverted/25 focus-visible:outline-3 hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:npm shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a><a href="https://github.com/agntn/website" rel="noopener noreferrer" target="_blank" data-slot="base" aria-label="GitHub repository" class="inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 h-9 rounded-lg font-medium cursor-pointer transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated outline-inverted/25 focus-visible:outline-3 hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!----><!--]--><!--]--></div><div data-slot="center" class="mt-3 lg:mt-0 lg:order-2 flex items-center justify-center"><!--[--><!--]--></div><div data-slot="left" class="flex items-center justify-center lg:justify-start lg:flex-1 gap-x-1.5 mt-3 lg:mt-0 lg:order-1"><!--[--><div class="footer-left" data-v-4957ec37><p class="console-id footer-id" data-v-4957ec37><span class="console-id-tag" data-v-4957ec37>ID</span><span data-v-4957ec37>agntn</span><span class="console-id-sep" aria-hidden="true" data-v-4957ec37>/</span><span data-v-4957ec37>22 libraries</span><a href="https://www.npmjs.com/org/agntn" target="_blank" rel="noopener" class="footer-link" data-v-4957ec37>@agntn on npm</a></p><p class="footer-note" data-v-4957ec37> Provider responses are data you didn&#39;t write. Every library hands them back as typed values, never as instructions. </p></div><!--]--></div><!--]--></div><!----></footer><span></span></div><!----></div><!--]--><!--]--><!--[--><!--]--><!--v-if--><!--]--><!--[--><!--]--><!--]--><!--]--></div><div id="teleports"></div>
97<script>window.__NUXT_SITE_CONFIG__={_priority:{env:-15,url:0,name:-3},env:"production",name:"agntn",url:"https:\u002F\u002Fagntn.dev"}</script>
97<script>window.__NUXT__={};window.__NUXT__.config={public:{mcp:{route:"/mcp"},assistant:{enabled:false,apiPath:"/__docus__/assistant"},mdc:{components:{prose:true,map:{accordion:"ProseAccordion","accordion-item":"ProseAccordionItem",badge:"ProseBadge",callout:"ProseCallout",card:"ProseCard","card-group":"ProseCardGroup",caution:"ProseCaution","code-collapse":"ProseCodeCollapse","code-group":"ProseCodeGroup","code-icon":"ProseCodeIcon","code-preview":"ProseCodePreview","code-tree":"ProseCodeTree",collapsible:"ProseCollapsible",field:"ProseField","field-group":"ProseFieldGroup",icon:"ProseIcon",kbd:"ProseKbd",note:"ProseNote",prompt:"ProsePrompt",steps:"ProseSteps",tabs:"ProseTabs","tabs-item":"ProseTabsItem",tip:"ProseTip",warning:"ProseWarning"},customElements:[]},headings:{anchorLinks:{h1:false,h2:true,h3:true,h4:true,h5:false,h6:false}},highlight:{noApiRoute:true,theme:{light:{name:"agntn",type:"dark",colors:{"editor.foreground":"var(--ui-text-highlighted)","editor.background":"transparent"},settings:[{settings:{foreground:"var(--ui-text-highlighted)",background:"transparent"}},{scope:["keyword","storage.type","storage.modifier","keyword.control","keyword.operator.new"],settings:{foreground:"var(--shiki-token-keyword)"}},{scope:["entity.name.function","support.function","meta.function-call entity.name.function","entity.name.type","support.type"],settings:{foreground:"var(--shiki-token-function)"}},{scope:["string","string.quoted","string.template","punctuation.definition.string"],settings:{foreground:"var(--shiki-token-string)"}},{scope:["comment","punctuation.definition.comment","string.quoted.docstring.multi"],settings:{foreground:"var(--shiki-token-comment)"}},{scope:["markup.inserted","punctuation.definition.inserted"],settings:{foreground:"var(--shiki-token-string)"}},{scope:["markup.deleted","punctuation.definition.deleted"],settings:{foreground:"var(--org-del)"}}]},default:{name:"agntn",type:"dark",colors:{"editor.foreground":"var(--ui-text-highlighted)","editor.background":"transparent"},settings:[{settings:{foreground:"var(--ui-text-highlighted)",background:"transparent"}},{scope:["keyword","storage.type","storage.modifier","keyword.control","keyword.operator.new"],settings:{foreground:"var(--shiki-token-keyword)"}},{scope:["entity.name.function","support.function","meta.function-call entity.name.function","entity.name.type","support.type"],settings:{foreground:"var(--shiki-token-function)"}},{scope:["string","string.quoted","string.template","punctuation.definition.string"],settings:{foreground:"var(--shiki-token-string)"}},{scope:["comment","punctuation.definition.comment","string.quoted.docstring.multi"],settings:{foreground:"var(--shiki-token-comment)"}},{scope:["markup.inserted","punctuation.definition.inserted"],settings:{foreground:"var(--shiki-token-string)"}},{scope:["markup.deleted","punctuation.definition.deleted"],settings:{foreground:"var(--org-del)"}}]},dark:{name:"agntn",type:"dark",colors:{"editor.foreground":"var(--ui-text-highlighted)","editor.background":"transparent"},settings:[{settings:{foreground:"var(--ui-text-highlighted)",background:"transparent"}},{scope:["keyword","storage.type","storage.modifier","keyword.control","keyword.operator.new"],settings:{foreground:"var(--shiki-token-keyword)"}},{scope:["entity.name.function","support.function","meta.function-call entity.name.function","entity.name.type","support.type"],settings:{foreground:"var(--shiki-token-function)"}},{scope:["string","string.quoted","string.template","punctuation.definition.string"],settings:{foreground:"var(--shiki-token-string)"}},{scope:["comment","punctuation.definition.comment","string.quoted.docstring.multi"],settings:{foreground:"var(--shiki-token-comment)"}},{scope:["markup.inserted","punctuation.definition.inserted"],settings:{foreground:"var(--shiki-token-string)"}},{scope:["markup.deleted","punctuation.definition.deleted"],settings:{foreground:"var(--org-del)"}}]}},shikiEngine:"javascript",langs:["bash","diff","json","js","ts","html","css","vue","shell","mdc","md","yaml"],highlighter:"shiki"}},content:{wsUrl:""},"nuxt-robots":{version:"6.2.0",isNuxtContentV2:false,debug:false,credits:true,groups:[{userAgent:["*"],allow:["/"],disallow:[],contentUsage:[],contentSignal:[],_indexable:true,_rules:[{pattern:"/",allow:true}],_normalized:true}],sitemap:["/sitemap.xml"],header:true,robotsEnabledValue:"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1",robotsDisabledValue:"noindex, nofollow",cacheControl:"max-age=14400, must-revalidate",botDetection:true,pageMetaRobots:{}},"nuxt-og-image":{defaults:{emojis:"noto",extension:"png",width:1200,height:600,cacheMaxAgeSeconds:259200,alt:"agntn: one interface, every provider"},hasServerRuntime:true}},app:{baseURL:"/",buildId:"9fcaeed0-9952-4d69-babc-fdc416dfe34a",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script>
97<script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__" data-src="/libraries/_payload.json?_b=9fcaeed0-9952-4d69-babc-fdc416dfe34a">[{"state":1,"once":15,"_errors":16,"serverRendered":5,"path":18,"prerenderedAt":19},["Reactive",2],{"$scolor-mode":3,"$stoasts":6,"$ssite-config":7},{"preference":4,"value":4,"unknown":5,"forced":5},"dark",true,[],{"_priority":8,"env":12,"name":13,"url":14},{"env":9,"url":10,"name":11},-15,0,-3,"production","agntn","https:\u002F\u002Fagntn.dev",["Set"],["ShallowReactive",17],{"navigation_docs":-1,"-libraries":-1,"-libraries-surround":-1},"\u002Flibraries",1790597893009]</script>
97<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"8c98a466be6b4418a69bb3647295e4e0","r":1,"spa":2}' crossorigin="anonymous"></script>
97
98</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.