JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"camera",
"doorbell",
"hksv",
"homebridge",
"homebridge-plugin",
"nest",
"sensor",
"smoke",
"temperature",
"thermostat",
"floodlight",
"homekit",
"google",
"google-home",
"lock",
"hotwater",
"weather"
],
"is_fork": false,
"size_kb": 3057,
"has_wiki": false,
"homepage": "https://github.com/n0rt0nthec4t/homebridge-nest-accfactory",
"languages": {
"JavaScript": 892643
},
"pushed_at": "2026-07-20T03:42:44Z",
"created_at": "2024-08-15T08:56:42Z",
"owner_type": "User",
"updated_at": "2026-07-20T03:34:51Z",
"description": "Homebridge support for Nest/Google devices including HomeKit Secure Video (HKSV) support for doorbells and cameras",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "JavaScript",
"significant_languages": [
"JavaScript"
]
},
"owner": {
"blog": null,
"name": "mark",
"type": "User",
"login": "n0rt0nthec4t",
"company": null,
"location": "Canberra, Australia",
"followers": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/19759130?v=4",
"created_at": "2016-06-05T09:43:09Z",
"is_verified": null,
"public_repos": 18,
"account_age_days": 3702
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.4.3-beta.2",
"kind": "prerelease",
"published_at": "2026-07-20T03:42:45Z"
},
{
"tag": "v0.4.3-beta.1",
"kind": "prerelease",
"published_at": "2026-05-27T23:08:05Z"
},
{
"tag": "v0.4.3-alpha.7",
"kind": "prerelease",
"published_at": "2026-05-20T08:33:01Z"
},
{
"tag": "v0.4.3-alpha.6",
"kind": "prerelease",
"published_at": "2026-05-19T00:16:15Z"
},
{
"tag": "v0.4.3-alpha.5",
"kind": "prerelease",
"published_at": "2026-05-16T03:47:06Z"
},
{
"tag": "v0.4.3-alpha.4",
"kind": "prerelease",
"published_at": "2026-05-15T02:39:37Z"
},
{
"tag": "v0.4.3-alpha.3",
"kind": "prerelease",
"published_at": "2026-05-14T03:01:30Z"
},
{
"tag": "v0.4.3-alpha.2",
"kind": "prerelease",
"published_at": "2026-05-13T01:11:58Z"
},
{
"tag": "v0.4.3-alpha.1",
"kind": "prerelease",
"published_at": "2026-05-13T01:03:18Z"
},
{
"tag": "v0.4.2-beta.4",
"kind": "prerelease",
"published_at": "2026-05-11T00:17:15Z"
},
{
"tag": "v0.4.2-beta.3",
"kind": "prerelease",
"published_at": "2026-05-09T23:36:12Z"
},
{
"tag": "v0.4.2-beta.2",
"kind": "prerelease",
"published_at": "2026-05-09T23:01:49Z"
},
{
"tag": "v0.4.2-beta.1",
"kind": "prerelease",
"published_at": "2026-05-08T22:42:12Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2026-05-07T00:35:06Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-04-30T06:26:09Z"
},
{
"tag": "v0.4.0-beta.15",
"kind": "prerelease",
"published_at": "2026-04-24T03:25:03Z"
},
{
"tag": "v0.4.0-beta.14",
"kind": "prerelease",
"published_at": "2026-04-22T02:17:35Z"
},
{
"tag": "v0.4.0-beta.13",
"kind": "prerelease",
"published_at": "2026-04-21T06:05:50Z"
},
{
"tag": "v0.4.0-alpha.24",
"kind": "prerelease",
"published_at": "2026-04-18T09:26:50Z"
},
{
"tag": "v0.4.0-alpha.23",
"kind": "prerelease",
"published_at": "2026-04-16T04:47:46Z"
},
{
"tag": "v0.4.0-alpha.22",
"kind": "prerelease",
"published_at": "2026-04-13T11:23:43Z"
},
{
"tag": "v0.4.0-beta.12",
"kind": "prerelease",
"published_at": "2026-04-08T23:46:34Z"
},
{
"tag": "v0.4.0-beta.11",
"kind": "prerelease",
"published_at": "2026-04-02T06:10:20Z"
},
{
"tag": "v0.4.0-beta.10",
"kind": "prerelease",
"published_at": "2026-03-31T23:25:45Z"
},
{
"tag": "v0.4.0-beta.9",
"kind": "prerelease",
"published_at": "2026-03-31T23:00:08Z"
},
{
"tag": "v0.4.0-beta.7",
"kind": "prerelease",
"published_at": "2026-03-30T02:34:38Z"
},
{
"tag": "v0.4.0-beta.6",
"kind": "prerelease",
"published_at": "2026-03-28T04:46:55Z"
},
{
"tag": "v0.4.0-beta.5",
"kind": "prerelease",
"published_at": "2026-03-25T05:04:19Z"
},
{
"tag": "v0.4.0-beta.4",
"kind": "prerelease",
"published_at": "2026-03-25T04:44:01Z"
},
{
"tag": "v0.4.0-beta.3",
"kind": "prerelease",
"published_at": "2026-03-21T02:23:33Z"
},
{
"tag": "v0.4.0-beta.2",
"kind": "prerelease",
"published_at": "2026-03-19T22:14:37Z"
},
{
"tag": "0.3.9",
"kind": "patch",
"published_at": "2026-02-18T05:04:57Z"
},
{
"tag": "0.3.8",
"kind": "patch",
"published_at": "2026-02-06T05:52:34Z"
},
{
"tag": "0.3.7",
"kind": "patch",
"published_at": "2025-12-18T21:06:01Z"
},
{
"tag": "0.3.6",
"kind": "patch",
"published_at": "2025-11-30T22:26:46Z"
},
{
"tag": "0.3.5",
"kind": "patch",
"published_at": "2025-11-20T23:49:10Z"
},
{
"tag": "0.3.4",
"kind": "patch",
"published_at": "2025-10-17T02:50:46Z"
},
{
"tag": "0.3.3",
"kind": "patch",
"published_at": "2025-08-22T22:26:26Z"
},
{
"tag": "0.3.2",
"kind": "patch",
"published_at": "2025-08-08T21:31:17Z"
},
{
"tag": "0.3.1",
"kind": "patch",
"published_at": "2025-06-16T02:20:48Z"
},
{
"tag": "0.3.0",
"kind": "minor",
"published_at": "2025-06-13T21:53:12Z"
},
{
"tag": "0.2.11",
"kind": "patch",
"published_at": "2025-04-17T05:14:00Z"
},
{
"tag": "0.2.9",
"kind": "patch",
"published_at": "2025-03-24T01:55:50Z"
},
{
"tag": "0.2.5",
"kind": "patch",
"published_at": "2024-12-10T04:23:27Z"
},
{
"tag": "0.2.4",
"kind": "patch",
"published_at": "2024-12-09T20:59:17Z"
},
{
"tag": "0.2.3",
"kind": "patch",
"published_at": "2024-12-05T23:50:11Z"
},
{
"tag": "0.2.2",
"kind": "patch",
"published_at": "2024-10-05T04:01:41Z"
},
{
"tag": "0.2.1",
"kind": "patch",
"published_at": "2024-10-04T21:55:52Z"
},
{
"tag": "0.2.0",
"kind": "minor",
"published_at": "2024-10-04T05:20:15Z"
},
{
"tag": "0.0.6",
"kind": "patch",
"published_at": "2024-09-13T22:41:09Z"
},
{
"tag": "0.0.5",
"kind": "patch",
"published_at": "2024-09-13T03:46:06Z"
},
{
"tag": "0.0.4",
"kind": "patch",
"published_at": "2024-09-07T09:30:32Z"
}
],
"recent_commits": [
{
"oid": "5ac52fba6ae05b6befe7c435c4d1b332a01e33b8",
"body": null,
"is_bot": false,
"headline": "Updated dependancies",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-07-20T03:34:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "297aa1c63414061bd78956568e89a1446dad7fc1",
"body": null,
"is_bot": false,
"headline": "0.4.3-beta.1 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-27T23:04:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b599caac5d18e4aa316537c8777b23eea3b2b694",
"body": null,
"is_bot": false,
"headline": "0.4.3-alpha.7 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-20T08:29:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d849370c759772eab2ef2757cbb7b139e0505cf8",
"body": null,
"is_bot": false,
"headline": "0.4.3-alpha.6 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-19T00:13:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c5151ddec1e980e27c24e5da8fe410d842a7ac4",
"body": null,
"is_bot": false,
"headline": "0.4.3-alpha.5 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-16T03:44:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf165daed2dc3ba180d1575c64844827f38d05c0",
"body": null,
"is_bot": false,
"headline": "0.4.3-alpha.4 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-15T02:37:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aba561b7649524a3b2f76fea9c248a41a45454a2",
"body": null,
"is_bot": false,
"headline": "0.4.3-alpha.3 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-14T02:59:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce8cdf69659689cd9f75cc3bbee38cd88cda104a",
"body": null,
"is_bot": false,
"headline": "0.4.3-alpha.2 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-13T01:09:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8db4a1d67318281bad96379ca7ea17ed377dcf13",
"body": null,
"is_bot": false,
"headline": "0.4.3-alpha.1 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-13T01:00:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d9087dc8e61db7924db224d3ce50b861c1d53b6",
"body": null,
"is_bot": false,
"headline": "0.4.2-beta.4 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-11T00:15:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50f2caa3966f1476e1ded16d002359b28f468af9",
"body": null,
"is_bot": false,
"headline": "Fix UI-X config validation for placeholder rows",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-10T23:24:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6869c451f31fcb700b976e78288e5ea7c40a5db5",
"body": null,
"is_bot": false,
"headline": "0.4.2-beta.3 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-09T23:33:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2891fd2af9784fea8c846904d61cc2460126d8f2",
"body": null,
"is_bot": false,
"headline": "0.4.2-beta.2 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-09T22:59:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9ac1967aa997f519c1dfe73c8f1ed26e973e03d",
"body": null,
"is_bot": false,
"headline": "0.4.2-beta.1 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-08T22:38:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4fcb83fcc04e90afc093485aee5f39acb1976d0",
"body": null,
"is_bot": false,
"headline": "Fix Nest x Yale lock state handling and logging",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-08T21:09:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "541b5e1a12d7d5c54017f145345bd0dd4794d178",
"body": null,
"is_bot": false,
"headline": "0.4.1 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-05-07T00:33:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4492b490de84e3c2d571640e35fb646d3ecd00b9",
"body": null,
"is_bot": false,
"headline": "Updated changelog to remove beta status",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-30T06:59:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c65e47e0386d05a7c57bb01767bf25f84b51f148",
"body": null,
"is_bot": false,
"headline": "0.4.0 release source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-30T06:19:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3cc346da6cff2aa1d8ecc35cf93e68afeec5bb52",
"body": null,
"is_bot": false,
"headline": "Updated HomeKitDevice module",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-26T00:59:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f19449e01b68e4febec6d927a06fae22a7ce04c3",
"body": null,
"is_bot": false,
"headline": "Version bump to 0.4.0-beta.15",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-24T03:22:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7674072e5b8f6dbc1e4b8233b27ce59a263d7cb",
"body": "Co-authored-by: Copilot <copilot@github.com>",
"is_bot": false,
"headline": "0.4.0-beta.15 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-24T03:01:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c560ba5bf5db5755382946606b38b9b1103a7b43",
"body": null,
"is_bot": false,
"headline": "version bump",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-22T02:14:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "825c18a81e2c2374f2d8bc1dd7cc2f95a716b4f4",
"body": null,
"is_bot": false,
"headline": "0.4.0-beta.14 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-22T02:10:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfbf27ed3dc20e5547d3524d829e4aed27074535",
"body": null,
"is_bot": false,
"headline": "0.4.0-beta.13 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-21T06:03:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b26b6363dbb1949cf4d0fe2ac3cc485a32517421",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.24 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-18T09:23:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7e931222a90a43cacfe9ce2584d375a63383a9e",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.23 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-16T04:45:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24966e29700e570baed5322a29c7d472695114c6",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.22 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-13T11:21:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb75c13f562b8d034f9c946ddf53178569c23511",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.22 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-13T11:20:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "892b1fed0c816ad87093c62b121f980289763159",
"body": null,
"is_bot": false,
"headline": "Updated publish workflow",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-09T00:04:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2de7e2a3ff1e56a340837742ba246692f83f654e",
"body": null,
"is_bot": false,
"headline": "Updated notes",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-08T23:44:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05194a105b1e88936c4a3b573df44811997cf126",
"body": null,
"is_bot": false,
"headline": "Updated package.json",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-08T23:42:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3957a49c6bae5fb4cfdcd013d5668549905b9095",
"body": null,
"is_bot": false,
"headline": "Updated package.json",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-08T23:42:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90dce88273809183fbf1d6adcabdcc1944ebbe08",
"body": null,
"is_bot": false,
"headline": "Updated package-lock",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-08T23:37:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "78d31d80f8d2e24c061945f4183891cd8902e8c9",
"body": null,
"is_bot": false,
"headline": "0.4.0-beta.12 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-08T23:34:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9351471212f099f998fa90e86eefb2c4b7ebfd4d",
"body": null,
"is_bot": false,
"headline": "Stream/Media module alignments",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-06T05:27:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10e2117ecab09626436c07ed668b4ed13f17e731",
"body": null,
"is_bot": false,
"headline": "Changes to nexustlak handling and ffmpeg startup for live streams",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-04T23:25:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "97909595a8ad2d6b05d4cd318075aea688058121",
"body": null,
"is_bot": false,
"headline": "Changes to recording prebuffer ouput",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-02T20:51:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fcbed5f3923d261c86cf109ba9fd8065368a402",
"body": "- Refactored streaming pipeline to use frame-based video/audio handling across WebRTC and NexusTalk\n- Updated Streamer to operate as a unified media output layer\n- Improved WebRTC RTP handling with basic jitter buffering for smoother playback\n- Fixed HomeKit talkback audio reliability issues\n- General stability and performance improvements for live streaming and HKSV",
"is_bot": false,
"headline": "0.4.0-beta.11 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-02T06:03:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27cf81ff9b8e5820f953c601d5a45658eedb87be",
"body": null,
"is_bot": false,
"headline": "Updated statics per output",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-04-01T01:41:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "521848de287a1fcb7865945cdbde61c5ddeecc74",
"body": null,
"is_bot": false,
"headline": "Late fix for uuid mismatch",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-31T23:23:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "814c668edf3243e0177ed0179e0d8b359fe6e415",
"body": "- Fixed memory leak introduced in `0.4.0-beta.8` affecting long-running camera streams\n- Standardised module header documentation across the codebase",
"is_bot": false,
"headline": "0.4.0-beta.9",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-31T22:55:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87da28fa5a210474975342d960477a914ac67608",
"body": "- Refactored NexusTalk and Streamer to use frame-based output instead of packet-based handling\n- Improved streaming performance and stability, especially under load (multiple active cameras)\n- Optimised output scheduling to skip inactive streamers and reduce CPU usage\n- General efficiency improvements across streaming pipeline",
"is_bot": false,
"headline": "0.4.0-beta.8 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-31T00:17:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c36acfa6059bcc9a04dbc28362fc224d02297fd",
"body": "•\tAdded support dump statistics when live streams end for improved troubleshooting\n•\tIntroduced detailed streamer metrics (startup timing, packets, drops, outputs, last activity)\n•\tRefined video gating for more reliable keyframe handling and stream startup\n•\tImproved source state tracking and reconnect visibility\n•\tGeneral streaming pipeline refinements and cleanup",
"is_bot": false,
"headline": "0.4.0-beta.7 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-30T02:29:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "429563fc434202724d0a85d3dfda2c9175a56a76",
"body": "Main changes are around the video/audio pipelines in webrtc.js and streamer.js to improve stability and recovery from packet loss, especially for video streams. Also added some logging and cleanup around talkback stream handling.",
"is_bot": false,
"headline": "0.4.0-beta.6 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-28T04:43:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af2bda861c17df532b01f2fd389f95f779af9e4b",
"body": null,
"is_bot": false,
"headline": "0.4.0-beta.5 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-25T05:02:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ac469574fb693980c2a3436c07e77613f438ab6",
"body": null,
"is_bot": false,
"headline": "0.4.0-beat.4 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-25T04:40:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2909d01013b143e7cef9d28fab02849929b6fd1a",
"body": null,
"is_bot": false,
"headline": "Update to some debugging messages",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-24T06:31:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a8454fbb6cb899e3f887302ae9a0f90435563aeb",
"body": null,
"is_bot": false,
"headline": "Added option to exclude accouts",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-24T06:03:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e91d74a8d7e76bb7162d179bb35093f40c2a74b8",
"body": null,
"is_bot": false,
"headline": "Minor debugging output changes",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-22T00:26:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a16d5119debcb702f969e96faa409d5606d8d9da",
"body": "Added contact links for questions and help in the issue template.",
"is_bot": false,
"headline": "Add contact links to ISSUE_TEMPLATE",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T10:26:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "270c89b664dad831717716a714e7debf660e5092",
"body": "This template guides users to provide detailed feature requests, including problems, proposed solutions, and alternatives considered.",
"is_bot": false,
"headline": "Add feature request issue template",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T10:20:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72a0c9a6d44fcebb81432ff10894b13dc5094059",
"body": null,
"is_bot": false,
"headline": "Delete .github/ISSUE_TEMPLATE/feature_request",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T10:19:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6a5bd637bfd809212ac581811949ea622d9ccf4e",
"body": "This template guides users to provide detailed feature requests and enhancements.",
"is_bot": false,
"headline": "Add feature request issue template",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T10:18:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e9283528de2ffdffa8afc9764df2c5da871a6e46",
"body": null,
"is_bot": false,
"headline": "Update bug report template to use quotes for options",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T10:14:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "718ba16b17e7b82eea285928cfb8baf796f3fa8e",
"body": null,
"is_bot": false,
"headline": "Updates to workflows",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T10:09:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1fab152ac98f6901144b341706a6c82998d72274",
"body": null,
"is_bot": false,
"headline": "0.4.0-beta.3",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T02:21:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c77a28baa421e15768bec20f610b7eee2eac242",
"body": null,
"is_bot": false,
"headline": "Added startup system information for debugging/support",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T02:09:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "741d43c54db28c9cb02e180ebfdbbbaad12a62ae",
"body": "…ndling",
"is_bot": false,
"headline": "Update streamer pipeline with shared scheduler and improved output ha…",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-21T01:49:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e859678e841ca87878c9f678ce1789d89b7b9c10",
"body": null,
"is_bot": false,
"headline": "Moved weather/elevation config to per-home settings",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-20T21:04:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71c4d0c3e6d5554d3441704ab2e9e6eee8a5a421",
"body": null,
"is_bot": false,
"headline": "Updated HomeKit modules",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-20T06:09:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ebb060b23f5dbe744187ff9320d2392e0f4dfba",
"body": null,
"is_bot": false,
"headline": "Fix for EveHome history not updating for Nest Protect",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-20T03:22:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4cd828a2073050afa6010755ab66a89797b14cef",
"body": null,
"is_bot": false,
"headline": "Updated publish workflow",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-19T22:20:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4a56e9bbd64ece0350ca4e3a4c7d61408f95fef",
"body": null,
"is_bot": false,
"headline": "0.4.0-beta.2",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-19T22:11:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27463cb9e788f3bd45487020d37072e30a98569e",
"body": null,
"is_bot": false,
"headline": "Updated publish workflow",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-19T04:53:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e59a466f96917c932dded1061b9586abf78dd6b9",
"body": null,
"is_bot": false,
"headline": "0.4.0-beta.1",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-19T04:45:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7dc5d28601a7660016c2c83dca890c1c1e6bbd12",
"body": null,
"is_bot": false,
"headline": "Fix badge link for npm alpha version",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-19T04:40:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f61d183078d94cff108338b8c91c02c935cad018",
"body": null,
"is_bot": false,
"headline": "Updated README with latest/beta/alpha badges",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-19T04:39:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f5e2813da13818085ad2ac498cdea7128153682",
"body": null,
"is_bot": false,
"headline": "Updated GUI configuration options",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-19T04:29:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "feccc65a417f6200c3f173d42082b4345b05ce10",
"body": null,
"is_bot": false,
"headline": "Added option to enable/disable motion event logging",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T10:19:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd5683b39f446244fb778db78c6d6b2df7e318d7",
"body": null,
"is_bot": false,
"headline": "Add alpha version badge to README",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T03:37:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ed1b82e4ca52d57717e3b8086eb0743519ffba9",
"body": null,
"is_bot": false,
"headline": "Removed support for nodejs 20",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T03:01:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5aad1e18108021e7a4f1d21ec911c870fff8faae",
"body": null,
"is_bot": false,
"headline": "Updated publish workflow action",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T01:46:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6abb77430f10a1856a0db45999b309542345c83",
"body": null,
"is_bot": false,
"headline": "Updated CHANGELOG",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T01:34:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2c35492a8ad0973f691494aca311cd5eba49cf5",
"body": null,
"is_bot": false,
"headline": "Clean script fix for windows publish",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T01:22:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "299e4da85fc162fd787549050eebe45b5d6d811e",
"body": null,
"is_bot": false,
"headline": "Updated package.josn scripts for linting and prepublish formatting",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T01:16:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f78e7b411efce728beb5e50b53e90ae97aa9b7a",
"body": null,
"is_bot": false,
"headline": "Updated publish workflow action",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T01:16:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c612b2ce37fd42a54eaf6ff35e0ae35c78251bf7",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.18 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T01:07:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "114f4832613b4b25751ab8a0983cd7f5a185199d",
"body": null,
"is_bot": false,
"headline": "Updated publish workflow action",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-18T01:06:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aff5416a67cb8a9ad024b82c3a63180f7b5989a7",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.17 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-17T03:41:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea66cd1d70b52b7d5f63620448e75a3e79268e2c",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.15 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-15T22:15:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb4634130bb4d255252a493fbe2e52f55e04b145",
"body": null,
"is_bot": false,
"headline": "Updated README",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-15T02:53:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d13429eb2d09d3d0fa235bbe9b9f4511b8e64ca7",
"body": null,
"is_bot": false,
"headline": "Update README.md",
"author_name": "mark",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-15T02:53:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4fda888cc7be4327f3b44f629f6a21b1bdc5c47a",
"body": null,
"is_bot": false,
"headline": "Update HomeKitDevice and HomeKitHistory modules",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-15T02:52:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af6ca20ca50ac70c8b259664d237888a70e6177f",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.14 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-15T00:56:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28466bb33f1133d1c67031fd6a190f3845ebf9ca",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.11 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-13T20:12:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e71b36632c5af6ab01852c5a5adce76ca316609e",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.10 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-12T05:03:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d98e8ac14164fe2927ddf4d6e75f6951d02847d9",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.9 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-11T22:24:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6c802172bcf4a8c841f4c48ba515db379038a5d",
"body": null,
"is_bot": false,
"headline": "Updated README",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-11T00:27:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "365a0ff587ea4bc7b8c311e3df76a7952b8dca0d",
"body": null,
"is_bot": false,
"headline": "Updated HomeKit device module",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-11T00:04:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d673a7f69c2e4d26bd18e3cf3857b7e6827eb48",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.8 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-11T00:03:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d88b43439808b5474fb6dd691425b36dcb3cf69d",
"body": null,
"is_bot": false,
"headline": "HomeKitDevice update",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-09T22:42:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c096457abd239948103e5aa15a1f7e906c7269c",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.7 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-09T22:41:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "52279f416d0ee73fdb23de92eb250fb4ac1bc398",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.5 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-07T05:58:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e5d5a4c3a42136c834778a850afac9d70e80d10",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.4 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-05T06:37:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8aa0877c3a9cdec33fdb7ec2b569f7180470a576",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.3 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-04T22:40:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa05b6cbeb38b91f4213ac58aea88b73c348c413",
"body": null,
"is_bot": false,
"headline": "0.4.0-alpha.1 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-04T02:08:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0ca6d1d5d23e68fcbdb17913bfaab6e8e34c1d8",
"body": null,
"is_bot": false,
"headline": "Updated README for correctly enabling recording for HKSV",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-02T21:35:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be8b11178407b708f550f26c4e5fe8ae793e49ec",
"body": null,
"is_bot": false,
"headline": "0.3.10-alpha.1 source files",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-03-02T01:15:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "764b840de620a4ef3d95cb303f392c339c6b4df3",
"body": null,
"is_bot": false,
"headline": "updated publish workflow",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-02-18T05:03:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b8e4ed2452d6e5c1a06d523d77c27d7399a718f",
"body": null,
"is_bot": false,
"headline": "updated publish workflow",
"author_name": "Mark Hulskamp",
"author_login": "n0rt0nthec4t",
"committed_at": "2026-02-18T04:56:50Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 52,
"commits_last_year": 170,
"latest_release_at": "2026-07-20T03:42:45Z",
"latest_release_tag": "v0.4.3-beta.2",
"releases_from_tags": false,
"days_since_last_push": 6,
"active_weeks_last_year": 35,
"days_since_latest_release": 6,
"mean_days_between_releases": 7.8
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "homebridge-nest-accfactory",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"apple home",
"homekit",
"homebridge-plugin",
"homebridge",
"hksv",
"homekit secure video",
"nest",
"google",
"doorbell",
"camera",
"thermostat",
"temperature",
"smoke",
"sensor",
"floodlight",
"hotwater",
"lock"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/homebridge-nest-accfactory",
"is_deprecated": false,
"latest_version": "0.4.1",
"repository_url": "https://github.com/n0rt0nthec4t/homebridge-nest-accfactory",
"versions_count": 48,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2149,
"first_published_at": "2024-08-28T08:24:08.962000Z",
"latest_published_at": "2026-05-07T00:36:58.063000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 80
}
]
},
"popularity": {
"forks": 5,
"stars": 48,
"watchers": 5,
"fork_history": {
"days": [
{
"date": "2025-04-28",
"count": 1
},
{
"date": "2026-01-23",
"count": 1
},
{
"date": "2026-02-07",
"count": 1
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-06-11",
"count": 1
}
],
"complete": true,
"collected": 5,
"total_forks": 5
},
"star_history": null,
"open_issues_and_prs": 7
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [
"src/protobuf/google/rpc/status.proto",
"src/protobuf/google/rpc/stream_body.proto",
"src/protobuf/google/trait/product/camera.proto",
"src/protobuf/googlehome/foyer.proto",
"src/protobuf/home/event/common.proto",
"src/protobuf/nest/nexustalk.proto",
"src/protobuf/nest/services/apigateway.proto",
"src/protobuf/nest/trait/audio.proto",
"src/protobuf/nest/trait/cellular.proto",
"src/protobuf/nest/trait/debug.proto",
"src/protobuf/nest/trait/detector.proto",
"src/protobuf/nest/trait/diagnostics.proto",
"src/protobuf/nest/trait/firmware.proto",
"src/protobuf/nest/trait/guest.proto",
"src/protobuf/nest/trait/history.proto",
"src/protobuf/nest/trait/humanlibrary.proto",
"src/protobuf/nest/trait/hvac.proto",
"src/protobuf/nest/trait/input.proto",
"src/protobuf/nest/trait/lighting.proto",
"src/protobuf/nest/trait/located.proto",
"src/protobuf/nest/trait/media.proto",
"src/protobuf/nest/trait/network.proto",
"src/protobuf/nest/trait/occupancy.proto",
"src/protobuf/nest/trait/olive.proto",
"src/protobuf/nest/trait/pairing.proto",
"src/protobuf/nest/trait/product/camera.proto",
"src/protobuf/nest/trait/product/detect.proto",
"src/protobuf/nest/trait/product/doorbell.proto",
"src/protobuf/nest/trait/product/guard.proto",
"src/protobuf/nest/trait/product/protect.proto",
"src/protobuf/nest/trait/promonitoring.proto",
"src/protobuf/nest/trait/resourcedirectory.proto",
"src/protobuf/nest/trait/safety.proto",
"src/protobuf/nest/trait/security.proto",
"src/protobuf/nest/trait/selftest.proto",
"src/protobuf/nest/trait/sensor.proto",
"src/protobuf/nest/trait/service.proto",
"src/protobuf/nest/trait/structure.proto",
"src/protobuf/nest/trait/system.proto",
"src/protobuf/nest/trait/test.proto",
"src/protobuf/nest/trait/ui.proto",
"src/protobuf/nest/trait/user.proto",
"src/protobuf/nest/trait/voiceassistant.proto",
"src/protobuf/nestlabs/eventingapi/v1.proto",
"src/protobuf/nestlabs/gateway/v1.proto",
"src/protobuf/nestlabs/gateway/v2.proto",
"src/protobuf/nestlabs/history/v1.proto",
"src/protobuf/root.proto",
"src/protobuf/wdl-event-importance.proto",
"src/protobuf/wdl.proto",
"src/protobuf/weave/common.proto",
"src/protobuf/weave/trait/actuator.proto",
"src/protobuf/weave/trait/audio.proto",
"src/protobuf/weave/trait/auth.proto",
"src/protobuf/weave/trait/description.proto",
"src/protobuf/weave/trait/heartbeat.proto",
"src/protobuf/weave/trait/locale.proto",
"src/protobuf/weave/trait/network.proto",
"src/protobuf/weave/trait/pairing.proto",
"src/protobuf/weave/trait/peerdevices.proto",
"src/protobuf/weave/trait/power.proto",
"src/protobuf/weave/trait/schedule.proto",
"src/protobuf/weave/trait/security.proto",
"src/protobuf/weave/trait/telemetry/tunnel.proto",
"src/protobuf/weave/trait/time.proto"
],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 115304,
"source_files_sampled": 31,
"oversized_source_files": 5,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [
{
"name": "ip",
"direct": false,
"version": "2.0.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-2p57-rm9w-gvfp"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 783
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 1
},
"advisory_count": 1,
"affected_count": 1,
"assessed_count": 61,
"malicious_count": 0,
"assessed_package": "npm:homebridge-nest-accfactory@0.4.1",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "@evan/opus",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.3"
},
{
"name": "chalk",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^5.6.2"
},
{
"name": "protobufjs",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^8.7.1"
},
{
"name": "werift",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^0.23.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@evan/opus",
"direct": true,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": true,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": true,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": true,
"version": "5.6.2",
"ecosystem": "npm"
},
{
"name": "protobufjs",
"direct": true,
"version": "8.7.1",
"ecosystem": "npm"
},
{
"name": "werift",
"direct": true,
"version": "0.23.0",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@eslint-community/eslint-utils",
"direct": false,
"version": "4.9.1",
"ecosystem": "npm"
},
{
"name": "@eslint-community/regexpp",
"direct": false,
"version": "4.12.2",
"ecosystem": "npm"
},
{
"name": "@eslint/config-array",
"direct": false,
"version": "0.23.5",
"ecosystem": "npm"
},
{
"name": "@eslint/config-helpers",
"direct": false,
"version": "0.6.0",
"ecosystem": "npm"
},
{
"name": "@eslint/core",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "10.0.1",
"ecosystem": "npm"
},
{
"name": "@eslint/object-schema",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "@eslint/plugin-kit",
"direct": false,
"version": "0.7.2",
"ecosystem": "npm"
},
{
"name": "@fidm/asn1",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "@fidm/x509",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@homebridge/ciao",
"direct": false,
"version": "1.3.6",
"ecosystem": "npm"
},
{
"name": "@homebridge/dbus-native",
"direct": false,
"version": "0.7.4",
"ecosystem": "npm"
},
{
"name": "@humanfs/core",
"direct": false,
"version": "0.19.1",
"ecosystem": "npm"
},
{
"name": "@humanfs/node",
"direct": false,
"version": "0.16.7",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/module-importer",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/retry",
"direct": false,
"version": "0.4.3",
"ecosystem": "npm"
},
{
"name": "@jest/schemas",
"direct": false,
"version": "30.4.1",
"ecosystem": "npm"
},
{
"name": "@leichtgewicht/ip-codec",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@minhducsun2002/leb128",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "@noble/curves",
"direct": false,
"version": "1.9.7",
"ecosystem": "npm"
},
{
"name": "@noble/hashes",
"direct": false,
"version": "1.8.0",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-cms",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-csr",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-ecc",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-pfx",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-pkcs8",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-pkcs9",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-rsa",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-schema",
"direct": false,
"version": "2.6.0",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-x509",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/asn1-x509-attr",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "@peculiar/x509",
"direct": false,
"version": "1.14.3",
"ecosystem": "npm"
},
{
"name": "@shinyoshiaki/binary-data",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "@shinyoshiaki/jspack",
"direct": false,
"version": "0.0.6",
"ecosystem": "npm"
},
{
"name": "@sinclair/typebox",
"direct": false,
"version": "0.34.52",
"ecosystem": "npm"
},
{
"name": "@stylistic/eslint-plugin",
"direct": false,
"version": "5.10.0",
"ecosystem": "npm"
},
{
"name": "@types/esrecurse",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "26.1.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/parser",
"direct": false,
"version": "8.64.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/project-service",
"direct": false,
"version": "8.64.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/scope-manager",
"direct": false,
"version": "8.64.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/tsconfig-utils",
"direct": false,
"version": "8.64.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/types",
"direct": false,
"version": "8.64.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/typescript-estree",
"direct": false,
"version": "8.64.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/visitor-keys",
"direct": false,
"version": "8.64.0",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.16.0",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "aes-js",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.14.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "asn1js",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "base64-js",
"direct": false,
"version": "1.5.1",
"ecosystem": "npm"
},
{
"name": "bonjour-hap",
"direct": false,
"version": "3.10.1",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.14",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "5.0.5",
"ecosystem": "npm"
},
{
"name": "buffer",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "buffer-crc32",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "7.0.4",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "13.1.0",
"ecosystem": "npm"
},
{
"name": "common-tags",
"direct": false,
"version": "1.8.2",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "copyfiles",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "core-util-is",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "date-fns",
"direct": false,
"version": "2.30.0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "deep-is",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "dns-packet",
"direct": false,
"version": "5.6.1",
"ecosystem": "npm"
},
{
"name": "duplexer",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "10.7.0",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "9.1.2",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "4.2.1",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "10.4.0",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "11.2.0",
"ecosystem": "npm"
},
{
"name": "esquery",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "event-stream",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-levenshtein",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "fast-srp-hap",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "file-entry-cache",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "flat-cache",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "flatted",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "from",
"direct": false,
"version": "0.1.7",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": false,
"version": "11.3.4",
"ecosystem": "npm"
},
{
"name": "fs.realpath",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "futoin-hkdf",
"direct": false,
"version": "1.5.3",
"ecosystem": "npm"
},
{
"name": "generate-function",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "13.0.6",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "hap-nodejs",
"direct": false,
"version": "0.14.3",
"ecosystem": "npm"
},
{
"name": "has-ansi",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "hexy",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "homebridge",
"direct": false,
"version": "1.11.4",
"ecosystem": "npm"
},
{
"name": "ieee754",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "indent-string",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "int64-buffer",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "ip",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-plain-object",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "is-property",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isobject",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-stable-stringify-without-jsonify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "jsonfile",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "levn",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.18.1",
"ecosystem": "npm"
},
{
"name": "loglevel",
"direct": false,
"version": "1.9.2",
"ecosystem": "npm"
},
{
"name": "loglevel-colored-level-prefix",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "long",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "11.3.5",
"ecosystem": "npm"
},
{
"name": "map-stream",
"direct": false,
"version": "0.0.7",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "10.2.5",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.5",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "7.1.3",
"ecosystem": "npm"
},
{
"name": "mkdirp",
"direct": false,
"version": "0.5.6",
"ecosystem": "npm"
},
{
"name": "mkdirp",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "mp4box",
"direct": false,
"version": "0.5.4",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "multicast-dns",
"direct": false,
"version": "7.2.5",
"ecosystem": "npm"
},
{
"name": "multicast-dns-service-types",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "node-persist",
"direct": false,
"version": "0.0.12",
"ecosystem": "npm"
},
{
"name": "noms",
"direct": false,
"version": "0.0.0",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "optionator",
"direct": false,
"version": "0.9.4",
"ecosystem": "npm"
},
{
"name": "p-cancelable",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "package-json-from-dist",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-is-absolute",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-scurry",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "pause-stream",
"direct": false,
"version": "0.0.11",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "prelude-ls",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.9.5",
"ecosystem": "npm"
},
{
"name": "prettier-eslint",
"direct": false,
"version": "17.1.1",
"ecosystem": "npm"
},
{
"name": "pretty-format",
"direct": false,
"version": "30.4.1",
"ecosystem": "npm"
},
{
"name": "process-nextick-args",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pvtsutils",
"direct": false,
"version": "1.3.6",
"ecosystem": "npm"
},
{
"name": "pvutils",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "q",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "qrcode-terminal",
"direct": false,
"version": "0.12.0",
"ecosystem": "npm"
},
{
"name": "react-is",
"direct": false,
"version": "18.3.1",
"ecosystem": "npm"
},
{
"name": "react-is",
"direct": false,
"version": "19.2.7",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "1.0.34",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "reflect-metadata",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "require-directory",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "6.1.3",
"ecosystem": "npm"
},
{
"name": "rx.mini",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "sax",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.4",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"ecosystem": "npm"
},
{
"name": "split",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "stable-hash-x",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "stream-combiner",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "0.10.31",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "through",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "through2",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "thunky",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.17",
"ecosystem": "npm"
},
{
"name": "ts-api-utils",
"direct": false,
"version": "2.5.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "tsyringe",
"direct": false,
"version": "4.10.0",
"ecosystem": "npm"
},
{
"name": "tweetnacl",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "type-check",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "8.3.0",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "untildify",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "util-deprecate",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "vue-eslint-parser",
"direct": false,
"version": "10.4.1",
"ecosystem": "npm"
},
{
"name": "werift-common",
"direct": false,
"version": "0.0.3",
"ecosystem": "npm"
},
{
"name": "werift-dtls",
"direct": false,
"version": "0.5.7",
"ecosystem": "npm"
},
{
"name": "werift-ice",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "werift-rtp",
"direct": false,
"version": "0.8.8",
"ecosystem": "npm"
},
{
"name": "werift-sctp",
"direct": false,
"version": "0.0.11",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "word-wrap",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "xml2js",
"direct": false,
"version": "0.6.2",
"ecosystem": "npm"
},
{
"name": "xmlbuilder",
"direct": false,
"version": "11.0.1",
"ecosystem": "npm"
},
{
"name": "xtend",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "5.0.8",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "16.2.0",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "20.2.9",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 252,
"direct_count": 6,
"indirect_count": 246
}
},
"maintainership": {
"issues": {
"open_prs": 2,
"merged_prs": 78,
"open_issues": 5,
"closed_ratio": 0.936,
"closed_issues": 73,
"closed_unmerged_prs": 169
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "n0rt0nthec4t",
"commits": 521,
"avatar_url": "https://avatars.githubusercontent.com/u/19759130?v=4"
},
{
"type": "User",
"login": "tronikos",
"commits": 12,
"avatar_url": "https://avatars.githubusercontent.com/u/9987465?v=4"
},
{
"type": "User",
"login": "benbean303",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/5327621?v=4"
}
],
"contributors_sampled": 3,
"top_contributor_share": 0.974
},
"quality_signals": {
"has_ci": true,
"has_tests": false,
"ci_workflows": [
"npm-publish.yml",
"stale.yml"
],
"has_docs_dir": false,
"linter_configs": [
"eslint.config.js"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 6,
"reason": "project has 2 contributing companies or organizations -- score normalized to 6",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "18 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 4,
"reason": "dependency not pinned by hash detected -- score normalized to 4",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 6,
"reason": "4 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "5ac52fba6ae05b6befe7c435c4d1b332a01e33b8",
"ran_at": "2026-07-26T03:58:18Z",
"aggregate_score": 4.8,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-26T02:34:50Z",
"oldest_open_prs": [
{
"number": 310,
"created_at": "2026-02-02T00:37:44Z",
"last_comment_at": "2026-02-03T02:17:12Z",
"last_comment_author": "dependabot"
},
{
"number": 338,
"created_at": "2026-06-11T23:48:39Z",
"last_comment_at": "2026-06-14T16:13:19Z",
"last_comment_author": "burtherman"
}
],
"last_merged_pr_at": "2026-01-28T03:17:34Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 1,
"created_at": "2024-09-24T05:26:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 288,
"created_at": "2025-12-14T00:37:52Z",
"last_comment_at": "2026-01-10T04:02:52Z",
"last_comment_author": "n0rt0nthec4t"
},
{
"number": 317,
"created_at": "2026-03-04T01:57:22Z",
"last_comment_at": "2026-05-05T15:38:38Z",
"last_comment_author": "dockramer"
},
{
"number": 321,
"created_at": "2026-03-09T09:02:47Z",
"last_comment_at": "2026-06-03T21:42:37Z",
"last_comment_author": "n0rt0nthec4t"
},
{
"number": 337,
"created_at": "2026-05-27T22:57:19Z",
"last_comment_at": "2026-05-28T23:03:54Z",
"last_comment_author": "DigitalFokus"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/n0rt0nthec4t/homebridge-nest-accfactory",
"host": "github.com",
"name": "homebridge-nest-accfactory",
"owner": "n0rt0nthec4t"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"security": 54,
"vitality": 93,
"community": 46,
"governance": 51,
"engineering": 56
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 93,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 88,
"inputs": {
"commits_last_year": 170,
"human_commit_share": 1,
"days_since_last_push": 6,
"active_weeks_last_year": 35
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "35/52 weeks with commits",
"points": 24.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 35
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "170 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 170
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "18 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 52,
"latest_release_tag": "v0.4.3-beta.2",
"releases_from_tags": false,
"days_since_latest_release": 6,
"mean_days_between_releases": 7.8
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "52 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 52
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~7.8 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 7.8
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 6,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 6 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 6
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 46,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 35,
"inputs": {
"forks": 5,
"stars": 48,
"watchers": 5,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "48 stars",
"points": 27.1,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 48
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "5 forks",
"points": 5,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 5
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "5 watchers",
"points": 3.3,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 5
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 56,
"inputs": {
"packages": [
"homebridge-nest-accfactory"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 2149
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "2,149 downloads/month across npm",
"points": 44.4,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 2149,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 51,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 3,
"top_contributor_share": 0.974
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 97% of commits",
"points": 0.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 97
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "3 contributors",
"points": 4.1,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 3
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 6,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"merged_prs": 78,
"open_issues": 5,
"closed_issues": 73,
"issue_closed_ratio": 0.936,
"closed_unmerged_prs": 169
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "94% of issues closed",
"points": 43.8,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 94
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "78/247 decided PRs merged",
"points": 12.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 78,
"decided": 247
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 43,
"inputs": {
"followers": 2,
"owner_type": "User",
"is_verified": null,
"owner_login": "n0rt0nthec4t",
"public_repos": 18,
"account_age_days": 3702
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "2 followers of n0rt0nthec4t",
"points": 3.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 2,
"login": "n0rt0nthec4t"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "18 public repos, account ~10 yr old",
"points": 21.3,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 18
}
},
{
"code": "account_age_years",
"params": {
"years": 10
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"homebridge-nest-accfactory"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 80
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 80 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 80
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "48 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 48
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 56,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 50,
"inputs": {
"has_ci": true,
"has_tests": false,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "eslint.config.js",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"camera",
"doorbell",
"hksv",
"homebridge",
"homebridge-plugin",
"nest",
"sensor",
"smoke",
"temperature",
"thermostat",
"floodlight",
"homekit",
"google",
"google-home",
"lock",
"hotwater",
"weather"
],
"has_wiki": false,
"homepage": "https://github.com/n0rt0nthec4t/homebridge-nest-accfactory",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://github.com/n0rt0nthec4t/homebridge-nest-accfactory",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "17 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 17
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 54,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 48,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 4.8
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "18 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 4",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "4 existing vulnerabilities detected",
"points": 4.5,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "good",
"name": "Dependency advisories",
"note": "Matched the npm:homebridge-nest-accfactory@0.4.1 runtime dependency closure — what installing the published package pulls in — 61 packages. Reachability is not analyzed.",
"notes": [
{
"code": "advisories_scope_published",
"params": {
"package": "npm:homebridge-nest-accfactory@0.4.1",
"assessed": 61
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 77,
"inputs": {
"source": "osv",
"advisories": 1,
"affected_packages": 1,
"assessed_packages": 61,
"unassessed_packages": 0,
"affected_by_severity": "high 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "1 affected: ip 2.0.1 (high 8.1)",
"points": 8.8,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 1,
"packages": "ip 2.0.1 (high 8.1)"
}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "1 advisory-carrying package(s) unaddressed past 90 days; oldest published 783 days ago",
"points": 33.3,
"status": "partial",
"details": [
{
"code": "advisories_stale",
"params": {
"days": 90,
"count": 1,
"oldest": 783
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 61,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 3
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "critical",
"name": "AI Readiness",
"value": 27,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 4,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.07,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "7 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 3.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 7,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 32,
"inputs": {
"has_nix": false,
"has_tests": false,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.01,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "eslint.config.js",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "1 of the last 100 commits agent-authored or agent-credited",
"points": 2,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "dependency automation configured, none observed in the sampled commits",
"points": 5,
"status": "partial",
"details": [
{
"code": "dependency_bot_config_only",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 4",
"points": 4,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "at_risk",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 46,
"inputs": {
"primary_language": "JavaScript",
"largest_source_bytes": 115304,
"source_files_sampled": 31,
"oversized_source_files": 5
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "JavaScript without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "JavaScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "5/31 source files over 60KB",
"points": 46.1,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 31,
"oversized": 5
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [],
"has_mcp_signal": false,
"api_schema_files": [
"src/protobuf/google/rpc/status.proto",
"src/protobuf/google/rpc/stream_body.proto",
"src/protobuf/google/trait/product/camera.proto",
"src/protobuf/googlehome/foyer.proto",
"src/protobuf/home/event/common.proto",
"src/protobuf/nest/nexustalk.proto",
"src/protobuf/nest/services/apigateway.proto",
"src/protobuf/nest/trait/audio.proto",
"src/protobuf/nest/trait/cellular.proto",
"src/protobuf/nest/trait/debug.proto",
"src/protobuf/nest/trait/detector.proto",
"src/protobuf/nest/trait/diagnostics.proto",
"src/protobuf/nest/trait/firmware.proto",
"src/protobuf/nest/trait/guest.proto",
"src/protobuf/nest/trait/history.proto",
"src/protobuf/nest/trait/humanlibrary.proto",
"src/protobuf/nest/trait/hvac.proto",
"src/protobuf/nest/trait/input.proto",
"src/protobuf/nest/trait/lighting.proto",
"src/protobuf/nest/trait/located.proto",
"src/protobuf/nest/trait/media.proto",
"src/protobuf/nest/trait/network.proto",
"src/protobuf/nest/trait/occupancy.proto",
"src/protobuf/nest/trait/olive.proto",
"src/protobuf/nest/trait/pairing.proto",
"src/protobuf/nest/trait/product/camera.proto",
"src/protobuf/nest/trait/product/detect.proto",
"src/protobuf/nest/trait/product/doorbell.proto",
"src/protobuf/nest/trait/product/guard.proto",
"src/protobuf/nest/trait/product/protect.proto",
"src/protobuf/nest/trait/promonitoring.proto",
"src/protobuf/nest/trait/resourcedirectory.proto",
"src/protobuf/nest/trait/safety.proto",
"src/protobuf/nest/trait/security.proto",
"src/protobuf/nest/trait/selftest.proto",
"src/protobuf/nest/trait/sensor.proto",
"src/protobuf/nest/trait/service.proto",
"src/protobuf/nest/trait/structure.proto",
"src/protobuf/nest/trait/system.proto",
"src/protobuf/nest/trait/test.proto",
"src/protobuf/nest/trait/ui.proto",
"src/protobuf/nest/trait/user.proto",
"src/protobuf/nest/trait/voiceassistant.proto",
"src/protobuf/nestlabs/eventingapi/v1.proto",
"src/protobuf/nestlabs/gateway/v1.proto",
"src/protobuf/nestlabs/gateway/v2.proto",
"src/protobuf/nestlabs/history/v1.proto",
"src/protobuf/root.proto",
"src/protobuf/wdl-event-importance.proto",
"src/protobuf/wdl.proto",
"src/protobuf/weave/common.proto",
"src/protobuf/weave/trait/actuator.proto",
"src/protobuf/weave/trait/audio.proto",
"src/protobuf/weave/trait/auth.proto",
"src/protobuf/weave/trait/description.proto",
"src/protobuf/weave/trait/heartbeat.proto",
"src/protobuf/weave/trait/locale.proto",
"src/protobuf/weave/trait/network.proto",
"src/protobuf/weave/trait/pairing.proto",
"src/protobuf/weave/trait/peerdevices.proto",
"src/protobuf/weave/trait/power.proto",
"src/protobuf/weave/trait/schedule.proto",
"src/protobuf/weave/trait/security.proto",
"src/protobuf/weave/trait/telemetry/tunnel.proto",
"src/protobuf/weave/trait/time.proto"
]
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": "src/protobuf/google/rpc/status.proto, src/protobuf/google/rpc/stream_body.proto, src/protobuf/google/trait/product/camera.proto, src/protobuf/googlehome/foyer.proto, src/protobuf/home/event/common.proto, src/protobuf/nest/nexustalk.proto, src/protobuf/nest/services/apigateway.proto, src/protobuf/nest/trait/audio.proto, src/protobuf/nest/trait/cellular.proto, src/protobuf/nest/trait/debug.proto, src/protobuf/nest/trait/detector.proto, src/protobuf/nest/trait/diagnostics.proto, src/protobuf/nest/trait/firmware.proto, src/protobuf/nest/trait/guest.proto, src/protobuf/nest/trait/history.proto, src/protobuf/nest/trait/humanlibrary.proto, src/protobuf/nest/trait/hvac.proto, src/protobuf/nest/trait/input.proto, src/protobuf/nest/trait/lighting.proto, src/protobuf/nest/trait/located.proto, src/protobuf/nest/trait/media.proto, src/protobuf/nest/trait/network.proto, src/protobuf/nest/trait/occupancy.proto, src/protobuf/nest/trait/olive.proto, src/protobuf/nest/trait/pairing.proto, src/protobuf/nest/trait/product/camera.proto, src/protobuf/nest/trait/product/detect.proto, src/protobuf/nest/trait/product/doorbell.proto, src/protobuf/nest/trait/product/guard.proto, src/protobuf/nest/trait/product/protect.proto, src/protobuf/nest/trait/promonitoring.proto, src/protobuf/nest/trait/resourcedirectory.proto, src/protobuf/nest/trait/safety.proto, src/protobuf/nest/trait/security.proto, src/protobuf/nest/trait/selftest.proto, src/protobuf/nest/trait/sensor.proto, src/protobuf/nest/trait/service.proto, src/protobuf/nest/trait/structure.proto, src/protobuf/nest/trait/system.proto, src/protobuf/nest/trait/test.proto, src/protobuf/nest/trait/ui.proto, src/protobuf/nest/trait/user.proto, src/protobuf/nest/trait/voiceassistant.proto, src/protobuf/nestlabs/eventingapi/v1.proto, src/protobuf/nestlabs/gateway/v1.proto, src/protobuf/nestlabs/gateway/v2.proto, src/protobuf/nestlabs/history/v1.proto, src/protobuf/root.proto, src/protobuf/wdl-event-importance.proto, src/protobuf/wdl.proto, src/protobuf/weave/common.proto, src/protobuf/weave/trait/actuator.proto, src/protobuf/weave/trait/audio.proto, src/protobuf/weave/trait/auth.proto, src/protobuf/weave/trait/description.proto, src/protobuf/weave/trait/heartbeat.proto, src/protobuf/weave/trait/locale.proto, src/protobuf/weave/trait/network.proto, src/protobuf/weave/trait/pairing.proto, src/protobuf/weave/trait/peerdevices.proto, src/protobuf/weave/trait/power.proto, src/protobuf/weave/trait/schedule.proto, src/protobuf/weave/trait/security.proto, src/protobuf/weave/trait/telemetry/tunnel.proto, src/protobuf/weave/trait/time.proto",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "src/protobuf/google/rpc/status.proto, src/protobuf/google/rpc/stream_body.proto, src/protobuf/google/trait/product/camera.proto, src/protobuf/googlehome/foyer.proto, src/protobuf/home/event/common.proto, src/protobuf/nest/nexustalk.proto, src/protobuf/nest/services/apigateway.proto, src/protobuf/nest/trait/audio.proto, src/protobuf/nest/trait/cellular.proto, src/protobuf/nest/trait/debug.proto, src/protobuf/nest/trait/detector.proto, src/protobuf/nest/trait/diagnostics.proto, src/protobuf/nest/trait/firmware.proto, src/protobuf/nest/trait/guest.proto, src/protobuf/nest/trait/history.proto, src/protobuf/nest/trait/humanlibrary.proto, src/protobuf/nest/trait/hvac.proto, src/protobuf/nest/trait/input.proto, src/protobuf/nest/trait/lighting.proto, src/protobuf/nest/trait/located.proto, src/protobuf/nest/trait/media.proto, src/protobuf/nest/trait/network.proto, src/protobuf/nest/trait/occupancy.proto, src/protobuf/nest/trait/olive.proto, src/protobuf/nest/trait/pairing.proto, src/protobuf/nest/trait/product/camera.proto, src/protobuf/nest/trait/product/detect.proto, src/protobuf/nest/trait/product/doorbell.proto, src/protobuf/nest/trait/product/guard.proto, src/protobuf/nest/trait/product/protect.proto, src/protobuf/nest/trait/promonitoring.proto, src/protobuf/nest/trait/resourcedirectory.proto, src/protobuf/nest/trait/safety.proto, src/protobuf/nest/trait/security.proto, src/protobuf/nest/trait/selftest.proto, src/protobuf/nest/trait/sensor.proto, src/protobuf/nest/trait/service.proto, src/protobuf/nest/trait/structure.proto, src/protobuf/nest/trait/system.proto, src/protobuf/nest/trait/test.proto, src/protobuf/nest/trait/ui.proto, src/protobuf/nest/trait/user.proto, src/protobuf/nest/trait/voiceassistant.proto, src/protobuf/nestlabs/eventingapi/v1.proto, src/protobuf/nestlabs/gateway/v1.proto, src/protobuf/nestlabs/gateway/v2.proto, src/protobuf/nestlabs/history/v1.proto, src/protobuf/root.proto, src/protobuf/wdl-event-importance.proto, src/protobuf/wdl.proto, src/protobuf/weave/common.proto, src/protobuf/weave/trait/actuator.proto, src/protobuf/weave/trait/audio.proto, src/protobuf/weave/trait/auth.proto, src/protobuf/weave/trait/description.proto, src/protobuf/weave/trait/heartbeat.proto, src/protobuf/weave/trait/locale.proto, src/protobuf/weave/trait/network.proto, src/protobuf/weave/trait/pairing.proto, src/protobuf/weave/trait/peerdevices.proto, src/protobuf/weave/trait/power.proto, src/protobuf/weave/trait/schedule.proto, src/protobuf/weave/trait/security.proto, src/protobuf/weave/trait/telemetry/tunnel.proto, src/protobuf/weave/trait/time.proto"
}
}
],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-26T03:58:25.487232Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/n0rt0nthec4t/homebridge-nest-accfactory.svg",
"full_name": "n0rt0nthec4t/homebridge-nest-accfactory",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}