feat(permission): integrate auto-review and hard guards

This commit is contained in:
云服务部-叶林立
2026-09-02 15:34:29 +08:00
parent a4807dde67
commit 180da95ab7
79 changed files with 4263 additions and 9203 deletions
@@ -0,0 +1,41 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/siakitem/my-pi/main/pi-permission-system/schemas/hard-guards.schema.json",
"title": "Pi Permission System Hard Guards",
"description": "Global-only allow exceptions and non-overridable deny rules evaluated before ordinary policy, session grants, and AutoReview.",
"type": "object",
"properties": {
"$schema": { "type": "string" },
"version": { "const": 1 },
"permission": {
"type": "object",
"additionalProperties": {
"oneOf": [
{ "$ref": "#/$defs/hardValue" },
{
"type": "object",
"additionalProperties": { "$ref": "#/$defs/hardValue" }
}
]
}
}
},
"required": ["version", "permission"],
"additionalProperties": false,
"$defs": {
"hardValue": {
"oneOf": [
{ "enum": ["allow", "deny"] },
{
"type": "object",
"properties": {
"action": { "const": "deny" },
"reason": { "type": "string", "minLength": 1, "maxLength": 500 }
},
"required": ["action"],
"additionalProperties": false
}
]
}
}
}
@@ -152,6 +152,73 @@
}
]
},
"autoReview": {
"description": "Built-in model-assisted reviewer used for static-policy review decisions.",
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"provider": {
"type": "string",
"minLength": 1
},
"model": {
"type": "string",
"minLength": 1
},
"reasoning": {
"type": "string",
"enum": [
"off",
"minimal",
"low",
"medium",
"high",
"xhigh",
"max"
]
},
"timeoutMs": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 300000
},
"includeBaselinePolicy": {
"type": "boolean"
},
"additionalPolicy": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"analysis": {
"description": "Background policy analysis triggered after a configured number of completed automatic reviews.",
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"threshold": {
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"retainAnalyzedBatches": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"timeoutMs": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 300000
}
},
"additionalProperties": false
},
"shellTools": {
"type": "object",
"propertyNames": {
@@ -203,8 +270,8 @@
},
"additionalProperties": false,
"title": "PI Permission System Configuration",
"description": "Unified config file combining runtime knobs and flat permission policy for pi-permission-system.",
"markdownDescription": "Unified config file combining runtime knobs and flat permission policy for [pi-permission-system](https://github.com/gotgenes/pi-packages/tree/main/packages/pi-permission-system).\n\nPlace at `~/.pi/agent/extensions/pi-permission-system/config.json` (global) or `<project>/.pi/extensions/pi-permission-system/config.json` (project).",
"description": "Ordinary JSONC policy combining runtime knobs, AutoReview settings, and flat permission rules for pi-permission-system.",
"markdownDescription": "Ordinary JSONC policy for [pi-permission-system](https://github.com/gotgenes/pi-packages/tree/main/packages/pi-permission-system).\n\nPlace at `~/.pi/agent/extensions/pi-permission-system/policy.jsonc` (global) or `<project>/.pi/extensions/pi-permission-system/policy.jsonc` (project). Global-only hard guards use the separate `hard-guards.jsonc` schema.",
"$defs": {
"permissionState": {
"anyOf": [