Files
fusion/docs/even-realities-plugin-api.md
Fusion 858bab241b feat(FN-3970): consolidate Even plugin APIs into unified package with webho
Collapsed the Even plugin architecture into a single unified plugin by merging board card routes and replacing the transport stub with a real webhook implementation, removing the separate cards plugin from the workspace. The new unified plugin (`fusion-plugin-even-realities-glasses`) now exports con

Fusion-Task-Id: FN-3970
2026-05-11 06:47:42 -07:00

67 lines
2.3 KiB
Markdown

# Even Realities Plugin API
Canonical plugin id: `fusion-plugin-even-realities-glasses`
All plugin routes are mounted under:
`/api/plugins/fusion-plugin-even-realities-glasses`
All companion-facing routes require:
`Authorization: Bearer <apiKey>`
## Endpoint Contract
### Board / Task Cards
- `GET /board/cards` → compact deck for selected columns (`columns`, `max`)
- `GET /board` → board summary counts and updated timestamp
- `GET /tasks/:id/cards` → single-task deck (`404` when missing)
### Quick Capture
- `POST /quick-capture`
- Body: `{ "text": string, "column"?: TaskColumn }`
- Creates a task using normalization + configured `quickCaptureDefaultColumn`
### Agent Actions
- `POST /actions/start-work`
- `POST /actions/request-review`
- `POST /actions/approve-plan`
- `POST /actions/accept-review`
- `POST /actions/return-to-agent`
- `POST /actions/retry`
Body: `{ "taskId": "FN-123" }`
### Notifications
- `GET /notifications` (`limit`, optional `drain=true`)
- `POST /notifications/ack` with `{ "taskIds": string[] }`
- `POST /notifications/poll-now`
### Transport Status / Control
- `GET /status``connected`, transport mode/config/error, last poll
- `POST /reconnect` → reconnect transport lifecycle
- `POST /transport/actions` → ingest companion actions (`start-work`, `request-review`, `quick-capture`)
## Transport Contract
Production transport is `WebhookGlassesTransport`:
- pushes cards to `${companionWebhookUrl}/cards`
- reports degraded status when webhook URL is missing/unreachable
- records `lastPushAt`, `lastActionAt`, and `lastError` for `/status`
## Test Coverage Map
- `src/__tests__/board-routes.test.ts` — auth + board/task card route contracts
- `src/__tests__/cards.test.ts` — card/deck projection budgets and formatting
- `src/__tests__/quick-capture-routes.test.ts` — quick capture auth/input/error behavior
- `src/__tests__/agent-action-routes.test.ts` + `agent-actions.test.ts` — action route contract and state transitions
- `src/__tests__/notification-routes.test.ts` + `notifier.test.ts` — polling queue, ack, forced poll behavior
- `src/__tests__/transport.test.ts` + `transport-routes.test.ts` — webhook push path, connection status, inbound action ingestion
- `src/__tests__/index.test.ts` — manifest/settings keys and plugin lifecycle initialization behavior