mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-20 12:30:38 +09:00
Add CEO-safe company portability flows
Expose CEO-scoped import/export preview and apply routes, keep safe imports non-destructive, add export preview-first UI behavior, and document the new portability workflows. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
685c7549e1
commit
51ca713181
18 changed files with 1166 additions and 96 deletions
|
|
@ -39,6 +39,72 @@ Detailed reference for the Paperclip control plane API. For the core heartbeat p
|
|||
|
||||
Use `chainOfCommand` to know who to escalate to. Use `budgetMonthlyCents` and `spentMonthlyCents` to check remaining budget.
|
||||
|
||||
### Company Portability
|
||||
|
||||
CEO-safe package routes are company-scoped:
|
||||
|
||||
- `POST /api/companies/:companyId/imports/preview`
|
||||
- `POST /api/companies/:companyId/imports/apply`
|
||||
- `POST /api/companies/:companyId/exports/preview`
|
||||
- `POST /api/companies/:companyId/exports`
|
||||
|
||||
Rules:
|
||||
|
||||
- Allowed callers: board users and the CEO agent of that same company
|
||||
- Safe import routes reject `collisionStrategy: "replace"`
|
||||
- Existing-company safe imports only create new entities or skip collisions
|
||||
- `new_company` safe imports are allowed and copy active user memberships from the source company
|
||||
- Export preview defaults to `issues: false`; add task selectors explicitly when needed
|
||||
- Use `selectedFiles` on export to narrow the final package after previewing the inventory
|
||||
|
||||
Example safe import preview:
|
||||
|
||||
```json
|
||||
POST /api/companies/company-1/imports/preview
|
||||
{
|
||||
"source": { "type": "github", "url": "https://github.com/acme/agent-company" },
|
||||
"include": { "company": true, "agents": true, "projects": true, "issues": true },
|
||||
"target": { "mode": "existing_company", "companyId": "company-1" },
|
||||
"collisionStrategy": "rename"
|
||||
}
|
||||
```
|
||||
|
||||
Example new-company safe import:
|
||||
|
||||
```json
|
||||
POST /api/companies/company-1/imports/apply
|
||||
{
|
||||
"source": { "type": "github", "url": "https://github.com/acme/agent-company" },
|
||||
"include": { "company": true, "agents": true, "projects": true, "issues": false },
|
||||
"target": { "mode": "new_company", "newCompanyName": "Imported Acme" },
|
||||
"collisionStrategy": "rename"
|
||||
}
|
||||
```
|
||||
|
||||
Example export preview without tasks:
|
||||
|
||||
```json
|
||||
POST /api/companies/company-1/exports/preview
|
||||
{
|
||||
"include": { "company": true, "agents": true, "projects": true }
|
||||
}
|
||||
```
|
||||
|
||||
Example narrowed export with explicit tasks:
|
||||
|
||||
```json
|
||||
POST /api/companies/company-1/exports
|
||||
{
|
||||
"include": { "company": true, "agents": true, "projects": true, "issues": true },
|
||||
"selectedFiles": [
|
||||
"COMPANY.md",
|
||||
"agents/ceo/AGENTS.md",
|
||||
"skills/paperclip/SKILL.md",
|
||||
"tasks/pap-42/TASK.md"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Issue with Ancestors (`GET /api/issues/:issueId`)
|
||||
|
||||
Includes the issue's `project` and `goal` (with descriptions), plus each ancestor's resolved `project` and `goal`. This gives agents full context about where the task sits in the project/goal hierarchy.
|
||||
|
|
|
|||
|
|
@ -149,3 +149,9 @@ curl -sS -X POST "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/agents"
|
|||
- Built-in Paperclip runtime skills are still added automatically when required by the adapter.
|
||||
- If a reference is missing or ambiguous, the API returns `422`.
|
||||
- Prefer linking back to the relevant issue, approval, and agent when you comment about skill changes.
|
||||
- Use company portability routes when you need whole-package import/export, not just a skill:
|
||||
- `POST /api/companies/:companyId/imports/preview`
|
||||
- `POST /api/companies/:companyId/imports/apply`
|
||||
- `POST /api/companies/:companyId/exports/preview`
|
||||
- `POST /api/companies/:companyId/exports`
|
||||
- Use skill-only import when the task is specifically to add a skill to the company library without importing the surrounding company/team/package structure.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue