camstack 1.2.162 → 1.2.164
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/cli.js
CHANGED
|
@@ -38,7 +38,7 @@ async function runServe(args) {
|
|
|
38
38
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
39
39
|
};
|
|
40
40
|
Object.assign(process.env, buildServeEnv(opts));
|
|
41
|
-
await import("./launcher-
|
|
41
|
+
await import("./launcher-BMA4X5ZT.js");
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/commands/agent.ts
|
|
@@ -83,7 +83,7 @@ async function runAgent(args) {
|
|
|
83
83
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
84
84
|
};
|
|
85
85
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
86
|
-
await import("./launcher-
|
|
86
|
+
await import("./launcher-BMA4X5ZT.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -431585,6 +431585,24 @@ var require_runner_convergence = __commonJS({
|
|
|
431585
431585
|
}
|
|
431586
431586
|
});
|
|
431587
431587
|
|
|
431588
|
+
// ../../server/backend/dist/core/addon/runner-serialization.js
|
|
431589
|
+
var require_runner_serialization = __commonJS({
|
|
431590
|
+
"../../server/backend/dist/core/addon/runner-serialization.js"(exports) {
|
|
431591
|
+
"use strict";
|
|
431592
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
431593
|
+
exports.createRunnerSerializer = createRunnerSerializer;
|
|
431594
|
+
function createRunnerSerializer() {
|
|
431595
|
+
const tails = /* @__PURE__ */ new Map();
|
|
431596
|
+
return (runnerId, converge) => {
|
|
431597
|
+
const previous = tails.get(runnerId) ?? Promise.resolve();
|
|
431598
|
+
const result = previous.then(converge, converge);
|
|
431599
|
+
tails.set(runnerId, result.then(() => void 0, () => void 0));
|
|
431600
|
+
return result;
|
|
431601
|
+
};
|
|
431602
|
+
}
|
|
431603
|
+
}
|
|
431604
|
+
});
|
|
431605
|
+
|
|
431588
431606
|
// ../../server/backend/dist/core/addon/runner-spawn-fanout.js
|
|
431589
431607
|
var require_runner_spawn_fanout = __commonJS({
|
|
431590
431608
|
"../../server/backend/dist/core/addon/runner-spawn-fanout.js"(exports) {
|
|
@@ -431692,6 +431710,7 @@ var require_addon_registry_service = __commonJS({
|
|
|
431692
431710
|
var forked_custom_actions_js_1 = require_forked_custom_actions();
|
|
431693
431711
|
var prune_misplaced_addons_js_1 = require_prune_misplaced_addons();
|
|
431694
431712
|
var runner_convergence_1 = require_runner_convergence();
|
|
431713
|
+
var runner_serialization_1 = require_runner_serialization();
|
|
431695
431714
|
var runner_spawn_fanout_js_1 = require_runner_spawn_fanout();
|
|
431696
431715
|
function shouldEvictMissingOnDisk(entry, id, onDiskIds) {
|
|
431697
431716
|
return entry.source === "installed" && entry.packageName !== "@camstack/system" && !onDiskIds.has(id);
|
|
@@ -434003,9 +434022,16 @@ var require_addon_registry_service = __commonJS({
|
|
|
434003
434022
|
throw new Error(`initializeAddonGroup("${runnerId}") requires at least one addon`);
|
|
434004
434023
|
}
|
|
434005
434024
|
try {
|
|
434006
|
-
await this.
|
|
434007
|
-
|
|
434008
|
-
|
|
434025
|
+
await this.serializeRunner(runnerId, async () => {
|
|
434026
|
+
try {
|
|
434027
|
+
await this.broker.call("$process.spawnRunner", { runnerId, addons });
|
|
434028
|
+
} catch (err) {
|
|
434029
|
+
if (!/already running/i.test((0, types_1.errMsg)(err)))
|
|
434030
|
+
throw err;
|
|
434031
|
+
this.logger.info("initializeAddonGroup: runner already running \u2014 nothing to spawn", {
|
|
434032
|
+
meta: { runnerId, addonIds: addons.map((a) => a.addonId) }
|
|
434033
|
+
});
|
|
434034
|
+
}
|
|
434009
434035
|
});
|
|
434010
434036
|
} catch (err) {
|
|
434011
434037
|
throw new Error(`Failed to spawn runner "${runnerId}" (${addons.length} addons): ${(0, types_1.errMsg)(err)}`, { cause: err });
|
|
@@ -434058,6 +434084,12 @@ var require_addon_registry_service = __commonJS({
|
|
|
434058
434084
|
* a group respawns the ENTIRE group (they share a process): the operator's
|
|
434059
434085
|
* "update one → respawn the whole group" invariant.
|
|
434060
434086
|
*/
|
|
434087
|
+
/**
|
|
434088
|
+
* One converge at a time per runner. See `runner-serialization.ts` for the
|
|
434089
|
+
* two live episodes this closes and why the lock inside `process-service`
|
|
434090
|
+
* could not.
|
|
434091
|
+
*/
|
|
434092
|
+
serializeRunner = (0, runner_serialization_1.createRunnerSerializer)();
|
|
434061
434093
|
async ensureForkedRunner(addonId, opts) {
|
|
434062
434094
|
const entry = this.addonEntries.get(addonId);
|
|
434063
434095
|
if (!entry?.declaration || !entry.addonDir) {
|
|
@@ -434068,33 +434100,35 @@ var require_addon_registry_service = __commonJS({
|
|
|
434068
434100
|
{ addonId, addonDir: entry.addonDir }
|
|
434069
434101
|
];
|
|
434070
434102
|
const effectiveRestart = opts.restart && roster.length > 1 && Date.now() - (this.recentGroupRespawns.get(runnerId) ?? 0) < GROUP_RESPAWN_COALESCE_MS ? false : opts.restart;
|
|
434071
|
-
|
|
434072
|
-
|
|
434073
|
-
|
|
434074
|
-
|
|
434075
|
-
this.
|
|
434076
|
-
|
|
434103
|
+
return this.serializeRunner(runnerId, async () => {
|
|
434104
|
+
const running = await this.listRunnerProcesses();
|
|
434105
|
+
const plan = (0, runner_convergence_1.planRunnerConvergence)(runnerId, roster.map((r) => r.addonId), running, { restart: effectiveRestart });
|
|
434106
|
+
for (const name of plan.stop) {
|
|
434107
|
+
await this.broker.call("$process.stop", { name }).catch((err) => {
|
|
434108
|
+
this.logger.warn("ensureForkedRunner: failed to stop stale runner (continuing)", {
|
|
434109
|
+
meta: { runnerId, stale: name, error: (0, types_1.errMsg)(err) }
|
|
434110
|
+
});
|
|
434077
434111
|
});
|
|
434078
|
-
});
|
|
434079
|
-
}
|
|
434080
|
-
if (plan.action === "spawn") {
|
|
434081
|
-
await this.broker.call("$process.spawnRunner", { runnerId, addons: roster }).catch((err) => {
|
|
434082
|
-
if (!/already running/i.test((0, types_1.errMsg)(err)))
|
|
434083
|
-
throw err;
|
|
434084
|
-
});
|
|
434085
|
-
this.recentGroupRespawns.set(runnerId, Date.now());
|
|
434086
|
-
} else if (plan.action === "restart") {
|
|
434087
|
-
const res = await this.broker.call("$process.restart", { name: runnerId });
|
|
434088
|
-
if (!res.success) {
|
|
434089
|
-
throw new Error(`Process restart failed: ${res.reason ?? "unknown"}`);
|
|
434090
434112
|
}
|
|
434091
|
-
|
|
434092
|
-
|
|
434093
|
-
|
|
434094
|
-
|
|
434095
|
-
|
|
434096
|
-
|
|
434097
|
-
|
|
434113
|
+
if (plan.action === "spawn") {
|
|
434114
|
+
await this.broker.call("$process.spawnRunner", { runnerId, addons: roster }).catch((err) => {
|
|
434115
|
+
if (!/already running/i.test((0, types_1.errMsg)(err)))
|
|
434116
|
+
throw err;
|
|
434117
|
+
});
|
|
434118
|
+
this.recentGroupRespawns.set(runnerId, Date.now());
|
|
434119
|
+
} else if (plan.action === "restart") {
|
|
434120
|
+
const res = await this.broker.call("$process.restart", { name: runnerId });
|
|
434121
|
+
if (!res.success) {
|
|
434122
|
+
throw new Error(`Process restart failed: ${res.reason ?? "unknown"}`);
|
|
434123
|
+
}
|
|
434124
|
+
this.recentGroupRespawns.set(runnerId, Date.now());
|
|
434125
|
+
}
|
|
434126
|
+
for (const { addonId: memberId } of roster) {
|
|
434127
|
+
const memberEntry = this.addonEntries.get(memberId);
|
|
434128
|
+
if (memberEntry)
|
|
434129
|
+
memberEntry.initialized = true;
|
|
434130
|
+
}
|
|
434131
|
+
});
|
|
434098
434132
|
}
|
|
434099
434133
|
/**
|
|
434100
434134
|
* Apply the custom-action catalogs a UDS child DESCRIBED in its register
|