een-api-toolkit 0.3.82 → 0.3.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/api-coverage-agent.md +264 -0
- package/CHANGELOG.md +36 -69
- package/README.md +24 -1
- package/docs/AI-CONTEXT.md +1 -1
- package/docs/ai-reference/AI-AUTH.md +1 -1
- package/docs/ai-reference/AI-AUTOMATIONS.md +1 -1
- package/docs/ai-reference/AI-DEVICES.md +1 -1
- package/docs/ai-reference/AI-EVENT-DATA-SCHEMAS.md +1 -1
- package/docs/ai-reference/AI-EVENTS.md +1 -1
- package/docs/ai-reference/AI-GROUPING.md +1 -1
- package/docs/ai-reference/AI-JOBS.md +1 -1
- package/docs/ai-reference/AI-MEDIA.md +1 -1
- package/docs/ai-reference/AI-SETUP.md +1 -1
- package/docs/ai-reference/AI-USERS.md +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-coverage-agent
|
|
3
|
+
description: |
|
|
4
|
+
Use this agent when you need to regenerate the EEN API coverage documentation.
|
|
5
|
+
It fetches the complete EEN API v3.0 endpoint list from OpenAPI specs and the
|
|
6
|
+
developer portal, scans the toolkit codebase for implemented endpoints, and
|
|
7
|
+
produces four output documents: all endpoints, implemented endpoints, missing
|
|
8
|
+
endpoints, and an interactive HTML coverage table.
|
|
9
|
+
model: sonnet
|
|
10
|
+
color: cyan
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
You are an expert API documentation analyst. Your job is to produce four coverage documents comparing the full Eagle Eye Networks REST API v3.0 against what is implemented in the een-api-toolkit.
|
|
14
|
+
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
<example>
|
|
18
|
+
Context: User has just added new API endpoints to the toolkit.
|
|
19
|
+
user: "I added camera update and delete endpoints, regenerate the coverage docs"
|
|
20
|
+
assistant: "I'll use the api-coverage-agent to regenerate all four API coverage documents."
|
|
21
|
+
<Task tool call to launch api-coverage-agent>
|
|
22
|
+
</example>
|
|
23
|
+
|
|
24
|
+
<example>
|
|
25
|
+
Context: User wants to see current API coverage status.
|
|
26
|
+
user: "What's our current EEN API coverage?"
|
|
27
|
+
assistant: "I'll use the api-coverage-agent to produce an up-to-date coverage report."
|
|
28
|
+
<Task tool call to launch api-coverage-agent>
|
|
29
|
+
</example>
|
|
30
|
+
|
|
31
|
+
## Output Files
|
|
32
|
+
|
|
33
|
+
You produce exactly four files in `docs/`:
|
|
34
|
+
|
|
35
|
+
1. **`docs/een-api-all-endpoints.md`** - Complete reference of ALL EEN API v3.0 endpoints
|
|
36
|
+
2. **`docs/een-api-implemented.md`** - Endpoints implemented by the toolkit with function names and source files
|
|
37
|
+
3. **`docs/een-api-missing.md`** - Endpoints not yet implemented, with coverage percentages
|
|
38
|
+
4. **`docs/een-api-coverage.html`** - Interactive HTML table with filters, sorting, and summary statistics
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
|
|
42
|
+
### Phase 1: Fetch the Complete EEN API Endpoint List
|
|
43
|
+
|
|
44
|
+
Fetch ALL OpenAPI specification YAML files from the EEN GitHub repository to get the authoritative endpoint list:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/devices_category.yaml
|
|
48
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/media_category.yaml
|
|
49
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/events_category.yaml
|
|
50
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/automations_category.yaml
|
|
51
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/grouping_category.yaml
|
|
52
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/user_and_accounts_category.yaml
|
|
53
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/system_category.yaml
|
|
54
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/account_settings_category.yaml
|
|
55
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/resellers_account_switching_category.yaml
|
|
56
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/video_search_category.yaml
|
|
57
|
+
https://raw.githubusercontent.com/EENCloud/VMS-Developer-Portal/main/Open%20API%20Specifications/vehicle_surveillance_package_category.yaml
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
For each YAML file, extract ALL endpoint paths with their HTTP methods (GET, POST, PUT, PATCH, DELETE).
|
|
61
|
+
|
|
62
|
+
**Important**: The OpenAPI specs may not cover every endpoint. Supplement by fetching the developer portal reference page:
|
|
63
|
+
```
|
|
64
|
+
https://developer.eagleeyenetworks.com/reference/using-the-api
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Look for endpoints documented on the portal but missing from the specs. Common gaps include:
|
|
68
|
+
- Events: `/events/{id}`, `/events:listRecentByType`, `/events:listFieldValues`, `/eventTypes`, `/eventMetrics`
|
|
69
|
+
- Event Subscriptions: full CRUD + filters sub-resources
|
|
70
|
+
- Alerts: `/alerts`, `/alerts/{id}`, `/alertTypes`
|
|
71
|
+
- Notifications: `/notifications`, `/notifications/{id}`, `PATCH /notifications/{id}`
|
|
72
|
+
|
|
73
|
+
### Phase 2: Scan the Toolkit for Implemented Endpoints
|
|
74
|
+
|
|
75
|
+
Search the codebase for all implemented EEN API endpoints:
|
|
76
|
+
|
|
77
|
+
1. **Find all API URLs**: Search for the pattern `api/v3.0` in all TypeScript files under `src/`:
|
|
78
|
+
```
|
|
79
|
+
Grep pattern: "api/v3.0" in src/**/*.ts
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
2. **Find all exported async functions**: These are the public API of the toolkit:
|
|
83
|
+
```
|
|
84
|
+
Grep pattern: "export async function" in src/**/*.ts
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
3. **Find all HTTP methods used**: Identify which methods (GET, POST, PATCH, DELETE, PUT) each endpoint uses:
|
|
88
|
+
```
|
|
89
|
+
Grep pattern: "method: '(POST|PATCH|PUT|DELETE)'" in src/**/*.ts
|
|
90
|
+
```
|
|
91
|
+
(GET is the default when no method is specified)
|
|
92
|
+
|
|
93
|
+
4. **Check for SSE connections**: Look for EventSource or SSE-related code:
|
|
94
|
+
```
|
|
95
|
+
Grep pattern: "EventSource|SSE|connectTo" in src/**/*.ts
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
5. **Check auth proxy functions**: These call the OAuth proxy, not EEN API directly:
|
|
99
|
+
```
|
|
100
|
+
Read src/auth/service.ts for proxy endpoint functions
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
For each implemented endpoint, record:
|
|
104
|
+
- HTTP method
|
|
105
|
+
- EEN API path (e.g., `/api/v3.0/cameras`)
|
|
106
|
+
- Toolkit function name (e.g., `getCameras()`)
|
|
107
|
+
- Source file path
|
|
108
|
+
|
|
109
|
+
### Phase 3: Cross-Reference and Classify
|
|
110
|
+
|
|
111
|
+
For every endpoint in the complete EEN API list, determine if it is:
|
|
112
|
+
- **Implemented**: A matching function exists in the toolkit (same HTTP method + path)
|
|
113
|
+
- **Missing**: No implementation found
|
|
114
|
+
|
|
115
|
+
Also identify:
|
|
116
|
+
- Toolkit functions that call endpoints NOT in the official API docs (flag as "undocumented")
|
|
117
|
+
- Auth proxy functions (not EEN API endpoints, but part of the toolkit)
|
|
118
|
+
- SSE/WebSocket connections (supplementary to REST endpoints)
|
|
119
|
+
|
|
120
|
+
### Phase 4: Generate the Four Documents
|
|
121
|
+
|
|
122
|
+
#### Document 1: `docs/een-api-all-endpoints.md`
|
|
123
|
+
|
|
124
|
+
Structure:
|
|
125
|
+
```markdown
|
|
126
|
+
# Eagle Eye Networks REST API v3.0 - Complete Endpoint Reference
|
|
127
|
+
|
|
128
|
+
> Generated: YYYY-MM-DD
|
|
129
|
+
> Source: [EEN Developer Portal](...) and [OpenAPI Specifications](...)
|
|
130
|
+
|
|
131
|
+
All paths are prefixed with `/api/v3.0` on the appropriate base URL.
|
|
132
|
+
|
|
133
|
+
## CATEGORY - Subcategory (N endpoints)
|
|
134
|
+
|
|
135
|
+
| Method | Path | Description |
|
|
136
|
+
|--------|------|-------------|
|
|
137
|
+
| GET | `/path` | Description |
|
|
138
|
+
...
|
|
139
|
+
|
|
140
|
+
## Summary
|
|
141
|
+
|
|
142
|
+
| Category | Subcategory | Endpoints |
|
|
143
|
+
...
|
|
144
|
+
|
|
145
|
+
### By HTTP Method
|
|
146
|
+
|
|
147
|
+
| Method | Count |
|
|
148
|
+
...
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Organize endpoints by these categories and subcategories:
|
|
152
|
+
- **Devices**: Cameras, Bridges, PTZ, Speakers, Device I/O, Switches, Multi Cameras, Available Devices
|
|
153
|
+
- **Grouping**: Layouts, Tags, Locations, Floors, Floor Plans
|
|
154
|
+
- **Media**: Media, Feeds, Exports, Jobs, Files, Downloads
|
|
155
|
+
- **Events**: Events, Event Types, Event Metrics, Event Subscriptions, Alerts, Notifications
|
|
156
|
+
- **Automations**: Event Alert Condition Rules, Alert Action Rules, Alert Actions
|
|
157
|
+
- **Video Search**: Video Analytic Events
|
|
158
|
+
- **Vehicle Surveillance**: LPR Events, LPR Alert Condition Rules, LPR Vehicle Lists
|
|
159
|
+
- **User & Accounts**: Users, Accounts, Roles, Audit Log, Resource Grants, Editions
|
|
160
|
+
- **Resellers**: Authorization Tokens
|
|
161
|
+
- **Account Settings**: SSO, Client Settings
|
|
162
|
+
- **System**: Applications, OAuth Clients, Reference Data
|
|
163
|
+
|
|
164
|
+
#### Document 2: `docs/een-api-implemented.md`
|
|
165
|
+
|
|
166
|
+
Structure:
|
|
167
|
+
```markdown
|
|
168
|
+
# een-api-toolkit - Implemented EEN API Endpoints
|
|
169
|
+
|
|
170
|
+
> Generated: YYYY-MM-DD
|
|
171
|
+
|
|
172
|
+
## Authentication (via OAuth Proxy)
|
|
173
|
+
[Table of auth proxy functions - note these are NOT EEN API endpoints]
|
|
174
|
+
|
|
175
|
+
## Category (N endpoints)
|
|
176
|
+
|
|
177
|
+
| Method | EEN API Path | Toolkit Function | Source |
|
|
178
|
+
|--------|-------------|-----------------|--------|
|
|
179
|
+
| GET | `/api/v3.0/path` | `functionName()` | `src/.../service.ts` |
|
|
180
|
+
...
|
|
181
|
+
|
|
182
|
+
## Summary
|
|
183
|
+
[Table with counts per category and by HTTP method]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### Document 3: `docs/een-api-missing.md`
|
|
187
|
+
|
|
188
|
+
Structure:
|
|
189
|
+
```markdown
|
|
190
|
+
# een-api-toolkit - Missing EEN API Endpoints
|
|
191
|
+
|
|
192
|
+
> Generated: YYYY-MM-DD
|
|
193
|
+
> Coverage: X of Y endpoints implemented (Z%)
|
|
194
|
+
|
|
195
|
+
## CATEGORY - Subcategory (N of M missing)
|
|
196
|
+
Implemented: [brief list of what IS implemented]
|
|
197
|
+
|
|
198
|
+
| Method | Path | Description |
|
|
199
|
+
...
|
|
200
|
+
|
|
201
|
+
## Summary
|
|
202
|
+
[Coverage table per category]
|
|
203
|
+
[Lists of fully implemented sections and entirely missing sections]
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### Document 4: `docs/een-api-coverage.html`
|
|
207
|
+
|
|
208
|
+
Generate a self-contained HTML file with:
|
|
209
|
+
|
|
210
|
+
**Header section**:
|
|
211
|
+
- Title: "Eagle Eye Networks API v3.0 - Toolkit Coverage"
|
|
212
|
+
- Generation date
|
|
213
|
+
- Summary stat cards: Total endpoints, Implemented, Missing, Coverage percentage with progress bar
|
|
214
|
+
|
|
215
|
+
**Filter bar**:
|
|
216
|
+
- Status filter dropdown (All / Implemented / Missing)
|
|
217
|
+
- Category filter dropdown (All + each category)
|
|
218
|
+
- Method filter dropdown (All / GET / POST / PATCH / DELETE / PUT)
|
|
219
|
+
- Text search input for path/function/description
|
|
220
|
+
|
|
221
|
+
**Data table**:
|
|
222
|
+
- Columns: #, Category, Subcategory, Method, Path, Description, Status, Toolkit Function
|
|
223
|
+
- Sortable by clicking column headers
|
|
224
|
+
- Color-coded method badges (GET=blue, POST=green, PATCH=yellow, DELETE=red, PUT=indigo)
|
|
225
|
+
- Status badges (Implemented=green, Missing=red)
|
|
226
|
+
- Monospace font for function names
|
|
227
|
+
|
|
228
|
+
**Styling**:
|
|
229
|
+
- Clean, modern CSS with system font stack
|
|
230
|
+
- Light background (#f5f7fa)
|
|
231
|
+
- White card-style table with subtle shadows
|
|
232
|
+
- Responsive layout
|
|
233
|
+
- All styles inline (self-contained, no external dependencies)
|
|
234
|
+
|
|
235
|
+
**JavaScript**:
|
|
236
|
+
- All endpoint data in a `const endpoints = [...]` array with objects: `{cat, sub, method, path, desc, status, func}`
|
|
237
|
+
- `status` values: `"impl"` for implemented, `"miss"` for missing
|
|
238
|
+
- `func` is empty string for missing endpoints
|
|
239
|
+
- `renderTable(data)` function to populate tbody
|
|
240
|
+
- `filterTable()` function combining all filter inputs
|
|
241
|
+
- `sortTable(colIndex)` function with toggle direction
|
|
242
|
+
- All code inline (no external dependencies)
|
|
243
|
+
|
|
244
|
+
## Important Guidelines
|
|
245
|
+
|
|
246
|
+
1. **Fetch fresh data every time** - Do not rely on cached or previously generated content. Always fetch the OpenAPI specs and scan the codebase.
|
|
247
|
+
|
|
248
|
+
2. **Be accurate with counts** - Double-check endpoint totals match between documents. The total in all-endpoints.md must equal implemented + missing in missing.md.
|
|
249
|
+
|
|
250
|
+
3. **Parallel fetching** - Fetch multiple OpenAPI YAML files in parallel using concurrent WebFetch calls to save time. Also run codebase Grep searches in parallel.
|
|
251
|
+
|
|
252
|
+
4. **Handle OpenAPI gaps** - Some endpoints are on the developer portal but not in the OpenAPI specs (especially Events category sub-resources). Use both sources.
|
|
253
|
+
|
|
254
|
+
5. **Flag undocumented endpoints** - If the toolkit implements endpoints not found in any official documentation, note them with a warning (e.g., `alertConditionRules` without the `event` prefix).
|
|
255
|
+
|
|
256
|
+
6. **Include the generation date** - Use today's date in all document headers.
|
|
257
|
+
|
|
258
|
+
7. **Open the HTML when done** - After writing all four files, run `open docs/een-api-coverage.html` to display the result in the browser.
|
|
259
|
+
|
|
260
|
+
8. **Preserve category ordering** - Use the category order listed above consistently across all four documents.
|
|
261
|
+
|
|
262
|
+
9. **Count auth proxy separately** - Auth proxy functions (getAccessToken, refreshToken, revokeToken, handleAuthCallback) communicate with the proxy server, not the EEN API. List them in the implemented doc but do not count them in the EEN API coverage totals.
|
|
263
|
+
|
|
264
|
+
10. **Count SSE separately** - The `connectToEventSubscription()` function uses SSE, not REST. List it but count it separately from REST endpoint coverage.
|
package/CHANGELOG.md
CHANGED
|
@@ -2,105 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## [0.3.
|
|
5
|
+
## [0.3.85] - 2026-02-17
|
|
6
6
|
|
|
7
7
|
### Release Summary
|
|
8
8
|
|
|
9
|
-
#### PR #
|
|
9
|
+
#### PR #113: fix: address three security review findings
|
|
10
10
|
## Summary
|
|
11
|
+
- **HIGH**: Validate hostname before persisting OAuth token — `setBaseUrl()` now returns boolean; `handleAuthCallback()` checks it before calling `setToken()`, preventing token persistence when hostname is rejected
|
|
12
|
+
- **MEDIUM**: Pin external proxy repo clone in CI workflows (`validate-pr`, `test-release`) to commit SHA `4e8f45f` to prevent supply chain attacks
|
|
13
|
+
- **LOW**: Remove unnecessary `id-token: write` permission from `claude-code-review` workflow
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
## Commits
|
|
19
|
-
|
|
20
|
-
- `d4e8a06` fix: harden hostname validation and CI/CD security
|
|
21
|
-
- `c870348` Update src/utils/hostname.ts
|
|
22
|
-
- `5a76991` Merge pull request #109
|
|
23
|
-
|
|
24
|
-
## Test Results
|
|
25
|
-
|
|
26
|
-
- **Lint**: 0 errors (1 pre-existing warning)
|
|
27
|
-
- **Unit tests**: 644 passed
|
|
28
|
-
- **Build**: Success
|
|
29
|
-
- **E2E tests**: 225 passed across all 11 example apps
|
|
30
|
-
- **Security review**: No HIGH-confidence vulnerabilities found
|
|
31
|
-
|
|
32
|
-
## Files Changed
|
|
33
|
-
|
|
34
|
-
- `src/utils/hostname.ts` - Added hostname character validation regex
|
|
35
|
-
- `src/__tests__/auth.store.test.ts` - Added 5 test cases for malicious hostname bypass
|
|
36
|
-
- `.github/workflows/npm-publish.yml` - Added production branch restriction
|
|
37
|
-
- `.github/workflows/test-release.yml` - Fixed script injection at 3 locations
|
|
38
|
-
|
|
39
|
-
## Version
|
|
40
|
-
|
|
41
|
-
`0.3.79`
|
|
15
|
+
## Test plan
|
|
16
|
+
- [x] 644/644 unit tests pass
|
|
17
|
+
- [x] 225/225 E2E tests pass across all 11 example apps
|
|
18
|
+
- [x] Lint clean, build succeeds
|
|
19
|
+
- [ ] Validate-PR workflow passes on this PR
|
|
42
20
|
|
|
43
21
|
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
44
22
|
|
|
45
|
-
#### PR #
|
|
23
|
+
#### PR #118: Release v0.3.85 - API coverage docs and workflow security fix
|
|
46
24
|
## Summary
|
|
47
25
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
2. **Add confidential data scan to PR-and-check skill** — New step that scans changed `.md` files for secrets, credentials, or confidential data before PR creation. Critical safeguard for a public npm package.
|
|
53
|
-
|
|
54
|
-
3. **Agent documentation improvements** — Updated Playwright selectors (getByPlaceholder), SSE API patterns (nested deliveryConfig/filters), LivePlayer camera switching (:key trick), and setup agent scope (delegation to specialized agents).
|
|
26
|
+
- Add EEN API v3.0 coverage documentation (4 documents comparing 211 API endpoints against 51 implemented, 24.2% coverage)
|
|
27
|
+
- Add `api-coverage-agent` for on-demand regeneration of coverage docs
|
|
28
|
+
- Update README with agent list and coverage section
|
|
29
|
+
- Fix workflow_dispatch restriction to production branch (security)
|
|
55
30
|
|
|
56
31
|
## Commits
|
|
57
32
|
|
|
58
|
-
- `
|
|
59
|
-
- `
|
|
60
|
-
- `
|
|
33
|
+
- `baa7e1b` feat: add EEN API coverage documentation and agent
|
|
34
|
+
- `eea17e8` docs: add missing agents to README agent list
|
|
35
|
+
- `bb47cc2` docs: rename een-api-coverage-agent to api-coverage-agent
|
|
36
|
+
- `c794fba` fix: restrict workflow_dispatch to production branch to prevent supply chain attack
|
|
37
|
+
- `6e782e2` fix: restrict npm-publish workflow_dispatch to production branch
|
|
61
38
|
|
|
62
|
-
## Test Results
|
|
39
|
+
## Test Results (from PR #117)
|
|
63
40
|
|
|
64
|
-
- **Lint**:
|
|
41
|
+
- **Lint**: Passed
|
|
65
42
|
- **Unit tests**: 644 passed
|
|
66
|
-
- **Build**:
|
|
67
|
-
- **E2E tests**:
|
|
68
|
-
- **Security review**: No vulnerabilities
|
|
69
|
-
- **
|
|
43
|
+
- **Build**: Succeeded
|
|
44
|
+
- **E2E tests**: 236 passed across all 11 example apps
|
|
45
|
+
- **Security review**: No vulnerabilities
|
|
46
|
+
- **Code review**: Approved by Claude Sonnet 4.5
|
|
70
47
|
|
|
71
48
|
## Version
|
|
72
49
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
76
|
-
|
|
77
|
-
#### PR #113: fix: address three security review findings
|
|
78
|
-
## Summary
|
|
79
|
-
- **HIGH**: Validate hostname before persisting OAuth token — `setBaseUrl()` now returns boolean; `handleAuthCallback()` checks it before calling `setToken()`, preventing token persistence when hostname is rejected
|
|
80
|
-
- **MEDIUM**: Pin external proxy repo clone in CI workflows (`validate-pr`, `test-release`) to commit SHA `4e8f45f` to prevent supply chain attacks
|
|
81
|
-
- **LOW**: Remove unnecessary `id-token: write` permission from `claude-code-review` workflow
|
|
82
|
-
|
|
83
|
-
## Test plan
|
|
84
|
-
- [x] 644/644 unit tests pass
|
|
85
|
-
- [x] 225/225 E2E tests pass across all 11 example apps
|
|
86
|
-
- [x] Lint clean, build succeeds
|
|
87
|
-
- [ ] Validate-PR workflow passes on this PR
|
|
50
|
+
v0.3.85
|
|
88
51
|
|
|
89
52
|
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
90
53
|
|
|
91
54
|
|
|
92
55
|
### Detailed Changes
|
|
93
56
|
|
|
57
|
+
#### Features
|
|
58
|
+
- feat: add EEN API coverage documentation and agent
|
|
59
|
+
|
|
94
60
|
#### Bug Fixes
|
|
95
|
-
- fix:
|
|
96
|
-
- fix:
|
|
61
|
+
- fix: restrict npm-publish workflow_dispatch to production branch
|
|
62
|
+
- fix: restrict workflow_dispatch to production branch to prevent supply chain attack
|
|
97
63
|
|
|
98
64
|
#### Other Changes
|
|
99
|
-
-
|
|
65
|
+
- docs: rename een-api-coverage-agent to api-coverage-agent
|
|
66
|
+
- docs: add missing agents to README agent list
|
|
100
67
|
|
|
101
68
|
### Links
|
|
102
69
|
- [npm package](https://www.npmjs.com/package/een-api-toolkit)
|
|
103
|
-
- [Full Changelog](https://github.com/klaushofrichter/een-api-toolkit/compare/v0.3.
|
|
70
|
+
- [Full Changelog](https://github.com/klaushofrichter/een-api-toolkit/compare/v0.3.82...v0.3.85)
|
|
104
71
|
|
|
105
72
|
---
|
|
106
|
-
*Released: 2026-02-
|
|
73
|
+
*Released: 2026-02-17 11:45:53 CST*
|
package/README.md
CHANGED
|
@@ -182,7 +182,7 @@ The toolkit includes specialized [Claude Code](https://docs.anthropic.com/en/doc
|
|
|
182
182
|
|
|
183
183
|
> **Note:** These agents use Claude Code's specific format. To use with other AI assistants (Gemini CLI, Copilot, etc.), the agent specs would need conversion.
|
|
184
184
|
|
|
185
|
-
**Available agents:**
|
|
185
|
+
**Available agents (installed via `npx een-setup-agents`):**
|
|
186
186
|
- `een-setup-agent` - Project scaffolding, Pinia setup, Vite configuration
|
|
187
187
|
- `een-auth-agent` - OAuth flows, route guards, token management
|
|
188
188
|
- `een-users-agent` - User listing and profile APIs
|
|
@@ -190,6 +190,10 @@ The toolkit includes specialized [Claude Code](https://docs.anthropic.com/en/doc
|
|
|
190
190
|
- `een-media-agent` - Live video, previews, HLS playback
|
|
191
191
|
- `een-events-agent` - Events, alerts, metrics, SSE subscriptions
|
|
192
192
|
- `een-grouping-agent` - Layouts CRUD operations, camera pane management
|
|
193
|
+
- `een-automations-agent` - Alert rules, action rules, event conditions
|
|
194
|
+
- `een-jobs-agent` - Jobs, exports, files, downloads
|
|
195
|
+
|
|
196
|
+
The `setup-agents` script (`scripts/setup-agents.ts`) installs only agents matching the `een-*-agent.md` pattern. Other agents in `.claude/agents/` (such as `api-coverage-agent`, `docs-accuracy-reviewer`, `test-runner`) are for this repository only and are not distributed to consuming projects.
|
|
193
197
|
|
|
194
198
|
**Installation:**
|
|
195
199
|
```bash
|
|
@@ -311,6 +315,25 @@ The `sync-secrets.sh` script manages secrets from a single source (root `.env` f
|
|
|
311
315
|
|
|
312
316
|
> **Note:** Example `.env` files are gitignored. Run `sync-secrets.sh` after cloning to set up local development.
|
|
313
317
|
|
|
318
|
+
## EEN API Coverage
|
|
319
|
+
|
|
320
|
+
This toolkit implements a subset of the [Eagle Eye Networks REST API v3.0](https://developer.eagleeyenetworks.com/reference/using-the-api). Coverage documentation is maintained in `docs/`:
|
|
321
|
+
|
|
322
|
+
| Document | Description |
|
|
323
|
+
|----------|-------------|
|
|
324
|
+
| **[All EEN API Endpoints](./docs/een-api-all-endpoints.md)** | Complete reference of all 211 EEN API v3.0 endpoints |
|
|
325
|
+
| **[Implemented Endpoints](./docs/een-api-implemented.md)** | Endpoints implemented by the toolkit with function names and source files |
|
|
326
|
+
| **[Missing Endpoints](./docs/een-api-missing.md)** | Endpoints not yet implemented, with per-category coverage percentages |
|
|
327
|
+
| **[Coverage Table (HTML)](./docs/een-api-coverage.html)** | Interactive table with filtering, sorting, and summary statistics |
|
|
328
|
+
|
|
329
|
+
**Fully implemented sections:** Layouts, Feeds, Jobs, Event Types, Event Metrics, Alerts
|
|
330
|
+
|
|
331
|
+
**Partially implemented:** Users, Cameras, Bridges, Media, Events, Event Subscriptions, Automations, Exports, Files, Downloads
|
|
332
|
+
|
|
333
|
+
**Not yet implemented:** PTZ, Speakers, Switches, Multi Cameras, Locations, Floors, Video Search, LPR, Roles, Accounts, and others
|
|
334
|
+
|
|
335
|
+
To regenerate these documents after adding new API endpoints, use the `api-coverage-agent`.
|
|
336
|
+
|
|
314
337
|
## External Resources
|
|
315
338
|
|
|
316
339
|
- [EEN Developer Portal](https://developer.eagleeyenetworks.com/)
|
package/docs/AI-CONTEXT.md
CHANGED