Compare commits

...

2 Commits

Author SHA1 Message Date
Patrick Buckley 3dc10541c6 chore: bump version to 1.1.1 2026-04-04 22:20:40 -07:00
Patrick Buckley 03e9b565b8 fix: add admin.prompt_policies to valid permissions and builtin-admin role (#303)
Migration 031 created the prompt_policies table but never registered
admin.prompt_policies in _VALID_PERMISSIONS or granted it to the
builtin-admin role, causing 403 on all prompt-policy admin endpoints.
2026-04-04 22:20:30 -07:00
7 changed files with 45 additions and 3 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "turnstone"
version = "1.1.0"
version = "1.1.1"
description = "Multi-node AI orchestration platform with tool use, agent routing, and cluster simulation."
readme = "README.md"
license = "BUSL-1.1"
+1
View File
@@ -57,6 +57,7 @@ class _InjectAuthMiddleware(BaseHTTPMiddleware):
"admin.users",
"admin.orgs",
"admin.policies",
"admin.prompt_policies",
"admin.skills",
"admin.usage",
"admin.audit",
+1
View File
@@ -64,6 +64,7 @@ class _InjectAuthMiddleware(BaseHTTPMiddleware):
"admin.roles",
"admin.orgs",
"admin.policies",
"admin.prompt_policies",
}
),
)
+1 -1
View File
@@ -1,3 +1,3 @@
"""turnstone - Multi-node AI orchestration platform with tool use, agent routing, and cluster simulation."""
__version__ = "1.1.0"
__version__ = "1.1.1"
+1
View File
@@ -2125,6 +2125,7 @@ _VALID_PERMISSIONS = frozenset(
"admin.roles",
"admin.orgs",
"admin.policies",
"admin.prompt_policies",
"admin.skills",
"admin.audit",
"admin.usage",
@@ -0,0 +1,39 @@
"""Grant admin.prompt_policies permission to builtin-admin role.
Migration 031 created the prompt_policies table but did not add the
corresponding permission to the builtin-admin role, causing 403 on
/v1/api/admin/prompt-policies for all users.
Revision ID: 032
Revises: 031
Create Date: 2026-04-05
"""
import sqlalchemy as sa
from alembic import op
revision = "032"
down_revision = "031"
branch_labels = None
depends_on = None
def upgrade() -> None:
conn = op.get_bind()
conn.execute(
sa.text(
"UPDATE roles SET permissions = permissions || ',admin.prompt_policies' "
"WHERE role_id = 'builtin-admin' "
"AND permissions NOT LIKE '%admin.prompt_policies%'"
)
)
def downgrade() -> None:
conn = op.get_bind()
conn.execute(
sa.text(
"UPDATE roles SET permissions = REPLACE(permissions, ',admin.prompt_policies', '') "
"WHERE role_id = 'builtin-admin'"
)
)
Generated
+1 -1
View File
@@ -2496,7 +2496,7 @@ wheels = [
[[package]]
name = "turnstone"
version = "1.1.0"
version = "1.1.1"
source = { editable = "." }
dependencies = [
{ name = "alembic" },