Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .changeset/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ Add a changeset for user-facing changes:
pnpm run changeset
```

Merging to `main` runs `.github/workflows/publish.yml`. When changesets exist, it opens or updates a Version Packages pull request. Merging that release pull request publishes through npm Trusted Publishing with pnpm and the checked-in lockfile.
Merging to `main` runs `.github/workflows/publish.yml`. When changesets exist, it opens or updates the `chore(release): version packages` pull request. Merging that release pull request publishes through npm Trusted Publishing with pnpm and the checked-in lockfile. See the Releasing section of [`CONTRIBUTING.md`](../CONTRIBUTING.md#releasing).
5 changes: 5 additions & 0 deletions .changeset/clack-prompts-1-8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@rivus/agent-presence': patch
---

Update the interactive prompt library `@clack/prompts` from 1.3.0 to 1.8.1, which `login`, `setup`, `config` and `source add` use. Since clack 1.6, `note()` no longer dims its content, so the boxed hints in an interactive terminal (the login QR code, the signature URL and Magic-Builder token help in `setup`, the `source add` trust notice) render at full brightness instead of dimmed.
7 changes: 4 additions & 3 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
"changelog": "@changesets/cli/changelog",
"$schema": "https://unpkg.com/@changesets/config@4.0.0/schema.json",
"changelog": ["@changesets/changelog-github", { "repo": "PerfectPan/agent-presence" }],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
"ignore": [],
"privatePackages": { "version": false, "tag": false }
}
5 changes: 5 additions & 0 deletions .changeset/require-node-22.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@rivus/agent-presence': minor
---

Require Node.js 22 or newer; Node.js 20 is end of life and no longer supported. The package also stops declaring a pnpm version in `engines`, which only applied to developing the repository.
1 change: 0 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,3 @@ indent_size = 2

[*.md]
trim_trailing_whitespace = false

16 changes: 16 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail

repo_root="$(git rev-parse --show-toplevel)"
cd "$repo_root"

git diff --cached --check

# CI runs the same check and is authoritative, so a checkout without the
# extension warns instead of blocking the commit.
if gh repo-checks --help >/dev/null 2>&1; then
gh repo-checks repository --staged
else
printf 'pre-commit: gh repo-checks is not installed; skipping repository checks\n' >&2
printf 'pre-commit: install it with: gh extension install PerfectPan/gh-repo-checks\n' >&2
fi
14 changes: 12 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: Bug report
about: Report reproducible broken behavior
title: "bug: "
title: "[Bug]: "
labels: bug
assignees: ""
---
Expand All @@ -21,12 +21,22 @@ assignees: ""
## Actual Behavior


## Evidence

- Logs, screenshots, traces, or failing command:
- First known bad version or commit:
- Workaround, if any:

## Environment

- OS:
- Runtime:
- Version:

## Additional Context
## Impact

- User-visible impact:
- Data, security, or compatibility risk:
- Release or rollback urgency:

## Additional Context
17 changes: 15 additions & 2 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: Feature request
about: Propose a new capability or improvement
title: "feat: "
title: "[Feature]: "
labels: enhancement
assignees: ""
---
Expand All @@ -12,6 +12,18 @@ assignees: ""
## Proposed Solution


## Acceptance Criteria

-

## Validation Plan

- Format:
- Lint:
- Test:
- Build:
- Package or release dry-run:

## Alternatives Considered


Expand All @@ -21,4 +33,5 @@ assignees: ""
- Configuration:
- Compatibility:
- Documentation:

- Security or privacy:
- Rollout and rollback:
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Task
about: Maintenance, refactoring, dependency, or tooling work
title: "[Task]: "
labels: task
assignees: ""
---

## Problem


## Proposed Solution


## Acceptance Criteria

-
28 changes: 22 additions & 6 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
Title format: `type(scope): summary`, in English.

Allowed types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`.

## Summary

<!-- What changed and why. Link the issue, Spec, or Plan when there is one. -->

-

## Validation

- [ ] `pnpm install --frozen-lockfile --ignore-scripts`
- [ ] `pnpm test`
- [ ] `pnpm run typecheck`
- [ ] `pnpm run build`
- [ ] `pnpm pack --dry-run`
<!-- Commands you ran and their results; logs or screenshots for behavior claims. Name skipped checks and why. -->

- [ ] Repository checks: `gh repo-checks repository`
- [ ] PR title and description: `gh repo-checks pr-title "<title>"`, `gh repo-checks pr-body <body-file>`
- [ ] Install: `pnpm install --frozen-lockfile`
- [ ] Format: `pnpm format:check`
- [ ] Test: `pnpm test`
- [ ] Typecheck: `pnpm run typecheck`
- [ ] Lint: `pnpm lint` (after `pnpm -C site run docs:sync` in a fresh checkout)
- [ ] Build: `pnpm run build`
- [ ] Docs site, when `site/` changes: `pnpm -C site run docs:build`
- [ ] Changeset: `pnpm changeset status` (user-facing package changes add a changeset)
- [ ] Package dry-run: `pnpm pack --dry-run`

## Risks

## Follow-up Risks
<!-- Optional: compatibility, rollout, rollback, or follow-up risks. Delete this section when there are none. -->

-
7 changes: 7 additions & 0 deletions .github/repo-checks.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Additions to the shared repository check (PerfectPan/gh-repo-checks).
# Directives: require <path>[|<alt>], unrequire <path>, forbid <ERE>, exclude <pathspec>.
require .github/ISSUE_TEMPLATE/bug_report.md
require .github/ISSUE_TEMPLATE/feature_request.md
require .github/ISSUE_TEMPLATE/task.md
require .github/workflows/review.yml
require .githooks/pre-commit
24 changes: 17 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,19 @@ jobs:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
persist-credentials: false

- uses: pnpm/action-setup@v6

- uses: actions/setup-node@v6
# Installs the pnpm from `packageManager` and the Node.js major in
# `.node-version`, restores the pnpm store cache, and runs
# `pnpm install --frozen-lockfile`. Only the build scripts allowed in
# pnpm-workspace.yaml run.
- uses: pnpm/setup@v3
with:
node-version: '24'
cache: pnpm
node-version-file: .node-version
cache: true
require-lockfile: true

- name: Install libsecret (Linux)
if: runner.os == 'Linux'
Expand All @@ -33,12 +36,19 @@ jobs:
sudo apt-get install -y -qq gnome-keyring dbus-x11 libsecret-tools
echo "secret-tool path:" && which secret-tool || echo " NOT FOUND"

- run: pnpm install --frozen-lockfile --ignore-scripts
- run: pnpm format:check

- run: pnpm test

- run: pnpm run typecheck

# Type-aware oxlint also reports TypeScript errors through tsgolint. The
# docs site's modules import `astro:content`, whose types `astro sync`
# generates into site/.astro/.
- run: pnpm -C site run docs:sync

- run: pnpm lint

- run: pnpm run build

- run: pnpm pack --dry-run
45 changes: 29 additions & 16 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,44 @@ jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
# changelog-github looks up the commit that added each changeset.
fetch-depth: 0
persist-credentials: false

- uses: pnpm/action-setup@v6

- uses: actions/setup-node@v6
# Installs the pnpm from `packageManager` and the Node.js major in
# `.node-version`, and runs `pnpm install --frozen-lockfile`. This job
# skips the store cache.
- uses: pnpm/setup@v3
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
cache: pnpm
node-version-file: .node-version
require-lockfile: true

- run: pnpm install --frozen-lockfile --ignore-scripts
- run: pnpm test
- run: pnpm run typecheck
- run: pnpm run build

- name: Create Release Pull Request
# With pending changesets, opens or updates the release PR. The PR is
# opened with GITHUB_TOKEN, and GitHub does not start workflows for events
# that token causes, so CI does not run on it by itself: before merging,
# close and reopen it as a person (`gh pr close <n> && gh pr reopen <n>`)
# or push an empty commit to its branch.
#
# Without pending changesets, `pnpm release` runs `changeset publish`,
# which runs `pnpm publish` for an unpublished version: pnpm sends it to
# publishConfig.registry with an npm trusted-publishing (OIDC) token from
# `id-token: write` and attaches provenance itself, so no .npmrc or npm
# token is needed. The action then pushes the tag and creates the GitHub
# Release. Commits and tags go through the GitHub API, so they are signed.
- name: Create release pull request or publish
id: changesets
uses: changesets/action@v1
uses: changesets/action@v2
with:
version: pnpm run version
publish: pnpm run release
title: 'chore: release package'
commit: 'chore: release package'
commitMode: github-api
version-script: pnpm version-packages
publish-script: pnpm release
commit-message: 'chore(release): version packages'
pr-title: 'chore(release): version packages'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# changelog-github reads PR titles and authors through the API
GITHUB_TOKEN: ${{ github.token }}
37 changes: 37 additions & 0 deletions .github/workflows/review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Review

on:
pull_request:
types: [opened, edited, reopened, synchronize, ready_for_review]
push:
branches: [main]

jobs:
repository-checks:
name: repository checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: PerfectPan/gh-repo-checks@v1
with:
check: repository

pr-title:
name: conventional PR title
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: PerfectPan/gh-repo-checks@v1
with:
check: pr-title

pr-body:
name: PR description
# Bot PRs (dependency updates, release PRs) do not use the template; their titles are still checked.
if: github.event_name == 'pull_request' && github.event.pull_request.user.type != 'Bot'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: PerfectPan/gh-repo-checks@v1
with:
check: pr-body
16 changes: 8 additions & 8 deletions .github/workflows/update-pricing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,22 @@ jobs:
update-pricing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
persist-credentials: false

- uses: pnpm/action-setup@v6

- uses: actions/setup-node@v6
# Installs the pnpm from `packageManager` and the Node.js major in
# `.node-version`, and runs `pnpm install --frozen-lockfile`. This job
# skips the store cache.
- uses: pnpm/setup@v3
with:
node-version: '24'
cache: pnpm
node-version-file: .node-version
require-lockfile: true

- run: pnpm install --frozen-lockfile --ignore-scripts
- run: pnpm run update-pricing

- name: Create pull request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: 'chore(usage): update LiteLLM pricing snapshot'
Expand Down
31 changes: 31 additions & 0 deletions .gitlab/merge_request_templates/default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Title format: `type(scope): summary`, in English.

Allowed types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`.

## Summary

<!-- What changed and why. Link the issue, Spec, or Plan when there is one. -->

-

## Validation

<!-- Commands you ran and their results; logs or screenshots for behavior claims. Name skipped checks and why. -->

- [ ] Repository checks: `gh repo-checks repository`
- [ ] MR title and description: `gh repo-checks pr-title "<title>"`, `gh repo-checks pr-body <body-file>`
- [ ] Install: `pnpm install --frozen-lockfile`
- [ ] Format: `pnpm format:check`
- [ ] Test: `pnpm test`
- [ ] Typecheck: `pnpm run typecheck`
- [ ] Lint: `pnpm lint` (after `pnpm -C site run docs:sync` in a fresh checkout)
- [ ] Build: `pnpm run build`
- [ ] Docs site, when `site/` changes: `pnpm -C site run docs:build`
- [ ] Changeset: `pnpm changeset status` (user-facing package changes add a changeset)
- [ ] Package dry-run: `pnpm pack --dry-run`

## Risks

<!-- Optional: compatibility, rollout, rollback, or follow-up risks. Delete this section when there are none. -->

-
1 change: 1 addition & 0 deletions .node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
Loading
Loading