@ouro.bot/cli 0.1.0-alpha.370 → 0.1.0-alpha.371

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,14 @@
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.371",
6
+ "changes": [
7
+ "`ouro up` now rechecks selected provider health after a deterministic repair actually runs, so a successful vault unlock or auth repair is followed by either a recovery confirmation or the remaining degraded details.",
8
+ "Post-repair provider checks target the originally repairable degraded agents directly, avoiding false recovery when discovery output is sparse.",
9
+ "`@ouro.bot/cli` and the `ouro.bot` wrapper are version-synced for the post-repair provider check release."
10
+ ]
11
+ },
4
12
  {
5
13
  "version": "0.1.0-alpha.370",
6
14
  "changes": [
@@ -94,11 +94,11 @@ const DEFAULT_DAEMON_STARTUP_POLL_INTERVAL_MS = 500;
94
94
  const DEFAULT_DAEMON_STARTUP_STABILITY_WINDOW_MS = 1_500;
95
95
  const DEFAULT_DAEMON_STARTUP_RETRY_LIMIT = 1;
96
96
  const DEFAULT_DAEMON_STARTUP_LOG_LINES = 10;
97
- async function checkAlreadyRunningAgentProviders(deps) {
98
- const agents = await Promise.resolve(deps.listDiscoveredAgents ? deps.listDiscoveredAgents() : (0, cli_defaults_1.defaultListDiscoveredAgents)());
97
+ async function checkAgentProviders(deps, agentsOverride) {
98
+ const agents = agentsOverride ?? await Promise.resolve(deps.listDiscoveredAgents ? deps.listDiscoveredAgents() : (0, cli_defaults_1.defaultListDiscoveredAgents)());
99
99
  const bundlesRoot = deps.bundlesRoot ?? (0, identity_1.getAgentBundlesRoot)();
100
100
  const degraded = [];
101
- for (const agent of agents) {
101
+ for (const agent of [...new Set(agents)]) {
102
102
  try {
103
103
  const result = await (0, agent_config_check_1.checkAgentConfigWithProviderHealth)(agent, bundlesRoot);
104
104
  if (result.ok)
@@ -132,6 +132,33 @@ async function checkAlreadyRunningAgentProviders(deps) {
132
132
  }
133
133
  return degraded;
134
134
  }
135
+ async function checkAlreadyRunningAgentProviders(deps) {
136
+ return checkAgentProviders(deps);
137
+ }
138
+ async function reportPostRepairProviderHealth(deps, repairedAgents) {
139
+ const remainingDegraded = await checkAgentProviders(deps, repairedAgents);
140
+ (0, runtime_1.emitNervesEvent)({
141
+ level: remainingDegraded.length > 0 ? "warn" : "info",
142
+ component: "daemon",
143
+ event: "daemon.post_repair_provider_check",
144
+ message: remainingDegraded.length > 0
145
+ ? "post-repair provider health check still degraded"
146
+ : "post-repair provider health check recovered",
147
+ meta: { degradedCount: remainingDegraded.length, repairedAgents },
148
+ });
149
+ if (remainingDegraded.length === 0) {
150
+ deps.writeStdout("provider checks recovered after repair");
151
+ return;
152
+ }
153
+ deps.writeStdout("provider checks still degraded after repair:");
154
+ for (const d of remainingDegraded) {
155
+ deps.writeStdout(` ${d.agent}: ${d.errorReason}`);
156
+ if (d.fixHint) {
157
+ deps.writeStdout(` fix: ${d.fixHint}`);
158
+ }
159
+ }
160
+ deps.writeStdout("run `ouro up` again after applying the remaining fixes.");
161
+ }
135
162
  async function checkProviderHealthBeforeChat(agentName, deps) {
136
163
  const bundlesRoot = deps.bundlesRoot ?? (0, identity_1.getAgentBundlesRoot)();
137
164
  const result = await (0, agent_config_check_1.checkAgentConfigWithProviderHealth)(agentName, bundlesRoot);
@@ -1777,7 +1804,7 @@ async function runOuroCli(args, deps = (0, cli_defaults_1.createDefaultOuroCliDe
1777
1804
  });
1778
1805
  }
1779
1806
  else {
1780
- await (0, agentic_repair_1.runAgenticRepair)(daemonResult.stability.degraded, {
1807
+ const repairResult = await (0, agentic_repair_1.runAgenticRepair)(daemonResult.stability.degraded, {
1781
1808
  /* v8 ignore start -- production provider discovery wiring @preserve */
1782
1809
  discoverWorkingProvider: async (agentName) => {
1783
1810
  const { discoverWorkingProvider: discover } = await Promise.resolve().then(() => __importStar(require("./provider-discovery")));
@@ -1819,6 +1846,12 @@ async function runOuroCli(args, deps = (0, cli_defaults_1.createDefaultOuroCliDe
1819
1846
  await executeVaultUnlock({ kind: "vault.unlock", agent }, deps);
1820
1847
  },
1821
1848
  });
1849
+ if (repairResult.repairsAttempted) {
1850
+ const repairedAgents = daemonResult.stability.degraded
1851
+ .filter(interactive_repair_1.hasRunnableInteractiveRepair)
1852
+ .map((entry) => entry.agent);
1853
+ await reportPostRepairProviderHealth(deps, repairedAgents);
1854
+ }
1822
1855
  }
1823
1856
  }
1824
1857
  // Persist boot startup AFTER daemon is running — bootstrap is safe now
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.370",
3
+ "version": "0.1.0-alpha.371",
4
4
  "main": "dist/heart/daemon/ouro-entry.js",
5
5
  "bin": {
6
6
  "cli": "dist/heart/daemon/ouro-bot-entry.js",