Beta sign in

Pipe library / release-radar

release-radar

Chained digest of new GitHub releases and RustSec advisories. Two published pipes feed one merge.

Developer monitoring Chained

github.comrustsec.org

Sub-pipes

How chaining works

CLI

pipes run examples/release-radar.pipe.yaml

MCP call

{
  "name": "pipe__release-radar",
  "arguments": {}
}

Pipe file

examples/release-radar.pipe.yaml

pipes: 0
name: release-radar
version: 0.1.0
description: Chained digest of new GitHub releases and RustSec advisories. Two published pipes feed one merge.
permissions:
  network: [github.com, rustsec.org]
inputs:
  type: object
  properties:
    repos:
      type: array
      items: { type: string, pattern: "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" }
      minItems: 1
      maxItems: 20
      default: [tokio-rs/tokio, bytecodealliance/wasmtime]
    keyword:
      type: string
      minLength: 2
      default: wasmtime
  required: [repos, keyword]
outputs:
  type: object
  properties:
    text: { type: string }
    count: { type: integer }
  required: [text, count]
output:
  text: "${steps.digest.text}"
  count: "${steps.digest.count}"
steps:
  - id: releases
    block: pipe:github-releases-digest@^0.1
    with:
      repos: "${inputs.repos}"
  - id: advisories
    block: pipe:security-advisories@^0.1
    with:
      keyword: "${inputs.keyword}"
  - id: rows
    block: merge
    with:
      lists:
        - - kind: releases
            text: "${steps.releases.text}"
        - - kind: advisories
            text: "${steps.advisories.text}"
  - id: digest
    block: format
    in: "${steps.rows}"
    with:
      header: "Release radar\n\n"
      item_template: "## ${item.kind}\n${item.text}"
      separator: "\n\n"
  - id: print
    block: emit_stdout
    in: "${steps.digest.text}"
    with: { format: text }