@coffeerunhobby/mcp-ha-connect 1.4.0 → 1.5.0

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.
@@ -0,0 +1,69 @@
1
+ name: CI
2
+
3
+ # Advisory only. This workflow REPORTS a pass/fail status on commits and PRs.
4
+ # It does NOT block commits, pushes, or merges. The code builds, publishes, and
5
+ # deploys with zero dependency on this file — delete it and nothing breaks.
6
+ # (Blocking only happens if you separately enable branch-protection in the
7
+ # GitHub web UI, which is off by default and intentionally not set here.)
8
+
9
+ on:
10
+ push:
11
+ branches: [main, dev]
12
+ pull_request:
13
+ branches: [main, dev]
14
+ # Lets you re-run it by hand from the Actions tab.
15
+ workflow_dispatch:
16
+
17
+ # If you push twice quickly, cancel the older run instead of stacking them.
18
+ concurrency:
19
+ group: ci-${{ github.ref }}
20
+ cancel-in-progress: true
21
+
22
+ jobs:
23
+ build-test-lint:
24
+ runs-on: ubuntu-latest
25
+
26
+ strategy:
27
+ # Don't kill the Node 22 run just because Node 20 failed (or vice-versa) —
28
+ # we want to see both results.
29
+ fail-fast: false
30
+ matrix:
31
+ # The two LTS lines we support (package.json engines: ">=20").
32
+ node-version: ['20.x', '22.x']
33
+
34
+ name: node ${{ matrix.node-version }}
35
+
36
+ steps:
37
+ - name: Checkout
38
+ uses: actions/checkout@v4
39
+
40
+ - name: Set up Node ${{ matrix.node-version }}
41
+ uses: actions/setup-node@v4
42
+ with:
43
+ node-version: ${{ matrix.node-version }}
44
+ cache: npm
45
+
46
+ # npm ci installs exactly what's in package-lock.json (reproducible),
47
+ # the same command Docker uses. It never edits the lockfile.
48
+ - name: Install dependencies
49
+ run: npm ci
50
+
51
+ # 1. Compile cleanly (tsc -> dist/). Catches type errors.
52
+ - name: Build
53
+ run: npm run build
54
+
55
+ # 2. Lint src + tests. CLAUDE.md policy: zero errors AND zero warnings.
56
+ # --max-warnings=0 makes a warning fail the job, matching that policy.
57
+ - name: Lint
58
+ run: npm run lint -- --max-warnings=0
59
+
60
+ # 3. Version-sync gate. Fails if package.json / src/version.ts / openapi.json
61
+ # disagree on the version — the exact drift CLAUDE.md warns about.
62
+ - name: Version sync
63
+ run: npm run check:sync
64
+
65
+ # 4. Unit tests WITH coverage gate. test:coverage excludes tests/integration/**
66
+ # (those need a live .env CI must never have) and enforces the regression
67
+ # floor in vitest.config.ts — a coverage DROP fails the build.
68
+ - name: Test + coverage gate
69
+ run: npm run test:coverage
package/Dockerfile CHANGED
@@ -3,7 +3,10 @@
3
3
  FROM node:25-alpine AS deps
4
4
  WORKDIR /app
5
5
  COPY package*.json ./
6
- RUN npm install
6
+ # npm ci installs exactly from the committed package-lock.json (reproducible) and
7
+ # fails if package.json and the lockfile have drifted. The `package*.json` COPY
8
+ # above pulls in package-lock.json, so the lockfile is present in this stage.
9
+ RUN npm ci
7
10
 
8
11
  FROM node:25-alpine AS build
9
12
  WORKDIR /app
@@ -26,7 +29,8 @@ WORKDIR /app
26
29
  ENV NODE_ENV=production
27
30
  RUN apk add --no-cache curl
28
31
  COPY package*.json ./
29
- RUN npm install --omit=dev
32
+ # Reproducible prod-only install from the lockfile (drops devDependencies).
33
+ RUN npm ci --omit=dev
30
34
  COPY --from=build /app/dist ./dist
31
35
 
32
36
  # M10: drop root. The official node image ships a non-root `node` user (uid 1000).
@@ -75,6 +75,14 @@ export declare function resolveUsageWindowSec(params: Record<string, string> | u
75
75
  start: number;
76
76
  end: number;
77
77
  };
78
+ /**
79
+ * Build the optional query filters for the audit-log endpoints from caller params.
80
+ * `startTime`/`endTime` are epoch MILLISECONDS, forwarded as the controller's
81
+ * `filters.startTime`/`filters.endTime`; `searchKey` is fuzzy text. Absent params
82
+ * are omitted so a bare read returns the most recent page unfiltered. Exported for
83
+ * unit testing.
84
+ */
85
+ export declare function auditFilters(params: Record<string, string> | undefined): Record<string, unknown>;
78
86
  /**
79
87
  * The Omada resource graph. Containers have no `fetch` (browse-only); collections
80
88
  * and leaves fetch data. Existing client methods back the well-trodden reads;
@@ -49,6 +49,26 @@ export function resolveUsageWindowSec(params, now = Date.now()) {
49
49
  const start = params?.startTime ? Number(params.startTime) : end - 24 * 60 * 60;
50
50
  return { start, end };
51
51
  }
52
+ /**
53
+ * Build the optional query filters for the audit-log endpoints from caller params.
54
+ * `startTime`/`endTime` are epoch MILLISECONDS, forwarded as the controller's
55
+ * `filters.startTime`/`filters.endTime`; `searchKey` is fuzzy text. Absent params
56
+ * are omitted so a bare read returns the most recent page unfiltered. Exported for
57
+ * unit testing.
58
+ */
59
+ export function auditFilters(params) {
60
+ const query = {};
61
+ if (params?.startTime !== undefined) {
62
+ query['filters.startTime'] = Number(params.startTime);
63
+ }
64
+ if (params?.endTime !== undefined) {
65
+ query['filters.endTime'] = Number(params.endTime);
66
+ }
67
+ if (params?.searchKey) {
68
+ query.searchKey = params.searchKey;
69
+ }
70
+ return query;
71
+ }
52
72
  /**
53
73
  * The Omada resource graph. Containers have no `fetch` (browse-only); collections
54
74
  * and leaves fetch data. Existing client methods back the well-trodden reads;
@@ -715,6 +735,211 @@ export const OMADA_RESOURCES = [
715
735
  description: 'Controller-wide overview of critical firmware upgrades (not site-scoped).',
716
736
  fetch: (c) => c.readResource({ pathTemplate: '/upgrade/overview/critical', siteScoped: false }),
717
737
  },
738
+ // ---- VPN (status & tunnels) -------------------------------------------
739
+ {
740
+ path: '/vpn',
741
+ kind: 'container',
742
+ permission: Q,
743
+ description: 'VPN status: site-to-site, client-to-site, WireGuard, and IPsec tunnel stats.',
744
+ },
745
+ {
746
+ path: '/vpn/site-to-site',
747
+ kind: 'collection',
748
+ permission: Q,
749
+ estimatedSize: 'small',
750
+ description: 'Site-to-site VPN tunnels. Pass id=<vpnId> to fetch a single tunnel.',
751
+ params: [{ name: 'id', required: false, description: 'VPN id to fetch a single site-to-site tunnel' }],
752
+ fetch: (c, a) => a.id
753
+ ? c.readResource({
754
+ pathTemplate: '/sites/{siteId}/vpn/site-to-site-vpns/{vpnId}',
755
+ siteId: a.siteId,
756
+ pathParams: { vpnId: a.id },
757
+ })
758
+ : c.readResource({ pathTemplate: '/sites/{siteId}/vpn/site-to-site-vpns', siteId: a.siteId }),
759
+ },
760
+ {
761
+ path: '/vpn/client-to-site',
762
+ kind: 'container',
763
+ permission: Q,
764
+ description: 'Client-to-site (remote-access) VPN: configured servers and connected clients.',
765
+ },
766
+ {
767
+ path: '/vpn/client-to-site/servers',
768
+ kind: 'collection',
769
+ permission: Q,
770
+ estimatedSize: 'small',
771
+ description: 'Configured client-to-site VPN servers (L2TP/OpenVPN/etc.).',
772
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/vpn/client-to-site-vpn-servers', siteId: a.siteId }),
773
+ },
774
+ {
775
+ path: '/vpn/client-to-site/clients',
776
+ kind: 'collection',
777
+ permission: Q,
778
+ estimatedSize: 'small',
779
+ description: 'Currently connected client-to-site (remote-access) VPN clients.',
780
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/vpn/client-to-site-vpn-clients', siteId: a.siteId }),
781
+ },
782
+ {
783
+ path: '/vpn/wireguard',
784
+ kind: 'collection',
785
+ permission: Q,
786
+ estimatedSize: 'small',
787
+ description: 'Configured WireGuard VPN interfaces on the gateway.',
788
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/vpn/wireguards', siteId: a.siteId }),
789
+ },
790
+ {
791
+ path: '/vpn/ipsec-stats',
792
+ kind: 'collection',
793
+ permission: Q,
794
+ paginated: true,
795
+ defaultPageSize: 50,
796
+ estimatedSize: 'small',
797
+ description: 'IPsec VPN tunnel statistics (paginated — use page/pageSize).',
798
+ fetch: (c, a) => c.readResource({
799
+ pathTemplate: '/sites/{siteId}/setting/vpn/stats/ipsec',
800
+ siteId: a.siteId,
801
+ paginated: true,
802
+ page: a.page,
803
+ pageSize: a.pageSize,
804
+ }),
805
+ },
806
+ // ---- Profiles (reusable network profiles) -----------------------------
807
+ {
808
+ path: '/profiles',
809
+ kind: 'container',
810
+ permission: Q,
811
+ description: 'Reusable network profiles: per-device Wi-Fi keys (PPSK) and time-range schedules.',
812
+ },
813
+ {
814
+ path: '/profiles/ppsk',
815
+ kind: 'collection',
816
+ permission: Q,
817
+ estimatedSize: 'small',
818
+ description: 'PPSK (Private Pre-Shared Key) profiles — unique per-user/per-device Wi-Fi passwords on a shared SSID. ' +
819
+ 'REQUIRES params.type: 0 = PPSK without RADIUS, 1 = PPSK with RADIUS.',
820
+ params: [{ name: 'type', required: true, description: '0 = PPSK without RADIUS, 1 = PPSK with RADIUS' }],
821
+ fetch: (c, a) => c.readResource({
822
+ pathTemplate: '/sites/{siteId}/ppsk-profiles',
823
+ siteId: a.siteId,
824
+ query: { type: Number(a.params?.type) },
825
+ }),
826
+ },
827
+ {
828
+ path: '/profiles/time-range',
829
+ kind: 'collection',
830
+ permission: Q,
831
+ estimatedSize: 'small',
832
+ description: 'Time-range profiles — reusable schedules referenced by ACLs, Wi-Fi, and PoE rules.',
833
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/time-range-profiles', siteId: a.siteId }),
834
+ },
835
+ // ---- Schedules (PoE / port / firmware-upgrade) ------------------------
836
+ {
837
+ path: '/schedules',
838
+ kind: 'container',
839
+ permission: Q,
840
+ description: 'Device schedules: PoE power, switch-port on/off, and firmware-upgrade windows. ' +
841
+ '(Reboot schedules are site-template-scoped enterprise config and are intentionally not exposed here.)',
842
+ },
843
+ {
844
+ path: '/schedules/poe',
845
+ kind: 'collection',
846
+ permission: Q,
847
+ estimatedSize: 'small',
848
+ description: 'PoE schedules — when switch ports deliver power to PoE devices.',
849
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/poe-schedules', siteId: a.siteId }),
850
+ },
851
+ {
852
+ path: '/schedules/port',
853
+ kind: 'collection',
854
+ permission: Q,
855
+ estimatedSize: 'small',
856
+ description: 'Port schedules — when switch ports are administratively up/down.',
857
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/port-schedules', siteId: a.siteId }),
858
+ },
859
+ {
860
+ path: '/schedules/upgrade',
861
+ kind: 'collection',
862
+ permission: Q,
863
+ estimatedSize: 'small',
864
+ description: 'Firmware-upgrade schedules — planned maintenance windows for device upgrades.',
865
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/upgrade-schedules', siteId: a.siteId }),
866
+ },
867
+ // ---- Backup (controller/site backup status) ---------------------------
868
+ {
869
+ path: '/backup',
870
+ kind: 'container',
871
+ permission: Q,
872
+ description: 'Site backup status: available backup files and the most recent backup result.',
873
+ },
874
+ {
875
+ path: '/backup/files',
876
+ kind: 'collection',
877
+ permission: Q,
878
+ estimatedSize: 'small',
879
+ description: 'List of available site backup files.',
880
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/maintenance/backup/files', siteId: a.siteId }),
881
+ },
882
+ {
883
+ path: '/backup/result',
884
+ kind: 'leaf',
885
+ permission: Q,
886
+ estimatedSize: 'small',
887
+ description: 'Result of the most recent site backup operation.',
888
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/backup/result', siteId: a.siteId }),
889
+ },
890
+ // ---- Audit logs (administrative operation history) — ADMIN only -------
891
+ {
892
+ path: '/audit',
893
+ kind: 'container',
894
+ permission: A,
895
+ description: 'Administrative audit logs — who did what on the controller. ADMIN only (reveals full admin activity).',
896
+ },
897
+ {
898
+ path: '/audit/site',
899
+ kind: 'collection',
900
+ permission: A,
901
+ paginated: true,
902
+ defaultPageSize: 10,
903
+ estimatedSize: 'large',
904
+ description: 'Site-scoped administrative audit log (paginated, ADMIN). Optional params: startTime/endTime ' +
905
+ '(epoch MILLISECONDS) to bound the window, and searchKey (fuzzy text).',
906
+ params: [
907
+ { name: 'startTime', required: false, description: 'Window start, epoch milliseconds' },
908
+ { name: 'endTime', required: false, description: 'Window end, epoch milliseconds' },
909
+ { name: 'searchKey', required: false, description: 'Fuzzy search on the log text' },
910
+ ],
911
+ fetch: (c, a) => c.readResource({
912
+ pathTemplate: '/sites/{siteId}/audit-logs',
913
+ siteId: a.siteId,
914
+ paginated: true,
915
+ page: a.page,
916
+ pageSize: a.pageSize,
917
+ query: auditFilters(a.params),
918
+ }),
919
+ },
920
+ {
921
+ path: '/audit/global',
922
+ kind: 'collection',
923
+ permission: A,
924
+ paginated: true,
925
+ defaultPageSize: 10,
926
+ estimatedSize: 'large',
927
+ description: 'Controller-wide administrative audit log across all sites (paginated, ADMIN). Optional params: ' +
928
+ 'startTime/endTime (epoch MILLISECONDS) and searchKey (fuzzy text).',
929
+ params: [
930
+ { name: 'startTime', required: false, description: 'Window start, epoch milliseconds' },
931
+ { name: 'endTime', required: false, description: 'Window end, epoch milliseconds' },
932
+ { name: 'searchKey', required: false, description: 'Fuzzy search on the log text' },
933
+ ],
934
+ fetch: (c, a) => c.readResource({
935
+ pathTemplate: '/audit-logs',
936
+ siteScoped: false,
937
+ paginated: true,
938
+ page: a.page,
939
+ pageSize: a.pageSize,
940
+ query: auditFilters(a.params),
941
+ }),
942
+ },
718
943
  // ---- Security (IDS/IPS) — ADMIN only -----------------------------------
719
944
  {
720
945
  path: '/security',
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/tools/omada/namespace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/tools/omada/namespace.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Package version - hardcoded at build time for reliability
3
3
  * Keep in sync with package.json version
4
4
  */
5
- export declare const VERSION = "1.4.0";
5
+ export declare const VERSION = "1.5.0";
package/dist/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  * Package version - hardcoded at build time for reliability
3
3
  * Keep in sync with package.json version
4
4
  */
5
- export const VERSION = '1.4.0';
5
+ export const VERSION = '1.5.0';
6
6
  //# sourceMappingURL=version.js.map
package/docs/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ ### 1.5.0
2
+ **Feature — Omada resource graph: Tier 4 read coverage (VPN · profiles · schedules · backup · audit).**
3
+ Extends graph mode with the *home-relevant* slice of the previously zero-coverage Omada
4
+ categories — still at the same two-tool surface (`omada_browse` + `omada_read`), zero
5
+ tool-schema cost. Every node is grounded in the reference TP-Link Omada API client's actual
6
+ paths and required params, backed by the existing `OmadaClient.readResource()` primitive (no
7
+ new client code):
8
+
9
+ - *VPN status* (`/vpn`) — `/vpn/site-to-site` (list, or a single tunnel via `id`),
10
+ `/vpn/client-to-site/servers`, `/vpn/client-to-site/clients`, `/vpn/wireguard`, and the
11
+ paginated `/vpn/ipsec-stats`.
12
+ - *Profiles* (`/profiles`) — `/profiles/ppsk` (per-device Wi-Fi keys; **requires** `params.type`:
13
+ 0 = without RADIUS, 1 = with RADIUS) and `/profiles/time-range`.
14
+ - *Schedules* (`/schedules`) — `/schedules/poe`, `/schedules/port`, `/schedules/upgrade`.
15
+ (Reboot schedules are site-template-scoped enterprise config and are intentionally omitted.)
16
+ - *Backup status* (`/backup`) — `/backup/files` and `/backup/result`.
17
+ - *Audit logs* (`/audit`) — **ADMIN-gated** (like `/security`): `/audit/site` (site-scoped) and
18
+ `/audit/global` (controller-wide, not site-scoped). Both paginated, with optional epoch-ms
19
+ `startTime`/`endTime` + `searchKey` filters via the new `auditFilters` helper.
20
+
21
+ This is the first subtree beyond `/security` to require ADMIN, further exercising per-path RBAC.
22
+ Suite grew by the corresponding namespace wiring + `auditFilters` tests.
23
+
1
24
  ### 1.4.0
2
25
  **Feature — Omada resource graph expanded to broad read coverage (no tool-schema cost).**
3
26
  Because `graph` mode keeps the tool surface at two tools (`omada_browse` + `omada_read`)
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Home Assistant MCP Wrapper",
5
- "version": "1.4.0",
5
+ "version": "1.5.0",
6
6
  "description": "REST endpoints that wrap MCP tools for Home Assistant integration. Raw JSON-RPC passthrough available at POST / for n8n compatibility."
7
7
  },
8
8
  "servers": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coffeerunhobby/mcp-ha-connect",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Smart home MCP server for Home Assistant plus Local AI integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,6 +19,7 @@
19
19
  "test:coverage": "vitest run --coverage --no-color --exclude 'tests/integration/**'",
20
20
  "test:integration": "node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/",
21
21
  "lint": "eslint src tests",
22
+ "check:sync": "node scripts/check-version-sync.mjs",
22
23
  "generate:jwt": "tsx --env-file=.env scripts/generate-jwt.ts"
23
24
  },
24
25
  "keywords": [
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * check-version-sync — fails if the version string has drifted across the files
4
+ * that must agree. CLAUDE.md calls this out explicitly: openapi.json's version
5
+ * "drifts easily" on release. This is the durable gate that makes the drift loud
6
+ * instead of silent.
7
+ *
8
+ * Sources of truth that MUST match:
9
+ * - package.json -> .version
10
+ * - src/version.ts -> export const VERSION = '...'
11
+ * - openapi.json -> .info.version
12
+ *
13
+ * Exit 0 when all agree; exit 1 with a diff when they don't. No dependencies,
14
+ * no build step — plain Node ESM so CI can run it with `node`.
15
+ */
16
+ import { readFileSync } from 'node:fs';
17
+ import { fileURLToPath } from 'node:url';
18
+ import { dirname, join } from 'node:path';
19
+
20
+ const root = join(dirname(fileURLToPath(import.meta.url)), '..');
21
+
22
+ /** Read a file, or throw a clear error naming the missing path. */
23
+ function read(rel) {
24
+ try {
25
+ return readFileSync(join(root, rel), 'utf8');
26
+ } catch (e) {
27
+ throw new Error(`Cannot read ${rel}: ${e.message}`);
28
+ }
29
+ }
30
+
31
+ const sources = [];
32
+
33
+ // package.json -> .version
34
+ {
35
+ const pkg = JSON.parse(read('package.json'));
36
+ sources.push({ file: 'package.json', version: pkg.version });
37
+ }
38
+
39
+ // src/version.ts -> export const VERSION = 'X.Y.Z'
40
+ {
41
+ const txt = read('src/version.ts');
42
+ const m = txt.match(/export\s+const\s+VERSION\s*=\s*['"]([^'"]+)['"]/);
43
+ sources.push({ file: 'src/version.ts', version: m ? m[1] : undefined });
44
+ }
45
+
46
+ // openapi.json -> .info.version
47
+ {
48
+ const spec = JSON.parse(read('openapi.json'));
49
+ sources.push({ file: 'openapi.json', version: spec?.info?.version });
50
+ }
51
+
52
+ const missing = sources.filter((s) => !s.version);
53
+ if (missing.length > 0) {
54
+ console.error('✖ version-sync: could not extract a version from:');
55
+ for (const m of missing) console.error(` - ${m.file}`);
56
+ process.exit(1);
57
+ }
58
+
59
+ const unique = [...new Set(sources.map((s) => s.version))];
60
+ if (unique.length > 1) {
61
+ console.error('✖ version-sync: version strings disagree across files:');
62
+ for (const s of sources) console.error(` ${s.version.padEnd(12)} ${s.file}`);
63
+ console.error('\n Fix: set all three to the same version before releasing.');
64
+ console.error(' (package.json, src/version.ts, openapi.json — see CLAUDE.md Release Process.)');
65
+ process.exit(1);
66
+ }
67
+
68
+ console.log(`✓ version-sync: all sources agree on ${unique[0]}`);
69
+ process.exit(0);
@@ -97,6 +97,27 @@ export function resolveUsageWindowSec(
97
97
  return { start, end };
98
98
  }
99
99
 
100
+ /**
101
+ * Build the optional query filters for the audit-log endpoints from caller params.
102
+ * `startTime`/`endTime` are epoch MILLISECONDS, forwarded as the controller's
103
+ * `filters.startTime`/`filters.endTime`; `searchKey` is fuzzy text. Absent params
104
+ * are omitted so a bare read returns the most recent page unfiltered. Exported for
105
+ * unit testing.
106
+ */
107
+ export function auditFilters(params: Record<string, string> | undefined): Record<string, unknown> {
108
+ const query: Record<string, unknown> = {};
109
+ if (params?.startTime !== undefined) {
110
+ query['filters.startTime'] = Number(params.startTime);
111
+ }
112
+ if (params?.endTime !== undefined) {
113
+ query['filters.endTime'] = Number(params.endTime);
114
+ }
115
+ if (params?.searchKey) {
116
+ query.searchKey = params.searchKey;
117
+ }
118
+ return query;
119
+ }
120
+
100
121
  /**
101
122
  * The Omada resource graph. Containers have no `fetch` (browse-only); collections
102
123
  * and leaves fetch data. Existing client methods back the well-trodden reads;
@@ -814,6 +835,228 @@ export const OMADA_RESOURCES: ResourceNode[] = [
814
835
  fetch: (c) => c.readResource({ pathTemplate: '/upgrade/overview/critical', siteScoped: false }),
815
836
  },
816
837
 
838
+ // ---- VPN (status & tunnels) -------------------------------------------
839
+ {
840
+ path: '/vpn',
841
+ kind: 'container',
842
+ permission: Q,
843
+ description: 'VPN status: site-to-site, client-to-site, WireGuard, and IPsec tunnel stats.',
844
+ },
845
+ {
846
+ path: '/vpn/site-to-site',
847
+ kind: 'collection',
848
+ permission: Q,
849
+ estimatedSize: 'small',
850
+ description: 'Site-to-site VPN tunnels. Pass id=<vpnId> to fetch a single tunnel.',
851
+ params: [{ name: 'id', required: false, description: 'VPN id to fetch a single site-to-site tunnel' }],
852
+ fetch: (c, a) =>
853
+ a.id
854
+ ? c.readResource({
855
+ pathTemplate: '/sites/{siteId}/vpn/site-to-site-vpns/{vpnId}',
856
+ siteId: a.siteId,
857
+ pathParams: { vpnId: a.id },
858
+ })
859
+ : c.readResource({ pathTemplate: '/sites/{siteId}/vpn/site-to-site-vpns', siteId: a.siteId }),
860
+ },
861
+ {
862
+ path: '/vpn/client-to-site',
863
+ kind: 'container',
864
+ permission: Q,
865
+ description: 'Client-to-site (remote-access) VPN: configured servers and connected clients.',
866
+ },
867
+ {
868
+ path: '/vpn/client-to-site/servers',
869
+ kind: 'collection',
870
+ permission: Q,
871
+ estimatedSize: 'small',
872
+ description: 'Configured client-to-site VPN servers (L2TP/OpenVPN/etc.).',
873
+ fetch: (c, a) =>
874
+ c.readResource({ pathTemplate: '/sites/{siteId}/vpn/client-to-site-vpn-servers', siteId: a.siteId }),
875
+ },
876
+ {
877
+ path: '/vpn/client-to-site/clients',
878
+ kind: 'collection',
879
+ permission: Q,
880
+ estimatedSize: 'small',
881
+ description: 'Currently connected client-to-site (remote-access) VPN clients.',
882
+ fetch: (c, a) =>
883
+ c.readResource({ pathTemplate: '/sites/{siteId}/vpn/client-to-site-vpn-clients', siteId: a.siteId }),
884
+ },
885
+ {
886
+ path: '/vpn/wireguard',
887
+ kind: 'collection',
888
+ permission: Q,
889
+ estimatedSize: 'small',
890
+ description: 'Configured WireGuard VPN interfaces on the gateway.',
891
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/vpn/wireguards', siteId: a.siteId }),
892
+ },
893
+ {
894
+ path: '/vpn/ipsec-stats',
895
+ kind: 'collection',
896
+ permission: Q,
897
+ paginated: true,
898
+ defaultPageSize: 50,
899
+ estimatedSize: 'small',
900
+ description: 'IPsec VPN tunnel statistics (paginated — use page/pageSize).',
901
+ fetch: (c, a) =>
902
+ c.readResource({
903
+ pathTemplate: '/sites/{siteId}/setting/vpn/stats/ipsec',
904
+ siteId: a.siteId,
905
+ paginated: true,
906
+ page: a.page,
907
+ pageSize: a.pageSize,
908
+ }),
909
+ },
910
+
911
+ // ---- Profiles (reusable network profiles) -----------------------------
912
+ {
913
+ path: '/profiles',
914
+ kind: 'container',
915
+ permission: Q,
916
+ description: 'Reusable network profiles: per-device Wi-Fi keys (PPSK) and time-range schedules.',
917
+ },
918
+ {
919
+ path: '/profiles/ppsk',
920
+ kind: 'collection',
921
+ permission: Q,
922
+ estimatedSize: 'small',
923
+ description:
924
+ 'PPSK (Private Pre-Shared Key) profiles — unique per-user/per-device Wi-Fi passwords on a shared SSID. ' +
925
+ 'REQUIRES params.type: 0 = PPSK without RADIUS, 1 = PPSK with RADIUS.',
926
+ params: [{ name: 'type', required: true, description: '0 = PPSK without RADIUS, 1 = PPSK with RADIUS' }],
927
+ fetch: (c, a) =>
928
+ c.readResource({
929
+ pathTemplate: '/sites/{siteId}/ppsk-profiles',
930
+ siteId: a.siteId,
931
+ query: { type: Number(a.params?.type) },
932
+ }),
933
+ },
934
+ {
935
+ path: '/profiles/time-range',
936
+ kind: 'collection',
937
+ permission: Q,
938
+ estimatedSize: 'small',
939
+ description: 'Time-range profiles — reusable schedules referenced by ACLs, Wi-Fi, and PoE rules.',
940
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/time-range-profiles', siteId: a.siteId }),
941
+ },
942
+
943
+ // ---- Schedules (PoE / port / firmware-upgrade) ------------------------
944
+ {
945
+ path: '/schedules',
946
+ kind: 'container',
947
+ permission: Q,
948
+ description:
949
+ 'Device schedules: PoE power, switch-port on/off, and firmware-upgrade windows. ' +
950
+ '(Reboot schedules are site-template-scoped enterprise config and are intentionally not exposed here.)',
951
+ },
952
+ {
953
+ path: '/schedules/poe',
954
+ kind: 'collection',
955
+ permission: Q,
956
+ estimatedSize: 'small',
957
+ description: 'PoE schedules — when switch ports deliver power to PoE devices.',
958
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/poe-schedules', siteId: a.siteId }),
959
+ },
960
+ {
961
+ path: '/schedules/port',
962
+ kind: 'collection',
963
+ permission: Q,
964
+ estimatedSize: 'small',
965
+ description: 'Port schedules — when switch ports are administratively up/down.',
966
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/port-schedules', siteId: a.siteId }),
967
+ },
968
+ {
969
+ path: '/schedules/upgrade',
970
+ kind: 'collection',
971
+ permission: Q,
972
+ estimatedSize: 'small',
973
+ description: 'Firmware-upgrade schedules — planned maintenance windows for device upgrades.',
974
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/upgrade-schedules', siteId: a.siteId }),
975
+ },
976
+
977
+ // ---- Backup (controller/site backup status) ---------------------------
978
+ {
979
+ path: '/backup',
980
+ kind: 'container',
981
+ permission: Q,
982
+ description: 'Site backup status: available backup files and the most recent backup result.',
983
+ },
984
+ {
985
+ path: '/backup/files',
986
+ kind: 'collection',
987
+ permission: Q,
988
+ estimatedSize: 'small',
989
+ description: 'List of available site backup files.',
990
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/maintenance/backup/files', siteId: a.siteId }),
991
+ },
992
+ {
993
+ path: '/backup/result',
994
+ kind: 'leaf',
995
+ permission: Q,
996
+ estimatedSize: 'small',
997
+ description: 'Result of the most recent site backup operation.',
998
+ fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/backup/result', siteId: a.siteId }),
999
+ },
1000
+
1001
+ // ---- Audit logs (administrative operation history) — ADMIN only -------
1002
+ {
1003
+ path: '/audit',
1004
+ kind: 'container',
1005
+ permission: A,
1006
+ description:
1007
+ 'Administrative audit logs — who did what on the controller. ADMIN only (reveals full admin activity).',
1008
+ },
1009
+ {
1010
+ path: '/audit/site',
1011
+ kind: 'collection',
1012
+ permission: A,
1013
+ paginated: true,
1014
+ defaultPageSize: 10,
1015
+ estimatedSize: 'large',
1016
+ description:
1017
+ 'Site-scoped administrative audit log (paginated, ADMIN). Optional params: startTime/endTime ' +
1018
+ '(epoch MILLISECONDS) to bound the window, and searchKey (fuzzy text).',
1019
+ params: [
1020
+ { name: 'startTime', required: false, description: 'Window start, epoch milliseconds' },
1021
+ { name: 'endTime', required: false, description: 'Window end, epoch milliseconds' },
1022
+ { name: 'searchKey', required: false, description: 'Fuzzy search on the log text' },
1023
+ ],
1024
+ fetch: (c, a) =>
1025
+ c.readResource({
1026
+ pathTemplate: '/sites/{siteId}/audit-logs',
1027
+ siteId: a.siteId,
1028
+ paginated: true,
1029
+ page: a.page,
1030
+ pageSize: a.pageSize,
1031
+ query: auditFilters(a.params),
1032
+ }),
1033
+ },
1034
+ {
1035
+ path: '/audit/global',
1036
+ kind: 'collection',
1037
+ permission: A,
1038
+ paginated: true,
1039
+ defaultPageSize: 10,
1040
+ estimatedSize: 'large',
1041
+ description:
1042
+ 'Controller-wide administrative audit log across all sites (paginated, ADMIN). Optional params: ' +
1043
+ 'startTime/endTime (epoch MILLISECONDS) and searchKey (fuzzy text).',
1044
+ params: [
1045
+ { name: 'startTime', required: false, description: 'Window start, epoch milliseconds' },
1046
+ { name: 'endTime', required: false, description: 'Window end, epoch milliseconds' },
1047
+ { name: 'searchKey', required: false, description: 'Fuzzy search on the log text' },
1048
+ ],
1049
+ fetch: (c, a) =>
1050
+ c.readResource({
1051
+ pathTemplate: '/audit-logs',
1052
+ siteScoped: false,
1053
+ paginated: true,
1054
+ page: a.page,
1055
+ pageSize: a.pageSize,
1056
+ query: auditFilters(a.params),
1057
+ }),
1058
+ },
1059
+
817
1060
  // ---- Security (IDS/IPS) — ADMIN only -----------------------------------
818
1061
  {
819
1062
  path: '/security',
package/src/version.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Package version - hardcoded at build time for reliability
3
3
  * Keep in sync with package.json version
4
4
  */
5
- export const VERSION = '1.4.0';
5
+ export const VERSION = '1.5.0';
@@ -404,8 +404,12 @@ describe('HTTP Server', () => {
404
404
  const match = timing.match(/total;dur=(\d+)/);
405
405
  const duration = match ? parseInt(match[1], 10) : 0;
406
406
 
407
- // Should be at least 10ms (our delay)
408
- expect(duration).toBeGreaterThanOrEqual(10);
407
+ // Real elapsed time was measured (not 0/instant). NOT asserted >= 10:
408
+ // setTimeout(10) may fire a hair under 10ms and line 391 Math.round()s the
409
+ // result, so a legitimate ~9.4ms run rounds to 9. That jitter is env-specific
410
+ // (it tripped Node 22 in CI but not Node 20). A 5ms floor proves the timer was
411
+ // captured without being brittle to sub-millisecond timer undershoot + rounding.
412
+ expect(duration).toBeGreaterThanOrEqual(5);
409
413
  // But not too long (sanity check)
410
414
  expect(duration).toBeLessThan(1000);
411
415
  });
@@ -5,6 +5,7 @@
5
5
  import { describe, it, expect } from 'vitest';
6
6
  import {
7
7
  OMADA_RESOURCES,
8
+ auditFilters,
8
9
  childrenOf,
9
10
  getResourceNode,
10
11
  normalizePath,
@@ -149,12 +150,12 @@ describe('Omada namespace - manifest invariants', () => {
149
150
  }
150
151
  });
151
152
 
152
- it('reads are QUERY except the ADMIN-gated security subtree', () => {
153
+ it('reads are QUERY except the ADMIN-gated security and audit subtrees', () => {
153
154
  for (const node of OMADA_RESOURCES) {
154
155
  if (!node.fetch) {
155
156
  continue;
156
157
  }
157
- if (node.path.startsWith('/security')) {
158
+ if (node.path.startsWith('/security') || node.path.startsWith('/audit')) {
158
159
  expect(node.permission).toBe(Permission.ADMIN);
159
160
  } else {
160
161
  expect((node.permission & Permission.QUERY) === Permission.QUERY).toBe(true);
@@ -162,8 +163,9 @@ describe('Omada namespace - manifest invariants', () => {
162
163
  }
163
164
  });
164
165
 
165
- it('the /security container is also ADMIN-gated', () => {
166
+ it('the /security and /audit containers are ADMIN-gated', () => {
166
167
  expect(getResourceNode('/security')?.permission).toBe(Permission.ADMIN);
168
+ expect(getResourceNode('/audit')?.permission).toBe(Permission.ADMIN);
167
169
  });
168
170
 
169
171
  it('paginated nodes declare a default page size', () => {
@@ -381,3 +383,101 @@ describe('Omada namespace - Tier-3 curated node wiring', () => {
381
383
  }
382
384
  });
383
385
  });
386
+
387
+ describe('Omada namespace - Tier-4 node wiring (VPN / profiles / schedules / backup / audit)', () => {
388
+ it('exposes the Tier-4 subtrees at the root', () => {
389
+ const paths = childrenOf('/').map((n) => n.path);
390
+ expect(paths).toEqual(expect.arrayContaining(['/vpn', '/profiles', '/schedules', '/backup', '/audit']));
391
+ });
392
+
393
+ it('Tier-4 grouping containers are browse-only with the expected children', () => {
394
+ const groups: Array<[string, string[]]> = [
395
+ ['/vpn', ['/vpn/site-to-site', '/vpn/client-to-site', '/vpn/wireguard', '/vpn/ipsec-stats']],
396
+ ['/vpn/client-to-site', ['/vpn/client-to-site/servers', '/vpn/client-to-site/clients']],
397
+ ['/profiles', ['/profiles/ppsk', '/profiles/time-range']],
398
+ ['/schedules', ['/schedules/poe', '/schedules/port', '/schedules/upgrade']],
399
+ ['/backup', ['/backup/files', '/backup/result']],
400
+ ['/audit', ['/audit/site', '/audit/global']],
401
+ ];
402
+ for (const [parent, kids] of groups) {
403
+ expect(getResourceNode(parent)?.kind).toBe('container');
404
+ expect(getResourceNode(parent)?.fetch).toBeUndefined();
405
+ expect(childrenOf(parent).map((n) => n.path)).toEqual(expect.arrayContaining(kids));
406
+ }
407
+ });
408
+
409
+ it('simple Tier-4 reads map to the correct controller path with no pagination', async () => {
410
+ const SIMPLE: Array<[string, string]> = [
411
+ ['/vpn/site-to-site', '/sites/{siteId}/vpn/site-to-site-vpns'],
412
+ ['/vpn/client-to-site/servers', '/sites/{siteId}/vpn/client-to-site-vpn-servers'],
413
+ ['/vpn/client-to-site/clients', '/sites/{siteId}/vpn/client-to-site-vpn-clients'],
414
+ ['/vpn/wireguard', '/sites/{siteId}/vpn/wireguards'],
415
+ ['/profiles/time-range', '/sites/{siteId}/time-range-profiles'],
416
+ ['/schedules/poe', '/sites/{siteId}/poe-schedules'],
417
+ ['/schedules/port', '/sites/{siteId}/port-schedules'],
418
+ ['/schedules/upgrade', '/sites/{siteId}/upgrade-schedules'],
419
+ ['/backup/files', '/sites/{siteId}/maintenance/backup/files'],
420
+ ['/backup/result', '/sites/{siteId}/backup/result'],
421
+ ];
422
+ for (const [path, tmpl] of SIMPLE) {
423
+ const opts = await fetchOpts(path);
424
+ expect(opts.pathTemplate).toBe(tmpl);
425
+ expect(opts.paginated).toBeFalsy();
426
+ }
427
+ });
428
+
429
+ it('/vpn/site-to-site fetches a single tunnel by id', async () => {
430
+ const opts = await fetchOpts('/vpn/site-to-site', { id: 'vpn-123' });
431
+ expect(opts.pathTemplate).toBe('/sites/{siteId}/vpn/site-to-site-vpns/{vpnId}');
432
+ expect((opts.pathParams as Record<string, string>).vpnId).toBe('vpn-123');
433
+ });
434
+
435
+ it('/vpn/ipsec-stats is a paginated single-page read', async () => {
436
+ const opts = await fetchOpts('/vpn/ipsec-stats', { page: 2, pageSize: 25 });
437
+ expect(opts.pathTemplate).toBe('/sites/{siteId}/setting/vpn/stats/ipsec');
438
+ expect(opts.paginated).toBe(true);
439
+ expect(opts.page).toBe(2);
440
+ expect(opts.pageSize).toBe(25);
441
+ });
442
+
443
+ it('/profiles/ppsk forwards the required type as a query param', async () => {
444
+ const opts = await fetchOpts('/profiles/ppsk', { params: { type: '1' } });
445
+ expect(opts.pathTemplate).toBe('/sites/{siteId}/ppsk-profiles');
446
+ expect((opts.query as Record<string, unknown>).type).toBe(1);
447
+ });
448
+
449
+ it('/audit/site is a site-scoped paginated ADMIN read', async () => {
450
+ const opts = await fetchOpts('/audit/site', { page: 3, pageSize: 20 });
451
+ expect(opts.pathTemplate).toBe('/sites/{siteId}/audit-logs');
452
+ expect(opts.paginated).toBe(true);
453
+ expect(opts.page).toBe(3);
454
+ expect(opts.pageSize).toBe(20);
455
+ // No filters supplied → empty query object.
456
+ expect(opts.query).toEqual({});
457
+ });
458
+
459
+ it('/audit/global is NOT site-scoped and reads the controller-wide log', async () => {
460
+ const opts = await fetchOpts('/audit/global');
461
+ expect(opts.pathTemplate).toBe('/audit-logs');
462
+ expect(opts.siteScoped).toBe(false);
463
+ expect(opts.paginated).toBe(true);
464
+ });
465
+ });
466
+
467
+ describe('Omada namespace - auditFilters helper', () => {
468
+ it('returns an empty object when no params are given', () => {
469
+ expect(auditFilters(undefined)).toEqual({});
470
+ expect(auditFilters({})).toEqual({});
471
+ });
472
+
473
+ it('maps startTime/endTime to numeric filters.* keys', () => {
474
+ expect(auditFilters({ startTime: '1700000000000', endTime: '1700003600000' })).toEqual({
475
+ 'filters.startTime': 1700000000000,
476
+ 'filters.endTime': 1700003600000,
477
+ });
478
+ });
479
+
480
+ it('passes searchKey through and omits absent bounds', () => {
481
+ expect(auditFilters({ searchKey: 'login' })).toEqual({ searchKey: 'login' });
482
+ });
483
+ });
package/vitest.config.ts CHANGED
@@ -21,6 +21,18 @@ export default defineConfig({
21
21
  '**/*.test.ts',
22
22
  '**/*.config.ts',
23
23
  ],
24
+ // Regression FLOOR, not an aspiration. Set just below the measured numbers
25
+ // (stmts 68.7 / branch 58.3 / funcs 75.4 / lines 69.3 as of v1.4.0) so the
26
+ // gate catches a DROP in coverage without forcing busywork tests today.
27
+ // Global (not per-file) by design — per-file 90% gates punish trivial files
28
+ // and breed assertion-free stubs. Ratchet these UP as real coverage grows;
29
+ // never lower them to make a red build pass.
30
+ thresholds: {
31
+ statements: 68,
32
+ branches: 57,
33
+ functions: 74,
34
+ lines: 68,
35
+ },
24
36
  },
25
37
  },
26
38
  });