Skip to content
Closed
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
5 changes: 4 additions & 1 deletion .github/workflows/publish-npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ jobs:
const fs = require('node:fs');
const path = require('node:path');

const dirs = ['a2a', 'types', 'engine', 'sdk-typescript', 'cli', 'mcp', 'react', 'openclaw'];
const dirs = ['a2a', 'types', 'engine', 'sdk-typescript', 'cli', 'mcp', 'react', 'openclaw', 'communication-policy'];
const artifactDir = path.resolve('release-artifacts');
const packages = [];
for (const dir of dirs) {
Expand Down Expand Up @@ -365,6 +365,7 @@ jobs:
- mcp
- react
- openclaw
- communication-policy

steps:
- name: Checkout code
Expand Down Expand Up @@ -488,6 +489,7 @@ jobs:
"@relaycast/mcp"
"@relaycast/react"
"@relaycast/openclaw"
"@relaycast/communication-policy"
)
{
echo "## Publish reconciliation for v${NEW_VERSION}"
Expand Down Expand Up @@ -842,6 +844,7 @@ jobs:
| @relaycast/mcp | ${{ needs.build.outputs.new_version }} |
| @relaycast/react | ${{ needs.build.outputs.new_version }} |
| @relaycast/openclaw | ${{ needs.build.outputs.new_version }} |
| @relaycast/communication-policy | ${{ needs.build.outputs.new_version }} |
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

# Canonical owner-generated contract bundles.
packages/communication-policy/contracts/*.json
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Packages without a separate changelog are covered by the cross-package notes below.

## [Unreleased - Patch]
## [Unreleased - Minor]

### Added

- Portable communication policy contracts and a storage-independent coordinator for scoped admission, conversation grants, and delivery receipts.

### Fixed

Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1385,3 +1385,11 @@ targets fail closed with typed 410 responses; terminal intents clear their paylo
The existing recovery sweep also cleans expired intents. After cleanup, a reused
key is a fresh request, so stop automatic retries after the 24-hour window.
See [capacity regression and composition](packages/engine/scripts/CAPACITY-REGRESSION.md).

## Communication policy primitives

[`@relaycast/communication-policy`](packages/communication-policy/README.md) owns
scoped admission, conversation grants, and delivery decisions. Its portable
coordinator accepts a storage adapter; installing it does not enable policy on
existing HTTP or realtime paths. Work-status interpretation belongs to the
Cloud/desktop product, and History remains an evidence provider.
27 changes: 27 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions packages/communication-policy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Communication policy

Relaycast owns Open, Knock, Allow list, Busy, and Offline interpretation; admission decisions; grants; receipts; and the delivery coordinator. No work states or PR completion rules live here.

The root export contains pure schemas and decisions. `./service` provides the storage-independent coordinator. A storage adapter must serialize recipient changes with final injection and atomically commit each callback. Cloud supplies a PostgreSQL adapter; Relaycast engine adapters and direct transport coverage are required before enrollment can be enabled.

Contract JSON is an internal cross-language artifact, not a new HTTP endpoint. Existing Relaycast HTTP APIs remain snake_case. `npm run contracts:check` verifies generated schemas and fixtures; `npm test` checks decisions. No transport is enrolled by installing this package.
Loading
Loading