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
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ jobs:
if: hashFiles('ts/package.json') != ''
working-directory: ts
run: pnpm build
- name: Prepare TypeScript package README
if: hashFiles('ts/package.json') != ''
working-directory: ts
run: rm README.md && cp ../README.md README.md
- name: TypeScript publish dry run
if: hashFiles('ts/package.json') != ''
working-directory: ts
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/npm-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ jobs:
run: pnpm verify
- name: Build
run: pnpm build
- name: Prepare package README
run: rm README.md && cp ../README.md README.md
- name: Read package metadata
id: package
run: |
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/pypi-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ jobs:
run: uv run --with ty ty check
- name: Test
run: uv run --with pytest --with pytest-asyncio python -m pytest
- name: Prepare package README
run: rm README.md && cp ../README.md README.md
- name: Build distribution
run: uv build
- name: Read package metadata
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ __pycache__/
*.py[cod]
.legacy-git/
.pnpm-store/
/README.md
/PRODUCT.md
/STATUS.md
/docs/plan/
/PLANNING/
NAME.md

45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Grantz

Scoped, signed, monotonically attenuable delegation tokens for headless agent and tool runs.

This repository contains the TypeScript and Python implementations for the Grantz primitive. The shared repository keeps the public contract, fixtures, and release history aligned across both languages.

## Packages

- npm: `grantz`
- PyPI: `grantz`

## Install

```sh
npm install grantz
pip install grantz
```

## Layout

- `ts/` - TypeScript implementation and npm package.
- `py/` - Python implementation and PyPI package.
- `fixtures/` - Shared conformance and parity fixtures when the primitive needs them.

## Development

Run TypeScript checks from `ts/`:

```sh
pnpm verify
```

Run Python checks from `py/`:

```sh
uv sync --dev
uv run --with ruff ruff check .
uv run --with ruff ruff format --check .
uv run --with ty ty check
uv run --with pytest --with pytest-asyncio python -m pytest
```

## License

MIT
1 change: 1 addition & 0 deletions py/README.md
6 changes: 6 additions & 0 deletions py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@
name = "grantz"
version = "0.0.0"
description = "Scoped, signed, monotonically attenuable delegation tokens."
readme = "README.md"
requires-python = ">=3.11"
license = { text = "MIT" }
dependencies = ["cryptography>=42", "psycopg[binary]>=3.2", "psycopg-pool>=3.2"]

[project.urls]
Homepage = "https://github.com/cachetronaut/grantz"
Repository = "https://github.com/cachetronaut/grantz"
Issues = "https://github.com/cachetronaut/grantz/issues"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
Expand Down
1 change: 1 addition & 0 deletions ts/README.md
Loading