@oobe-protocol-labs/sap-mcp-server 0.9.0 → 0.9.1
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.
- package/.env.example +30 -0
- package/CHANGELOG.md +42 -1
- package/README.md +19 -2
- package/USER_DOCS/00_START_HERE.md +1 -0
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +17 -3
- package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
- package/USER_DOCS/05_SKILLS_AND_TOOLS.md +27 -3
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
- package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +163 -0
- package/assets/logos/claude.png +0 -0
- package/assets/logos/codex.webp +0 -0
- package/assets/logos/hermes.png +0 -0
- package/assets/logos/openclaw.svg +22 -0
- package/config.schema.json +5 -0
- package/dist/config/env.d.ts +4 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +3 -0
- package/dist/config/env.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/payments/pricing.d.ts +1 -1
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +20 -3
- package/dist/payments/pricing.js.map +1 -1
- package/dist/policy/local-policy-engine.js +1 -1
- package/dist/policy/local-policy-engine.js.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +6 -0
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/prompts/context/sap-agent-start.prompt.d.ts +14 -0
- package/dist/prompts/context/sap-agent-start.prompt.d.ts.map +1 -0
- package/dist/prompts/context/sap-agent-start.prompt.js +96 -0
- package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.js +1 -1
- package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
- package/dist/prompts/register-prompts.d.ts.map +1 -1
- package/dist/prompts/register-prompts.js +3 -1
- package/dist/prompts/register-prompts.js.map +1 -1
- package/dist/remote/public-home/index.d.ts.map +1 -1
- package/dist/remote/public-home/index.js +2 -1
- package/dist/remote/public-home/index.js.map +1 -1
- package/dist/remote/public-home/scripts.d.ts +1 -1
- package/dist/remote/public-home/scripts.d.ts.map +1 -1
- package/dist/remote/public-home/scripts.js +29 -0
- package/dist/remote/public-home/scripts.js.map +1 -1
- package/dist/remote/public-home/sections.d.ts +5 -0
- package/dist/remote/public-home/sections.d.ts.map +1 -1
- package/dist/remote/public-home/sections.js +73 -6
- package/dist/remote/public-home/sections.js.map +1 -1
- package/dist/remote/public-home/styles.d.ts +1 -1
- package/dist/remote/public-home/styles.d.ts.map +1 -1
- package/dist/remote/public-home/styles.js +460 -16
- package/dist/remote/public-home/styles.js.map +1 -1
- package/dist/remote/rate-limiter.d.ts +2 -0
- package/dist/remote/rate-limiter.d.ts.map +1 -1
- package/dist/remote/rate-limiter.js +23 -0
- package/dist/remote/rate-limiter.js.map +1 -1
- package/dist/remote/server.d.ts +70 -1
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +412 -15
- package/dist/remote/server.js.map +1 -1
- package/dist/runtime/module-resolution.d.ts.map +1 -1
- package/dist/runtime/module-resolution.js +41 -8
- package/dist/runtime/module-resolution.js.map +1 -1
- package/dist/schemas/settlement.schema.d.ts +2 -2
- package/dist/security/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-permissions.js +1 -6
- package/dist/security/tool-permissions.js.map +1 -1
- package/dist/tools/agent-start-tool.d.ts +12 -0
- package/dist/tools/agent-start-tool.d.ts.map +1 -0
- package/dist/tools/agent-start-tool.js +156 -0
- package/dist/tools/agent-start-tool.js.map +1 -0
- package/dist/tools/client-sdk-tools.d.ts +7 -0
- package/dist/tools/client-sdk-tools.d.ts.map +1 -1
- package/dist/tools/client-sdk-tools.js +80 -4
- package/dist/tools/client-sdk-tools.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +5 -1
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/sap-sdk-tools.d.ts +1 -1
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
- package/dist/tools/sap-sdk-tools.js +108 -105
- package/dist/tools/sap-sdk-tools.js.map +1 -1
- package/dist/tools/sap-sns-tools.d.ts +4 -4
- package/dist/tools/sap-sns-tools.js +4 -4
- package/dist/tools/skills-tools.js +1 -1
- package/dist/tools/skills-tools.js.map +1 -1
- package/docs/05_REMOTE_VPS_DEPLOYMENT.md +32 -0
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +11 -0
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
- package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +42 -11
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +1 -1
- package/docs/README.md +6 -3
- package/docs/_sidebar.md +1 -0
- package/package.json +3 -2
- package/skills/README.md +2 -2
- package/skills/sap-escrow-settlement/SKILL.md +15 -11
- package/skills/sap-mcp/SKILL.md +26 -11
- package/skills/sap-mcp/TOOL_REFERENCE.md +6 -5
- package/skills/sap-operations/SKILL.md +6 -7
- 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
|
-
|
|
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:
|
|
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:
|
|
1757
|
+
inset: 76px 10px 104px;
|
|
1439
1758
|
}
|
|
1440
|
-
.orbit
|
|
1441
|
-
width:
|
|
1442
|
-
|
|
1443
|
-
|
|
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
|
-
.
|
|
1446
|
-
|
|
1447
|
-
|
|
1773
|
+
.orbit-core img {
|
|
1774
|
+
width: 42px;
|
|
1775
|
+
height: 42px;
|
|
1776
|
+
border-radius: 13px;
|
|
1448
1777
|
}
|
|
1449
|
-
.
|
|
1450
|
-
|
|
1451
|
-
|
|
1778
|
+
.orbit-core strong {
|
|
1779
|
+
font-size: 22px;
|
|
1780
|
+
}
|
|
1781
|
+
.orbit-chip {
|
|
1782
|
+
display: none;
|
|
1452
1783
|
}
|
|
1453
1784
|
.hero-bento-mini {
|
|
1454
|
-
|
|
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
|
|
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;
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/remote/rate-limiter.ts"],"names":[],"mappings":"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"}
|