Tangled Pull Request

kind: tangled/pullrequest

Description

The actions section describes the Tangled Pull Requests that updatecli is expected to open (or update) when the manifest is applied.

Tangled pull requests are atproto records (sh.tangled.repo.pull) written on the author’s Personal Data Server (PDS). The plugin:

  1. Resolves the target repository DID by reading the repoDid field of the matching sh.tangled.repo record on the owner’s PDS (or uses the explicit repoDid from the action spec when set). The appview indexes pull request records by this knot-minted DID, not by the owner DID.

  2. Lists existing sh.tangled.repo.pull records on the author’s PDS, cross-references them against sh.tangled.repo.pull.status records, and skips creation only when an open pull request already targets the same source/target branch pair. Closed or merged pulls do not block creation of a replacement.

  3. Runs git format-patch <target>..<source> inside the scm working directory and gzip-compresses the resulting patch.

  4. Uploads the gzipped patch as an atproto blob via com.atproto.repo.uploadBlob.

  5. Writes the sh.tangled.repo.pull record via com.atproto.repo.putRecord.

Authentication uses an atproto app password against the configured PDS (defaults to https://bsky.social; override with pds when your account lives elsewhere). Generate the app password from your PDS’s web UI — never paste your account password into the manifest.

Parameters

NameTypeDescriptionRequired

Example

# updatecli.yaml
# updatecli.yaml
# updatecli diff --config updatecli.yaml
#
name: Show Tangled pipeline example

scms:
  tangled:
    kind: tangled
    spec:
      owner: alice.tangled.sh
      repository: updatecli-mirror
      branch: main
      handle: alice.tangled.sh
      appPassword: '{{ requiredEnv "TANGLED_APP_PASSWORD" }}'

# Sources are responsible to fetch information from third location such as npm registry.
sources:
  updatecli:
    name: Get latest axios version
    kind: npm
    spec:
      name: axios

# Targets are responsible to update targeted files such as a yaml file.
targets:
  npm:
    name: Update e2e test file
    kind: yaml
    sourceid: updatecli
    scmid: tangled
    spec:
      file: e2e/updatecli.d/success.d/npm.yaml
      key: $.conditions.axios.spec.version

# Actions such as tangled/pullrequest are triggered when a target is updated.
actions:
  default:
    kind: tangled/pullrequest
    scmid: tangled
    title: Bump axios version
Top