Artifact Explorer
Utilisez le canvas pr-artifact-explorer pour afficher à un utilisateur des pull requests, des issues, des workflow runs, des artifacts GitHub Actions et des pages web.
Comment piloter le canvas
Les noms d'actions ci-dessous (open_target, share, ...) sont des actions de canvas, pas des outils autonomes. Toujours :
- Appeler
list_canvas_capabilities { canvasId: "pr-artifact-explorer" }pour découvrir les actions et leurs schémas. - Appeler
open_canvas { canvasId: "pr-artifact-explorer", instanceId: "<handle you choose>" }pour ouvrir ou mettre en avant le panneau. - Appeler
invoke_canvas_action { instanceId, actionName, input }avec cet mêmeinstanceId.
Ouvrir une cible
invoke_canvas_action avec open_target { input } (ou l'input ouvert repository, pullNumber, runId, artifactId, url, route, view: "runs" avec filtres de run, plus preset/width/height/zoom). input accepte :
- URLs GitHub PR/issue ou
owner/repo#123; les issues affichent les détails seulement - Liens Actions et requêtes qui ne nécessitent pas de PR :
https://github.com/<owner>/<repo>/actions(aussi?query=event%3Aschedule,/actions/workflows/<file>.yml),https://github.com/<owner>/<repo>/actions/runs/<run>,owner/repo actions,owner/repo run 123,show scheduled runs in owner/repo - Permaliens d'artifacts réels (
https://github.com/<owner>/<repo>/actions/runs/<run>/artifacts/<id>), un ID d'artifact avec un repository, ou un lien/route d'explorer partagé comme#/docs,#/artifact/owner%2Frepo/0/456?file=index.html,#/browser?v=... - URLs
http(s)://etlocalhost(aperçu navigateur) - Langage naturel borné :
open PR 123 in owner/repo,show localhost:3000 on mobile,go back,zoom 150%,tablet,1280x720,screenshot
Utilisez share { input, preset?, zoom?, width?, height? } pour produire un lien, une route et du texte à donner à l'utilisateur. Les partages d'artifacts conservent l'identité du repository/artifact/fichier (pas les ports d'aperçu) ; le destinataire les colle dans le canvas ou dans open_target.
Workflow runs sans pull request
Beaucoup de runs n'ont pas de PR : schedule (cron), workflow_dispatch, push, release, workflow_run et autres. Utilisez open_runs { repository, event?, status?, branch?, workflow?, excludePullRequests?, hasArtifacts? } pour ouvrir la liste Workflow runs du repository (par exemple event: "schedule" pour les runs cron ; excludePullRequests et hasArtifacts valent true par défaut, passez false pour inclure les runs PR ou les runs sans artifacts), et open_run { repository, runId } pour ouvrir un run et ses artifacts. Le même aperçu d'artifact, vue Browser, partage et comportement Re-run s'appliquent ; les artifacts ouverts depuis un run conservent une route ?run=<id> pour que les chemins de navigation reviennent au run. Les lignes de run affichent un compte d'artifacts chargé paresseusement ; le filtre de branche complète les vraies branches. Les routes utilisent nopr=0 et artifacts=0 pour désactiver ces valeurs par défaut.
Artifacts
inspect_artifact { repository, artifactId } lance une tâche de fond. Les téléchargements continuent au-delà des limites douces ; quand l'une est atteinte, l'utilisateur est invité à en fixer une plus grande (set_limit { kind, value } ; la valeur doit être au moins égale à la progression en direct). Vérifiez job_status ; utilisez retry_job après une tâche interrupted ou failed (un ZIP complété est réutilisé) et cancel_job seulement sur demande. N'exécutez jamais les programmes ou scripts de build des artifacts : les artifacts sont seulement inspectés ou prévisualisés comme sites et fichiers statiques.
Réexécuter le workflow qui a produit un artifact est une action UI uniquement, confirmée par l'utilisateur (le bouton Re-run sur une ligne d'artifact ou une page de run). N'essayez jamais vous-même ou n'appelez pas son API ; si l'utilisateur veut un artifact frais, dites-lui d'utiliser ce bouton. Il réutilise le commit, la ref et l'actor d'origine, est limité à 30 jours et 50 re-runs, et ne demande qu'un run, pas un artifact prêt.
Aperçu navigateur
navigate_browser { url, preset?, zoom? }ouvre une URL http(s), y compris localhost.set_viewport { preset: native | mobile | tablet | desktop | custom, width?, height?, orientation? }définit la taille de page émulée.set_zoom { zoom, fit? }met à l'échelle la vue sans changer la viewport.screenshot { mode?: "fresh" | "controlled", url?, preset?, width?, height?, fullPage? }prend une vraie capture Chromium PNG sauvegardée dans le dossier de sessionfiles/artifact-explorer-screenshots.fresh(par défaut) restitue l'URL de nouveau et est étiquetéfresh-render;controlledcapture la page Chromium isolée en direct (controlled-current).controlled_navigate { url, preset?, ... },controlled_back,controlled_forward,controlled_refresh,controlled_closepilotent un Chromium isolé (profil en mémoire, pas d'état de connexion) avec un vrai historique ; utilisez-le pour les sites qui bloquent les iframes. Les échecs de navigation sont retournés en tant qu'erreurs, jamais en tant que pages vierges. Si Playwright ou Chromium est manquant, relayez les instructions de configuration retournées à l'utilisateur (y compris une erreurplaywright_config_unsupportedpour la variablePR_ARTIFACT_EXPLORER_PLAYWRIGHTdépréciée) ; n'installez jamais silencieusement.- Les pages qui interdisent le framing (X-Frame-Options / CSP) sont signalées et non contournées.
Prévisualisation de fichiers
- Une action Browser view contextuelle apparaît dans la barre d'outils de prévisualisation seulement pour les artifacts HTML de site statique ; ce n'est pas un élément de navigation global. Ouvrez les URLs directement avec
open_target/navigate_browserou une route#/browser?v=.... .webm,.mp4et.movutilisent native<video controls>avec recherche par plage (l'entrée entière est vérifiée CRC/taille une fois, puis réutilisée). Le support de codec dépend du navigateur (WebM VP8/VP9 est le plus fiable ; H.264 MP4/MOV peut ne pas fonctionner), donc un échec affiche une explication et un fallback de téléchargement.- Un bouton Preview / Raw compact se trouve à côté de Download pour chaque fichier (
&view=rawdans les routes). Raw affiche la source exacte pour le texte et une vue hex+ASCII partielle et bornée pour les fichiers binaires ; les entrées non sûres/chiffrées expliquent pourquoi et conservent le téléchargement ZIP. - Le chrome du navigateur et les HTML d'artifact possédés suivent le thème du canvas hérité (changements initiaux et en direct) ; le Chromium contrôlé et les captures suivent le schéma de couleur actuel. Les sites externes gardent leur propre thème.
- Ouvrir dans le navigateur par défaut (Partage et menu d'aide) lance la cible http(s) actuelle dans le navigateur OS. Les sites d'artifacts possédés sont servis par le serveur de loopback de ce canvas et s'arrêtent quand il se ferme.
- JUnit XML (racines
testsuites/testsuite) restitue un rapport natif avec totaux, filtres de statut, recherche et détails d'échec/erreur/ignoré/stdout/stderr ; la source XML et le téléchargement restent disponibles. Les rapports malformés reviennent à la source avec une erreur ; les autres XML utilisent la visionneuse générique.
Récupération
Si le canvas se comporte mal, appelez restart_canvas : il conserve le port, le token et les tâches en cours. Utilisez docs pour ouvrir l'onglet Docs intégré, qui liste aussi les raccourcis clavier (appuyez sur ?).