@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": [
@@ -146,6 +146,7 @@ const healthMonitor = new health_monitor_1.HealthMonitor({
146
146
  "--socket",
147
147
  socketPath,
148
148
  ],
149
+ ignoreOverviewHealth: true,
149
150
  })),
150
151
  ],
151
152
  alertSink: (message) => {
@@ -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: { agent: options.agent, command, commandArgs, timeoutMs, requiredSenses },
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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.542",
3
+ "version": "0.1.0-alpha.543",
4
4
  "main": "dist/heart/daemon/ouro-entry.js",
5
5
  "bin": {
6
6
  "cli": "dist/heart/daemon/ouro-bot-entry.js",