@camstack/system 1.2.379 → 1.2.380
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/addon-pages-aggregator/icon.svg +5 -0
- package/assets/addon-widgets-aggregator/icon.svg +6 -0
- package/assets/alert-center/icon.svg +5 -0
- package/assets/autotrack/icon.svg +5 -0
- package/assets/backup-orchestrator/icon.svg +5 -0
- package/assets/calendars/icon.svg +5 -0
- package/assets/camera-grid/icon.svg +10 -0
- package/assets/composer/icon.svg +7 -0
- package/assets/console-logging/icon.svg +4 -0
- package/assets/core-blocks/icon.svg +6 -0
- package/assets/device-manager/icon.svg +6 -0
- package/assets/filesystem-storage/icon.svg +6 -0
- package/assets/hub-forwarder/icon.svg +7 -0
- package/assets/keychain/icon.svg +6 -0
- package/assets/liveness-monitor/icon.svg +4 -0
- package/assets/local-auth/icon.svg +5 -0
- package/assets/local-network/icon.svg +7 -0
- package/assets/loki-logging/icon.svg +7 -0
- package/assets/metrics-native/icon.svg +3 -0
- package/assets/platform-probe/icon.svg +5 -0
- package/assets/remote-access-orchestrator/icon.svg +5 -0
- package/assets/snapshot/icon.svg +4 -0
- package/assets/sqlite-settings/icon.svg +5 -0
- package/assets/storage-orchestrator/icon.svg +8 -0
- package/assets/system-config/icon.svg +4 -0
- package/assets/winston-logging/icon.svg +6 -0
- package/package.json +55 -3
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#4f46e5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="3" y="3" width="7" height="9" rx="1"/>
|
|
3
|
+
<rect x="14" y="3" width="7" height="5" rx="1"/>
|
|
4
|
+
<rect x="14" y="12" width="7" height="9" rx="1"/>
|
|
5
|
+
<rect x="3" y="16" width="7" height="5" rx="1"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#d97706" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/>
|
|
3
|
+
<path d="M12 9v4"/>
|
|
4
|
+
<path d="M12 17h.01"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#7c3aed" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<circle cx="12" cy="12" r="7"/>
|
|
3
|
+
<circle cx="12" cy="12" r="2"/>
|
|
4
|
+
<path d="M12 2v3M12 19v3M2 12h3M19 12h3"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#4f46e5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="3" y="4" width="18" height="18" rx="2"/>
|
|
3
|
+
<path d="M16 2v4M8 2v4M3 10h18"/>
|
|
4
|
+
<path d="M8 14h.01M12 14h.01M16 14h.01M8 18h.01M12 18h.01"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#7c3aed" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="2" y="3" width="9" height="8" rx="1.5"/>
|
|
3
|
+
<rect x="13" y="3" width="9" height="8" rx="1.5"/>
|
|
4
|
+
<rect x="2" y="13" width="9" height="8" rx="1.5"/>
|
|
5
|
+
<rect x="13" y="13" width="9" height="8" rx="1.5"/>
|
|
6
|
+
<circle cx="6.5" cy="7" r="1.4" fill="#7c3aed" stroke="none"/>
|
|
7
|
+
<circle cx="17.5" cy="7" r="1.4" fill="#7c3aed" stroke="none"/>
|
|
8
|
+
<circle cx="6.5" cy="17" r="1.4" fill="#7c3aed" stroke="none"/>
|
|
9
|
+
<circle cx="17.5" cy="17" r="1.4" fill="#7c3aed" stroke="none"/>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#ea580c" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="2" y="3" width="7" height="7" rx="1"/>
|
|
3
|
+
<rect x="2" y="14" width="7" height="7" rx="1"/>
|
|
4
|
+
<rect x="15" y="8.5" width="7" height="7" rx="1"/>
|
|
5
|
+
<path d="M9 6.5h2.5a2 2 0 0 1 2 2V12H15"/>
|
|
6
|
+
<path d="M9 17.5h2.5a2 2 0 0 0 2-2V12"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#ea580c" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="2" y="14" width="9" height="7" rx="1"/>
|
|
3
|
+
<rect x="13" y="14" width="9" height="7" rx="1"/>
|
|
4
|
+
<rect x="7.5" y="5" width="9" height="7" rx="1"/>
|
|
5
|
+
<path d="M10.5 5V3M13.5 5V3"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#4f46e5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="2" y="4" width="14" height="10" rx="2"/>
|
|
3
|
+
<path d="M6 18h6"/>
|
|
4
|
+
<path d="M9 14v4"/>
|
|
5
|
+
<rect x="18" y="8" width="4" height="12" rx="1"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#0d9488" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="M22 12H2"/>
|
|
3
|
+
<path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/>
|
|
4
|
+
<path d="M6 16h.01"/>
|
|
5
|
+
<path d="M10 16h.01"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="M3 7h7"/>
|
|
3
|
+
<path d="M3 12h5"/>
|
|
4
|
+
<path d="M3 17h9"/>
|
|
5
|
+
<path d="m14 10 7-7"/>
|
|
6
|
+
<path d="M15 3h6v6"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#0d9488" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<circle cx="7.5" cy="15.5" r="4.5"/>
|
|
3
|
+
<path d="M10.7 12.3 21 2"/>
|
|
4
|
+
<path d="m15.5 7.5 3 3"/>
|
|
5
|
+
<path d="m18 5 2.5 2.5"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#d97706" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7z"/>
|
|
3
|
+
<path d="M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#e11d48" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="4" y="11" width="16" height="10" rx="2"/>
|
|
3
|
+
<path d="M8 11V7a4 4 0 0 1 8 0v4"/>
|
|
4
|
+
<path d="M12 15v2"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="9" y="2" width="6" height="6" rx="1"/>
|
|
3
|
+
<rect x="2" y="16" width="6" height="6" rx="1"/>
|
|
4
|
+
<rect x="16" y="16" width="6" height="6" rx="1"/>
|
|
5
|
+
<path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"/>
|
|
6
|
+
<path d="M12 12V8"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="M3 6h11"/>
|
|
3
|
+
<path d="M3 12h7"/>
|
|
4
|
+
<path d="M3 18h11"/>
|
|
5
|
+
<path d="m17 8 4 4-4 4"/>
|
|
6
|
+
<path d="M21 12h-7"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#d97706" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="5" y="5" width="14" height="14" rx="2"/>
|
|
3
|
+
<rect x="9" y="9" width="6" height="6" rx="1"/>
|
|
4
|
+
<path d="M9 2v3M15 2v3M9 19v3M15 19v3M2 9h3M2 15h3M19 9h3M19 15h3"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<circle cx="12" cy="12" r="10"/>
|
|
3
|
+
<path d="M2 12h20"/>
|
|
4
|
+
<path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#7c3aed" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3z"/>
|
|
3
|
+
<circle cx="12" cy="13" r="3"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#0d9488" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<ellipse cx="12" cy="5" rx="9" ry="3"/>
|
|
3
|
+
<path d="M3 5v14a9 3 0 0 0 18 0V5"/>
|
|
4
|
+
<path d="M3 12a9 3 0 0 0 18 0"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#0d9488" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="2" y="3" width="20" height="8" rx="2"/>
|
|
3
|
+
<rect x="2" y="13" width="20" height="8" rx="2"/>
|
|
4
|
+
<path d="M6 7h.01"/>
|
|
5
|
+
<path d="M6 17h.01"/>
|
|
6
|
+
<path d="M14 7h4"/>
|
|
7
|
+
<path d="M14 17h4"/>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
|
|
3
|
+
<path d="M14 2v6h6"/>
|
|
4
|
+
<path d="M8 13h8"/>
|
|
5
|
+
<path d="M8 17h5"/>
|
|
6
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/system",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.380",
|
|
4
4
|
"description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -38,6 +38,8 @@
|
|
|
38
38
|
"id": "filesystem-storage",
|
|
39
39
|
"category": "system",
|
|
40
40
|
"name": "Filesystem Storage",
|
|
41
|
+
"icon": "assets/filesystem-storage/icon.svg",
|
|
42
|
+
"color": "#0d9488",
|
|
41
43
|
"entry": "./dist/builtins/sqlite-storage/filesystem-storage.addon.js",
|
|
42
44
|
"capabilities": [
|
|
43
45
|
{
|
|
@@ -52,6 +54,8 @@
|
|
|
52
54
|
"id": "sqlite-settings",
|
|
53
55
|
"category": "system",
|
|
54
56
|
"name": "SQLite Settings",
|
|
57
|
+
"icon": "assets/sqlite-settings/icon.svg",
|
|
58
|
+
"color": "#0d9488",
|
|
55
59
|
"entry": "./dist/builtins/sqlite-storage/sqlite-settings.addon.js",
|
|
56
60
|
"description": "The relational ENGINE behind the data door (SQLite WAL). Registers `data-store-provider`, an internal collection cap; the public `settings-store` door is owned by `storage-orchestrator`, which dispatches here. Callers never reach this addon directly — that is what makes the engine replaceable. It ALSO registers `vector-store` (sqlite-vec) from the same database file and the same open handle, and `database-snapshot`: the verified copy of its database that the nightly backup archives in place of the live files, written by this runner on a thread over its own connection. Runs in its OWN process (`execution.isolate`) — `better-sqlite3` `Statement.run` does not belong on the event loop that serves the API.",
|
|
57
61
|
"execution": {
|
|
@@ -75,6 +79,8 @@
|
|
|
75
79
|
"id": "winston-logging",
|
|
76
80
|
"category": "system",
|
|
77
81
|
"name": "Winston Logging",
|
|
82
|
+
"icon": "assets/winston-logging/icon.svg",
|
|
83
|
+
"color": "#64748b",
|
|
78
84
|
"entry": "./dist/builtins/winston-logging/index.js",
|
|
79
85
|
"capabilities": [
|
|
80
86
|
{
|
|
@@ -86,6 +92,8 @@
|
|
|
86
92
|
"id": "console-logging",
|
|
87
93
|
"category": "system",
|
|
88
94
|
"name": "Console Logging",
|
|
95
|
+
"icon": "assets/console-logging/icon.svg",
|
|
96
|
+
"color": "#64748b",
|
|
89
97
|
"entry": "./dist/builtins/console-logging/index.js",
|
|
90
98
|
"capabilities": [
|
|
91
99
|
{
|
|
@@ -97,6 +105,8 @@
|
|
|
97
105
|
"id": "loki-logging",
|
|
98
106
|
"category": "system",
|
|
99
107
|
"name": "Loki Logging",
|
|
108
|
+
"icon": "assets/loki-logging/icon.svg",
|
|
109
|
+
"color": "#64748b",
|
|
100
110
|
"description": "Opt-in log destination — batches this node's log entries and pushes them to a Grafana Loki instance via /loki/api/v1/push. Registered always, inert until enabled with a URL.",
|
|
101
111
|
"entry": "./dist/builtins/loki-logging/index.js",
|
|
102
112
|
"capabilities": [
|
|
@@ -109,6 +119,8 @@
|
|
|
109
119
|
"id": "hub-forwarder",
|
|
110
120
|
"category": "system",
|
|
111
121
|
"name": "Hub Log Forwarder",
|
|
122
|
+
"icon": "assets/hub-forwarder/icon.svg",
|
|
123
|
+
"color": "#64748b",
|
|
112
124
|
"description": "Agent-only log destination — forwards every log entry to the hub via the cluster broker. Never runs on the hub itself (the hub already owns the log-receiver, registering hub-forwarder there would create a write→ingest→write feedback loop).",
|
|
113
125
|
"entry": "./dist/builtins/hub-forwarder/index.js",
|
|
114
126
|
"execution": {
|
|
@@ -124,6 +136,8 @@
|
|
|
124
136
|
"id": "backup-orchestrator",
|
|
125
137
|
"category": "system",
|
|
126
138
|
"name": "Backup Orchestrator",
|
|
139
|
+
"icon": "assets/backup-orchestrator/icon.svg",
|
|
140
|
+
"color": "#0d9488",
|
|
127
141
|
"description": "System singleton that owns the schedule, builds the archive once, and fans it out to every enabled `backup-destination` provider (local, S3, rsync, …). In-process on hub root — aggregator over a cluster collection, no native deps.",
|
|
128
142
|
"entry": "./dist/builtins/backup-orchestrator/index.js",
|
|
129
143
|
"protected": true,
|
|
@@ -147,6 +161,8 @@
|
|
|
147
161
|
"id": "storage-orchestrator",
|
|
148
162
|
"category": "system",
|
|
149
163
|
"name": "Storage Orchestrator",
|
|
164
|
+
"icon": "assets/storage-orchestrator/icon.svg",
|
|
165
|
+
"color": "#0d9488",
|
|
150
166
|
"description": "The single data door. Owns the consumer-facing `storage` cap for bytes — the `locationId → StorageLocation` map, `StorageLocationRef` resolution, dispatch to the matching `storage-provider` registrant (`filesystem-storage` today; SFTP / S3 / WebDAV plug in alongside) — AND the `settings-store` cap for rows, dispatching to the `data-store-provider` engine (`sqlite-settings` today; a vector engine plugs in alongside). Nothing reaches an engine except through this addon.",
|
|
151
167
|
"entry": "./dist/builtins/storage-orchestrator/index.js",
|
|
152
168
|
"protected": true,
|
|
@@ -166,6 +182,8 @@
|
|
|
166
182
|
"id": "keychain",
|
|
167
183
|
"category": "system",
|
|
168
184
|
"name": "Keychain",
|
|
185
|
+
"icon": "assets/keychain/icon.svg",
|
|
186
|
+
"color": "#0d9488",
|
|
169
187
|
"description": "Hub-only store of every secret value. Settings blobs hold a marker; the value lives here, AES-256-GCM under a data key wrapped by a master key whose location is configuration (config.yaml `keychain.keyFile`, the desktop OS keychain, else the data-dir default). Registers `keychain` (internal, owner-checked against the transport-stamped caller) and `keychain-admin` (System → Secrets). Boots in the infrastructure pass, right after the settings door.",
|
|
170
188
|
"entry": "./dist/builtins/keychain/index.js",
|
|
171
189
|
"protected": true,
|
|
@@ -182,6 +200,8 @@
|
|
|
182
200
|
"id": "metrics-native",
|
|
183
201
|
"category": "system",
|
|
184
202
|
"name": "Native Metrics",
|
|
203
|
+
"icon": "assets/metrics-native/icon.svg",
|
|
204
|
+
"color": "#d97706",
|
|
185
205
|
"entry": "./dist/builtins/native-metrics/native-metrics.addon.js",
|
|
186
206
|
"capabilities": [
|
|
187
207
|
{
|
|
@@ -193,6 +213,8 @@
|
|
|
193
213
|
"id": "snapshot",
|
|
194
214
|
"category": "system",
|
|
195
215
|
"name": "Snapshot",
|
|
216
|
+
"icon": "assets/snapshot/icon.svg",
|
|
217
|
+
"color": "#7c3aed",
|
|
196
218
|
"description": "Owns every camera's latest frame: the capture ladder (vendor native → ffmpeg keyframe grab off the stream-broker restream), the sharp resize, the courtesy frame for a camera that cannot answer, and the two HTTP planes the clients actually fetch bytes from. Runs in its OWN process (`execution.isolate`) — capture, transcode and byte caches do not belong on the event loop that serves the API.",
|
|
197
219
|
"entry": "./dist/builtins/snapshot/index.js",
|
|
198
220
|
"execution": {
|
|
@@ -210,6 +232,8 @@
|
|
|
210
232
|
"id": "autotrack",
|
|
211
233
|
"category": "system",
|
|
212
234
|
"name": "PTZ Autotrack (emulated)",
|
|
235
|
+
"icon": "assets/autotrack/icon.svg",
|
|
236
|
+
"color": "#7c3aed",
|
|
213
237
|
"description": "Wrapper over the `ptz-autotrack` cap — follows a subject with self-terminating `ptz.move` pulses on cameras whose firmware has no autotrack, driven by the detection pipeline's tracked boxes. The operator binds it per camera, then uses the SAME autotrack switch a native camera has: the binding chooses the implementation, never a second toggle. It refuses to move without a readable `moveImpulseMs`, and while a firmware autotrack on the same camera reports armed. Runs IN-PROCESS: it spawns nothing, carries no frames and issues a command every few seconds at most.",
|
|
214
238
|
"entry": "./dist/builtins/autotrack/index.js",
|
|
215
239
|
"capabilities": [
|
|
@@ -222,6 +246,8 @@
|
|
|
222
246
|
"id": "alert-center",
|
|
223
247
|
"category": "system",
|
|
224
248
|
"name": "Alert Center",
|
|
249
|
+
"icon": "assets/alert-center/icon.svg",
|
|
250
|
+
"color": "#d97706",
|
|
225
251
|
"entry": "./dist/builtins/alerts/index.js",
|
|
226
252
|
"capabilities": [
|
|
227
253
|
{
|
|
@@ -233,6 +259,8 @@
|
|
|
233
259
|
"id": "liveness-monitor",
|
|
234
260
|
"category": "system",
|
|
235
261
|
"name": "Liveness Monitor",
|
|
262
|
+
"icon": "assets/liveness-monitor/icon.svg",
|
|
263
|
+
"color": "#d97706",
|
|
236
264
|
"description": "Asserts that this node is actually working — it has devices, its cameras are online, and a camera that was recording has not silently stopped. Raises one persistent alert per fault and dismisses it on recovery. Exists because the hub once ran four hours with no devices and no recordings while every surface stayed quiet.",
|
|
237
265
|
"entry": "./dist/builtins/liveness-monitor/index.js",
|
|
238
266
|
"protected": true,
|
|
@@ -242,6 +270,8 @@
|
|
|
242
270
|
"id": "system-config",
|
|
243
271
|
"category": "system",
|
|
244
272
|
"name": "System Config",
|
|
273
|
+
"icon": "assets/system-config/icon.svg",
|
|
274
|
+
"color": "#4f46e5",
|
|
245
275
|
"description": "Exposes the cluster-wide yml-backed configuration sections (server, auth) via the three-level settings API. Hub-only.",
|
|
246
276
|
"entry": "./dist/builtins/system-config/index.js",
|
|
247
277
|
"protected": true
|
|
@@ -250,6 +280,8 @@
|
|
|
250
280
|
"id": "calendars",
|
|
251
281
|
"category": "system",
|
|
252
282
|
"name": "Calendars",
|
|
283
|
+
"icon": "assets/calendars/icon.svg",
|
|
284
|
+
"color": "#4f46e5",
|
|
253
285
|
"description": "Hub-only singleton that aggregates `calendar-source` providers (Home Assistant and future addon sources) and exposes listCalendars / listEvents / importFromHomeAssistant.",
|
|
254
286
|
"entry": "./dist/builtins/calendars/index.js",
|
|
255
287
|
"protected": true,
|
|
@@ -263,6 +295,8 @@
|
|
|
263
295
|
"id": "addon-pages-aggregator",
|
|
264
296
|
"category": "system",
|
|
265
297
|
"name": "Addon Pages Aggregator",
|
|
298
|
+
"icon": "assets/addon-pages-aggregator/icon.svg",
|
|
299
|
+
"color": "#4f46e5",
|
|
266
300
|
"description": "Hub-only singleton that aggregates `addon-pages-source` (collection) providers and emits the public `addon-pages.listPages` surface with versioned bundleUrls.",
|
|
267
301
|
"entry": "./dist/builtins/addon-pages-aggregator/index.js",
|
|
268
302
|
"protected": true,
|
|
@@ -276,6 +310,8 @@
|
|
|
276
310
|
"id": "addon-widgets-aggregator",
|
|
277
311
|
"category": "system",
|
|
278
312
|
"name": "Addon Widgets Aggregator",
|
|
313
|
+
"icon": "assets/addon-widgets-aggregator/icon.svg",
|
|
314
|
+
"color": "#4f46e5",
|
|
279
315
|
"description": "Hub-only singleton that aggregates `addon-widgets-source` (collection) providers and emits the public `addon-widgets.listWidgets` surface with versioned bundleUrls.",
|
|
280
316
|
"entry": "./dist/builtins/addon-widgets-aggregator/index.js",
|
|
281
317
|
"protected": true,
|
|
@@ -289,6 +325,8 @@
|
|
|
289
325
|
"id": "device-manager",
|
|
290
326
|
"category": "system",
|
|
291
327
|
"name": "Device Manager",
|
|
328
|
+
"icon": "assets/device-manager/icon.svg",
|
|
329
|
+
"color": "#4f46e5",
|
|
292
330
|
"description": "Hub-side singleton that unifies device persistence and management. Uses ctx.settings for storage — no direct SQLite access. Replaces device-persistence cap (Phase 2 will delete device-persistence once all consumers are migrated).",
|
|
293
331
|
"entry": "./dist/builtins/device-manager/index.js",
|
|
294
332
|
"protected": true,
|
|
@@ -308,6 +346,8 @@
|
|
|
308
346
|
"id": "local-auth",
|
|
309
347
|
"category": "system",
|
|
310
348
|
"name": "Local Auth",
|
|
349
|
+
"icon": "assets/local-auth/icon.svg",
|
|
350
|
+
"color": "#e11d48",
|
|
311
351
|
"description": "Built-in local username/password authentication. Implements the auth-provider capability as the default login path. OIDC and other providers can register alongside via the same capability.",
|
|
312
352
|
"entry": "./dist/builtins/local-auth/index.js",
|
|
313
353
|
"protected": true,
|
|
@@ -324,6 +364,8 @@
|
|
|
324
364
|
"id": "platform-probe",
|
|
325
365
|
"category": "system",
|
|
326
366
|
"name": "Platform Probe (Native)",
|
|
367
|
+
"icon": "assets/platform-probe/icon.svg",
|
|
368
|
+
"color": "#d97706",
|
|
327
369
|
"description": "Probes hardware and inference runtimes on the local node. Registers the `platform-probe` capability consumed by every inference addon on this node.",
|
|
328
370
|
"entry": "./dist/builtins/platform-probe/index.js",
|
|
329
371
|
"protected": true,
|
|
@@ -340,6 +382,8 @@
|
|
|
340
382
|
"id": "local-network",
|
|
341
383
|
"category": "system",
|
|
342
384
|
"name": "Local Network",
|
|
385
|
+
"icon": "assets/local-network/icon.svg",
|
|
386
|
+
"color": "#2563eb",
|
|
343
387
|
"description": "Enumerates the hub's network interfaces, classifies them (LAN / Wi-Fi / Docker / VPN / loopback), and ranks connection-endpoints for SDK clients. Hub-only — agents are not directly addressable.",
|
|
344
388
|
"entry": "./dist/builtins/local-network/index.js",
|
|
345
389
|
"protected": true,
|
|
@@ -353,6 +397,8 @@
|
|
|
353
397
|
"id": "remote-access-orchestrator",
|
|
354
398
|
"category": "system",
|
|
355
399
|
"name": "Remote Access Orchestrator",
|
|
400
|
+
"icon": "assets/remote-access-orchestrator/icon.svg",
|
|
401
|
+
"color": "#2563eb",
|
|
356
402
|
"description": "Hub-only singleton facade over the network-access collection (Cloudflare Tunnel, ngrok, …). Surfaces a unified provider list to the admin UI's Remote Access page.",
|
|
357
403
|
"entry": "./dist/builtins/remote-access-orchestrator/index.js",
|
|
358
404
|
"protected": true,
|
|
@@ -366,6 +412,8 @@
|
|
|
366
412
|
"id": "core-blocks",
|
|
367
413
|
"category": "system",
|
|
368
414
|
"name": "Core Blocks",
|
|
415
|
+
"icon": "assets/core-blocks/icon.svg",
|
|
416
|
+
"color": "#ea580c",
|
|
369
417
|
"description": "Store and type-check user-authored TypeScript that owns devices with an addon's own ctx. Admin-only: a block is a plugin with no review step, so it is process-isolated when it runs. This slice stores and serves; execution is the runner.",
|
|
370
418
|
"entry": "./dist/builtins/core-blocks/index.js",
|
|
371
419
|
"protected": true,
|
|
@@ -379,6 +427,8 @@
|
|
|
379
427
|
"id": "composer",
|
|
380
428
|
"category": "system",
|
|
381
429
|
"name": "Composer",
|
|
430
|
+
"icon": "assets/composer/icon.svg",
|
|
431
|
+
"color": "#ea580c",
|
|
382
432
|
"description": "Runs every DECLARATIVE composition (a core block whose source is `composition`): declares the composed device under the shared Blocks integration, registers its caps natively, and derives each field from other devices' state by `from` / expression — event-driven, no polling. Hub-only. Runs in its OWN runner (`execution.isolate` + `group: composer`): frame-free and low-crash, grouped with no device provider or data plane.",
|
|
383
433
|
"entry": "./dist/builtins/composer/index.js",
|
|
384
434
|
"protected": true,
|
|
@@ -398,9 +448,10 @@
|
|
|
398
448
|
"id": "camera-grid",
|
|
399
449
|
"category": "system",
|
|
400
450
|
"name": "Camera Grids",
|
|
451
|
+
"icon": "assets/camera-grid/icon.svg",
|
|
452
|
+
"color": "#7c3aed",
|
|
401
453
|
"description": "Composite cameras: several cameras composed into one fixed picture and emitted as an ordinary camera — recorded, played back and bound like any other. The composition runs only while something is consuming it; object detection is switched off on a new grid because the cameras it is composed from are already analysed. Runs in its OWN process (`execution.isolate`): it spawns an ffmpeg per live composition and relays its bytes, and neither belongs on the event loop that serves the API.",
|
|
402
454
|
"entry": "./dist/builtins/camera-grid/index.js",
|
|
403
|
-
"color": "#7c3aed",
|
|
404
455
|
"instanceMode": "unique",
|
|
405
456
|
"execution": {
|
|
406
457
|
"isolate": true,
|
|
@@ -419,7 +470,8 @@
|
|
|
419
470
|
]
|
|
420
471
|
},
|
|
421
472
|
"files": [
|
|
422
|
-
"dist"
|
|
473
|
+
"dist",
|
|
474
|
+
"assets"
|
|
423
475
|
],
|
|
424
476
|
"scripts": {
|
|
425
477
|
"copy:hook": "node -e \"const fs=require('fs'),p=require('path');const dst=p.join('dist');fs.mkdirSync(dst,{recursive:true});fs.copyFileSync(p.join('src','kernel','moleculer','framework-resolver-hook.mjs'),p.join(dst,'framework-resolver-hook.mjs'));console.log('copied framework-resolver-hook.mjs ->',dst)\"",
|