@camstack/server 1.2.592 → 1.2.594
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/dist/addon-root-inventory.js +11 -50
- package/dist/agent/addon-scan.js +6 -44
- package/dist/agent/agent-addon-runtime.js +3 -8
- package/dist/agent/agent-addon-updates.js +12 -52
- package/dist/agent/agent-cap-dispatch-service.js +3 -5
- package/dist/agent/agent-config.js +7 -42
- package/dist/agent/agent-deploy-swap.js +5 -41
- package/dist/agent/agent-group-runner.js +8 -47
- package/dist/agent/agent-http-auth.js +10 -22
- package/dist/agent/agent-http.js +69 -115
- package/dist/agent/agent-hub-addon-update.js +10 -16
- package/dist/agent/agent-hub-registration.js +4 -7
- package/dist/agent/agent-infra-capabilities.js +5 -9
- package/dist/agent/agent-json-file.js +5 -42
- package/dist/agent/agent-mesh-gate.js +5 -8
- package/dist/agent/agent-node-certificates.js +25 -28
- package/dist/agent/agent-pairing-local.js +10 -47
- package/dist/agent/agent-pairing-routes.js +16 -20
- package/dist/agent/agent-pairing-store.js +18 -58
- package/dist/agent/agent-reconnect.js +1 -4
- package/dist/agent/agent-service.js +42 -78
- package/dist/agent/agent-sniffing-listener.js +11 -48
- package/dist/agent/agent-undeploy.js +5 -41
- package/dist/agent/agent-update-routes.js +14 -19
- package/dist/agent/agent-update-service.js +38 -80
- package/dist/agent/apply-model-distribution.js +1 -4
- package/dist/agent/apply-stage-dev-uploads.js +6 -9
- package/dist/agent/derive-hub-url.js +3 -8
- package/dist/agent/fetch-bundle-from-hub.js +6 -9
- package/dist/agent/hubs-found.js +6 -43
- package/dist/agent/infra-boot-guard.js +1 -4
- package/dist/agent/infra-boot-plan.js +2 -6
- package/dist/agent/main.js +158 -186
- package/dist/agent/register-agent-cap-dispatch.js +3 -6
- package/dist/agent/serial-queue.js +2 -7
- package/dist/agent-status-page.js +1 -4
- package/dist/api/addon-upload.js +22 -61
- package/dist/api/agent-addon-delivery.js +6 -11
- package/dist/api/auth-whoami.js +1 -4
- package/dist/api/backup-download-pump.js +5 -9
- package/dist/api/backup-download.js +7 -10
- package/dist/api/core/addon-settings.router.js +16 -19
- package/dist/api/core/agent-pairing.router.js +76 -79
- package/dist/api/core/agents.router.js +21 -24
- package/dist/api/core/auth-admin-tokens.procedures.js +48 -52
- package/dist/api/core/auth-device-cert.procedures.js +62 -67
- package/dist/api/core/auth-limits.js +16 -25
- package/dist/api/core/auth-reauth.procedures.js +32 -37
- package/dist/api/core/auth-revoke-credentials.procedures.js +22 -26
- package/dist/api/core/auth-sessions.procedures.js +52 -56
- package/dist/api/core/auth.router.js +300 -304
- package/dist/api/core/cap-providers.js +74 -121
- package/dist/api/core/capabilities.router.js +34 -37
- package/dist/api/core/capability-preference-writes.js +10 -17
- package/dist/api/core/certificates.router.js +106 -109
- package/dist/api/core/cluster-nodes.router.js +15 -18
- package/dist/api/core/collection-preference.js +2 -6
- package/dist/api/core/event-bus-proxy.router.js +34 -37
- package/dist/api/core/failure-contributions.js +4 -8
- package/dist/api/core/hwaccel.router.js +17 -20
- package/dist/api/core/integration-secrets.js +8 -12
- package/dist/api/core/lifecycle-job-runner.js +13 -49
- package/dist/api/core/live-events.router.js +29 -32
- package/dist/api/core/load-contributions.js +4 -8
- package/dist/api/core/logging-settings.js +30 -43
- package/dist/api/core/logs.router.js +40 -43
- package/dist/api/core/notifications.router.js +15 -18
- package/dist/api/core/public-event-filter.js +4 -8
- package/dist/api/core/repl.router.js +18 -21
- package/dist/api/core/request-census-settings.js +11 -16
- package/dist/api/core/server-management.provider.js +1 -4
- package/dist/api/core/server-name.js +9 -17
- package/dist/api/core/site-location.js +16 -24
- package/dist/api/core/stream-probe.router.js +21 -24
- package/dist/api/core/system-events.router.js +23 -26
- package/dist/api/cors/cors-policy.js +20 -29
- package/dist/api/cors/register-cors-policy.js +9 -14
- package/dist/api/deploy-stage-registry.js +6 -10
- package/dist/api/dev-uploads-bundle.js +12 -50
- package/dist/api/health/adaptive-probe.routes.js +9 -13
- package/dist/api/health/health.routes.js +8 -13
- package/dist/api/hub-cluster-url.js +3 -9
- package/dist/api/model-distributor.js +12 -50
- package/dist/api/oauth2/consent-page.js +10 -13
- package/dist/api/oauth2/oauth2-routes.js +17 -25
- package/dist/api/oauth2/private-host.js +1 -4
- package/dist/api/server-upload-propagate.js +15 -51
- package/dist/api/server-upload.js +13 -50
- package/dist/api/sse-no-compression.js +1 -4
- package/dist/api/static/frame-policy.js +4 -9
- package/dist/api/static/precompressed-asset.js +15 -57
- package/dist/api/static/spa-mount.js +8 -47
- package/dist/api/static/spa-static.js +5 -12
- package/dist/api/tarball-manifest.js +7 -44
- package/dist/api/trpc/cap-mount-helpers.js +7 -12
- package/dist/api/trpc/cap-route-error-formatter.js +10 -13
- package/dist/api/trpc/cap-router-runtime.js +40 -51
- package/dist/api/trpc/client-ip.js +9 -20
- package/dist/api/trpc/core-cap-bridge.js +32 -42
- package/dist/api/trpc/device-collection-dispatch.js +23 -27
- package/dist/api/trpc/device-config-secret-redaction.js +24 -40
- package/dist/api/trpc/generated-cap-mounts.js +219 -221
- package/dist/api/trpc/generated-cap-routers.js +4878 -4726
- package/dist/api/trpc/http-request-census-hook.js +8 -11
- package/dist/api/trpc/http-request-census.js +34 -41
- package/dist/api/trpc/http-request-census.singleton.js +4 -8
- package/dist/api/trpc/localized-schema-paths.js +1 -4
- package/dist/api/trpc/principal-visibility.js +14 -22
- package/dist/api/trpc/remote-addon-update-grant.js +1 -4
- package/dist/api/trpc/scope-access.js +10 -15
- package/dist/api/trpc/server-provided-caps.js +3 -7
- package/dist/api/trpc/share-view-access.js +6 -14
- package/dist/api/trpc/trpc-error-device-tags.js +3 -6
- package/dist/api/trpc/trpc-error-principal.js +2 -6
- package/dist/api/trpc/trpc.context.js +20 -25
- package/dist/api/trpc/trpc.middleware.js +38 -46
- package/dist/api/trpc/trpc.router.js +58 -99
- package/dist/api/trpc/user-error.js +5 -8
- package/dist/api/trpc/ws-request-census.js +17 -24
- package/dist/api/trpc/ws-slow-consumer-guard.js +11 -16
- package/dist/api/upload-auth.js +5 -9
- package/dist/auth/addon-route-jwt-gate.js +4 -7
- package/dist/auth/addon-route-share-gate.js +7 -12
- package/dist/auth/app-confirm-page.js +17 -22
- package/dist/auth/app-confirm-routes.js +26 -31
- package/dist/auth/app-confirmations.js +7 -44
- package/dist/auth/app-page-shell.js +17 -30
- package/dist/auth/app-page-strings.js +11 -17
- package/dist/auth/app-passkey-page.js +16 -21
- package/dist/auth/app-passkey-routes.js +37 -41
- package/dist/auth/app-refused-route.js +13 -18
- package/dist/auth/auth-network-policy.js +11 -15
- package/dist/auth/auth-provider-gate.js +4 -9
- package/dist/auth/auth-rate-limit.js +3 -7
- package/dist/auth/client-address.js +6 -9
- package/dist/auth/device-enroll-proofs.js +6 -43
- package/dist/auth/external-link-intents.js +3 -7
- package/dist/auth/hub-sessions.js +6 -12
- package/dist/auth/native-link-completions.js +7 -11
- package/dist/auth/native-return.js +9 -13
- package/dist/auth/passkey-provider.js +26 -32
- package/dist/auth/second-factors.js +6 -10
- package/dist/auth/session-connections.js +6 -12
- package/dist/auth/session-cookie.js +12 -23
- package/dist/auth/session-lifetimes.js +8 -12
- package/dist/auth/session-mint.js +4 -11
- package/dist/auth/sso-finish-app.js +13 -16
- package/dist/auth/sso-finish-deps.js +21 -27
- package/dist/auth/sso-finish.js +28 -38
- package/dist/auth/sso-routes.js +22 -25
- package/dist/auth/used-bridge-ids.js +1 -5
- package/dist/boot/boot-config.js +16 -55
- package/dist/boot/init-sequence.js +1 -4
- package/dist/boot/integration-id-backfill.js +3 -8
- package/dist/boot/platform-keychain-key.js +5 -42
- package/dist/boot/post-boot.service.js +14 -18
- package/dist/boot/reconcile-lifecycle-jobs.js +3 -6
- package/dist/boot/retired-public-url-env.js +4 -8
- package/dist/bootstrap-packages.js +1 -4
- package/dist/closure-node-modules.js +2 -38
- package/dist/closure-patches/patch-reach.json +6 -2
- package/dist/core/addon/addon-call-gateway.js +1 -5
- package/dist/core/addon/addon-package.service.js +83 -123
- package/dist/core/addon/addon-process-view.js +2 -6
- package/dist/core/addon/addon-realign-plan.js +1 -4
- package/dist/core/addon/addon-registry.service.js +254 -197
- package/dist/core/addon/addon-row-manifest.js +1 -4
- package/dist/core/addon/addon-search.service.js +3 -7
- package/dist/core/addon/addon-settings-provider.js +1 -3
- package/dist/core/addon/addon-uninstall.js +4 -11
- package/dist/core/addon/addon.tokens.js +2 -5
- package/dist/core/addon/device-meta-mirror.js +8 -13
- package/dist/core/addon/forked-custom-actions.js +6 -11
- package/dist/core/addon/integration-visibility.js +3 -6
- package/dist/core/addon/materialize-route-path.js +1 -4
- package/dist/core/addon/package-dir-utils.js +8 -45
- package/dist/core/addon/prune-misplaced-addons.js +5 -43
- package/dist/core/addon/runner-convergence.js +1 -4
- package/dist/core/addon/runner-serialization.js +1 -4
- package/dist/core/addon/runner-spawn-fanout.js +3 -8
- package/dist/core/addon/settings-door-wiring.js +5 -8
- package/dist/core/addon/single-flight-refresh.js +1 -4
- package/dist/core/addon-bridge/addon-bridge.service.js +7 -44
- package/dist/core/addon-pages/addon-pages.service.js +3 -40
- package/dist/core/addon-widgets/addon-widgets.service.js +4 -42
- package/dist/core/agent/agent-addon-backfill.js +9 -17
- package/dist/core/agent/agent-delivery-ledger.js +3 -7
- package/dist/core/agent/agent-liveness-event.js +2 -6
- package/dist/core/agent/agent-pairing-http.js +41 -45
- package/dist/core/agent/agent-registry.service.js +53 -92
- package/dist/core/agent/cluster-node-history-mirror.js +3 -7
- package/dist/core/agent/cluster-node-history-store.js +113 -58
- package/dist/core/agent/hub-agent-pairing.js +1 -5
- package/dist/core/agent/node-certificates-client.js +3 -6
- package/dist/core/agent/node-directory.js +1 -4
- package/dist/core/app-links/well-known-app-links.js +2 -6
- package/dist/core/auth/auth.service.js +3 -8
- package/dist/core/auth/handoff-code.service.js +11 -49
- package/dist/core/auth/record-kinds.js +35 -0
- package/dist/core/auth/share-token.service.js +174 -122
- package/dist/core/capability/capability.service.js +1 -5
- package/dist/core/config/config.schema.js +1 -6
- package/dist/core/config/config.service.js +2 -6
- package/dist/core/events/event-bus.service.js +3 -7
- package/dist/core/feature/feature.service.js +2 -6
- package/dist/core/lifecycle/lifecycle-runner.singleton.js +5 -10
- package/dist/core/lifecycle/lifecycle-state-machine.js +1 -5
- package/dist/core/logging/log-ring-buffer.js +1 -5
- package/dist/core/logging/logging.service.js +5 -9
- package/dist/core/logging/scoped-logger.js +1 -5
- package/dist/core/moleculer/agent-readiness-pull.js +1 -4
- package/dist/core/moleculer/agent-registration-request.js +3 -7
- package/dist/core/moleculer/cap-call-fn.js +39 -5
- package/dist/core/moleculer/cap-route-authority.js +3 -8
- package/dist/core/moleculer/hub-mesh-guard.js +5 -9
- package/dist/core/moleculer/moleculer.service.js +108 -119
- package/dist/core/network/network-quality.service.js +2 -6
- package/dist/core/notification/notification-wrapper.service.js +3 -7
- package/dist/core/notification/toast-wrapper.service.js +3 -7
- package/dist/core/provider/provider.tokens.js +1 -4
- package/dist/core/repl/repl-engine.service.js +4 -8
- package/dist/core/runner-health/runner-boot-check.js +7 -15
- package/dist/core/runner-health/update-preflight.js +9 -14
- package/dist/core/server-update/server-update.service.js +12 -49
- package/dist/core/server-update/system-apply-closure-patches.js +6 -42
- package/dist/core/server-update/system-ensure-prebuilds.js +3 -6
- package/dist/core/server-update/system-exec-npm.js +2 -5
- package/dist/core/storage/fs-storage-backend.js +1 -5
- package/dist/core/storage/storage-location-manager.js +1 -5
- package/dist/core/storage/storage.service.js +2 -6
- package/dist/core/streaming/ffmpeg-stream-info.js +3 -8
- package/dist/core/streaming/stream-probe.service.js +12 -16
- package/dist/core/streaming/ttl-cache.js +1 -5
- package/dist/core/topology/topology-emitter.service.js +19 -23
- package/dist/core/update-availability-emitter.js +3 -7
- package/dist/core/update-availability-store.js +8 -45
- package/dist/core/updates/agent-installed-packages.js +5 -9
- package/dist/core/updates/restart-marker.js +3 -8
- package/dist/core/updates/update-check-scheduler.js +13 -18
- package/dist/core/updates/wrapper-update-checker.js +3 -7
- package/dist/first-boot-addon-plan.js +2 -6
- package/dist/framework-nodepath.js +2 -38
- package/dist/i18n/request-lang.js +7 -11
- package/dist/launcher.js +30 -65
- package/dist/lifecycle-journal-path.js +2 -38
- package/dist/main.js +287 -324
- package/dist/manual-boot.js +120 -157
- package/dist/node-role.js +1 -4
- package/dist/package-inventory.js +7 -48
- package/dist/pending-restore.js +7 -43
- package/dist/single-copy-cleanup-runner.js +9 -45
- package/dist/single-copy-cleanup.js +7 -15
- package/dist/sqlite-restore.js +9 -48
- package/dist/starter.js +4 -39
- package/dist/ui-serving/lazy-ui-serving.js +3 -39
- package/package.json +13 -13
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* One-time integration-id backfill for devices created before the
|
|
4
3
|
* device-manager forwarder started stamping `integrationId` (camera
|
|
@@ -7,11 +6,7 @@
|
|
|
7
6
|
* Multi-instance addons (e.g. Home Assistant with several brokers) are
|
|
8
7
|
* ambiguous on `addonId` alone and are skipped — they stamp going forward.
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
exports.planIntegrationIdBackfill = planIntegrationIdBackfill;
|
|
12
|
-
exports.planDeleteTimeStamps = planDeleteTimeStamps;
|
|
13
|
-
exports.runIntegrationIdBackfill = runIntegrationIdBackfill;
|
|
14
|
-
function planIntegrationIdBackfill(integrations, devices) {
|
|
9
|
+
export function planIntegrationIdBackfill(integrations, devices) {
|
|
15
10
|
const singleByAddon = new Map();
|
|
16
11
|
const ambiguous = new Set();
|
|
17
12
|
for (const integration of integrations) {
|
|
@@ -50,10 +45,10 @@ function planIntegrationIdBackfill(integrations, devices) {
|
|
|
50
45
|
* rule (only addons hosting exactly ONE integration are unambiguous) and
|
|
51
46
|
* filters to the integration being deleted so siblings are never touched.
|
|
52
47
|
*/
|
|
53
|
-
function planDeleteTimeStamps(integrationId, integrations, devices) {
|
|
48
|
+
export function planDeleteTimeStamps(integrationId, integrations, devices) {
|
|
54
49
|
return planIntegrationIdBackfill(integrations, devices).filter((stamp) => stamp.integrationId === integrationId);
|
|
55
50
|
}
|
|
56
|
-
async function runIntegrationIdBackfill(deps) {
|
|
51
|
+
export async function runIntegrationIdBackfill(deps) {
|
|
57
52
|
const [integrations, devices] = await Promise.all([deps.listIntegrations(), deps.listDevices()]);
|
|
58
53
|
const stamps = planIntegrationIdBackfill(integrations, devices);
|
|
59
54
|
let stamped = 0;
|
|
@@ -1,40 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.keychainKeyFdFromArgv = keychainKeyFdFromArgv;
|
|
37
|
-
exports.loadPlatformKeychainKey = loadPlatformKeychainKey;
|
|
38
1
|
/**
|
|
39
2
|
* Read the keychain master key a DESKTOP app handed this hub over an inherited
|
|
40
3
|
* pipe (D788): `--keychain-key-fd=<n>` names the descriptor, the parent wrote
|
|
@@ -45,8 +8,8 @@ exports.loadPlatformKeychainKey = loadPlatformKeychainKey;
|
|
|
45
8
|
* An env var was rejected: a child's environment is readable by every process
|
|
46
9
|
* of the same user and is inherited by every addon runner the hub forks.
|
|
47
10
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
11
|
+
import * as fs from 'node:fs';
|
|
12
|
+
import { setPlatformKeychainKey } from '@camstack/system';
|
|
50
13
|
const FD_ARG = '--keychain-key-fd=';
|
|
51
14
|
const KEY_BYTES = 32;
|
|
52
15
|
/** The OS keychain's name, for the Secrets page. */
|
|
@@ -61,14 +24,14 @@ function platformLabel(platform) {
|
|
|
61
24
|
}
|
|
62
25
|
}
|
|
63
26
|
/** Parse the descriptor number out of argv; `null` when not passed. */
|
|
64
|
-
function keychainKeyFdFromArgv(argv) {
|
|
27
|
+
export function keychainKeyFdFromArgv(argv) {
|
|
65
28
|
const arg = argv.find((a) => a.startsWith(FD_ARG));
|
|
66
29
|
if (arg === undefined)
|
|
67
30
|
return null;
|
|
68
31
|
const n = Number(arg.slice(FD_ARG.length));
|
|
69
32
|
return Number.isInteger(n) && n > 2 ? n : null;
|
|
70
33
|
}
|
|
71
|
-
function loadPlatformKeychainKey(argv = process.argv, readFd = (fd) => fs.readFileSync(fd, 'utf8'), closeFd = (fd) => fs.closeSync(fd)) {
|
|
34
|
+
export function loadPlatformKeychainKey(argv = process.argv, readFd = (fd) => fs.readFileSync(fd, 'utf8'), closeFd = (fd) => fs.closeSync(fd)) {
|
|
72
35
|
const fd = keychainKeyFdFromArgv(argv);
|
|
73
36
|
if (fd === null)
|
|
74
37
|
return { kind: 'none' };
|
|
@@ -77,7 +40,7 @@ function loadPlatformKeychainKey(argv = process.argv, readFd = (fd) => fs.readFi
|
|
|
77
40
|
if (key.length !== KEY_BYTES)
|
|
78
41
|
return { kind: 'failed', error: 'not 32 bytes of key material' };
|
|
79
42
|
const label = platformLabel(process.platform);
|
|
80
|
-
|
|
43
|
+
setPlatformKeychainKey({ label, key });
|
|
81
44
|
return { kind: 'loaded', label };
|
|
82
45
|
}
|
|
83
46
|
catch (err) {
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const types_1 = require("@camstack/types");
|
|
7
|
-
const reconcile_lifecycle_jobs_js_1 = require("./reconcile-lifecycle-jobs.js");
|
|
8
|
-
class PostBootService {
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { readPendingRestart, retirePreviousLocalCa } from '@camstack/system';
|
|
3
|
+
import { EventCategory } from '@camstack/types';
|
|
4
|
+
import { reconcileLifecycleJobsAtBoot } from './reconcile-lifecycle-jobs.js';
|
|
5
|
+
export class PostBootService {
|
|
9
6
|
eventBus;
|
|
10
7
|
logger;
|
|
11
8
|
/**
|
|
@@ -44,10 +41,10 @@ class PostBootService {
|
|
|
44
41
|
// orchestration shim needed here anymore.
|
|
45
42
|
// Emit system.boot event
|
|
46
43
|
this.eventBus.emit({
|
|
47
|
-
id:
|
|
44
|
+
id: randomUUID(),
|
|
48
45
|
timestamp: new Date(),
|
|
49
46
|
source: { type: 'core', id: 'system' },
|
|
50
|
-
category:
|
|
47
|
+
category: EventCategory.SystemBoot,
|
|
51
48
|
data: { port, host, trpcRegistered, dataPath },
|
|
52
49
|
});
|
|
53
50
|
// If the previous shutdown was driven by RestartCoordinator, emit a
|
|
@@ -61,7 +58,7 @@ class PostBootService {
|
|
|
61
58
|
this.emitTlsCertChangedIfReissued(tlsCert);
|
|
62
59
|
// The listener is up on the replacement CA's leaf: the retired unconstrained CA (and
|
|
63
60
|
// its key) kept on disk for the replacement window can go (D873).
|
|
64
|
-
if (
|
|
61
|
+
if (retirePreviousLocalCa(dataPath)) {
|
|
65
62
|
this.logger.warn('Retired the previous local CA that had no name constraints (D873)');
|
|
66
63
|
}
|
|
67
64
|
// Re-drive every non-terminal lifecycle job (addon task phases) from its
|
|
@@ -71,7 +68,7 @@ class PostBootService {
|
|
|
71
68
|
await this.reconcileLifecycleJobsIfAny();
|
|
72
69
|
}
|
|
73
70
|
async reconcileLifecycleJobsIfAny() {
|
|
74
|
-
const { resumed, failed } = await
|
|
71
|
+
const { resumed, failed } = await reconcileLifecycleJobsAtBoot();
|
|
75
72
|
if (resumed + failed > 0) {
|
|
76
73
|
this.logger.info('Lifecycle jobs reconciled at boot', { meta: { resumed, failed } });
|
|
77
74
|
}
|
|
@@ -90,15 +87,15 @@ class PostBootService {
|
|
|
90
87
|
};
|
|
91
88
|
this.logger.warn('TLS certificate reissued', { meta: payload });
|
|
92
89
|
this.eventBus.emit({
|
|
93
|
-
id:
|
|
90
|
+
id: randomUUID(),
|
|
94
91
|
timestamp: new Date(),
|
|
95
92
|
source: { type: 'core', id: 'system' },
|
|
96
|
-
category:
|
|
93
|
+
category: EventCategory.SystemTlsCertChanged,
|
|
97
94
|
data: payload,
|
|
98
95
|
});
|
|
99
96
|
}
|
|
100
97
|
emitRestartCompletedIfPending(dataDir) {
|
|
101
|
-
const marker =
|
|
98
|
+
const marker = readPendingRestart(dataDir);
|
|
102
99
|
if (marker === null)
|
|
103
100
|
return;
|
|
104
101
|
const payload = {
|
|
@@ -116,12 +113,11 @@ class PostBootService {
|
|
|
116
113
|
expiresAt: Date.now() + PostBootService.LAST_RESTART_RETENTION_MS,
|
|
117
114
|
};
|
|
118
115
|
this.eventBus.emit({
|
|
119
|
-
id:
|
|
116
|
+
id: randomUUID(),
|
|
120
117
|
timestamp: new Date(),
|
|
121
118
|
source: { type: 'core', id: 'system' },
|
|
122
|
-
category:
|
|
119
|
+
category: EventCategory.SystemRestartCompleted,
|
|
123
120
|
data: payload,
|
|
124
121
|
});
|
|
125
122
|
}
|
|
126
123
|
}
|
|
127
|
-
exports.PostBootService = PostBootService;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Boot-time §10 reconcile of all non-terminal lifecycle jobs.
|
|
4
3
|
*
|
|
@@ -16,12 +15,10 @@
|
|
|
16
15
|
* framework updates ship via `applyServerUpdate`); any stray non-terminal
|
|
17
16
|
* framework task is marked `skipped` during reconcile so the job can finalize.
|
|
18
17
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const lifecycle_runner_singleton_js_1 = require("../core/lifecycle/lifecycle-runner.singleton.js");
|
|
22
|
-
async function reconcileLifecycleJobsAtBoot() {
|
|
18
|
+
import { getLifecycleRunner } from '../core/lifecycle/lifecycle-runner.singleton.js';
|
|
19
|
+
export async function reconcileLifecycleJobsAtBoot() {
|
|
23
20
|
try {
|
|
24
|
-
return await
|
|
21
|
+
return await getLifecycleRunner().reconcile();
|
|
25
22
|
}
|
|
26
23
|
catch {
|
|
27
24
|
// Never crash the post-boot path.
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* The hub's address is not an environment variable.
|
|
4
3
|
*
|
|
@@ -15,11 +14,8 @@
|
|
|
15
14
|
* ignored, and the variable is removed from this process's environment before
|
|
16
15
|
* any addon runner is forked — so no child can grow a new reader of it.
|
|
17
16
|
*/
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.RETIRED_HUB_ADDRESS_ENVS = void 0;
|
|
20
|
-
exports.dropRetiredHubAddressEnv = dropRetiredHubAddressEnv;
|
|
21
17
|
/** Variables that used to name the hub's address; all ignored now. */
|
|
22
|
-
|
|
18
|
+
export const RETIRED_HUB_ADDRESS_ENVS = [
|
|
23
19
|
'CAMSTACK_HUB_PUBLIC_URL',
|
|
24
20
|
'CAMSTACK_PUBLIC_ORIGIN',
|
|
25
21
|
];
|
|
@@ -27,12 +23,12 @@ exports.RETIRED_HUB_ADDRESS_ENVS = [
|
|
|
27
23
|
* Remove every retired address variable from `env` and return the warning to
|
|
28
24
|
* log once a logger exists, or `undefined` when none was set.
|
|
29
25
|
*/
|
|
30
|
-
function dropRetiredHubAddressEnv(env) {
|
|
31
|
-
const present =
|
|
26
|
+
export function dropRetiredHubAddressEnv(env) {
|
|
27
|
+
const present = RETIRED_HUB_ADDRESS_ENVS.filter((name) => {
|
|
32
28
|
const value = env[name];
|
|
33
29
|
return value !== undefined && value.trim() !== '';
|
|
34
30
|
});
|
|
35
|
-
for (const name of
|
|
31
|
+
for (const name of RETIRED_HUB_ADDRESS_ENVS)
|
|
36
32
|
delete env[name];
|
|
37
33
|
if (present.length === 0)
|
|
38
34
|
return undefined;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Hub bootstrap package selection.
|
|
4
3
|
*
|
|
@@ -16,8 +15,6 @@
|
|
|
16
15
|
* copy honoured `camstack.agentOnlyBootstrapAddons`, this one did not, and the
|
|
17
16
|
* hub is the side that actually boots through here.
|
|
18
17
|
*/
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.selectHubBootstrapPackages = selectHubBootstrapPackages;
|
|
21
18
|
/**
|
|
22
19
|
* The packages a HUB-role node bootstrap-installs: every `@camstack/addon-*`
|
|
23
20
|
* runtime dependency plus `@camstack/system` (the carrier of the required
|
|
@@ -29,7 +26,7 @@ exports.selectHubBootstrapPackages = selectHubBootstrapPackages;
|
|
|
29
26
|
* them for agent-role nodes to seed, but they are `execution.placement:
|
|
30
27
|
* 'agent-only'` and the hub must never install them.
|
|
31
28
|
*/
|
|
32
|
-
function selectHubBootstrapPackages(pkg) {
|
|
29
|
+
export function selectHubBootstrapPackages(pkg) {
|
|
33
30
|
const agentOnly = new Set(pkg.camstack?.agentOnlyBootstrapAddons ?? []);
|
|
34
31
|
return Object.keys(pkg.dependencies ?? {}).filter((name) => !agentOnly.has(name) && (name.startsWith('@camstack/addon-') || name === '@camstack/system'));
|
|
35
32
|
}
|
|
@@ -1,39 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.resolveClosureNodeModules = resolveClosureNodeModules;
|
|
37
1
|
/**
|
|
38
2
|
* The directory holding the closure's own copy of each `@camstack` package.
|
|
39
3
|
*
|
|
@@ -51,9 +15,9 @@ exports.resolveClosureNodeModules = resolveClosureNodeModules;
|
|
|
51
15
|
* behind. A wrong path that answers "nothing" is indistinguishable from a
|
|
52
16
|
* closure that carries nothing, which is why it survived.
|
|
53
17
|
*/
|
|
54
|
-
|
|
18
|
+
import * as path from 'node:path';
|
|
55
19
|
/** @param serverDistDir typically `__dirname` of the launcher. */
|
|
56
|
-
function resolveClosureNodeModules(serverDistDir) {
|
|
20
|
+
export function resolveClosureNodeModules(serverDistDir) {
|
|
57
21
|
// dist → server → @camstack → node_modules
|
|
58
22
|
return path.resolve(serverDistDir, '..', '..', '..');
|
|
59
23
|
}
|
|
@@ -61,8 +61,12 @@
|
|
|
61
61
|
],
|
|
62
62
|
"lib/webrtc/src/media/rtpSender.js": ["RTP_HISTORY_SIZE = 4096"],
|
|
63
63
|
"lib/rtp/src/rtp/rtp.js": ["camstack: D868 — SRTP output arena"],
|
|
64
|
-
"lib/rtp/src/srtp/cipher/ctr.js": [
|
|
65
|
-
|
|
64
|
+
"lib/rtp/src/srtp/cipher/ctr.js": [
|
|
65
|
+
"camstack: D868 — header, ciphertext and tag in ONE arena slice"
|
|
66
|
+
],
|
|
67
|
+
"lib/rtp/src/srtp/cipher/gcm.js": [
|
|
68
|
+
"camstack: D868 — header, ciphertext and tag in ONE arena slice"
|
|
69
|
+
]
|
|
66
70
|
},
|
|
67
71
|
"declaredBy": [
|
|
68
72
|
"packages/addon-pipeline",
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AddonCallGateway = void 0;
|
|
4
1
|
const REMOTE_TIMEOUT_MS = 10_000;
|
|
5
|
-
class AddonCallGateway {
|
|
2
|
+
export class AddonCallGateway {
|
|
6
3
|
deps;
|
|
7
4
|
constructor(deps) {
|
|
8
5
|
this.deps = deps;
|
|
@@ -103,4 +100,3 @@ class AddonCallGateway {
|
|
|
103
100
|
return anyWithName?.nodeID ?? null;
|
|
104
101
|
}
|
|
105
102
|
}
|
|
106
|
-
exports.AddonCallGateway = AddonCallGateway;
|