@orchyn/mcp 1.17.6 → 1.17.8
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/dist/shared/tools.js +1 -1
- package/dist/shared/ui-template.js +84 -15
- package/package.json +1 -1
package/dist/shared/tools.js
CHANGED
|
@@ -11,7 +11,7 @@ import { OrchynError } from "./orchyn.js";
|
|
|
11
11
|
import { formatPaywallError, runVideoAnalysis, validatePostUrl } from "./video.js";
|
|
12
12
|
import { ORCHYN_UI_TEMPLATE } from "./ui-template.js";
|
|
13
13
|
/** Current MCP server version — bumped on every deploy for traceability. */
|
|
14
|
-
export const MCP_SERVER_VERSION = "1.17.
|
|
14
|
+
export const MCP_SERVER_VERSION = "1.17.7";
|
|
15
15
|
/** MCP Apps extension identifier */
|
|
16
16
|
const UI_EXTENSION = "io.modelcontextprotocol/ui";
|
|
17
17
|
/** MIME type for MCP Apps HTML resources */
|
|
@@ -49,15 +49,29 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
49
49
|
.stagger>*:nth-child(8){animation-delay:.4s}
|
|
50
50
|
|
|
51
51
|
/* ─── Cards ─── */
|
|
52
|
-
.gallery
|
|
53
|
-
.
|
|
52
|
+
.gallery-wrap{position:relative;margin:0 -4px}
|
|
53
|
+
.gallery{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;padding:4px 4px 8px;scrollbar-width:none}
|
|
54
|
+
.gallery::-webkit-scrollbar{display:none}
|
|
55
|
+
.gallery-dots{display:flex;justify-content:center;gap:6px;margin-top:10px;flex-wrap:wrap}
|
|
56
|
+
.gallery-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--border);border:none;cursor:pointer;transition:var(--transition);padding:0}
|
|
57
|
+
.gallery-dots .dot.active{background:var(--accent);transform:scale(1.3)}
|
|
58
|
+
.gallery-nav{position:absolute;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:50%;background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-md);cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--fg);transition:var(--transition);opacity:0}
|
|
59
|
+
.gallery-wrap:hover .gallery-nav{opacity:1}
|
|
60
|
+
.gallery-nav:hover{background:var(--accent);color:#fff}
|
|
61
|
+
.gallery-nav.prev{left:-16px}
|
|
62
|
+
.gallery-nav.next{right:-16px}
|
|
63
|
+
.card{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;width:380px;min-width:380px;background:var(--card);display:block;box-shadow:var(--shadow-sm);transition:var(--transition);cursor:default;scroll-snap-align:start;flex-shrink:0}
|
|
54
64
|
.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--muted);}
|
|
55
65
|
.card-wide{width:100%;}
|
|
56
|
-
.card img{width:100%;height:
|
|
66
|
+
.card img{width:100%;height:260px;object-fit:cover;display:block;transition:transform .3s ease;}
|
|
57
67
|
.card:hover img{transform:scale(1.02);}
|
|
58
68
|
.card-wide img{max-height:340px;}
|
|
59
|
-
.card video{width:100%;display:block;background:#000;border:none;outline:none;}
|
|
60
|
-
.card-wide video{max-height:
|
|
69
|
+
.card video{width:100%;min-height:220px;max-height:520px;display:block;background:#000;border:none;outline:none;object-fit:contain;}
|
|
70
|
+
.card-wide video{max-height:520px;}
|
|
71
|
+
.video-wrap{width:100%;background:#000;position:relative;overflow:hidden;}
|
|
72
|
+
.video-wrap.v{aspect-ratio:9/16;max-height:520px;}
|
|
73
|
+
.video-wrap.h{aspect-ratio:16/9;max-height:360px;}
|
|
74
|
+
.video-wrap.sq{aspect-ratio:1/1;max-height:440px;}
|
|
61
75
|
.card-body{padding:14px 16px;}
|
|
62
76
|
|
|
63
77
|
/* ─── Badges & Tags ─── */
|
|
@@ -347,13 +361,12 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
347
361
|
else if(platform==="tiktok"||platform==="douyin")isVertical=true;
|
|
348
362
|
else if(platform==="youtube"&&dur>0&&dur<=60)isVertical=true;
|
|
349
363
|
else if(platform==="instagram")isVertical=true;
|
|
350
|
-
var
|
|
351
|
-
var
|
|
352
|
-
mediaHtml='<div class="
|
|
364
|
+
var arCls=isVertical?"v":"h";
|
|
365
|
+
var _vc="video-wrap "+arCls;
|
|
366
|
+
mediaHtml='<div class=""+_vc+"">'
|
|
353
367
|
+'<video src="'+esc(video)+'" controls preload="metadata" playsinline '
|
|
354
368
|
+'poster="'+esc(thumb)+'" '
|
|
355
|
-
+'style="width:100%;height:100%;object-fit:contain;display:block;background:#000"
|
|
356
|
-
+'onloadedmetadata="onVideoLoaded(this)"'
|
|
369
|
+
+'style="width:100%;height:100%;object-fit:contain;display:block;background:#000">'
|
|
357
370
|
+'Your browser does not support video playback.</video></div>';
|
|
358
371
|
}else if(images.length>1){
|
|
359
372
|
// Carousel / multi-image gallery — horizontally scrollable strip.
|
|
@@ -434,7 +447,7 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
434
447
|
var vt=a.viralTriggers.slice(0,8).map(function(t){return'<span class="tag clickable" onclick="copyText(this.dataset.v)" data-v="'+esc(t)+'">🔥 '+esc(t)+"</span>";}).join("");
|
|
435
448
|
sections+=section("Viral Triggers",vt);
|
|
436
449
|
}
|
|
437
|
-
if(a.suggestedHook)sections+=section("Suggested Hook",'<div class="quote-box">'+esc(a.suggestedHook)+'<button class="copy-btn"
|
|
450
|
+
if(a.suggestedHook)sections+=section("Suggested Hook",'<div class="quote-box">'+esc(a.suggestedHook)+'<button class="copy-btn" data-copy="'+esc(a.suggestedHook).replace(/"/g,'"')+'">Copy</button></div>',true);
|
|
438
451
|
if(a.suggestedHashtags&&a.suggestedHashtags.length){
|
|
439
452
|
var sh=a.suggestedHashtags.slice(0,10).map(function(t){var clean=t.replace(/^#/,"");return'<span class="tag clickable" onclick="copyText(this.dataset.v)" data-v="#'+esc(clean)+'" style="background:#ede9fe;color:#6d28d9">#'+esc(clean)+"</span>";}).join("");
|
|
440
453
|
sections+=section("Hashtags",sh);
|
|
@@ -484,6 +497,58 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
484
497
|
return result;
|
|
485
498
|
}
|
|
486
499
|
|
|
500
|
+
var galleryId=0;
|
|
501
|
+
function galleryWrap(cardsHtml,count){
|
|
502
|
+
var id="gal"+(galleryId++);
|
|
503
|
+
if(count<=1)return cardsHtml;
|
|
504
|
+
var dots="";
|
|
505
|
+
for(var i=0;i<count;i++)dots+='<button class="dot'+(i===0?" active":"")+'" data-g="'+id+'" data-i="'+i+'"></button>';
|
|
506
|
+
return '<div class="gallery-wrap fade-in">'
|
|
507
|
+
+'<button class="gallery-nav prev" data-gnav="'+id+'" data-dir="-1">\u2039</button>'
|
|
508
|
+
+'<div class="gallery" id="'+id+'">'+cardsHtml+'</div>'
|
|
509
|
+
+'<button class="gallery-nav next" data-gnav="'+id+'" data-dir="1">\u203a</button>'
|
|
510
|
+
+'<div class="gallery-dots" id="'+id+'-dots">'+dots+'</div>'
|
|
511
|
+
+'</div>';
|
|
512
|
+
}
|
|
513
|
+
function initGalleryNav(){
|
|
514
|
+
document.addEventListener('click',function(e){
|
|
515
|
+
var navBtn=e.target.closest('.gallery-nav[data-gnav]');
|
|
516
|
+
if(navBtn){
|
|
517
|
+
var g=document.getElementById(navBtn.getAttribute('data-gnav'));
|
|
518
|
+
if(!g)return;
|
|
519
|
+
var dir=Number(navBtn.getAttribute('data-dir'));
|
|
520
|
+
var cardW=g.querySelector('.card')?.offsetWidth||380;
|
|
521
|
+
g.scrollBy({left:dir*(cardW+12),behavior:'smooth'});
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
var dotBtn=e.target.closest('.dot[data-g]');
|
|
525
|
+
if(dotBtn){
|
|
526
|
+
var gId=dotBtn.getAttribute('data-g');
|
|
527
|
+
var g=document.getElementById(gId);
|
|
528
|
+
var dots=document.getElementById(gId+'-dots');
|
|
529
|
+
if(!g||!dots)return;
|
|
530
|
+
var idx=Number(dotBtn.getAttribute('data-i'));
|
|
531
|
+
var cards=g.querySelectorAll('.card');
|
|
532
|
+
if(cards[idx])cards[idx].scrollIntoView({behavior:'smooth',block:'nearest',inline:'start'});
|
|
533
|
+
dots.querySelectorAll('.dot').forEach(function(d){d.classList.remove('active')});
|
|
534
|
+
dotBtn.classList.add('active');
|
|
535
|
+
}
|
|
536
|
+
});
|
|
537
|
+
document.addEventListener('scroll',function(e){
|
|
538
|
+
if(!e.target.classList||!e.target.classList.contains('gallery'))return;
|
|
539
|
+
var g=e.target;var gId=g.id;
|
|
540
|
+
var dots=document.getElementById(gId+'-dots');
|
|
541
|
+
if(!dots)return;
|
|
542
|
+
var cards=g.querySelectorAll('.card');
|
|
543
|
+
if(!cards.length)return;
|
|
544
|
+
var scrollLeft=g.scrollLeft;var cardW=cards[0].offsetWidth+12;
|
|
545
|
+
var active=Math.round(scrollLeft/cardW);
|
|
546
|
+
active=Math.max(0,Math.min(active,cards.length-1));
|
|
547
|
+
dots.querySelectorAll('.dot').forEach(function(d,i){d.classList.toggle('active',i===active)});
|
|
548
|
+
},true);
|
|
549
|
+
}
|
|
550
|
+
initGalleryNav();
|
|
551
|
+
|
|
487
552
|
function render(result){
|
|
488
553
|
var app=document.getElementById("app");if(!app)return;
|
|
489
554
|
var d=extractResult(result);
|
|
@@ -496,11 +561,11 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
496
561
|
// Posts gallery
|
|
497
562
|
if(d.posts&&Array.isArray(d.posts)){
|
|
498
563
|
if(!d.posts.length){app.innerHTML='<div class="empty-state fade-in"><div class="icon">🔍</div><div class="text">No posts found</div></div>';return;}
|
|
499
|
-
app.innerHTML=
|
|
564
|
+
app.innerHTML=galleryWrap(d.posts.map(function(p){return postCard(p,false);}).join(""),d.posts.length);return;}
|
|
500
565
|
// Creators
|
|
501
566
|
if(d.creators&&Array.isArray(d.creators)){
|
|
502
567
|
if(!d.creators.length){app.innerHTML='<div class="empty-state fade-in"><div class="icon">👤</div><div class="text">No creators found</div></div>';return;}
|
|
503
|
-
app.innerHTML=
|
|
568
|
+
app.innerHTML=galleryWrap(d.creators.map(function(c){return creatorCard(c);}).join(""),d.creators.length);return;}
|
|
504
569
|
// Comments
|
|
505
570
|
if(d.comments&&Array.isArray(d.comments)){
|
|
506
571
|
var ch=d.comments.slice(0,15).map(function(c){
|
|
@@ -513,7 +578,7 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
513
578
|
+'<div style="font-size:16px;font-weight:700;margin-bottom:12px">💬 Comments ('+d.comments.length+')</div>'+ch+"</div></div>";return;}
|
|
514
579
|
// Sounds
|
|
515
580
|
if(d.sounds&&Array.isArray(d.sounds)){
|
|
516
|
-
app.innerHTML=
|
|
581
|
+
app.innerHTML=galleryWrap(d.sounds.map(function(s){
|
|
517
582
|
var color=pColor(s.platform||"tiktok");
|
|
518
583
|
var cover=s.coverUrl?'<img class="sound-cover" src="'+esc(s.coverUrl)+'" alt="cover" loading="lazy"/>'
|
|
519
584
|
:'<div class="sound-cover" style="background:'+color+'15;display:flex;align-items:center;justify-content:center;font-size:26px">🎵</div>';
|
|
@@ -524,7 +589,7 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
524
589
|
+'<div style="font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">'+esc(s.title||"")+"</div>"
|
|
525
590
|
+'<div style="font-size:12px;color:var(--muted)">'+esc(s.artist||s.author||"")+(s.duration?" • "+esc(s.duration):"")+"</div>"
|
|
526
591
|
+playBtn+"</div></div></div>";
|
|
527
|
-
}).join("")
|
|
592
|
+
}).join(""),d.sounds.length);return;}
|
|
528
593
|
// Credits
|
|
529
594
|
if(d.balance!=null||d.tier){
|
|
530
595
|
var bal=Number(d.balance)||0,tier=d.tier||"",ff=d.firstFreeTools||[];
|
|
@@ -562,6 +627,10 @@ body{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;background:var(--
|
|
|
562
627
|
|
|
563
628
|
// Global helpers
|
|
564
629
|
window.copyText=copyText;
|
|
630
|
+
document.addEventListener('click',function(e){
|
|
631
|
+
var btn=e.target.closest('.copy-btn[data-copy]');
|
|
632
|
+
if(btn)copyText(btn.getAttribute('data-copy'));
|
|
633
|
+
});
|
|
565
634
|
window.toggleSection=function(header){
|
|
566
635
|
header.classList.toggle("open");
|
|
567
636
|
var content=header.nextElementSibling;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orchyn/mcp",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.8",
|
|
4
4
|
"description": "MCP server for orchyn - fetch, discover and understand TikTok/Instagram/YouTube/X/LinkedIn posts with AI (media metadata, niche discovery, hook & viral analysis)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|