@oobe-protocol-labs/sap-mcp-server 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.env.example +30 -0
  2. package/CHANGELOG.md +43 -2
  3. package/README.md +19 -2
  4. package/USER_DOCS/00_START_HERE.md +1 -0
  5. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +17 -3
  6. package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
  7. package/USER_DOCS/05_SKILLS_AND_TOOLS.md +27 -3
  8. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
  9. package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +163 -0
  10. package/assets/logos/claude.png +0 -0
  11. package/assets/logos/codex.webp +0 -0
  12. package/assets/logos/hermes.png +0 -0
  13. package/assets/logos/openclaw.svg +22 -0
  14. package/config.schema.json +5 -0
  15. package/dist/config/env.d.ts +4 -0
  16. package/dist/config/env.d.ts.map +1 -1
  17. package/dist/config/env.js +3 -0
  18. package/dist/config/env.js.map +1 -1
  19. package/dist/core/constants.d.ts +6 -1
  20. package/dist/core/constants.d.ts.map +1 -1
  21. package/dist/core/constants.js +14 -1
  22. package/dist/core/constants.js.map +1 -1
  23. package/dist/payments/pricing.d.ts +1 -1
  24. package/dist/payments/pricing.d.ts.map +1 -1
  25. package/dist/payments/pricing.js +20 -3
  26. package/dist/payments/pricing.js.map +1 -1
  27. package/dist/policy/local-policy-engine.js +1 -1
  28. package/dist/policy/local-policy-engine.js.map +1 -1
  29. package/dist/prompts/context/sap-agent-context.prompt.js +6 -0
  30. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  31. package/dist/prompts/context/sap-agent-start.prompt.d.ts +14 -0
  32. package/dist/prompts/context/sap-agent-start.prompt.d.ts.map +1 -0
  33. package/dist/prompts/context/sap-agent-start.prompt.js +96 -0
  34. package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -0
  35. package/dist/prompts/developer/generate-sap-integration.prompt.js +1 -1
  36. package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
  37. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
  38. package/dist/prompts/payments/explain-x402-settlement.prompt.js +13 -10
  39. package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
  40. package/dist/prompts/register-prompts.d.ts.map +1 -1
  41. package/dist/prompts/register-prompts.js +3 -1
  42. package/dist/prompts/register-prompts.js.map +1 -1
  43. package/dist/remote/public-home/index.d.ts.map +1 -1
  44. package/dist/remote/public-home/index.js +2 -1
  45. package/dist/remote/public-home/index.js.map +1 -1
  46. package/dist/remote/public-home/scripts.d.ts +1 -1
  47. package/dist/remote/public-home/scripts.d.ts.map +1 -1
  48. package/dist/remote/public-home/scripts.js +29 -0
  49. package/dist/remote/public-home/scripts.js.map +1 -1
  50. package/dist/remote/public-home/sections.d.ts +5 -0
  51. package/dist/remote/public-home/sections.d.ts.map +1 -1
  52. package/dist/remote/public-home/sections.js +73 -6
  53. package/dist/remote/public-home/sections.js.map +1 -1
  54. package/dist/remote/public-home/styles.d.ts +1 -1
  55. package/dist/remote/public-home/styles.d.ts.map +1 -1
  56. package/dist/remote/public-home/styles.js +460 -16
  57. package/dist/remote/public-home/styles.js.map +1 -1
  58. package/dist/remote/rate-limiter.d.ts +2 -0
  59. package/dist/remote/rate-limiter.d.ts.map +1 -1
  60. package/dist/remote/rate-limiter.js +23 -0
  61. package/dist/remote/rate-limiter.js.map +1 -1
  62. package/dist/remote/server.d.ts +70 -1
  63. package/dist/remote/server.d.ts.map +1 -1
  64. package/dist/remote/server.js +412 -15
  65. package/dist/remote/server.js.map +1 -1
  66. package/dist/runtime/module-resolution.d.ts.map +1 -1
  67. package/dist/runtime/module-resolution.js +41 -8
  68. package/dist/runtime/module-resolution.js.map +1 -1
  69. package/dist/schemas/settlement.schema.d.ts +2 -2
  70. package/dist/security/tool-permissions.d.ts.map +1 -1
  71. package/dist/security/tool-permissions.js +1 -6
  72. package/dist/security/tool-permissions.js.map +1 -1
  73. package/dist/server/create-server.d.ts.map +1 -1
  74. package/dist/server/create-server.js +2 -1
  75. package/dist/server/create-server.js.map +1 -1
  76. package/dist/tools/agent-start-tool.d.ts +12 -0
  77. package/dist/tools/agent-start-tool.d.ts.map +1 -0
  78. package/dist/tools/agent-start-tool.js +156 -0
  79. package/dist/tools/agent-start-tool.js.map +1 -0
  80. package/dist/tools/client-sdk-tools.d.ts +7 -0
  81. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  82. package/dist/tools/client-sdk-tools.js +80 -4
  83. package/dist/tools/client-sdk-tools.js.map +1 -1
  84. package/dist/tools/index.d.ts +1 -0
  85. package/dist/tools/index.d.ts.map +1 -1
  86. package/dist/tools/index.js +3 -1
  87. package/dist/tools/index.js.map +1 -1
  88. package/dist/tools/register-tools.d.ts.map +1 -1
  89. package/dist/tools/register-tools.js +5 -1
  90. package/dist/tools/register-tools.js.map +1 -1
  91. package/dist/tools/sap-sdk-tools.d.ts +2 -2
  92. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  93. package/dist/tools/sap-sdk-tools.js +111 -108
  94. package/dist/tools/sap-sdk-tools.js.map +1 -1
  95. package/dist/tools/sap-sns-tools.d.ts +4 -4
  96. package/dist/tools/sap-sns-tools.js +4 -4
  97. package/dist/tools/skills-tools.js +1 -1
  98. package/dist/tools/skills-tools.js.map +1 -1
  99. package/docs/05_REMOTE_VPS_DEPLOYMENT.md +32 -0
  100. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +11 -0
  101. package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
  102. package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +42 -11
  103. package/docs/14_DESKTOP_WIZARD_RELEASE.md +1 -1
  104. package/docs/README.md +6 -3
  105. package/docs/_sidebar.md +1 -0
  106. package/package.json +3 -2
  107. package/server.json +3 -3
  108. package/skills/README.md +2 -2
  109. package/skills/sap-escrow-settlement/SKILL.md +15 -11
  110. package/skills/sap-mcp/SKILL.md +26 -11
  111. package/skills/sap-mcp/TOOL_REFERENCE.md +6 -5
  112. package/skills/sap-operations/SKILL.md +6 -7
  113. package/smithery.config.schema.json +59 -0
@@ -28,6 +28,9 @@ export const LANDING_CSS = `
28
28
  }
29
29
 
30
30
  * { box-sizing: border-box; }
31
+ img, svg, video, canvas {
32
+ max-width: 100%;
33
+ }
31
34
  html { scroll-behavior: smooth; }
32
35
  body {
33
36
  margin: 0;
@@ -54,6 +57,9 @@ export const LANDING_CSS = `
54
57
  }
55
58
 
56
59
  a { color: inherit; }
60
+ code, pre {
61
+ max-width: 100%;
62
+ }
57
63
  a:focus-visible, button:focus-visible {
58
64
  outline: 2px solid var(--aqua);
59
65
  outline-offset: 3px;
@@ -91,6 +97,11 @@ export const LANDING_CSS = `
91
97
  box-shadow: 0 18px 44px rgba(0, 0, 0, .28);
92
98
  backdrop-filter: blur(18px);
93
99
  }
100
+ .mobile-nav-toggle,
101
+ .mobile-nav-backdrop,
102
+ .mobile-nav-panel {
103
+ display: none;
104
+ }
94
105
  .brand {
95
106
  display: inline-flex;
96
107
  align-items: center;
@@ -98,6 +109,18 @@ export const LANDING_CSS = `
98
109
  min-width: 0;
99
110
  text-decoration: none;
100
111
  }
112
+ .brand > span,
113
+ .nav-menu-link span,
114
+ .download-action span,
115
+ .download-card span,
116
+ .card,
117
+ .metric,
118
+ .feature,
119
+ .bento-card,
120
+ .protocol-card,
121
+ .registry-card {
122
+ min-width: 0;
123
+ }
101
124
  .brand img {
102
125
  width: 42px;
103
126
  height: 42px;
@@ -259,6 +282,7 @@ export const LANDING_CSS = `
259
282
  display: flex;
260
283
  gap: 8px;
261
284
  align-items: center;
285
+ min-width: 0;
262
286
  }
263
287
  .nav-install {
264
288
  gap: 8px;
@@ -285,6 +309,145 @@ export const LANDING_CSS = `
285
309
  color: #061517;
286
310
  background: var(--aqua);
287
311
  }
312
+ .mobile-nav-toggle,
313
+ .mobile-nav-close {
314
+ appearance: none;
315
+ border: 1px solid rgba(255, 255, 255, .12);
316
+ color: var(--ink);
317
+ background: rgba(255, 255, 255, .045);
318
+ }
319
+ .mobile-nav-toggle {
320
+ width: 44px;
321
+ height: 44px;
322
+ border-radius: 15px;
323
+ place-items: center;
324
+ gap: 2px;
325
+ padding: 0;
326
+ }
327
+ .mobile-nav-toggle span {
328
+ display: block;
329
+ width: 18px;
330
+ height: 2px;
331
+ border-radius: 99px;
332
+ background: var(--ink);
333
+ transition: transform .18s ease, opacity .18s ease;
334
+ }
335
+ .mobile-nav-close {
336
+ display: grid;
337
+ place-items: center;
338
+ width: 42px;
339
+ height: 42px;
340
+ border-radius: 14px;
341
+ font-size: 28px;
342
+ line-height: 1;
343
+ }
344
+ .mobile-nav-backdrop {
345
+ position: fixed;
346
+ inset: 0;
347
+ z-index: 60;
348
+ background: rgba(0, 0, 0, .48);
349
+ backdrop-filter: blur(5px);
350
+ -webkit-backdrop-filter: blur(5px);
351
+ opacity: 0;
352
+ pointer-events: none;
353
+ transition: opacity .18s ease;
354
+ }
355
+ .mobile-nav-panel {
356
+ position: fixed;
357
+ inset: 10px 10px 10px auto;
358
+ z-index: 70;
359
+ width: min(390px, calc(100vw - 20px));
360
+ border: 1px solid rgba(255, 255, 255, .12);
361
+ border-radius: 26px;
362
+ padding: 14px;
363
+ overflow: auto;
364
+ background:
365
+ linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.035)),
366
+ rgba(8, 16, 17, .94);
367
+ box-shadow: 0 28px 80px rgba(0, 0, 0, .5);
368
+ backdrop-filter: blur(24px);
369
+ -webkit-backdrop-filter: blur(24px);
370
+ transform: translateX(calc(100% + 20px));
371
+ transition: transform .2s cubic-bezier(.2, .8, .2, 1);
372
+ }
373
+ .mobile-nav-head {
374
+ display: flex;
375
+ align-items: center;
376
+ justify-content: space-between;
377
+ gap: 12px;
378
+ padding-bottom: 14px;
379
+ border-bottom: 1px solid rgba(255, 255, 255, .1);
380
+ }
381
+ .mobile-nav-primary {
382
+ display: grid;
383
+ grid-template-columns: 1fr 1fr;
384
+ gap: 9px;
385
+ margin: 14px 0;
386
+ }
387
+ .mobile-nav-primary .primary {
388
+ grid-column: 1 / -1;
389
+ }
390
+ .mobile-nav-group {
391
+ display: grid;
392
+ gap: 8px;
393
+ margin-top: 16px;
394
+ }
395
+ .mobile-nav-group p {
396
+ margin: 0;
397
+ color: var(--aqua);
398
+ font-size: 12px;
399
+ font-weight: 900;
400
+ text-transform: uppercase;
401
+ }
402
+ .mobile-nav-link {
403
+ display: grid;
404
+ grid-template-columns: 1fr auto;
405
+ gap: 12px;
406
+ align-items: center;
407
+ min-width: 0;
408
+ border: 1px solid rgba(255, 255, 255, .09);
409
+ border-radius: 16px;
410
+ padding: 12px;
411
+ color: var(--ink);
412
+ text-decoration: none;
413
+ background: rgba(255, 255, 255, .04);
414
+ }
415
+ .mobile-nav-link:hover {
416
+ border-color: rgba(40, 216, 232, .34);
417
+ background: rgba(40, 216, 232, .075);
418
+ }
419
+ .mobile-nav-link strong,
420
+ .mobile-nav-link small {
421
+ display: block;
422
+ }
423
+ .mobile-nav-link small {
424
+ margin-top: 4px;
425
+ color: var(--subtle);
426
+ font-size: 12px;
427
+ line-height: 1.35;
428
+ }
429
+ .mobile-nav-link b {
430
+ color: var(--aqua);
431
+ }
432
+ html.mobile-nav-open {
433
+ overflow: hidden;
434
+ }
435
+ html.mobile-nav-open .mobile-nav-backdrop {
436
+ opacity: 1;
437
+ pointer-events: auto;
438
+ }
439
+ html.mobile-nav-open .mobile-nav-panel {
440
+ transform: translateX(0);
441
+ }
442
+ html.mobile-nav-open .mobile-nav-toggle span:nth-child(1) {
443
+ transform: translateY(4px) rotate(45deg);
444
+ }
445
+ html.mobile-nav-open .mobile-nav-toggle span:nth-child(2) {
446
+ opacity: 0;
447
+ }
448
+ html.mobile-nav-open .mobile-nav-toggle span:nth-child(3) {
449
+ transform: translateY(-4px) rotate(-45deg);
450
+ }
288
451
  .version-pill {
289
452
  border: 1px solid rgba(255, 255, 255, .12);
290
453
  border-radius: 999px;
@@ -295,6 +458,54 @@ export const LANDING_CSS = `
295
458
  white-space: nowrap;
296
459
  }
297
460
 
461
+ .runtime-logo-strip {
462
+ width: min(calc(100% - 32px), var(--content));
463
+ margin: 12px auto 0;
464
+ overflow: hidden;
465
+ }
466
+ .runtime-logo-rail {
467
+ position: relative;
468
+ overflow: hidden;
469
+ border: 1px solid rgba(255, 255, 255, .1);
470
+ border-radius: 999px;
471
+ padding: 8px;
472
+ background: rgba(255, 255, 255, .035);
473
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
474
+ mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
475
+ }
476
+ .runtime-logo-rail div {
477
+ display: flex;
478
+ width: max-content;
479
+ gap: 8px;
480
+ animation: runtimeRail 34s linear infinite;
481
+ }
482
+ .runtime-logo-item {
483
+ display: inline-flex;
484
+ align-items: center;
485
+ gap: 10px;
486
+ min-height: 44px;
487
+ border: 1px solid rgba(40, 216, 232, .16);
488
+ border-radius: 999px;
489
+ padding: 7px 16px 7px 8px;
490
+ color: var(--ink);
491
+ background: rgba(8, 18, 19, .72);
492
+ white-space: nowrap;
493
+ }
494
+ .runtime-logo-item img {
495
+ flex: 0 0 auto;
496
+ width: 30px;
497
+ height: 30px;
498
+ border: 1px solid rgba(40, 216, 232, .24);
499
+ border-radius: 999px;
500
+ background: rgba(40, 216, 232, .08);
501
+ object-fit: contain;
502
+ padding: 2px;
503
+ }
504
+ .runtime-logo-item strong {
505
+ font-size: 13px;
506
+ line-height: 1;
507
+ }
508
+
298
509
  .page-shell {
299
510
  width: min(calc(100% - 32px), var(--content));
300
511
  margin: 0 auto;
@@ -308,6 +519,9 @@ export const LANDING_CSS = `
308
519
  align-items: center;
309
520
  padding: 78px 0 52px;
310
521
  }
522
+ .hero > * {
523
+ min-width: 0;
524
+ }
311
525
  .hero-copy { align-self: center; }
312
526
  .eyebrow {
313
527
  margin: 0 0 18px;
@@ -490,6 +704,9 @@ export const LANDING_CSS = `
490
704
  gap: 58px;
491
705
  align-items: start;
492
706
  }
707
+ .bento-stack > * {
708
+ min-width: 0;
709
+ }
493
710
  .bento-sticky-copy {
494
711
  position: sticky;
495
712
  top: 112px;
@@ -886,6 +1103,10 @@ export const LANDING_CSS = `
886
1103
  from { transform: translateX(0); }
887
1104
  to { transform: translateX(-50%); }
888
1105
  }
1106
+ @keyframes runtimeRail {
1107
+ from { transform: translateX(0); }
1108
+ to { transform: translateX(-33.333%); }
1109
+ }
889
1110
 
890
1111
  .registry-section {
891
1112
  padding-top: 94px;
@@ -1313,6 +1534,7 @@ export const LANDING_CSS = `
1313
1534
  .doc-tile,
1314
1535
  .protocol-card,
1315
1536
  .protocol-logo-rail div,
1537
+ .runtime-logo-rail div,
1316
1538
  .registry-card {
1317
1539
  animation: none;
1318
1540
  transition: none;
@@ -1329,7 +1551,9 @@ export const LANDING_CSS = `
1329
1551
  justify-content: stretch;
1330
1552
  overflow-x: auto;
1331
1553
  padding-bottom: 2px;
1554
+ scrollbar-width: none;
1332
1555
  }
1556
+ .nav-center::-webkit-scrollbar { display: none; }
1333
1557
  .nav-center > * {
1334
1558
  flex: 0 0 auto;
1335
1559
  }
@@ -1400,6 +1624,9 @@ export const LANDING_CSS = `
1400
1624
  min-height: 680px;
1401
1625
  margin: 36px 0 0;
1402
1626
  }
1627
+ .machine-part {
1628
+ width: min(230px, 34vw);
1629
+ }
1403
1630
  .docs-grid {
1404
1631
  grid-template-columns: repeat(2, minmax(0, 1fr));
1405
1632
  }
@@ -1415,10 +1642,91 @@ export const LANDING_CSS = `
1415
1642
 
1416
1643
  @media (max-width: 640px) {
1417
1644
  .page-shell,
1418
- .site-nav {
1645
+ .site-nav,
1646
+ .runtime-logo-strip {
1419
1647
  width: min(calc(100% - 24px), var(--content));
1420
1648
  }
1421
- h1 { font-size: 42px; }
1649
+ .site-nav {
1650
+ grid-template-columns: 1fr auto;
1651
+ align-items: center;
1652
+ top: 8px;
1653
+ margin-top: 8px;
1654
+ padding: 10px;
1655
+ border-radius: 22px;
1656
+ gap: 10px;
1657
+ }
1658
+ .nav-center,
1659
+ .nav-actions {
1660
+ display: none;
1661
+ }
1662
+ .mobile-nav-toggle,
1663
+ .mobile-nav-backdrop,
1664
+ .mobile-nav-panel {
1665
+ display: grid;
1666
+ }
1667
+ .mobile-nav-backdrop {
1668
+ display: block;
1669
+ }
1670
+ .mobile-nav-panel {
1671
+ display: block;
1672
+ }
1673
+ .brand img {
1674
+ width: 38px;
1675
+ height: 38px;
1676
+ border-radius: 11px;
1677
+ }
1678
+ .brand strong {
1679
+ font-size: 14px;
1680
+ }
1681
+ .brand span span {
1682
+ font-size: 11px;
1683
+ }
1684
+ .nav-pill,
1685
+ .nav-dropdown summary,
1686
+ .nav-actions a,
1687
+ .button {
1688
+ min-height: 40px;
1689
+ padding: 9px 12px;
1690
+ font-size: 13px;
1691
+ }
1692
+ .version-pill {
1693
+ padding: 8px 10px;
1694
+ font-size: 12px;
1695
+ }
1696
+ .nav-menu {
1697
+ width: calc(100vw - 28px);
1698
+ max-height: min(68vh, 480px);
1699
+ border-radius: 18px;
1700
+ }
1701
+ .runtime-logo-rail {
1702
+ border-radius: 999px;
1703
+ padding: 7px;
1704
+ mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
1705
+ }
1706
+ .runtime-logo-rail div {
1707
+ width: max-content;
1708
+ flex-wrap: nowrap;
1709
+ animation: runtimeRail 30s linear infinite;
1710
+ }
1711
+ .runtime-logo-item {
1712
+ flex: 0 0 auto;
1713
+ justify-content: flex-start;
1714
+ min-height: 38px;
1715
+ padding: 6px 13px 6px 7px;
1716
+ font-size: 13px;
1717
+ }
1718
+ .runtime-logo-item img {
1719
+ width: 26px;
1720
+ height: 26px;
1721
+ }
1722
+ .runtime-logo-item strong {
1723
+ font-size: 12px;
1724
+ }
1725
+ h1 {
1726
+ max-width: 12ch;
1727
+ font-size: 42px;
1728
+ line-height: .92;
1729
+ }
1422
1730
  .section h2 { font-size: 34px; }
1423
1731
  .lead { font-size: 18px; }
1424
1732
  .hero {
@@ -1431,32 +1739,85 @@ export const LANDING_CSS = `
1431
1739
  width: 100%;
1432
1740
  }
1433
1741
  .hero-visual {
1434
- min-height: 500px;
1742
+ min-height: 410px;
1435
1743
  border-radius: 24px;
1436
1744
  }
1745
+ .terminal-strip {
1746
+ left: 14px;
1747
+ right: 14px;
1748
+ top: 14px;
1749
+ }
1750
+ .terminal-strip code {
1751
+ max-width: 170px;
1752
+ overflow: hidden;
1753
+ text-overflow: ellipsis;
1754
+ white-space: nowrap;
1755
+ }
1437
1756
  .orbital-engine {
1438
- inset: 78px 12px 132px;
1757
+ inset: 76px 10px 104px;
1439
1758
  }
1440
- .orbit-chip {
1441
- width: 92px;
1442
- padding: 10px;
1443
- font-size: 12px;
1759
+ .orbit {
1760
+ width: min(66%, 280px);
1761
+ }
1762
+ .orbit-b {
1763
+ width: min(50%, 220px);
1764
+ }
1765
+ .orbit-c {
1766
+ width: min(34%, 160px);
1767
+ }
1768
+ .orbit-core {
1769
+ width: 112px;
1770
+ height: 112px;
1771
+ border-radius: 26px;
1444
1772
  }
1445
- .chip-a,
1446
- .chip-c {
1447
- left: 4%;
1773
+ .orbit-core img {
1774
+ width: 42px;
1775
+ height: 42px;
1776
+ border-radius: 13px;
1448
1777
  }
1449
- .chip-b,
1450
- .chip-d {
1451
- right: 4%;
1778
+ .orbit-core strong {
1779
+ font-size: 22px;
1780
+ }
1781
+ .orbit-chip {
1782
+ display: none;
1452
1783
  }
1453
1784
  .hero-bento-mini {
1454
- grid-template-columns: 1fr;
1785
+ left: 14px;
1786
+ right: 14px;
1787
+ bottom: 14px;
1788
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1789
+ gap: 8px;
1790
+ }
1791
+ .hero-bento-mini div {
1792
+ border-radius: 13px;
1793
+ padding: 10px;
1794
+ }
1795
+ .hero-bento-mini span {
1796
+ font-size: 9px;
1797
+ }
1798
+ .hero-bento-mini strong {
1799
+ font-size: 18px;
1455
1800
  }
1456
1801
  .bento-header h2,
1457
1802
  .docs-launchpad h2,
1458
- .machine-copy h2 {
1803
+ .machine-copy h2,
1804
+ .bento-sticky-copy h2 {
1459
1805
  font-size: 38px;
1806
+ line-height: .95;
1807
+ }
1808
+ .bento-sticky-copy {
1809
+ padding-bottom: 0;
1810
+ }
1811
+ .bento-card,
1812
+ .protocol-card {
1813
+ min-height: 230px;
1814
+ border-radius: 22px;
1815
+ padding: 18px;
1816
+ }
1817
+ .bento-card h3,
1818
+ .protocol-card strong {
1819
+ font-size: 30px;
1820
+ line-height: 1;
1460
1821
  }
1461
1822
  .machine-stage {
1462
1823
  display: grid;
@@ -1490,6 +1851,22 @@ export const LANDING_CSS = `
1490
1851
  .registry-card {
1491
1852
  grid-template-columns: 1fr;
1492
1853
  }
1854
+ .registry-card {
1855
+ grid-template-columns: 56px 1fr;
1856
+ border-radius: 22px;
1857
+ }
1858
+ .registry-logo {
1859
+ width: 56px;
1860
+ height: 56px;
1861
+ border-radius: 18px;
1862
+ }
1863
+ .registry-logo img {
1864
+ width: 34px;
1865
+ height: 34px;
1866
+ }
1867
+ .registry-status {
1868
+ grid-column: 1 / -1;
1869
+ }
1493
1870
  .protocol-logo-rail {
1494
1871
  width: min(210px, 54%);
1495
1872
  }
@@ -1529,6 +1906,73 @@ export const LANDING_CSS = `
1529
1906
  .download-card {
1530
1907
  min-height: 96px;
1531
1908
  }
1909
+ .endpoint-row {
1910
+ grid-template-columns: 44px minmax(0, 1fr);
1911
+ gap: 9px;
1912
+ }
1913
+ .method-badge {
1914
+ min-width: 40px;
1915
+ height: 24px;
1916
+ padding: 0 7px;
1917
+ font-size: 9px;
1918
+ }
1919
+ .footer {
1920
+ padding: 48px 0 34px;
1921
+ font-size: 14px;
1922
+ }
1923
+ .footer-grid {
1924
+ gap: 20px;
1925
+ padding-top: 18px;
1926
+ }
1927
+ .footer strong {
1928
+ font-size: 15px;
1929
+ }
1930
+ .footer p {
1931
+ margin-bottom: 0;
1932
+ font-size: 14px;
1933
+ line-height: 1.45;
1934
+ }
1935
+ .footer a {
1936
+ padding: 4px 0;
1937
+ font-size: 14px;
1938
+ line-height: 1.35;
1939
+ }
1940
+ }
1941
+
1942
+ @media (max-width: 420px) {
1943
+ .hero-actions,
1944
+ .inline-actions {
1945
+ gap: 8px;
1946
+ }
1947
+ h1 {
1948
+ font-size: 36px;
1949
+ }
1950
+ .lead {
1951
+ font-size: 16px;
1952
+ }
1953
+ .hero-visual {
1954
+ min-height: 388px;
1955
+ }
1956
+ .terminal-strip code {
1957
+ max-width: 138px;
1958
+ }
1959
+ .section {
1960
+ padding: 64px 0;
1961
+ }
1962
+ .machine-section {
1963
+ padding-left: 12px;
1964
+ padding-right: 12px;
1965
+ }
1966
+ .download-action,
1967
+ .download-card {
1968
+ grid-template-columns: 42px 1fr;
1969
+ }
1970
+ .download-action .os-mark,
1971
+ .os-mark {
1972
+ width: 42px;
1973
+ height: 42px;
1974
+ border-radius: 13px;
1975
+ }
1532
1976
  }
1533
1977
  `;
1534
1978
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/remote/public-home/styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAw/C1B,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/remote/public-home/styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAo7D1B,CAAC"}
@@ -30,6 +30,7 @@ export declare class RemoteRateLimiter {
30
30
  private readonly config;
31
31
  private readonly localEntries;
32
32
  private readonly redis?;
33
+ private readonly cleanupInterval?;
33
34
  constructor(config: RemoteRateLimitConfig);
34
35
  /**
35
36
  * @name initialize
@@ -48,6 +49,7 @@ export declare class RemoteRateLimiter {
48
49
  close(): Promise<void>;
49
50
  private checkRedis;
50
51
  private checkLocal;
52
+ private cleanupLocal;
51
53
  }
52
54
  /**
53
55
  * @name buildRemoteRateLimitConfigFromEnv
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/remote/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAA6B;gBAEjC,MAAM,EAAE,qBAAqB;IAchD;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxC;;;OAGG;IACU,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAiBvE;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAIrB,UAAU;IAiBxB,OAAO,CAAC,UAAU;CAmBnB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,gBAAgB,EAAE,MAAM,GAAG,qBAAqB,CAajG"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/remote/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAiB;gBAE/B,MAAM,EAAE,qBAAqB;IAkBhD;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxC;;;OAGG;IACU,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAiBvE;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOrB,UAAU;IAiBxB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,YAAY;CAgBrB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,gBAAgB,EAAE,MAAM,GAAG,qBAAqB,CAajG"}
@@ -14,6 +14,7 @@ export class RemoteRateLimiter {
14
14
  config;
15
15
  localEntries = new Map();
16
16
  redis;
17
+ cleanupInterval;
17
18
  constructor(config) {
18
19
  this.config = config;
19
20
  if (config.redisUrl) {
@@ -25,7 +26,10 @@ export class RemoteRateLimiter {
25
26
  this.redis.on('error', (error) => {
26
27
  logger.warn('Remote rate limiter Redis error', { error });
27
28
  });
29
+ return;
28
30
  }
31
+ this.cleanupInterval = setInterval(() => this.cleanupLocal(), WINDOW_MS);
32
+ this.cleanupInterval.unref?.();
29
33
  }
30
34
  /**
31
35
  * @name initialize
@@ -61,6 +65,9 @@ export class RemoteRateLimiter {
61
65
  * @description Closes the optional Redis connection.
62
66
  */
63
67
  async close() {
68
+ if (this.cleanupInterval) {
69
+ clearInterval(this.cleanupInterval);
70
+ }
64
71
  await this.redis?.quit();
65
72
  }
66
73
  async checkRedis(clientKey) {
@@ -95,6 +102,22 @@ export class RemoteRateLimiter {
95
102
  resetSeconds,
96
103
  };
97
104
  }
105
+ cleanupLocal() {
106
+ const now = Date.now();
107
+ let cleaned = 0;
108
+ for (const [key, entry] of this.localEntries.entries()) {
109
+ if (entry.resetAt <= now) {
110
+ this.localEntries.delete(key);
111
+ cleaned += 1;
112
+ }
113
+ }
114
+ if (cleaned > 0) {
115
+ logger.debug('Remote rate limiter local cleanup', {
116
+ cleaned,
117
+ activeKeys: this.localEntries.size,
118
+ });
119
+ }
120
+ }
98
121
  }
99
122
  /**
100
123
  * @name buildRemoteRateLimitConfigFromEnv
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/remote/rate-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/remote/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA6B3C,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC;AAExC;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACX,MAAM,CAAwB;IAC9B,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;IACtD,KAAK,CAA8B;IACnC,eAAe,CAAkB;IAElD,YAAmB,MAA6B;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACtC,WAAW,EAAE,IAAI;gBACjB,oBAAoB,EAAE,CAAC;gBACvB,kBAAkB,EAAE,KAAK;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBACtC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,UAAU;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAK,CAAC,SAAiB;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,MAAM,CAAC,iBAAiB;gBAC/B,SAAS,EAAE,MAAM,CAAC,iBAAiB;gBACnC,YAAY,EAAE,cAAc;aAC7B,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,SAAiB;QACxC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;QAErE,OAAO;YACL,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAC/C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YACpC,SAAS;YACT,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc;SAC7C,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,SAAiB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,QAAQ,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO;YAC9C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC;QAC3C,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3E,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB;YACrD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YACpC,SAAS;YACT,YAAY;SACb,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE;gBAChD,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAAC,gBAAwB;IACxE,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/C,OAAO;QACL,OAAO;QACP,iBAAiB,EAAE,oBAAoB,CACrC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAChD,gBAAgB,CACjB;QACD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,wBAAwB,CAAC,CAAC,CAAC,SAAS;QACrE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,sBAAsB;KAClF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAuB,EAAE,QAAiB;IAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAuB,EAAE,QAAgB;IACrE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChE,CAAC"}