Changeset 0.29.0 (#195)

This commit is contained in:
2026-03-17 16:28:47 +00:00
parent 128cbb8174
commit 5d637d3a90
129 changed files with 9418 additions and 3016 deletions

View File

@@ -0,0 +1,36 @@
package store
import (
"context"
"git.gobha.me/xcaliber/chat-switchboard/models"
)
// ExtensionPermissionStore manages declared and granted permissions for packages.
type ExtensionPermissionStore interface {
// DeclareForPackage upserts the declared permissions from a manifest.
// Any permissions in the DB for this package that are NOT in the
// provided list are deleted (manifest is the source of truth).
// Existing grants are preserved on upsert.
DeclareForPackage(ctx context.Context, packageID string, permissions []string) error
// ListForPackage returns all declared permissions for a package.
ListForPackage(ctx context.Context, packageID string) ([]models.ExtensionPermission, error)
// GrantedForPackage returns only granted permissions for a package.
// Used at runtime to determine which modules to inject.
GrantedForPackage(ctx context.Context, packageID string) ([]string, error)
// Grant marks a permission as granted by an admin.
Grant(ctx context.Context, packageID, permission, grantedBy string) error
// Revoke removes a grant (sets granted=false).
Revoke(ctx context.Context, packageID, permission string) error
// GrantAll grants all declared permissions for a package.
GrantAll(ctx context.Context, packageID, grantedBy string) error
// DeleteForPackage removes all permission rows for a package.
// Called when a package is uninstalled.
DeleteForPackage(ctx context.Context, packageID string) error
}