@ouro.bot/cli 0.1.0-alpha.542 → 0.1.0-alpha.543
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/changelog.json
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_note": "This changelog is maintained as part of the PR/version-bump workflow. Agent-curated, not auto-generated. Agents read this file directly via read_file to understand what changed between versions.",
|
|
3
3
|
"versions": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.1.0-alpha.543",
|
|
6
|
+
"changes": [
|
|
7
|
+
"Daemon health-monitor MCP canaries now ignore the daemon's aggregate overview health while still validating MCP transport, daemon liveness, version alignment, and required sense health, preventing the canary's previous failure from keeping the daemon in a self-reinforcing warning state."
|
|
8
|
+
]
|
|
9
|
+
},
|
|
4
10
|
{
|
|
5
11
|
"version": "0.1.0-alpha.542",
|
|
6
12
|
"changes": [
|
|
@@ -97,12 +97,12 @@ function parseMcpStatusText(text) {
|
|
|
97
97
|
}
|
|
98
98
|
return { daemon, senses, raw: text };
|
|
99
99
|
}
|
|
100
|
-
function validateMcpStatus(parsed, requiredSenses) {
|
|
100
|
+
function validateMcpStatus(parsed, requiredSenses, options = {}) {
|
|
101
101
|
const failures = [];
|
|
102
102
|
if (parsed.daemon.daemon !== "running") {
|
|
103
103
|
failures.push(`daemon=${parsed.daemon.daemon ?? "missing"}`);
|
|
104
104
|
}
|
|
105
|
-
if (parsed.daemon.health !== "ok") {
|
|
105
|
+
if (!options.ignoreOverviewHealth && parsed.daemon.health !== "ok") {
|
|
106
106
|
failures.push(`health=${parsed.daemon.health ?? "missing"}`);
|
|
107
107
|
}
|
|
108
108
|
if (parsed.daemon.daemonVersion &&
|
|
@@ -131,7 +131,7 @@ function validateMcpStatus(parsed, requiredSenses) {
|
|
|
131
131
|
.map((row) => `${row.name}:${row.status}`)
|
|
132
132
|
.join(",");
|
|
133
133
|
const summary = failures.length === 0
|
|
134
|
-
? `mcp canary ok: daemon=${parsed.daemon.daemon} health=${parsed.daemon.health} senses=${senseSummary}`
|
|
134
|
+
? `mcp canary ok: daemon=${parsed.daemon.daemon} health=${parsed.daemon.health}${options.ignoreOverviewHealth ? " (overview ignored)" : ""} senses=${senseSummary}`
|
|
135
135
|
: `mcp canary failed: ${failures.join("; ")}`;
|
|
136
136
|
return {
|
|
137
137
|
ok: failures.length === 0,
|
|
@@ -151,7 +151,14 @@ async function runMcpStatusCanary(options) {
|
|
|
151
151
|
component: "daemon",
|
|
152
152
|
event: "daemon.mcp_canary_start",
|
|
153
153
|
message: "starting MCP status canary",
|
|
154
|
-
meta: {
|
|
154
|
+
meta: {
|
|
155
|
+
agent: options.agent,
|
|
156
|
+
command,
|
|
157
|
+
commandArgs,
|
|
158
|
+
timeoutMs,
|
|
159
|
+
requiredSenses,
|
|
160
|
+
ignoreOverviewHealth: options.ignoreOverviewHealth === true,
|
|
161
|
+
},
|
|
155
162
|
});
|
|
156
163
|
const child = spawnImpl(command, commandArgs, { stdio: ["pipe", "pipe", "pipe"] });
|
|
157
164
|
let buffer = "";
|
|
@@ -244,7 +251,9 @@ async function runMcpStatusCanary(options) {
|
|
|
244
251
|
throw new Error(responseText(statusResponse));
|
|
245
252
|
}
|
|
246
253
|
const parsed = parseMcpStatusText(responseText(statusResponse));
|
|
247
|
-
const canary = validateMcpStatus(parsed, requiredSenses
|
|
254
|
+
const canary = validateMcpStatus(parsed, requiredSenses, {
|
|
255
|
+
ignoreOverviewHealth: options.ignoreOverviewHealth,
|
|
256
|
+
});
|
|
248
257
|
(0, runtime_1.emitNervesEvent)({
|
|
249
258
|
component: "daemon",
|
|
250
259
|
event: canary.ok ? "daemon.mcp_canary_end" : "daemon.mcp_canary_error",
|