Feat v0.3.7 package audit (#20)
All checks were successful
All checks were successful
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com> Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #20.
This commit is contained in:
33
packages/content-approval/README.md
Normal file
33
packages/content-approval/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Content Approval
|
||||
|
||||
Multi-party content review with quorum signoff and revision cycle.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multi-party signoff** — 2 approvals required (quorum)
|
||||
- **Rejection reroute** — rejection sends content back for revision
|
||||
- **Review cycle** — revision stage always routes back to review (loop)
|
||||
|
||||
## Stage Flow
|
||||
|
||||
```
|
||||
[draft] → [review] → [publish]
|
||||
team team ↕ team
|
||||
[revision]
|
||||
team
|
||||
```
|
||||
|
||||
## Review Cycle
|
||||
|
||||
1. Author submits draft → enters review
|
||||
2. Reviewer A approves, Reviewer B rejects → routes to revision
|
||||
3. Author revises → branch rule routes back to review
|
||||
4. Both reviewers approve → advances to publish
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
curl -X POST $BASE/api/v1/admin/packages/install \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-F "file=@packages/content-approval"
|
||||
```
|
||||
95
packages/content-approval/manifest.json
Normal file
95
packages/content-approval/manifest.json
Normal file
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"id": "content-approval",
|
||||
"title": "Content Approval",
|
||||
"type": "workflow",
|
||||
"version": "0.1.0",
|
||||
"tier": "browser",
|
||||
"icon": "📝",
|
||||
"author": "Switchboard Core",
|
||||
"description": "Multi-party content review with quorum signoff and revision cycle.",
|
||||
"permissions": [],
|
||||
|
||||
"workflow_definition": {
|
||||
"name": "Content Approval",
|
||||
"slug": "content-approval",
|
||||
"entry_mode": "team_only",
|
||||
"stages": [
|
||||
{
|
||||
"name": "draft",
|
||||
"ordinal": 0,
|
||||
"stage_mode": "form",
|
||||
"audience": "team",
|
||||
"stage_type": "simple",
|
||||
"auto_transition": false,
|
||||
"form_template": {
|
||||
"fieldsets": [
|
||||
{
|
||||
"label": "Content Draft",
|
||||
"fields": [
|
||||
{ "key": "title", "label": "Title", "type": "text", "required": true },
|
||||
{ "key": "body", "label": "Body", "type": "textarea", "required": true },
|
||||
{ "key": "category", "label": "Category", "type": "select", "options": ["blog", "announcement", "documentation", "policy"], "required": true }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "review",
|
||||
"ordinal": 1,
|
||||
"stage_mode": "review",
|
||||
"audience": "team",
|
||||
"stage_type": "simple",
|
||||
"auto_transition": false,
|
||||
"stage_config": {
|
||||
"validation": {
|
||||
"required_approvals": 2,
|
||||
"reject_action": "revision"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "revision",
|
||||
"ordinal": 2,
|
||||
"stage_mode": "form",
|
||||
"audience": "team",
|
||||
"stage_type": "simple",
|
||||
"auto_transition": false,
|
||||
"form_template": {
|
||||
"fieldsets": [
|
||||
{
|
||||
"label": "Revision",
|
||||
"fields": [
|
||||
{ "key": "title", "label": "Title", "type": "text", "required": true },
|
||||
{ "key": "body", "label": "Body", "type": "textarea", "required": true },
|
||||
{ "key": "revision_notes", "label": "What Changed", "type": "textarea", "required": true }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"branch_rules": [
|
||||
{ "field": "title", "op": "exists", "value": "", "target_stage": "review" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "publish",
|
||||
"ordinal": 3,
|
||||
"stage_mode": "form",
|
||||
"audience": "team",
|
||||
"stage_type": "simple",
|
||||
"auto_transition": false,
|
||||
"form_template": {
|
||||
"fieldsets": [
|
||||
{
|
||||
"label": "Publish Confirmation",
|
||||
"fields": [
|
||||
{ "key": "publish_url", "label": "Published URL", "type": "text" },
|
||||
{ "key": "publish_notes", "label": "Notes", "type": "textarea" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user