cc-viewer 1.6.38 → 1.6.39

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.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## التعريف
4
+
5
+ يُرسل رسائل بين الـ agent داخل الفريق. يُستخدم للتواصل المباشر والبث والرسائل البروتوكولية (طلبات/ردود الإيقاف، الموافقة على الخطط).
6
+
7
+ ## المعاملات
8
+
9
+ | المعامل | النوع | مطلوب | الوصف |
10
+ |---------|-------|-------|-------|
11
+ | `to` | string | نعم | المُستلم: اسم العضو، أو `"*"` للبث إلى الجميع |
12
+ | `message` | string / object | نعم | رسالة نصية أو كائن بروتوكولي مُهيكل |
13
+ | `summary` | string | لا | معاينة من 5-10 كلمات تُعرض في الواجهة |
14
+
15
+ ## أنواع الرسائل
16
+
17
+ ### نص عادي
18
+ رسائل مباشرة بين أعضاء الفريق للتنسيق وتحديثات الحالة ومناقشات المهام.
19
+
20
+ ### طلب إيقاف
21
+ يطلب من عضو الإيقاف بشكل منظم: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### رد الإيقاف
24
+ يوافق العضو على الإيقاف أو يرفضه: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### رد الموافقة على الخطة
27
+ يوافق على خطة عضو أو يرفضها: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## البث مقابل الإرسال المباشر
30
+
31
+ - **مباشر** (`to: "اسم-العضو"`): إرسال إلى عضو محدد — الأفضل لمعظم حالات التواصل
32
+ - **بث** (`to: "*"`): إرسال إلى جميع الأعضاء — يُستخدم باعتدال، فقط للإعلانات العاجلة على مستوى الفريق
33
+
34
+ ## الأدوات ذات الصلة
35
+
36
+ | الأداة | الغرض |
37
+ |--------|--------|
38
+ | `TeamCreate` | إنشاء فريق جديد |
39
+ | `TeamDelete` | حذف الفريق عند الانتهاء |
40
+ | `Agent` | توليد أعضاء ينضمون إلى الفريق |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | إدارة قائمة المهام المشتركة |
42
+
43
+ ## الأهمية في cc-viewer
44
+
45
+ تُمثّل استدعاءات SendMessage التواصل بين الـ agent داخل جلسة الفريق. في إحصائيات استخدام الأدوات، يشير العدد المرتفع لـ SendMessage إلى تنسيق فريق نشط. في الخط الزمني للطلبات، تُظهر تبادلات SendMessage كيفية تعاون الـ agent — تمرير النتائج وطلب المساعدة وتنسيق تسلسلات الإيقاف.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definition
4
+
5
+ Sender beskeder mellem agenter inden for et team. Bruges til direkte kommunikation, broadcasting og protokolbeskeder (shutdown-anmodninger/-svar, plangodkendelse).
6
+
7
+ ## Parametre
8
+
9
+ | Parameter | Type | Påkrævet | Beskrivelse |
10
+ |-----------|------|----------|-------------|
11
+ | `to` | string | Ja | Modtager: teammedlemmets navn, eller `"*"` for broadcast til alle |
12
+ | `message` | string / object | Ja | Ren tekstbesked eller struktureret protokolobjekt |
13
+ | `summary` | string | Nej | En forhåndsvisning på 5-10 ord vist i brugerfladen |
14
+
15
+ ## Beskedtyper
16
+
17
+ ### Ren tekst
18
+ Direkte beskeder mellem teammedlemmer til koordinering, statusopdateringer og opgavediskussioner.
19
+
20
+ ### Shutdown-anmodning
21
+ Beder et teammedlem om at lukke ned pænt: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Shutdown-svar
24
+ Teammedlem godkender eller afviser shutdown: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Plangodkendelsessvar
27
+ Godkender eller afviser et teammedlems plan: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Broadcast vs. direkte
30
+
31
+ - **Direkte** (`to: "teammedlem-navn"`): Send til et bestemt teammedlem — foretrukket til de fleste kommunikationer
32
+ - **Broadcast** (`to: "*"`): Send til alle teammedlemmer — brug sparsomt, kun til kritiske teamdækkende meddelelser
33
+
34
+ ## Relaterede værktøjer
35
+
36
+ | Værktøj | Formål |
37
+ |---------|--------|
38
+ | `TeamCreate` | Opret et nyt team |
39
+ | `TeamDelete` | Fjern team når det er færdigt |
40
+ | `Agent` | Start teammedlemmer der tilslutter sig teamet |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Administrer den delte opgaveliste |
42
+
43
+ ## Betydning i cc-viewer
44
+
45
+ SendMessage-kald repræsenterer kommunikation mellem agenter inden for en teamsession. I værktøjsbrugsstatistikken indikerer et højt antal SendMessage-kald aktiv teamkoordinering. I request-tidslinjen viser SendMessage-udvekslinger, hvordan agenter samarbejder — videregiver resultater, anmoder om hjælp og koordinerer shutdown-sekvenser.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definition
4
+
5
+ Sendet Nachrichten zwischen Agenten innerhalb eines Teams. Wird für direkte Kommunikation, Broadcasting und Protokollnachrichten (Shutdown-Anfragen/-Antworten, Plan-Genehmigung) verwendet.
6
+
7
+ ## Parameter
8
+
9
+ | Parameter | Typ | Erforderlich | Beschreibung |
10
+ |-----------|-----|--------------|--------------|
11
+ | `to` | string | Ja | Empfänger: Teammitglied-Name oder `"*"` für Broadcast an alle |
12
+ | `message` | string / object | Ja | Klartextnachricht oder strukturiertes Protokollobjekt |
13
+ | `summary` | string | Nein | Eine 5-10 Wörter umfassende Vorschau in der UI |
14
+
15
+ ## Nachrichtentypen
16
+
17
+ ### Klartext
18
+ Direktnachrichten zwischen Teammitgliedern zur Koordination, Statusaktualisierung und Aufgabenbesprechung.
19
+
20
+ ### Shutdown-Anfrage
21
+ Fordert ein Teammitglied zum geordneten Herunterfahren auf: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Shutdown-Antwort
24
+ Teammitglied genehmigt oder lehnt das Herunterfahren ab: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Plan-Genehmigungs-Antwort
27
+ Genehmigt oder lehnt den Plan eines Teammitglieds ab: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Broadcast vs. Direkt
30
+
31
+ - **Direkt** (`to: "Teammitglied-Name"`): An ein bestimmtes Teammitglied senden — bevorzugt für die meiste Kommunikation
32
+ - **Broadcast** (`to: "*"`): An alle Teammitglieder senden — nur sparsam für kritische teamweite Ankündigungen verwenden
33
+
34
+ ## Verwandte Tools
35
+
36
+ | Tool | Zweck |
37
+ |------|-------|
38
+ | `TeamCreate` | Neues Team erstellen |
39
+ | `TeamDelete` | Team nach Abschluss entfernen |
40
+ | `Agent` | Teammitglieder starten, die dem Team beitreten |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Gemeinsame Aufgabenliste verwalten |
42
+
43
+ ## Bedeutung in cc-viewer
44
+
45
+ SendMessage-Aufrufe stellen die Kommunikation zwischen Agenten innerhalb einer Teamsitzung dar. In der Toolnutzungsstatistik weisen hohe SendMessage-Zahlen auf aktive Teamkoordination hin. In der Anfrage-Timeline zeigen SendMessage-Austausche, wie Agenten zusammenarbeiten — Ergebnisse weiterleiten, Hilfe anfordern und Shutdown-Sequenzen koordinieren.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definition
4
+
5
+ Sends messages between agents within a team. Used for direct communication, broadcasting, and protocol messages (shutdown requests/responses, plan approval).
6
+
7
+ ## Parameters
8
+
9
+ | Parameter | Type | Required | Description |
10
+ |-----------|------|----------|-------------|
11
+ | `to` | string | Yes | Recipient: teammate name, or `"*"` for broadcast to all |
12
+ | `message` | string / object | Yes | Plain text message or structured protocol object |
13
+ | `summary` | string | No | A 5-10 word preview shown in the UI |
14
+
15
+ ## Message Types
16
+
17
+ ### Plain Text
18
+ Direct messages between teammates for coordination, status updates, and task discussions.
19
+
20
+ ### Shutdown Request
21
+ Asks a teammate to gracefully shut down: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Shutdown Response
24
+ Teammate approves or rejects a shutdown: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Plan Approval Response
27
+ Approves or rejects a teammate's plan: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Broadcast vs Direct
30
+
31
+ - **Direct** (`to: "teammate-name"`): Send to a specific teammate — preferred for most communication
32
+ - **Broadcast** (`to: "*"`): Send to all teammates — use sparingly, only for critical team-wide announcements
33
+
34
+ ## Related Tools
35
+
36
+ | Tool | Purpose |
37
+ |------|---------|
38
+ | `TeamCreate` | Create a new team |
39
+ | `TeamDelete` | Remove team when done |
40
+ | `Agent` | Spawn teammates that join the team |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Manage the shared task list |
42
+
43
+ ## Significance in cc-viewer
44
+
45
+ SendMessage calls represent inter-agent communication within a team session. In the tool usage statistics, high SendMessage counts indicate active team coordination. In the request timeline, SendMessage exchanges show how agents collaborate — passing results, requesting help, and coordinating shutdown sequences.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definición
4
+
5
+ Envía mensajes entre agentes dentro de un equipo. Se utiliza para comunicación directa, difusión y mensajes de protocolo (solicitudes/respuestas de apagado, aprobación de planes).
6
+
7
+ ## Parámetros
8
+
9
+ | Parámetro | Tipo | Requerido | Descripción |
10
+ |-----------|------|-----------|-------------|
11
+ | `to` | string | Sí | Destinatario: nombre del compañero, o `"*"` para difundir a todos |
12
+ | `message` | string / object | Sí | Mensaje de texto o objeto de protocolo estructurado |
13
+ | `summary` | string | No | Vista previa de 5-10 palabras mostrada en la interfaz |
14
+
15
+ ## Tipos de mensaje
16
+
17
+ ### Texto plano
18
+ Mensajes directos entre compañeros de equipo para coordinación, actualizaciones de estado y discusiones sobre tareas.
19
+
20
+ ### Solicitud de apagado
21
+ Solicita a un compañero que se apague de forma ordenada: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Respuesta de apagado
24
+ El compañero aprueba o rechaza el apagado: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Respuesta de aprobación de plan
27
+ Aprueba o rechaza el plan de un compañero: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Difusión vs. Directo
30
+
31
+ - **Directo** (`to: "nombre-del-compañero"`): Enviar a un compañero específico — preferido para la mayoría de las comunicaciones
32
+ - **Difusión** (`to: "*"`): Enviar a todos los compañeros — usar con moderación, solo para anuncios críticos a nivel de equipo
33
+
34
+ ## Herramientas relacionadas
35
+
36
+ | Herramienta | Propósito |
37
+ |-------------|-----------|
38
+ | `TeamCreate` | Crear un nuevo equipo |
39
+ | `TeamDelete` | Eliminar el equipo al finalizar |
40
+ | `Agent` | Generar compañeros de equipo que se unen al equipo |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Gestionar la lista de tareas compartida |
42
+
43
+ ## Significado en cc-viewer
44
+
45
+ Las llamadas a SendMessage representan la comunicación entre agentes dentro de una sesión de equipo. En las estadísticas de uso de herramientas, un conteo alto de SendMessage indica una coordinación de equipo activa. En la línea de tiempo de solicitudes, los intercambios de SendMessage muestran cómo colaboran los agentes — pasando resultados, solicitando ayuda y coordinando secuencias de apagado.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Définition
4
+
5
+ Envoie des messages entre agents au sein d'une équipe. Utilisé pour la communication directe, la diffusion et les messages de protocole (requêtes/réponses d'arrêt, approbation de plan).
6
+
7
+ ## Paramètres
8
+
9
+ | Paramètre | Type | Requis | Description |
10
+ |-----------|------|--------|-------------|
11
+ | `to` | string | Oui | Destinataire : nom du coéquipier, ou `"*"` pour diffuser à tous |
12
+ | `message` | string / object | Oui | Message texte ou objet de protocole structuré |
13
+ | `summary` | string | Non | Aperçu de 5 à 10 mots affiché dans l'interface |
14
+
15
+ ## Types de messages
16
+
17
+ ### Texte brut
18
+ Messages directs entre coéquipiers pour la coordination, les mises à jour d'état et les discussions sur les tâches.
19
+
20
+ ### Requête d'arrêt
21
+ Demande à un coéquipier de s'arrêter proprement : `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Réponse d'arrêt
24
+ Le coéquipier approuve ou refuse l'arrêt : `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Réponse d'approbation de plan
27
+ Approuve ou refuse le plan d'un coéquipier : `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Diffusion vs. Direct
30
+
31
+ - **Direct** (`to: "nom-du-coéquipier"`) : Envoyer à un coéquipier spécifique — à privilégier pour la plupart des communications
32
+ - **Diffusion** (`to: "*"`) : Envoyer à tous les coéquipiers — à utiliser avec parcimonie, uniquement pour les annonces critiques à l'échelle de l'équipe
33
+
34
+ ## Outils associés
35
+
36
+ | Outil | Rôle |
37
+ |-------|------|
38
+ | `TeamCreate` | Créer une nouvelle équipe |
39
+ | `TeamDelete` | Supprimer l'équipe une fois terminé |
40
+ | `Agent` | Démarrer des coéquipiers qui rejoignent l'équipe |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Gérer la liste de tâches partagée |
42
+
43
+ ## Signification dans cc-viewer
44
+
45
+ Les appels SendMessage représentent la communication inter-agents au sein d'une session d'équipe. Dans les statistiques d'utilisation des outils, un nombre élevé de SendMessage indique une coordination d'équipe active. Dans la chronologie des requêtes, les échanges SendMessage montrent comment les agents collaborent — transmettre des résultats, demander de l'aide et coordonner les séquences d'arrêt.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definizione
4
+
5
+ Invia messaggi tra agent all'interno di un team. Utilizzato per la comunicazione diretta, il broadcast e i messaggi di protocollo (richieste/risposte di arresto, approvazione piani).
6
+
7
+ ## Parametri
8
+
9
+ | Parametro | Tipo | Obbligatorio | Descrizione |
10
+ |-----------|------|--------------|-------------|
11
+ | `to` | string | Sì | Destinatario: nome del membro, o `"*"` per broadcast a tutti |
12
+ | `message` | string / object | Sì | Messaggio di testo o oggetto di protocollo strutturato |
13
+ | `summary` | string | No | Anteprima di 5-10 parole mostrata nell'interfaccia |
14
+
15
+ ## Tipi di messaggio
16
+
17
+ ### Testo semplice
18
+ Messaggi diretti tra membri del team per coordinamento, aggiornamenti di stato e discussioni sui task.
19
+
20
+ ### Richiesta di arresto
21
+ Chiede a un membro di arrestarsi in modo ordinato: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Risposta di arresto
24
+ Il membro approva o rifiuta l'arresto: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Risposta di approvazione piano
27
+ Approva o rifiuta il piano di un membro: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Broadcast vs. Diretto
30
+
31
+ - **Diretto** (`to: "nome-membro"`): Invia a un membro specifico — preferito per la maggior parte delle comunicazioni
32
+ - **Broadcast** (`to: "*"`): Invia a tutti i membri — da usare con parsimonia, solo per annunci critici a livello di team
33
+
34
+ ## Strumenti correlati
35
+
36
+ | Strumento | Scopo |
37
+ |-----------|-------|
38
+ | `TeamCreate` | Creare un nuovo team |
39
+ | `TeamDelete` | Rimuovere il team al completamento |
40
+ | `Agent` | Avviare membri che si uniscono al team |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Gestire la lista dei task condivisa |
42
+
43
+ ## Significato in cc-viewer
44
+
45
+ Le chiamate SendMessage rappresentano la comunicazione tra agent all'interno di una sessione di team. Nelle statistiche di utilizzo degli strumenti, un numero elevato di SendMessage indica un coordinamento di team attivo. Nella timeline delle richieste, gli scambi SendMessage mostrano come gli agent collaborano — passaggio di risultati, richieste di aiuto e coordinamento delle sequenze di arresto.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## 定義
4
+
5
+ チーム内の agent 間でメッセージを送信します。直接通信、ブロードキャスト、プロトコルメッセージ(シャットダウン要求/応答、プラン承認)に使用されます。
6
+
7
+ ## パラメータ
8
+
9
+ | パラメータ | 型 | 必須 | 説明 |
10
+ |------------|------|------|------|
11
+ | `to` | string | はい | 受信者:チームメンバー名、または `"*"` で全員にブロードキャスト |
12
+ | `message` | string / object | はい | プレーンテキストメッセージまたは構造化プロトコルオブジェクト |
13
+ | `summary` | string | いいえ | UI に表示される 5〜10 単語のプレビュー |
14
+
15
+ ## メッセージタイプ
16
+
17
+ ### プレーンテキスト
18
+ チームメンバー間の直接メッセージ。調整、ステータス更新、タスクに関する議論に使用します。
19
+
20
+ ### シャットダウン要求
21
+ チームメンバーに正常終了を要求:`{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### シャットダウン応答
24
+ チームメンバーがシャットダウンを承認または拒否:`{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### プラン承認応答
27
+ チームメンバーのプランを承認または拒否:`{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## ブロードキャストとダイレクト
30
+
31
+ - **ダイレクト**(`to: "チームメンバー名"`):特定のチームメンバーに送信 — ほとんどの通信で推奨
32
+ - **ブロードキャスト**(`to: "*"`):全チームメンバーに送信 — チーム全体への緊急通知にのみ使用
33
+
34
+ ## 関連ツール
35
+
36
+ | ツール | 目的 |
37
+ |--------|------|
38
+ | `TeamCreate` | 新しいチームを作成 |
39
+ | `TeamDelete` | 完了後にチームを削除 |
40
+ | `Agent` | チームに参加するチームメンバーを起動 |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | 共有タスクリストの管理 |
42
+
43
+ ## cc-viewer での意義
44
+
45
+ SendMessage 呼び出しはチームセッション内の agent 間通信を表します。ツール使用統計では、SendMessage の回数が多いほどチームの調整が活発であることを示します。リクエストタイムラインでは、SendMessage のやり取りが agent 間の協力の様子を示します — 結果の受け渡し、ヘルプの要請、シャットダウンシーケンスの調整などです。
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## 정의
4
+
5
+ 팀 내 agent 간에 메시지를 전송합니다. 직접 통신, 브로드캐스트, 프로토콜 메시지(종료 요청/응답, 계획 승인)에 사용됩니다.
6
+
7
+ ## 파라미터
8
+
9
+ | 파라미터 | 타입 | 필수 | 설명 |
10
+ |----------|------|------|------|
11
+ | `to` | string | 예 | 수신자: 팀원 이름, 또는 `"*"`로 전체 브로드캐스트 |
12
+ | `message` | string / object | 예 | 일반 텍스트 메시지 또는 구조화된 프로토콜 객체 |
13
+ | `summary` | string | 아니오 | UI에 표시되는 5-10 단어 미리보기 |
14
+
15
+ ## 메시지 유형
16
+
17
+ ### 일반 텍스트
18
+ 팀원 간의 직접 메시지. 조율, 상태 업데이트, 태스크 논의에 사용합니다.
19
+
20
+ ### 종료 요청
21
+ 팀원에게 정상 종료를 요청: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### 종료 응답
24
+ 팀원이 종료를 승인 또는 거부: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### 계획 승인 응답
27
+ 팀원의 계획을 승인 또는 거부: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## 브로드캐스트 vs 직접 전송
30
+
31
+ - **직접 전송** (`to: "팀원-이름"`): 특정 팀원에게 전송 — 대부분의 통신에서 권장
32
+ - **브로드캐스트** (`to: "*"`): 모든 팀원에게 전송 — 팀 전체 긴급 공지에만 사용
33
+
34
+ ## 관련 도구
35
+
36
+ | 도구 | 용도 |
37
+ |------|------|
38
+ | `TeamCreate` | 새 팀 생성 |
39
+ | `TeamDelete` | 완료 후 팀 제거 |
40
+ | `Agent` | 팀에 합류하는 팀원 생성 |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | 공유 태스크 목록 관리 |
42
+
43
+ ## cc-viewer에서의 의의
44
+
45
+ SendMessage 호출은 팀 세션 내 agent 간 통신을 나타냅니다. 도구 사용 통계에서 SendMessage 횟수가 많을수록 팀 조율이 활발함을 의미합니다. 요청 타임라인에서 SendMessage 교환은 agent 간 협업 방식을 보여줍니다 — 결과 전달, 도움 요청, 종료 시퀀스 조율 등입니다.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definisjon
4
+
5
+ Sender meldinger mellom agenter i et team. Brukes til direkte kommunikasjon, kringkasting og protokollmeldinger (shutdown-forespørsler/-svar, plangodkjenning).
6
+
7
+ ## Parametere
8
+
9
+ | Parameter | Type | Påkrevd | Beskrivelse |
10
+ |-----------|------|---------|-------------|
11
+ | `to` | string | Ja | Mottaker: teammedlemmets navn, eller `"*"` for kringkasting til alle |
12
+ | `message` | string / object | Ja | Ren tekstmelding eller strukturert protokollobjekt |
13
+ | `summary` | string | Nei | En forhåndsvisning på 5-10 ord vist i brukergrensesnittet |
14
+
15
+ ## Meldingstyper
16
+
17
+ ### Ren tekst
18
+ Direktemeldinger mellom teammedlemmer for koordinering, statusoppdateringer og oppgavediskusjoner.
19
+
20
+ ### Shutdown-forespørsel
21
+ Ber et teammedlem om å avslutte på en ryddig måte: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Shutdown-svar
24
+ Teammedlem godkjenner eller avslår shutdown: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Plangodkjenningssvar
27
+ Godkjenner eller avslår et teammedlems plan: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Kringkasting vs. direkte
30
+
31
+ - **Direkte** (`to: "teammedlem-navn"`): Send til et bestemt teammedlem — foretrukket for de fleste kommunikasjoner
32
+ - **Kringkasting** (`to: "*"`): Send til alle teammedlemmer — bruk sparsomt, kun for kritiske teamomfattende kunngjøringer
33
+
34
+ ## Relaterte verktøy
35
+
36
+ | Verktøy | Formål |
37
+ |---------|--------|
38
+ | `TeamCreate` | Opprett et nytt team |
39
+ | `TeamDelete` | Fjern team når ferdig |
40
+ | `Agent` | Start teammedlemmer som slutter seg til teamet |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Administrer den delte oppgavelisten |
42
+
43
+ ## Betydning i cc-viewer
44
+
45
+ SendMessage-kall representerer kommunikasjon mellom agenter i en teamsesjon. I verktøybruksstatistikken indikerer et høyt antall SendMessage-kall aktiv teamkoordinering. I forespørselstidslinjen viser SendMessage-utvekslinger hvordan agenter samarbeider — videreformidler resultater, ber om hjelp og koordinerer shutdown-sekvenser.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definicja
4
+
5
+ Wysyła wiadomości między agentami w zespole. Służy do bezpośredniej komunikacji, rozgłaszania oraz wiadomości protokołowych (żądania/odpowiedzi zamknięcia, zatwierdzanie planów).
6
+
7
+ ## Parametry
8
+
9
+ | Parametr | Typ | Wymagany | Opis |
10
+ |----------|-----|----------|------|
11
+ | `to` | string | Tak | Odbiorca: nazwa członka zespołu lub `"*"` dla rozgłoszenia do wszystkich |
12
+ | `message` | string / object | Tak | Wiadomość tekstowa lub strukturalny obiekt protokołowy |
13
+ | `summary` | string | Nie | Podgląd 5-10 słów wyświetlany w interfejsie |
14
+
15
+ ## Typy wiadomości
16
+
17
+ ### Tekst
18
+ Bezpośrednie wiadomości między członkami zespołu do koordynacji, aktualizacji statusu i dyskusji o zadaniach.
19
+
20
+ ### Żądanie zamknięcia
21
+ Prosi członka zespołu o uporządkowane zamknięcie: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Odpowiedź na zamknięcie
24
+ Członek zespołu zatwierdza lub odrzuca zamknięcie: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Odpowiedź zatwierdzenia planu
27
+ Zatwierdza lub odrzuca plan członka zespołu: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Rozgłaszanie vs. bezpośrednie
30
+
31
+ - **Bezpośrednie** (`to: "nazwa-członka"`): Wyślij do konkretnego członka — preferowane dla większości komunikacji
32
+ - **Rozgłaszanie** (`to: "*"`): Wyślij do wszystkich członków — używać oszczędnie, tylko dla krytycznych ogłoszeń zespołowych
33
+
34
+ ## Powiązane narzędzia
35
+
36
+ | Narzędzie | Przeznaczenie |
37
+ |-----------|---------------|
38
+ | `TeamCreate` | Utwórz nowy zespół |
39
+ | `TeamDelete` | Usuń zespół po zakończeniu |
40
+ | `Agent` | Uruchom członków zespołu dołączających do zespołu |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Zarządzanie wspólną listą zadań |
42
+
43
+ ## Znaczenie w cc-viewer
44
+
45
+ Wywołania SendMessage reprezentują komunikację między agentami w sesji zespołu. W statystykach użycia narzędzi wysoka liczba SendMessage wskazuje na aktywną koordynację zespołu. Na osi czasu żądań wymiany SendMessage pokazują, jak agenci współpracują — przekazują wyniki, proszą o pomoc i koordynują sekwencje zamykania.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Definição
4
+
5
+ Envia mensagens entre agents dentro de uma equipe. Usado para comunicação direta, broadcast e mensagens de protocolo (solicitações/respostas de encerramento, aprovação de planos).
6
+
7
+ ## Parâmetros
8
+
9
+ | Parâmetro | Tipo | Obrigatório | Descrição |
10
+ |-----------|------|-------------|-----------|
11
+ | `to` | string | Sim | Destinatário: nome do integrante, ou `"*"` para broadcast a todos |
12
+ | `message` | string / object | Sim | Mensagem de texto ou objeto de protocolo estruturado |
13
+ | `summary` | string | Não | Prévia de 5-10 palavras exibida na interface |
14
+
15
+ ## Tipos de mensagem
16
+
17
+ ### Texto simples
18
+ Mensagens diretas entre integrantes para coordenação, atualizações de status e discussões sobre tarefas.
19
+
20
+ ### Solicitação de encerramento
21
+ Solicita que um integrante encerre de forma ordenada: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Resposta de encerramento
24
+ O integrante aprova ou rejeita o encerramento: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Resposta de aprovação de plano
27
+ Aprova ou rejeita o plano de um integrante: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Broadcast vs. Direto
30
+
31
+ - **Direto** (`to: "nome-do-integrante"`): Enviar a um integrante específico — preferido para a maioria das comunicações
32
+ - **Broadcast** (`to: "*"`): Enviar a todos os integrantes — usar com moderação, apenas para anúncios críticos em nível de equipe
33
+
34
+ ## Ferramentas relacionadas
35
+
36
+ | Ferramenta | Finalidade |
37
+ |------------|------------|
38
+ | `TeamCreate` | Criar uma nova equipe |
39
+ | `TeamDelete` | Remover equipe ao concluir |
40
+ | `Agent` | Iniciar integrantes que entram na equipe |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Gerenciar a lista de tarefas compartilhada |
42
+
43
+ ## Significado no cc-viewer
44
+
45
+ Chamadas SendMessage representam a comunicação entre agents dentro de uma sessão de equipe. Nas estatísticas de uso de ferramentas, contagens altas de SendMessage indicam coordenação de equipe ativa. Na linha do tempo de requisições, as trocas de SendMessage mostram como os agents colaboram — passando resultados, pedindo ajuda e coordenando sequências de encerramento.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Определение
4
+
5
+ Отправляет сообщения между агентами внутри команды. Используется для прямого общения, широковещательных рассылок и протокольных сообщений (запросы/ответы на завершение, утверждение планов).
6
+
7
+ ## Параметры
8
+
9
+ | Параметр | Тип | Обязательный | Описание |
10
+ |----------|-----|--------------|----------|
11
+ | `to` | string | Да | Получатель: имя участника или `"*"` для рассылки всем |
12
+ | `message` | string / object | Да | Текстовое сообщение или структурированный протокольный объект |
13
+ | `summary` | string | Нет | Превью из 5-10 слов, отображаемое в интерфейсе |
14
+
15
+ ## Типы сообщений
16
+
17
+ ### Текст
18
+ Прямые сообщения между участниками команды для координации, обновления статуса и обсуждения задач.
19
+
20
+ ### Запрос на завершение
21
+ Просит участника корректно завершить работу: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Ответ на завершение
24
+ Участник одобряет или отклоняет завершение: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Ответ на утверждение плана
27
+ Одобряет или отклоняет план участника: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Широковещание vs. прямое
30
+
31
+ - **Прямое** (`to: "имя-участника"`): Отправить конкретному участнику — предпочтительно для большинства коммуникаций
32
+ - **Широковещание** (`to: "*"`): Отправить всем участникам — использовать экономно, только для критических командных объявлений
33
+
34
+ ## Связанные инструменты
35
+
36
+ | Инструмент | Назначение |
37
+ |------------|------------|
38
+ | `TeamCreate` | Создать новую команду |
39
+ | `TeamDelete` | Удалить команду по завершении |
40
+ | `Agent` | Запустить участников, вступающих в команду |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Управление общим списком задач |
42
+
43
+ ## Значение в cc-viewer
44
+
45
+ Вызовы SendMessage представляют межагентное взаимодействие внутри командной сессии. В статистике использования инструментов высокое число SendMessage указывает на активную координацию команды. На временной шкале запросов обмены SendMessage показывают, как агенты сотрудничают — передают результаты, запрашивают помощь и координируют последовательности завершения.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## คำจำกัดความ
4
+
5
+ ส่งข้อความระหว่าง agent ภายในทีม ใช้สำหรับการสื่อสารโดยตรง การกระจายข้อความ และข้อความโปรโตคอล (คำขอ/การตอบกลับการปิดระบบ, การอนุมัติแผน)
6
+
7
+ ## พารามิเตอร์
8
+
9
+ | พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
10
+ |-------------|--------|--------|----------|
11
+ | `to` | string | ใช่ | ผู้รับ: ชื่อสมาชิกทีม หรือ `"*"` สำหรับกระจายถึงทุกคน |
12
+ | `message` | string / object | ใช่ | ข้อความข้อความล้วนหรือออบเจกต์โปรโตคอลแบบมีโครงสร้าง |
13
+ | `summary` | string | ไม่ | ตัวอย่างข้อความ 5-10 คำที่แสดงในหน้าจอ |
14
+
15
+ ## ประเภทข้อความ
16
+
17
+ ### ข้อความล้วน
18
+ ข้อความโดยตรงระหว่างสมาชิกทีมสำหรับการประสานงาน อัปเดตสถานะ และหารือเกี่ยวกับงาน
19
+
20
+ ### คำขอปิดระบบ
21
+ ขอให้สมาชิกปิดระบบอย่างเรียบร้อย: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### การตอบกลับการปิดระบบ
24
+ สมาชิกอนุมัติหรือปฏิเสธการปิดระบบ: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### การตอบกลับการอนุมัติแผน
27
+ อนุมัติหรือปฏิเสธแผนของสมาชิก: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## กระจายข้อความ vs ส่งตรง
30
+
31
+ - **ส่งตรง** (`to: "ชื่อ-สมาชิก"`): ส่งถึงสมาชิกเฉพาะราย — แนะนำสำหรับการสื่อสารส่วนใหญ่
32
+ - **กระจาย** (`to: "*"`): ส่งถึงสมาชิกทุกคน — ใช้อย่างประหยัด เฉพาะประกาศสำคัญระดับทีมเท่านั้น
33
+
34
+ ## เครื่องมือที่เกี่ยวข้อง
35
+
36
+ | เครื่องมือ | วัตถุประสงค์ |
37
+ |-----------|-------------|
38
+ | `TeamCreate` | สร้างทีมใหม่ |
39
+ | `TeamDelete` | ลบทีมเมื่อเสร็จสิ้น |
40
+ | `Agent` | สร้างสมาชิกที่เข้าร่วมทีม |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | จัดการรายการงานที่แชร์ร่วมกัน |
42
+
43
+ ## ความสำคัญใน cc-viewer
44
+
45
+ การเรียก SendMessage แสดงถึงการสื่อสารระหว่าง agent ภายในเซสชันทีม ในสถิติการใช้เครื่องมือ จำนวน SendMessage ที่สูงบ่งบอกว่าทีมมีการประสานงานอย่างแข็งขัน ในไทม์ไลน์คำร้องขอ การแลกเปลี่ยน SendMessage แสดงให้เห็นว่า agent ร่วมมือกันอย่างไร — ส่งต่อผลลัพธ์ ขอความช่วยเหลือ และประสานลำดับการปิดระบบ
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Tanım
4
+
5
+ Bir takım içindeki agent'lar arasında mesaj gönderir. Doğrudan iletişim, yayın ve protokol mesajları (kapatma istekleri/yanıtları, plan onayı) için kullanılır.
6
+
7
+ ## Parametreler
8
+
9
+ | Parametre | Tür | Zorunlu | Açıklama |
10
+ |-----------|-----|---------|----------|
11
+ | `to` | string | Evet | Alıcı: takım üyesinin adı veya `"*"` ile herkese yayın |
12
+ | `message` | string / object | Evet | Düz metin mesajı veya yapılandırılmış protokol nesnesi |
13
+ | `summary` | string | Hayır | Arayüzde gösterilen 5-10 kelimelik önizleme |
14
+
15
+ ## Mesaj Türleri
16
+
17
+ ### Düz Metin
18
+ Takım üyeleri arasında koordinasyon, durum güncellemeleri ve görev tartışmaları için doğrudan mesajlar.
19
+
20
+ ### Kapatma İsteği
21
+ Bir takım üyesinden düzenli şekilde kapanmasını ister: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Kapatma Yanıtı
24
+ Takım üyesi kapatmayı onaylar veya reddeder: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Plan Onay Yanıtı
27
+ Bir takım üyesinin planını onaylar veya reddeder: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Yayın vs. Doğrudan
30
+
31
+ - **Doğrudan** (`to: "üye-adı"`): Belirli bir takım üyesine gönder — çoğu iletişim için tercih edilir
32
+ - **Yayın** (`to: "*"`): Tüm takım üyelerine gönder — dikkatli kullanın, yalnızca kritik takım çapında duyurular için
33
+
34
+ ## İlgili Araçlar
35
+
36
+ | Araç | Amaç |
37
+ |------|------|
38
+ | `TeamCreate` | Yeni bir takım oluştur |
39
+ | `TeamDelete` | Tamamlandığında takımı kaldır |
40
+ | `Agent` | Takıma katılan takım üyelerini başlat |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Paylaşılan görev listesini yönet |
42
+
43
+ ## cc-viewer'da Önemi
44
+
45
+ SendMessage çağrıları bir takım oturumu içindeki agent'lar arası iletişimi temsil eder. Araç kullanım istatistiklerinde yüksek SendMessage sayısı aktif takım koordinasyonunu gösterir. İstek zaman çizelgesinde SendMessage alışverişleri agent'ların nasıl işbirliği yaptığını gösterir — sonuçları iletme, yardım isteme ve kapatma sıralarını koordine etme.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## Визначення
4
+
5
+ Надсилає повідомлення між агентами всередині команди. Використовується для прямого спілкування, широкомовного розсилання та протокольних повідомлень (запити/відповіді на завершення, затвердження планів).
6
+
7
+ ## Параметри
8
+
9
+ | Параметр | Тип | Обов'язковий | Опис |
10
+ |----------|-----|--------------|------|
11
+ | `to` | string | Так | Одержувач: ім'я учасника або `"*"` для розсилання всім |
12
+ | `message` | string / object | Так | Текстове повідомлення або структурований протокольний об'єкт |
13
+ | `summary` | string | Ні | Попередній перегляд з 5-10 слів, що відображається в інтерфейсі |
14
+
15
+ ## Типи повідомлень
16
+
17
+ ### Текст
18
+ Прямі повідомлення між учасниками команди для координації, оновлення статусу та обговорення завдань.
19
+
20
+ ### Запит на завершення
21
+ Просить учасника коректно завершити роботу: `{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### Відповідь на завершення
24
+ Учасник схвалює або відхиляє завершення: `{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### Відповідь на затвердження плану
27
+ Схвалює або відхиляє план учасника: `{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## Широкомовне vs. пряме
30
+
31
+ - **Пряме** (`to: "ім'я-учасника"`): Надіслати конкретному учаснику — бажано для більшості комунікацій
32
+ - **Широкомовне** (`to: "*"`): Надіслати всім учасникам — використовувати обережно, лише для критичних командних оголошень
33
+
34
+ ## Пов'язані інструменти
35
+
36
+ | Інструмент | Призначення |
37
+ |------------|-------------|
38
+ | `TeamCreate` | Створити нову команду |
39
+ | `TeamDelete` | Видалити команду після завершення |
40
+ | `Agent` | Запустити учасників, які приєднуються до команди |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | Управління спільним списком завдань |
42
+
43
+ ## Значення в cc-viewer
44
+
45
+ Виклики SendMessage представляють міжагентне спілкування всередині командної сесії. У статистиці використання інструментів висока кількість SendMessage вказує на активну координацію команди. На часовій шкалі запитів обміни SendMessage показують, як агенти співпрацюють — передають результати, запитують допомогу та координують послідовності завершення.
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## 定义
4
+
5
+ 在团队内的 agent 之间发送消息。用于直接通信、广播以及协议消息(关闭请求/响应、计划审批)。
6
+
7
+ ## 参数
8
+
9
+ | 参数 | 类型 | 必填 | 说明 |
10
+ |------|------|------|------|
11
+ | `to` | string | 是 | 接收方:队友名称,或 `"*"` 广播给所有人 |
12
+ | `message` | string / object | 是 | 纯文本消息或结构化协议对象 |
13
+ | `summary` | string | 否 | 在 UI 中显示的 5-10 字预览 |
14
+
15
+ ## 消息类型
16
+
17
+ ### 纯文本
18
+ 队友之间的直接消息,用于协调、状态更新和任务讨论。
19
+
20
+ ### 关闭请求
21
+ 请求队友优雅关闭:`{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### 关闭响应
24
+ 队友批准或拒绝关闭:`{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### 计划审批响应
27
+ 批准或拒绝队友的计划:`{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## 广播与直发
30
+
31
+ - **直发**(`to: "队友名称"`):发送给特定队友 — 大多数通信的首选方式
32
+ - **广播**(`to: "*"`):发送给所有队友 — 仅在需要全团队紧急通知时使用
33
+
34
+ ## 相关工具
35
+
36
+ | 工具 | 用途 |
37
+ |------|------|
38
+ | `TeamCreate` | 创建新团队 |
39
+ | `TeamDelete` | 完成后删除团队 |
40
+ | `Agent` | 生成加入团队的队友 |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | 管理共享任务列表 |
42
+
43
+ ## 在 cc-viewer 中的意义
44
+
45
+ SendMessage 调用代表团队会话中 agent 间的通信。在工具使用统计中,较高的 SendMessage 次数表明团队协调活跃。在请求时间线中,SendMessage 交换展示了 agent 之间如何协作——传递结果、请求帮助以及协调关闭流程。
@@ -0,0 +1,45 @@
1
+ # SendMessage
2
+
3
+ ## 定義
4
+
5
+ 在團隊內的 agent 之間傳送訊息。用於直接通訊、廣播以及協議訊息(關閉請求 / 回應、計畫審批)。
6
+
7
+ ## 參數
8
+
9
+ | 參數 | 類型 | 必填 | 說明 |
10
+ |------|------|------|------|
11
+ | `to` | string | 是 | 接收方:隊友名稱,或 `"*"` 廣播給所有人 |
12
+ | `message` | string / object | 是 | 純文字訊息或結構化協議物件 |
13
+ | `summary` | string | 否 | 在 UI 中顯示的 5-10 字預覽 |
14
+
15
+ ## 訊息類型
16
+
17
+ ### 純文字
18
+ 隊友之間的直接訊息,用於協調、狀態更新和任務討論。
19
+
20
+ ### 關閉請求
21
+ 請求隊友優雅關閉:`{ type: "shutdown_request", reason: "..." }`
22
+
23
+ ### 關閉回應
24
+ 隊友批准或拒絕關閉:`{ type: "shutdown_response", approve: true/false }`
25
+
26
+ ### 計畫審批回應
27
+ 批准或拒絕隊友的計畫:`{ type: "plan_approval_response", approve: true/false }`
28
+
29
+ ## 廣播與直發
30
+
31
+ - **直發**(`to: "隊友名稱"`):傳送給特定隊友 — 大多數通訊的首選方式
32
+ - **廣播**(`to: "*"`):傳送給所有隊友 — 僅在需要全團隊緊急通知時使用
33
+
34
+ ## 相關工具
35
+
36
+ | 工具 | 用途 |
37
+ |------|------|
38
+ | `TeamCreate` | 建立新團隊 |
39
+ | `TeamDelete` | 完成後刪除團隊 |
40
+ | `Agent` | 生成加入團隊的隊友 |
41
+ | `TaskCreate` / `TaskUpdate` / `TaskList` | 管理共享任務列表 |
42
+
43
+ ## 在 cc-viewer 中的意義
44
+
45
+ SendMessage 呼叫代表團隊會話中 agent 間的通訊。在工具使用統計中,較高的 SendMessage 次數表明團隊協調活躍。在請求時間線中,SendMessage 交換展示了 agent 之間如何協作——傳遞結果、請求協助以及協調關閉流程。
@@ -622,7 +622,7 @@ ${t}</tr>
622
622
  `}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
623
623
  `}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${bl(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let i=this.parser.parseInline(n),r=c7(t);if(r===null)return i;t=r;let s='<a href="'+t+'"';return e&&(s+=' title="'+bl(e)+'"'),s+=">"+i+"</a>",s}image({href:t,title:e,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let r=c7(t);if(r===null)return bl(n);t=r;let s=`<img src="${t}" alt="${bl(n)}"`;return e&&(s+=` title="${bl(e)}"`),s+=">",s}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:bl(t.text)}},o5=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},Da=class YC{constructor(e){st(this,"options");st(this,"renderer");st(this,"textRenderer");this.options=e||hh,this.options.renderer=this.options.renderer||new W1,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new o5}static parse(e,n){return new YC(n).parse(e)}static parseInline(e,n){return new YC(n).parseInline(e)}parse(e){var i,r;let n="";for(let s=0;s<e.length;s++){let o=e[s];if((r=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&r[o.type]){let l=o,c=this.options.extensions.renderers[l.type].call({parser:this},l);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(l.type)){n+=c||"";continue}}let a=o;switch(a.type){case"space":{n+=this.renderer.space(a);break}case"hr":{n+=this.renderer.hr(a);break}case"heading":{n+=this.renderer.heading(a);break}case"code":{n+=this.renderer.code(a);break}case"table":{n+=this.renderer.table(a);break}case"blockquote":{n+=this.renderer.blockquote(a);break}case"list":{n+=this.renderer.list(a);break}case"checkbox":{n+=this.renderer.checkbox(a);break}case"html":{n+=this.renderer.html(a);break}case"def":{n+=this.renderer.def(a);break}case"paragraph":{n+=this.renderer.paragraph(a);break}case"text":{n+=this.renderer.text(a);break}default:{let l='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return n}parseInline(e,n=this.renderer){var r,s;let i="";for(let o=0;o<e.length;o++){let a=e[o];if((s=(r=this.options.extensions)==null?void 0:r.renderers)!=null&&s[a.type]){let c=this.options.extensions.renderers[a.type].call({parser:this},a);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)){i+=c||"";continue}}let l=a;switch(l.type){case"escape":{i+=n.text(l);break}case"html":{i+=n.html(l);break}case"link":{i+=n.link(l);break}case"image":{i+=n.image(l);break}case"checkbox":{i+=n.checkbox(l);break}case"strong":{i+=n.strong(l);break}case"em":{i+=n.em(l);break}case"codespan":{i+=n.codespan(l);break}case"br":{i+=n.br(l);break}case"del":{i+=n.del(l);break}case"text":{i+=n.text(l);break}default:{let c='Token with "'+l.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return i}},o$,Hp=(o$=class{constructor(t){st(this,"options");st(this,"block");this.options=t||hh}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(){return this.block?Ya.lex:Ya.lexInline}provideParser(){return this.block?Da.parse:Da.parseInline}},st(o$,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),st(o$,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),o$),fQe=class{constructor(...t){st(this,"defaults",Kk());st(this,"options",this.setOptions);st(this,"parse",this.parseMarkdown(!0));st(this,"parseInline",this.parseMarkdown(!1));st(this,"Parser",Da);st(this,"Renderer",W1);st(this,"TextRenderer",o5);st(this,"Lexer",Ya);st(this,"Tokenizer",L1);st(this,"Hooks",Hp);this.use(...t)}walkTokens(t,e){var i,r;let n=[];for(let s of t)switch(n=n.concat(e.call(this,s)),s.type){case"table":{let o=s;for(let a of o.header)n=n.concat(this.walkTokens(a.tokens,e));for(let a of o.rows)for(let l of a)n=n.concat(this.walkTokens(l.tokens,e));break}case"list":{let o=s;n=n.concat(this.walkTokens(o.items,e));break}default:{let o=s;(r=(i=this.defaults.extensions)==null?void 0:i.childTokens)!=null&&r[o.type]?this.defaults.extensions.childTokens[o.type].forEach(a=>{let l=o[a].flat(1/0);n=n.concat(this.walkTokens(l,e))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let s=e.renderers[r.name];s?e.renderers[r.name]=function(...o){let a=r.renderer.apply(this,o);return a===!1&&(a=s.apply(this,o)),a}:e.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=e[r.level];s?s.unshift(r.tokenizer):e[r.level]=[r.tokenizer],r.start&&(r.level==="block"?e.startBlock?e.startBlock.push(r.start):e.startBlock=[r.start]:r.level==="inline"&&(e.startInline?e.startInline.push(r.start):e.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(e.childTokens[r.name]=r.childTokens)}),i.extensions=e),n.renderer){let r=this.defaults.renderer||new W1(this.defaults);for(let s in n.renderer){if(!(s in r))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let o=s,a=n.renderer[o],l=r[o];r[o]=(...c)=>{let u=a.apply(r,c);return u===!1&&(u=l.apply(r,c)),u||""}}i.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new L1(this.defaults);for(let s in n.tokenizer){if(!(s in r))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let o=s,a=n.tokenizer[o],l=r[o];r[o]=(...c)=>{let u=a.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}i.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new Hp;for(let s in n.hooks){if(!(s in r))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let o=s,a=n.hooks[o],l=r[o];Hp.passThroughHooks.has(s)?r[o]=c=>{if(this.defaults.async&&Hp.passThroughHooksRespectAsync.has(s))return(async()=>{let d=await a.call(r,c);return l.call(r,d)})();let u=a.call(r,c);return l.call(r,u)}:r[o]=(...c)=>{if(this.defaults.async)return(async()=>{let d=await a.apply(r,c);return d===!1&&(d=await l.apply(r,c)),d})();let u=a.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}i.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,s=n.walkTokens;i.walkTokens=function(o){let a=[];return a.push(s.call(this,o)),r&&(a=a.concat(r.call(this,o))),a}}this.defaults={...this.defaults,...i}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Ya.lex(t,e??this.defaults)}parser(t,e){return Da.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let i={...n},r={...this.defaults,...i},s=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&i.async===!1)return s(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return s(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=t),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(e):e,a=await(r.hooks?await r.hooks.provideLexer():t?Ya.lex:Ya.lexInline)(o,r),l=r.hooks?await r.hooks.processAllTokens(a):a;r.walkTokens&&await Promise.all(this.walkTokens(l,r.walkTokens));let c=await(r.hooks?await r.hooks.provideParser():t?Da.parse:Da.parseInline)(l,r);return r.hooks?await r.hooks.postprocess(c):c})().catch(s);try{r.hooks&&(e=r.hooks.preprocess(e));let o=(r.hooks?r.hooks.provideLexer():t?Ya.lex:Ya.lexInline)(e,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let a=(r.hooks?r.hooks.provideParser():t?Da.parse:Da.parseInline)(o,r);return r.hooks&&(a=r.hooks.postprocess(a)),a}catch(o){return s(o)}}}onError(t,e){return n=>{if(n.message+=`
624
624
  Please report this to https://github.com/markedjs/marked.`,t){let i="<p>An error occurred:</p><pre>"+bl(n.message+"",!0)+"</pre>";return e?Promise.resolve(i):i}if(e)return Promise.reject(n);throw n}}},th=new fQe;function Qi(t,e){return th.parse(t,e)}Qi.options=Qi.setOptions=function(t){return th.setOptions(t),Qi.defaults=th.defaults,dY(Qi.defaults),Qi};Qi.getDefaults=Kk;Qi.defaults=hh;Qi.use=function(...t){return th.use(...t),Qi.defaults=th.defaults,dY(Qi.defaults),Qi};Qi.walkTokens=function(t,e){return th.walkTokens(t,e)};Qi.parseInline=th.parseInline;Qi.Parser=Da;Qi.parser=Da.parse;Qi.Renderer=W1;Qi.TextRenderer=o5;Qi.Lexer=Ya;Qi.lexer=Ya.lex;Qi.Tokenizer=L1;Qi.Hooks=Hp;Qi.parse=Qi;Qi.options;Qi.setOptions;Qi.use;Qi.walkTokens;Qi.parseInline;Da.parse;Ya.lex;/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */const{entries:_Y,setPrototypeOf:h7,isFrozen:pQe,getPrototypeOf:mQe,getOwnPropertyDescriptor:gQe}=Object;let{freeze:ho,seal:ka,create:M$}=Object,{apply:DC,construct:UC}=typeof Reflect<"u"&&Reflect;ho||(ho=function(e){return e});ka||(ka=function(e){return e});DC||(DC=function(e,n){for(var i=arguments.length,r=new Array(i>2?i-2:0),s=2;s<i;s++)r[s-2]=arguments[s];return e.apply(n,r)});UC||(UC=function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];return new e(...i)});const x0=Oo(Array.prototype.forEach),vQe=Oo(Array.prototype.lastIndexOf),O7=Oo(Array.prototype.pop),Pp=Oo(Array.prototype.push),$Qe=Oo(Array.prototype.splice),N$=Oo(String.prototype.toLowerCase),aQ=Oo(String.prototype.toString),lQ=Oo(String.prototype.match),Cp=Oo(String.prototype.replace),SQe=Oo(String.prototype.indexOf),bQe=Oo(String.prototype.trim),Zo=Oo(Object.prototype.hasOwnProperty),Fs=Oo(RegExp.prototype.test),Tp=yQe(TypeError);function Oo(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];return DC(t,e,i)}}function yQe(t){return function(){for(var e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];return UC(t,n)}}function Zn(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:N$;h7&&h7(t,null);let i=e.length;for(;i--;){let r=e[i];if(typeof r=="string"){const s=n(r);s!==r&&(pQe(e)||(e[i]=s),r=s)}t[r]=!0}return t}function _Qe(t){for(let e=0;e<t.length;e++)Zo(t,e)||(t[e]=null);return t}function yl(t){const e=M$(null);for(const[n,i]of _Y(t))Zo(t,n)&&(Array.isArray(i)?e[n]=_Qe(i):i&&typeof i=="object"&&i.constructor===Object?e[n]=yl(i):e[n]=i);return e}function kp(t,e){for(;t!==null;){const i=gQe(t,e);if(i){if(i.get)return Oo(i.get);if(typeof i.value=="function")return Oo(i.value)}t=mQe(t)}function n(){return null}return n}const f7=ho(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),cQ=ho(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),uQ=ho(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),xQe=ho(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),dQ=ho(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),QQe=ho(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),p7=ho(["#text"]),m7=ho(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),hQ=ho(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),g7=ho(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Q0=ho(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),wQe=ka(/\{\{[\w\W]*|[\w\W]*\}\}/gm),PQe=ka(/<%[\w\W]*|[\w\W]*%>/gm),CQe=ka(/\$\{[\w\W]*/gm),TQe=ka(/^data-[\-\w.\u00B7-\uFFFF]+$/),kQe=ka(/^aria-[\-\w]+$/),xY=ka(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),RQe=ka(/^(?:\w+script|data):/i),EQe=ka(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),QY=ka(/^html$/i),XQe=ka(/^[a-z][.\w]*(-[.\w]+)+$/i);var v7=Object.freeze({__proto__:null,ARIA_ATTR:kQe,ATTR_WHITESPACE:EQe,CUSTOM_ELEMENT:XQe,DATA_ATTR:TQe,DOCTYPE_NAME:QY,ERB_EXPR:PQe,IS_ALLOWED_URI:xY,IS_SCRIPT_OR_DATA:RQe,MUSTACHE_EXPR:wQe,TMPLIT_EXPR:CQe});const Rp={element:1,text:3,progressingInstruction:7,comment:8,document:9},zQe=function(){return typeof window>"u"?null:window},MQe=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let i=null;const r="data-tt-policy-suffix";n&&n.hasAttribute(r)&&(i=n.getAttribute(r));const s="dompurify"+(i?"#"+i:"");try{return e.createPolicy(s,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+s+" could not be created."),null}},$7=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function wY(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:zQe();const e=lt=>wY(lt);if(e.version="3.3.3",e.removed=[],!t||!t.document||t.document.nodeType!==Rp.document||!t.Element)return e.isSupported=!1,e;let{document:n}=t;const i=n,r=i.currentScript,{DocumentFragment:s,HTMLTemplateElement:o,Node:a,Element:l,NodeFilter:c,NamedNodeMap:u=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:h,trustedTypes:p}=t,g=l.prototype,v=kp(g,"cloneNode"),$=kp(g,"remove"),b=kp(g,"nextSibling"),_=kp(g,"childNodes"),x=kp(g,"parentNode");if(typeof o=="function"){const lt=n.createElement("template");lt.content&&lt.content.ownerDocument&&(n=lt.content.ownerDocument)}let Q,w="";const{implementation:P,createNodeIterator:T,createDocumentFragment:M,getElementsByTagName:R}=n,{importNode:L}=i;let I=$7();e.isSupported=typeof _Y=="function"&&typeof x=="function"&&P&&P.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:E,ERB_EXPR:X,TMPLIT_EXPR:k,DATA_ATTR:z,ARIA_ATTR:N,IS_SCRIPT_OR_DATA:j,ATTR_WHITESPACE:W,CUSTOM_ELEMENT:B}=v7;let{IS_ALLOWED_URI:U}=v7,D=null;const q=Zn({},[...f7,...cQ,...uQ,...dQ,...p7]);let Z=null;const F=Zn({},[...m7,...hQ,...g7,...Q0]);let G=Object.seal(M$(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ee=null,oe=null;const ie=Object.seal(M$(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let le=!0,Se=!0,pe=!1,de=!0,ge=!1,ue=!0,Oe=!1,ce=!1,be=!1,we=!1,Ne=!1,je=!1,ve=!0,Ce=!1;const Qe="user-content-";let Pe=!0,Ze=!1,Ke={},ut=null;const ht=Zn({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let at=null;const mt=Zn({},["audio","video","img","source","image","track"]);let Le=null;const Ie=Zn({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),et="http://www.w3.org/1998/Math/MathML",He="http://www.w3.org/2000/svg",nt="http://www.w3.org/1999/xhtml";let Ye=nt,ot=!1,vt=null;const Pt=Zn({},[et,He,nt],aQ);let nn=Zn({},["mi","mo","mn","ms","mtext"]),rn=Zn({},["annotation-xml"]);const qt=Zn({},["title","style","font","a","script"]);let Pn=null;const he=["application/xhtml+xml","text/html"],ke="text/html";let Ee=null,ft=null;const jt=n.createElement("form"),it=function(me){return me instanceof RegExp||me instanceof Function},Ue=function(){let me=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ft&&ft===me)){if((!me||typeof me!="object")&&(me={}),me=yl(me),Pn=he.indexOf(me.PARSER_MEDIA_TYPE)===-1?ke:me.PARSER_MEDIA_TYPE,Ee=Pn==="application/xhtml+xml"?aQ:N$,D=Zo(me,"ALLOWED_TAGS")?Zn({},me.ALLOWED_TAGS,Ee):q,Z=Zo(me,"ALLOWED_ATTR")?Zn({},me.ALLOWED_ATTR,Ee):F,vt=Zo(me,"ALLOWED_NAMESPACES")?Zn({},me.ALLOWED_NAMESPACES,aQ):Pt,Le=Zo(me,"ADD_URI_SAFE_ATTR")?Zn(yl(Ie),me.ADD_URI_SAFE_ATTR,Ee):Ie,at=Zo(me,"ADD_DATA_URI_TAGS")?Zn(yl(mt),me.ADD_DATA_URI_TAGS,Ee):mt,ut=Zo(me,"FORBID_CONTENTS")?Zn({},me.FORBID_CONTENTS,Ee):ht,ee=Zo(me,"FORBID_TAGS")?Zn({},me.FORBID_TAGS,Ee):yl({}),oe=Zo(me,"FORBID_ATTR")?Zn({},me.FORBID_ATTR,Ee):yl({}),Ke=Zo(me,"USE_PROFILES")?me.USE_PROFILES:!1,le=me.ALLOW_ARIA_ATTR!==!1,Se=me.ALLOW_DATA_ATTR!==!1,pe=me.ALLOW_UNKNOWN_PROTOCOLS||!1,de=me.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ge=me.SAFE_FOR_TEMPLATES||!1,ue=me.SAFE_FOR_XML!==!1,Oe=me.WHOLE_DOCUMENT||!1,we=me.RETURN_DOM||!1,Ne=me.RETURN_DOM_FRAGMENT||!1,je=me.RETURN_TRUSTED_TYPE||!1,be=me.FORCE_BODY||!1,ve=me.SANITIZE_DOM!==!1,Ce=me.SANITIZE_NAMED_PROPS||!1,Pe=me.KEEP_CONTENT!==!1,Ze=me.IN_PLACE||!1,U=me.ALLOWED_URI_REGEXP||xY,Ye=me.NAMESPACE||nt,nn=me.MATHML_TEXT_INTEGRATION_POINTS||nn,rn=me.HTML_INTEGRATION_POINTS||rn,G=me.CUSTOM_ELEMENT_HANDLING||{},me.CUSTOM_ELEMENT_HANDLING&&it(me.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(G.tagNameCheck=me.CUSTOM_ELEMENT_HANDLING.tagNameCheck),me.CUSTOM_ELEMENT_HANDLING&&it(me.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(G.attributeNameCheck=me.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),me.CUSTOM_ELEMENT_HANDLING&&typeof me.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(G.allowCustomizedBuiltInElements=me.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ge&&(Se=!1),Ne&&(we=!0),Ke&&(D=Zn({},p7),Z=M$(null),Ke.html===!0&&(Zn(D,f7),Zn(Z,m7)),Ke.svg===!0&&(Zn(D,cQ),Zn(Z,hQ),Zn(Z,Q0)),Ke.svgFilters===!0&&(Zn(D,uQ),Zn(Z,hQ),Zn(Z,Q0)),Ke.mathMl===!0&&(Zn(D,dQ),Zn(Z,g7),Zn(Z,Q0))),Zo(me,"ADD_TAGS")||(ie.tagCheck=null),Zo(me,"ADD_ATTR")||(ie.attributeCheck=null),me.ADD_TAGS&&(typeof me.ADD_TAGS=="function"?ie.tagCheck=me.ADD_TAGS:(D===q&&(D=yl(D)),Zn(D,me.ADD_TAGS,Ee))),me.ADD_ATTR&&(typeof me.ADD_ATTR=="function"?ie.attributeCheck=me.ADD_ATTR:(Z===F&&(Z=yl(Z)),Zn(Z,me.ADD_ATTR,Ee))),me.ADD_URI_SAFE_ATTR&&Zn(Le,me.ADD_URI_SAFE_ATTR,Ee),me.FORBID_CONTENTS&&(ut===ht&&(ut=yl(ut)),Zn(ut,me.FORBID_CONTENTS,Ee)),me.ADD_FORBID_CONTENTS&&(ut===ht&&(ut=yl(ut)),Zn(ut,me.ADD_FORBID_CONTENTS,Ee)),Pe&&(D["#text"]=!0),Oe&&Zn(D,["html","head","body"]),D.table&&(Zn(D,["tbody"]),delete ee.tbody),me.TRUSTED_TYPES_POLICY){if(typeof me.TRUSTED_TYPES_POLICY.createHTML!="function")throw Tp('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof me.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Tp('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');Q=me.TRUSTED_TYPES_POLICY,w=Q.createHTML("")}else Q===void 0&&(Q=MQe(p,r)),Q!==null&&typeof w=="string"&&(w=Q.createHTML(""));ho&&ho(me),ft=me}},We=Zn({},[...cQ,...uQ,...xQe]),Me=Zn({},[...dQ,...QQe]),Be=function(me){let _e=x(me);(!_e||!_e.tagName)&&(_e={namespaceURI:Ye,tagName:"template"});const Ve=N$(me.tagName),Qt=N$(_e.tagName);return vt[me.namespaceURI]?me.namespaceURI===He?_e.namespaceURI===nt?Ve==="svg":_e.namespaceURI===et?Ve==="svg"&&(Qt==="annotation-xml"||nn[Qt]):!!We[Ve]:me.namespaceURI===et?_e.namespaceURI===nt?Ve==="math":_e.namespaceURI===He?Ve==="math"&&rn[Qt]:!!Me[Ve]:me.namespaceURI===nt?_e.namespaceURI===He&&!rn[Qt]||_e.namespaceURI===et&&!nn[Qt]?!1:!Me[Ve]&&(qt[Ve]||!We[Ve]):!!(Pn==="application/xhtml+xml"&&vt[me.namespaceURI]):!1},ze=function(me){Pp(e.removed,{element:me});try{x(me).removeChild(me)}catch{$(me)}},tt=function(me,_e){try{Pp(e.removed,{attribute:_e.getAttributeNode(me),from:_e})}catch{Pp(e.removed,{attribute:null,from:_e})}if(_e.removeAttribute(me),me==="is")if(we||Ne)try{ze(_e)}catch{}else try{_e.setAttribute(me,"")}catch{}},kt=function(me){let _e=null,Ve=null;if(be)me="<remove></remove>"+me;else{const $t=lQ(me,/^[\r\n\t ]+/);Ve=$t&&$t[0]}Pn==="application/xhtml+xml"&&Ye===nt&&(me='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+me+"</body></html>");const Qt=Q?Q.createHTML(me):me;if(Ye===nt)try{_e=new h().parseFromString(Qt,Pn)}catch{}if(!_e||!_e.documentElement){_e=P.createDocument(Ye,"template",null);try{_e.documentElement.innerHTML=ot?w:Qt}catch{}}const dt=_e.body||_e.documentElement;return me&&Ve&&dt.insertBefore(n.createTextNode(Ve),dt.childNodes[0]||null),Ye===nt?R.call(_e,Oe?"html":"body")[0]:Oe?_e.documentElement:dt},Rt=function(me){return T.call(me.ownerDocument||me,me,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},un=function(me){return me instanceof d&&(typeof me.nodeName!="string"||typeof me.textContent!="string"||typeof me.removeChild!="function"||!(me.attributes instanceof u)||typeof me.removeAttribute!="function"||typeof me.setAttribute!="function"||typeof me.namespaceURI!="string"||typeof me.insertBefore!="function"||typeof me.hasChildNodes!="function")},_t=function(me){return typeof a=="function"&&me instanceof a};function ct(lt,me,_e){x0(lt,Ve=>{Ve.call(e,me,_e,ft)})}const Nt=function(me){let _e=null;if(ct(I.beforeSanitizeElements,me,null),un(me))return ze(me),!0;const Ve=Ee(me.nodeName);if(ct(I.uponSanitizeElement,me,{tagName:Ve,allowedTags:D}),ue&&me.hasChildNodes()&&!_t(me.firstElementChild)&&Fs(/<[/\w!]/g,me.innerHTML)&&Fs(/<[/\w!]/g,me.textContent)||me.nodeType===Rp.progressingInstruction||ue&&me.nodeType===Rp.comment&&Fs(/<[/\w]/g,me.data))return ze(me),!0;if(!(ie.tagCheck instanceof Function&&ie.tagCheck(Ve))&&(!D[Ve]||ee[Ve])){if(!ee[Ve]&&yn(Ve)&&(G.tagNameCheck instanceof RegExp&&Fs(G.tagNameCheck,Ve)||G.tagNameCheck instanceof Function&&G.tagNameCheck(Ve)))return!1;if(Pe&&!ut[Ve]){const Qt=x(me)||me.parentNode,dt=_(me)||me.childNodes;if(dt&&Qt){const $t=dt.length;for(let St=$t-1;St>=0;--St){const Bt=v(dt[St],!0);Bt.__removalCount=(me.__removalCount||0)+1,Qt.insertBefore(Bt,b(me))}}}return ze(me),!0}return me instanceof l&&!Be(me)||(Ve==="noscript"||Ve==="noembed"||Ve==="noframes")&&Fs(/<\/no(script|embed|frames)/i,me.innerHTML)?(ze(me),!0):(ge&&me.nodeType===Rp.text&&(_e=me.textContent,x0([E,X,k],Qt=>{_e=Cp(_e,Qt," ")}),me.textContent!==_e&&(Pp(e.removed,{element:me.cloneNode()}),me.textContent=_e)),ct(I.afterSanitizeElements,me,null),!1)},gn=function(me,_e,Ve){if(oe[_e]||ve&&(_e==="id"||_e==="name")&&(Ve in n||Ve in jt))return!1;if(!(Se&&!oe[_e]&&Fs(z,_e))){if(!(le&&Fs(N,_e))){if(!(ie.attributeCheck instanceof Function&&ie.attributeCheck(_e,me))){if(!Z[_e]||oe[_e]){if(!(yn(me)&&(G.tagNameCheck instanceof RegExp&&Fs(G.tagNameCheck,me)||G.tagNameCheck instanceof Function&&G.tagNameCheck(me))&&(G.attributeNameCheck instanceof RegExp&&Fs(G.attributeNameCheck,_e)||G.attributeNameCheck instanceof Function&&G.attributeNameCheck(_e,me))||_e==="is"&&G.allowCustomizedBuiltInElements&&(G.tagNameCheck instanceof RegExp&&Fs(G.tagNameCheck,Ve)||G.tagNameCheck instanceof Function&&G.tagNameCheck(Ve))))return!1}else if(!Le[_e]){if(!Fs(U,Cp(Ve,W,""))){if(!((_e==="src"||_e==="xlink:href"||_e==="href")&&me!=="script"&&SQe(Ve,"data:")===0&&at[me])){if(!(pe&&!Fs(j,Cp(Ve,W,"")))){if(Ve)return!1}}}}}}}return!0},yn=function(me){return me!=="annotation-xml"&&lQ(me,B)},xn=function(me){ct(I.beforeSanitizeAttributes,me,null);const{attributes:_e}=me;if(!_e||un(me))return;const Ve={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Z,forceKeepAttr:void 0};let Qt=_e.length;for(;Qt--;){const dt=_e[Qt],{name:$t,namespaceURI:St,value:Bt}=dt,hn=Ee($t),Te=Bt;let qe=$t==="value"?Te:bQe(Te);if(Ve.attrName=hn,Ve.attrValue=qe,Ve.keepAttr=!0,Ve.forceKeepAttr=void 0,ct(I.uponSanitizeAttribute,me,Ve),qe=Ve.attrValue,Ce&&(hn==="id"||hn==="name")&&(tt($t,me),qe=Qe+qe),ue&&Fs(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,qe)){tt($t,me);continue}if(hn==="attributename"&&lQ(qe,"href")){tt($t,me);continue}if(Ve.forceKeepAttr)continue;if(!Ve.keepAttr){tt($t,me);continue}if(!de&&Fs(/\/>/i,qe)){tt($t,me);continue}ge&&x0([E,X,k],Jt=>{qe=Cp(qe,Jt," ")});const bt=Ee(me.nodeName);if(!gn(bt,hn,qe)){tt($t,me);continue}if(Q&&typeof p=="object"&&typeof p.getAttributeType=="function"&&!St)switch(p.getAttributeType(bt,hn)){case"TrustedHTML":{qe=Q.createHTML(qe);break}case"TrustedScriptURL":{qe=Q.createScriptURL(qe);break}}if(qe!==Te)try{St?me.setAttributeNS(St,$t,qe):me.setAttribute($t,qe),un(me)?ze(me):O7(e.removed)}catch{tt($t,me)}}ct(I.afterSanitizeAttributes,me,null)},Nn=function lt(me){let _e=null;const Ve=Rt(me);for(ct(I.beforeSanitizeShadowDOM,me,null);_e=Ve.nextNode();)ct(I.uponSanitizeShadowNode,_e,null),Nt(_e),xn(_e),_e.content instanceof s&&lt(_e.content);ct(I.afterSanitizeShadowDOM,me,null)};return e.sanitize=function(lt){let me=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},_e=null,Ve=null,Qt=null,dt=null;if(ot=!lt,ot&&(lt="<!-->"),typeof lt!="string"&&!_t(lt))if(typeof lt.toString=="function"){if(lt=lt.toString(),typeof lt!="string")throw Tp("dirty is not a string, aborting")}else throw Tp("toString is not a function");if(!e.isSupported)return lt;if(ce||Ue(me),e.removed=[],typeof lt=="string"&&(Ze=!1),Ze){if(lt.nodeName){const Bt=Ee(lt.nodeName);if(!D[Bt]||ee[Bt])throw Tp("root node is forbidden and cannot be sanitized in-place")}}else if(lt instanceof a)_e=kt("<!---->"),Ve=_e.ownerDocument.importNode(lt,!0),Ve.nodeType===Rp.element&&Ve.nodeName==="BODY"||Ve.nodeName==="HTML"?_e=Ve:_e.appendChild(Ve);else{if(!we&&!ge&&!Oe&&lt.indexOf("<")===-1)return Q&&je?Q.createHTML(lt):lt;if(_e=kt(lt),!_e)return we?null:je?w:""}_e&&be&&ze(_e.firstChild);const $t=Rt(Ze?lt:_e);for(;Qt=$t.nextNode();)Nt(Qt),xn(Qt),Qt.content instanceof s&&Nn(Qt.content);if(Ze)return lt;if(we){if(Ne)for(dt=M.call(_e.ownerDocument);_e.firstChild;)dt.appendChild(_e.firstChild);else dt=_e;return(Z.shadowroot||Z.shadowrootmode)&&(dt=L.call(i,dt,!0)),dt}let St=Oe?_e.outerHTML:_e.innerHTML;return Oe&&D["!doctype"]&&_e.ownerDocument&&_e.ownerDocument.doctype&&_e.ownerDocument.doctype.name&&Fs(QY,_e.ownerDocument.doctype.name)&&(St="<!DOCTYPE "+_e.ownerDocument.doctype.name+`>
625
- `+St),ge&&x0([E,X,k],Bt=>{St=Cp(St,Bt," ")}),Q&&je?Q.createHTML(St):St},e.setConfig=function(){let lt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ue(lt),ce=!0},e.clearConfig=function(){ft=null,ce=!1},e.isValidAttribute=function(lt,me,_e){ft||Ue({});const Ve=Ee(lt),Qt=Ee(me);return gn(Ve,Qt,_e)},e.addHook=function(lt,me){typeof me=="function"&&Pp(I[lt],me)},e.removeHook=function(lt,me){if(me!==void 0){const _e=vQe(I[lt],me);return _e===-1?void 0:$Qe(I[lt],_e,1)[0]}return O7(I[lt])},e.removeHooks=function(lt){I[lt]=[]},e.removeAllHooks=function(){I=$7()},e}var NQe=wY();function Pl(t){if(!t)return"";try{return NQe.sanitize(Qi.parse(t,{breaks:!0}))}catch{return N1(t)}}const jQe="_helpBtn_ovmho_1",AQe="_modalBody_ovmho_24",IQe="_spinWrap_ovmho_70",OQ={helpBtn:jQe,modalBody:AQe,spinWrap:IQe},LQe=new Set(["Tool-Bash","Tool-Read","Tool-Edit","Tool-Write","Tool-Glob","Tool-Grep","Tool-NotebookEdit","Tool-WebFetch","Tool-WebSearch","Tool-Task","Tool-Agent","Tool-TaskOutput","Tool-TaskStop","Tool-TaskCreate","Tool-TaskGet","Tool-TaskUpdate","Tool-TaskList","Tool-TeamCreate","Tool-TeamDelete","SubAgent-Search","Tool-EnterPlanMode","Tool-ExitPlanMode","Tool-AskUserQuestion","Tool-Skill","Tool-getDiagnostics","Tool-executeCode","MainAgent","Tools","CacheRebuild","BodyDiffJSON","TranslateContextPollution","KVCacheContent"]);function Ko({doc:t}){const[e,n]=f.useState(!1),[i,r]=f.useState(!1),[s,o]=f.useState(""),[a,l]=f.useState("");if(!t||!LQe.has(t))return null;const c=f.useCallback(async()=>{n(!0),r(!0),o(""),l(t);const d=X1();let h=null;try{const p=await fetch(`/api/concept?lang=${d}&doc=${encodeURIComponent(t)}`);p.ok&&(h=await p.text())}catch{}if(h){const p=h.match(/^#\s+(.+)/m);p&&l(p[1]),o(Pl(h))}else o("<p>Document not found.</p>");r(!1)},[t]),u=xi?{header:{padding:"8px 12px",margin:0},body:{maxHeight:"80vh",overflow:"auto",padding:"8px 10px"},content:{padding:0}}:{body:{padding:"16px 24px 24px"},content:{padding:"12px 20px"}};return S.jsxs(S.Fragment,{children:[S.jsx("span",{className:OQ.helpBtn,onClick:d=>{d.stopPropagation(),c()},children:"?"}),S.jsx(so,{theme:{algorithm:Yp.darkAlgorithm,token:{colorBgContainer:"#111",colorBgLayout:"#0a0a0a",colorBgElevated:"#1a1a1a",colorBorder:"#2a2a2a"}},children:S.jsx(cr,{title:a,open:e,onCancel:()=>n(!1),footer:null,width:xi?"98vw":640,centered:xi,styles:u,children:i?S.jsx("div",{className:OQ.spinWrap,children:S.jsx(Ja,{})}):S.jsx("div",{className:OQ.modalBody,dangerouslySetInnerHTML:{__html:s}})})})]})}const WQe=[{label:"Auto",value:"auto"},{label:"Opus 4.6",value:"opus-4.6",tokens:2e5},{label:"Opus 4.6 (1M)",value:"opus-4.6-1m",tokens:1e6},{label:"Sonnet 4.6",value:"sonnet-4.6",tokens:2e5},{label:"Sonnet 4.6 (1M)",value:"sonnet-4.6-1m",tokens:1e6},{label:"GLM5",value:"glm5",tokens:2e5},{label:"Kimi K2.5",value:"kimi-k2.5",tokens:2e5},{label:"MiniMax 2.1",value:"minimax-2.1",tokens:2e5},{label:"Qwen 3.5",value:"Qwen 3.5",tokens:2e5}],VQe={calibrationModels:WQe},BQe="_headerBar_85daq_2",YQe="_logoWrap_85daq_10",DQe="_logoWrapActive_85daq_17",UQe="_logoImage_85daq_26",qQe="_logoImageActive_85daq_36",ZQe="_compactBtn_85daq_41",FQe="_compactBtnNoBorder_85daq_47",GQe="_tokenStatsTag_85daq_55",HQe="_tokenStatsIcon_85daq_63",KQe="_liveTag_85daq_68",JQe="_liveTagFill_85daq_83",ewe="_liveTagContent_85daq_93",twe="_liveTagHistory_85daq_100",nwe="_liveTagText_85daq_106",iwe="_countdownStrong_85daq_111",rwe="_qrcodePopover_85daq_116",swe="_qrcodeTitle_85daq_134",owe="_qrcodeUrlInput_85daq_141",awe="_qrcodeUrlCopy_85daq_147",lwe="_settingsGroupBox_85daq_158",cwe="_settingsGroupTitle_85daq_166",uwe="_settingsItem_85daq_175",dwe="_settingsLabel_85daq_182",hwe="_tokenStatsEmpty_85daq_187",Owe="_tokenStatsContainer_85daq_194",fwe="_tokenStatsColumn_85daq_200",pwe="_toolStatsColumn_85daq_204",mwe="_modelCard_85daq_209",gwe="_modelCardSpaced_85daq_216 _modelCard_85daq_209",vwe="_modelName_85daq_222",$we="_statsTable_85daq_232",Swe="_th_85daq_237",bwe="_td_85daq_247",ywe="_label_85daq_256",_we="_rowBorder_85daq_266",xwe="_rebuildTotalRow_85daq_278",Qwe="_promptExportBar_85daq_287",wwe="_promptScrollArea_85daq_291",Pwe="_promptEmpty_85daq_296",Cwe="_promptTimestamp_85daq_302",Twe="_textPromptCard_85daq_310",kwe="_preText_85daq_319",Rwe="_systemCollapse_85daq_329",Ewe="_systemLabel_85daq_336",Xwe="_preSys_85daq_341",zwe="_promptTextarea_85daq_351",Mwe="_projectStatsCenter_85daq_367",Nwe="_projectStatsEmpty_85daq_373",jwe="_projectStatsContent_85daq_380",Awe="_projectStatsUpdated_85daq_386",Iwe="_projectStatsSummary_85daq_392",Lwe="_projectStatCard_85daq_398",Wwe="_projectStatValue_85daq_406",Vwe="_projectStatLabel_85daq_414",Bwe="_projectStatsSection_85daq_420",Ywe="_projectStatsSectionTitle_85daq_426",Dwe="_projectStatsModelCard_85daq_434",Uwe="_projectStatsModelHeader_85daq_441",qwe="_projectStatsModelName_85daq_450",Zwe="_projectStatsModelCount_85daq_456",Fwe="_pluginDirHint_85daq_463",Gwe="_pluginDirPath_85daq_469",Hwe="_pluginList_85daq_482",Kwe="_pluginItem_85daq_488",Jwe="_pluginInfo_85daq_498",ePe="_pluginName_85daq_506",tPe="_pluginFile_85daq_512",nPe="_pluginHooks_85daq_518",iPe="_pluginHookTag_85daq_525",rPe="_pluginActions_85daq_534",sPe="_pluginEmpty_85daq_542",oPe="_cachePopover_85daq_549",aPe="_cacheScrollArea_85daq_553",lPe="_cachePopoverTitle_85daq_558",cPe="_cachePopoverHeader_85daq_567",uPe="_cacheCopyBtn_85daq_573",dPe="_cachePopoverEmpty_85daq_585",hPe="_cacheTokenInfo_85daq_591",OPe="_cacheSection_85daq_600",fPe="_cacheSectionTitle_85daq_604",pPe="_cacheCodeBlock_85daq_611",mPe="_cacheCodeBlockSystem_85daq_625",gPe="_cacheNavBtn_85daq_639",vPe="_cacheNavList_85daq_654",$Pe="_cacheNavItem_85daq_660",SPe="_cacheBlockHighlight_85daq_676",bPe="_cacheBlockHighlightFading_85daq_681",yPe="_cacheBorderSvg_85daq_686",_Pe="_cacheBorderSvgFading_85daq_695",xPe="_cacheBorderRect_85daq_700",ae={headerBar:BQe,logoWrap:YQe,logoWrapActive:DQe,logoImage:UQe,logoImageActive:qQe,compactBtn:ZQe,compactBtnNoBorder:FQe,tokenStatsTag:GQe,tokenStatsIcon:HQe,liveTag:KQe,liveTagFill:JQe,liveTagContent:ewe,liveTagHistory:twe,liveTagText:nwe,countdownStrong:iwe,qrcodePopover:rwe,qrcodeTitle:swe,qrcodeUrlInput:owe,qrcodeUrlCopy:awe,settingsGroupBox:lwe,settingsGroupTitle:cwe,settingsItem:uwe,settingsLabel:dwe,tokenStatsEmpty:hwe,tokenStatsContainer:Owe,tokenStatsColumn:fwe,toolStatsColumn:pwe,modelCard:mwe,modelCardSpaced:gwe,modelName:vwe,statsTable:$we,th:Swe,td:bwe,label:ywe,rowBorder:_we,rebuildTotalRow:xwe,promptExportBar:Qwe,promptScrollArea:wwe,promptEmpty:Pwe,promptTimestamp:Cwe,textPromptCard:Twe,preText:kwe,systemCollapse:Rwe,systemLabel:Ewe,preSys:Xwe,promptTextarea:zwe,projectStatsCenter:Mwe,projectStatsEmpty:Nwe,projectStatsContent:jwe,projectStatsUpdated:Awe,projectStatsSummary:Iwe,projectStatCard:Lwe,projectStatValue:Wwe,projectStatLabel:Vwe,projectStatsSection:Bwe,projectStatsSectionTitle:Ywe,projectStatsModelCard:Dwe,projectStatsModelHeader:Uwe,projectStatsModelName:qwe,projectStatsModelCount:Zwe,pluginDirHint:Fwe,pluginDirPath:Gwe,pluginList:Hwe,pluginItem:Kwe,pluginInfo:Jwe,pluginName:ePe,pluginFile:tPe,pluginHooks:nPe,pluginHookTag:iPe,pluginActions:rPe,pluginEmpty:sPe,cachePopover:oPe,cacheScrollArea:aPe,cachePopoverTitle:lPe,cachePopoverHeader:cPe,cacheCopyBtn:uPe,cachePopoverEmpty:dPe,cacheTokenInfo:hPe,cacheSection:OPe,cacheSectionTitle:fPe,cacheCodeBlock:pPe,cacheCodeBlockSystem:mPe,cacheNavBtn:gPe,cacheNavList:vPe,cacheNavItem:$Pe,cacheBlockHighlight:SPe,cacheBlockHighlightFading:bPe,cacheBorderSvg:yPe,cacheBorderSvgFading:_Pe,cacheBorderRect:xPe},S7=VQe.calibrationModels,QPe=[{value:"zh",short:"zh",label:"简体中文"},{value:"en",short:"en",label:"English"},{value:"zh-TW",short:"zh-TW",label:"繁體中文"},{value:"ko",short:"ko",label:"한국어"},{value:"ja",short:"ja",label:"日本語"},{value:"de",short:"de",label:"Deutsch"},{value:"es",short:"es",label:"Español"},{value:"fr",short:"fr",label:"Français"},{value:"it",short:"it",label:"Italiano"},{value:"da",short:"da",label:"Dansk"},{value:"pl",short:"pl",label:"Polski"},{value:"ru",short:"ru",label:"Русский"},{value:"ar",short:"ar",label:"العربية"},{value:"no",short:"no",label:"Norsk"},{value:"pt-BR",short:"pt-BR",label:"Português (Brasil)"},{value:"th",short:"th",label:"ไทย"},{value:"tr",short:"tr",label:"Türkçe"},{value:"uk",short:"uk",label:"Українська"}],b7=t=>{const e=n=>n.toUpperCase().split("").map(i=>String.fromCodePoint(127462+i.charCodeAt(0)-65)).join("");return!t||t.length!==2?e("CN"):e(t)},kd=class kd extends re.Component{constructor(n){super(n);st(this,"handleShowPrompts",()=>{this.setState({promptModalVisible:!0,promptData:this.extractUserPrompts()})});st(this,"handleExportPromptsTxt",()=>{const n=this.state.promptData;if(!n||n.length===0)return;const i=[];for(const a of n){const l=[],c=a.timestamp?new Date(a.timestamp).toLocaleString():"";c&&l.push(`${c}:
625
+ `+St),ge&&x0([E,X,k],Bt=>{St=Cp(St,Bt," ")}),Q&&je?Q.createHTML(St):St},e.setConfig=function(){let lt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ue(lt),ce=!0},e.clearConfig=function(){ft=null,ce=!1},e.isValidAttribute=function(lt,me,_e){ft||Ue({});const Ve=Ee(lt),Qt=Ee(me);return gn(Ve,Qt,_e)},e.addHook=function(lt,me){typeof me=="function"&&Pp(I[lt],me)},e.removeHook=function(lt,me){if(me!==void 0){const _e=vQe(I[lt],me);return _e===-1?void 0:$Qe(I[lt],_e,1)[0]}return O7(I[lt])},e.removeHooks=function(lt){I[lt]=[]},e.removeAllHooks=function(){I=$7()},e}var NQe=wY();function Pl(t){if(!t)return"";try{return NQe.sanitize(Qi.parse(t,{breaks:!0}))}catch{return N1(t)}}const jQe="_helpBtn_ovmho_1",AQe="_modalBody_ovmho_24",IQe="_spinWrap_ovmho_70",OQ={helpBtn:jQe,modalBody:AQe,spinWrap:IQe},LQe=new Set(["Tool-Bash","Tool-Read","Tool-Edit","Tool-Write","Tool-Glob","Tool-Grep","Tool-NotebookEdit","Tool-WebFetch","Tool-WebSearch","Tool-Task","Tool-Agent","Tool-TaskOutput","Tool-TaskStop","Tool-TaskCreate","Tool-TaskGet","Tool-TaskUpdate","Tool-TaskList","Tool-TeamCreate","Tool-TeamDelete","Tool-SendMessage","SubAgent-Search","Tool-EnterPlanMode","Tool-ExitPlanMode","Tool-AskUserQuestion","Tool-Skill","Tool-getDiagnostics","Tool-executeCode","Tool-EnterWorktree","MainAgent","Tools","CacheRebuild","BodyDiffJSON","TranslateContextPollution","KVCacheContent"]);function Ko({doc:t}){const[e,n]=f.useState(!1),[i,r]=f.useState(!1),[s,o]=f.useState(""),[a,l]=f.useState("");if(!t||!LQe.has(t))return null;const c=f.useCallback(async()=>{n(!0),r(!0),o(""),l(t);const d=X1();let h=null;try{const p=await fetch(`/api/concept?lang=${d}&doc=${encodeURIComponent(t)}`);p.ok&&(h=await p.text())}catch{}if(h){const p=h.match(/^#\s+(.+)/m);p&&l(p[1]),o(Pl(h))}else o("<p>Document not found.</p>");r(!1)},[t]),u=xi?{header:{padding:"8px 12px",margin:0},body:{maxHeight:"80vh",overflow:"auto",padding:"8px 10px"},content:{padding:0}}:{body:{padding:"16px 24px 24px"},content:{padding:"12px 20px"}};return S.jsxs(S.Fragment,{children:[S.jsx("span",{className:OQ.helpBtn,onClick:d=>{d.stopPropagation(),c()},children:"?"}),S.jsx(so,{theme:{algorithm:Yp.darkAlgorithm,token:{colorBgContainer:"#111",colorBgLayout:"#0a0a0a",colorBgElevated:"#1a1a1a",colorBorder:"#2a2a2a"}},children:S.jsx(cr,{title:a,open:e,onCancel:()=>n(!1),footer:null,width:xi?"98vw":640,centered:xi,styles:u,children:i?S.jsx("div",{className:OQ.spinWrap,children:S.jsx(Ja,{})}):S.jsx("div",{className:OQ.modalBody,dangerouslySetInnerHTML:{__html:s}})})})]})}const WQe=[{label:"Auto",value:"auto"},{label:"Opus 4.6",value:"opus-4.6",tokens:2e5},{label:"Opus 4.6 (1M)",value:"opus-4.6-1m",tokens:1e6},{label:"Sonnet 4.6",value:"sonnet-4.6",tokens:2e5},{label:"Sonnet 4.6 (1M)",value:"sonnet-4.6-1m",tokens:1e6},{label:"GLM5",value:"glm5",tokens:2e5},{label:"Kimi K2.5",value:"kimi-k2.5",tokens:2e5},{label:"MiniMax 2.1",value:"minimax-2.1",tokens:2e5},{label:"Qwen 3.5",value:"Qwen 3.5",tokens:2e5}],VQe={calibrationModels:WQe},BQe="_headerBar_85daq_2",YQe="_logoWrap_85daq_10",DQe="_logoWrapActive_85daq_17",UQe="_logoImage_85daq_26",qQe="_logoImageActive_85daq_36",ZQe="_compactBtn_85daq_41",FQe="_compactBtnNoBorder_85daq_47",GQe="_tokenStatsTag_85daq_55",HQe="_tokenStatsIcon_85daq_63",KQe="_liveTag_85daq_68",JQe="_liveTagFill_85daq_83",ewe="_liveTagContent_85daq_93",twe="_liveTagHistory_85daq_100",nwe="_liveTagText_85daq_106",iwe="_countdownStrong_85daq_111",rwe="_qrcodePopover_85daq_116",swe="_qrcodeTitle_85daq_134",owe="_qrcodeUrlInput_85daq_141",awe="_qrcodeUrlCopy_85daq_147",lwe="_settingsGroupBox_85daq_158",cwe="_settingsGroupTitle_85daq_166",uwe="_settingsItem_85daq_175",dwe="_settingsLabel_85daq_182",hwe="_tokenStatsEmpty_85daq_187",Owe="_tokenStatsContainer_85daq_194",fwe="_tokenStatsColumn_85daq_200",pwe="_toolStatsColumn_85daq_204",mwe="_modelCard_85daq_209",gwe="_modelCardSpaced_85daq_216 _modelCard_85daq_209",vwe="_modelName_85daq_222",$we="_statsTable_85daq_232",Swe="_th_85daq_237",bwe="_td_85daq_247",ywe="_label_85daq_256",_we="_rowBorder_85daq_266",xwe="_rebuildTotalRow_85daq_278",Qwe="_promptExportBar_85daq_287",wwe="_promptScrollArea_85daq_291",Pwe="_promptEmpty_85daq_296",Cwe="_promptTimestamp_85daq_302",Twe="_textPromptCard_85daq_310",kwe="_preText_85daq_319",Rwe="_systemCollapse_85daq_329",Ewe="_systemLabel_85daq_336",Xwe="_preSys_85daq_341",zwe="_promptTextarea_85daq_351",Mwe="_projectStatsCenter_85daq_367",Nwe="_projectStatsEmpty_85daq_373",jwe="_projectStatsContent_85daq_380",Awe="_projectStatsUpdated_85daq_386",Iwe="_projectStatsSummary_85daq_392",Lwe="_projectStatCard_85daq_398",Wwe="_projectStatValue_85daq_406",Vwe="_projectStatLabel_85daq_414",Bwe="_projectStatsSection_85daq_420",Ywe="_projectStatsSectionTitle_85daq_426",Dwe="_projectStatsModelCard_85daq_434",Uwe="_projectStatsModelHeader_85daq_441",qwe="_projectStatsModelName_85daq_450",Zwe="_projectStatsModelCount_85daq_456",Fwe="_pluginDirHint_85daq_463",Gwe="_pluginDirPath_85daq_469",Hwe="_pluginList_85daq_482",Kwe="_pluginItem_85daq_488",Jwe="_pluginInfo_85daq_498",ePe="_pluginName_85daq_506",tPe="_pluginFile_85daq_512",nPe="_pluginHooks_85daq_518",iPe="_pluginHookTag_85daq_525",rPe="_pluginActions_85daq_534",sPe="_pluginEmpty_85daq_542",oPe="_cachePopover_85daq_549",aPe="_cacheScrollArea_85daq_553",lPe="_cachePopoverTitle_85daq_558",cPe="_cachePopoverHeader_85daq_567",uPe="_cacheCopyBtn_85daq_573",dPe="_cachePopoverEmpty_85daq_585",hPe="_cacheTokenInfo_85daq_591",OPe="_cacheSection_85daq_600",fPe="_cacheSectionTitle_85daq_604",pPe="_cacheCodeBlock_85daq_611",mPe="_cacheCodeBlockSystem_85daq_625",gPe="_cacheNavBtn_85daq_639",vPe="_cacheNavList_85daq_654",$Pe="_cacheNavItem_85daq_660",SPe="_cacheBlockHighlight_85daq_676",bPe="_cacheBlockHighlightFading_85daq_681",yPe="_cacheBorderSvg_85daq_686",_Pe="_cacheBorderSvgFading_85daq_695",xPe="_cacheBorderRect_85daq_700",ae={headerBar:BQe,logoWrap:YQe,logoWrapActive:DQe,logoImage:UQe,logoImageActive:qQe,compactBtn:ZQe,compactBtnNoBorder:FQe,tokenStatsTag:GQe,tokenStatsIcon:HQe,liveTag:KQe,liveTagFill:JQe,liveTagContent:ewe,liveTagHistory:twe,liveTagText:nwe,countdownStrong:iwe,qrcodePopover:rwe,qrcodeTitle:swe,qrcodeUrlInput:owe,qrcodeUrlCopy:awe,settingsGroupBox:lwe,settingsGroupTitle:cwe,settingsItem:uwe,settingsLabel:dwe,tokenStatsEmpty:hwe,tokenStatsContainer:Owe,tokenStatsColumn:fwe,toolStatsColumn:pwe,modelCard:mwe,modelCardSpaced:gwe,modelName:vwe,statsTable:$we,th:Swe,td:bwe,label:ywe,rowBorder:_we,rebuildTotalRow:xwe,promptExportBar:Qwe,promptScrollArea:wwe,promptEmpty:Pwe,promptTimestamp:Cwe,textPromptCard:Twe,preText:kwe,systemCollapse:Rwe,systemLabel:Ewe,preSys:Xwe,promptTextarea:zwe,projectStatsCenter:Mwe,projectStatsEmpty:Nwe,projectStatsContent:jwe,projectStatsUpdated:Awe,projectStatsSummary:Iwe,projectStatCard:Lwe,projectStatValue:Wwe,projectStatLabel:Vwe,projectStatsSection:Bwe,projectStatsSectionTitle:Ywe,projectStatsModelCard:Dwe,projectStatsModelHeader:Uwe,projectStatsModelName:qwe,projectStatsModelCount:Zwe,pluginDirHint:Fwe,pluginDirPath:Gwe,pluginList:Hwe,pluginItem:Kwe,pluginInfo:Jwe,pluginName:ePe,pluginFile:tPe,pluginHooks:nPe,pluginHookTag:iPe,pluginActions:rPe,pluginEmpty:sPe,cachePopover:oPe,cacheScrollArea:aPe,cachePopoverTitle:lPe,cachePopoverHeader:cPe,cacheCopyBtn:uPe,cachePopoverEmpty:dPe,cacheTokenInfo:hPe,cacheSection:OPe,cacheSectionTitle:fPe,cacheCodeBlock:pPe,cacheCodeBlockSystem:mPe,cacheNavBtn:gPe,cacheNavList:vPe,cacheNavItem:$Pe,cacheBlockHighlight:SPe,cacheBlockHighlightFading:bPe,cacheBorderSvg:yPe,cacheBorderSvgFading:_Pe,cacheBorderRect:xPe},S7=VQe.calibrationModels,QPe=[{value:"zh",short:"zh",label:"简体中文"},{value:"en",short:"en",label:"English"},{value:"zh-TW",short:"zh-TW",label:"繁體中文"},{value:"ko",short:"ko",label:"한국어"},{value:"ja",short:"ja",label:"日本語"},{value:"de",short:"de",label:"Deutsch"},{value:"es",short:"es",label:"Español"},{value:"fr",short:"fr",label:"Français"},{value:"it",short:"it",label:"Italiano"},{value:"da",short:"da",label:"Dansk"},{value:"pl",short:"pl",label:"Polski"},{value:"ru",short:"ru",label:"Русский"},{value:"ar",short:"ar",label:"العربية"},{value:"no",short:"no",label:"Norsk"},{value:"pt-BR",short:"pt-BR",label:"Português (Brasil)"},{value:"th",short:"th",label:"ไทย"},{value:"tr",short:"tr",label:"Türkçe"},{value:"uk",short:"uk",label:"Українська"}],b7=t=>{const e=n=>n.toUpperCase().split("").map(i=>String.fromCodePoint(127462+i.charCodeAt(0)-65)).join("");return!t||t.length!==2?e("CN"):e(t)},kd=class kd extends re.Component{constructor(n){super(n);st(this,"handleShowPrompts",()=>{this.setState({promptModalVisible:!0,promptData:this.extractUserPrompts()})});st(this,"handleExportPromptsTxt",()=>{const n=this.state.promptData;if(!n||n.length===0)return;const i=[];for(const a of n){const l=[],c=a.timestamp?new Date(a.timestamp).toLocaleString():"";c&&l.push(`${c}:
626
626
  `);const u=(a.segments||[]).filter(d=>d.type==="text").map(d=>d.content);u.length>0&&l.push(u.join(`
627
627
  `)),i.push(l.join(`
628
628
  `))}if(i.length===0)return;const r=new Blob([i.join(`
package/dist/index.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <title>Claude Code Viewer</title>
7
7
  <link rel="icon" href="/favicon.ico?v=1">
8
8
  <link rel="shortcut icon" href="/favicon.ico?v=1">
9
- <script type="module" crossorigin src="/assets/index-gchE_Zdp.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-okfwzOnL.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="/assets/index-BaG4AJ9_.css">
11
11
  </head>
12
12
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-viewer",
3
- "version": "1.6.38",
3
+ "version": "1.6.39",
4
4
  "description": "Claude Code Logger visualization management tool",
5
5
  "license": "MIT",
6
6
  "main": "server.js",