@ouro.bot/cli 0.1.0-alpha.414 → 0.1.0-alpha.416
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,21 @@
|
|
|
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.416",
|
|
6
|
+
"changes": [
|
|
7
|
+
"Post-repair provider health re-check in `ouro up` now shows a dedicated progress phase (`post-repair check`) with per-agent detail instead of running silently after interactive repair completes.",
|
|
8
|
+
"`@ouro.bot/cli` and the `ouro.bot` wrapper are version-synced for the post-repair progress release."
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"version": "0.1.0-alpha.415",
|
|
13
|
+
"changes": [
|
|
14
|
+
"Transient vault errors (timeout, ECONNREFUSED, socket hang up) are now classified separately from vault-locked errors in `ouro up` provider checks -- operators see retry guidance instead of misleading unlock/replace/recover instructions.",
|
|
15
|
+
"Fix text across vault unlock, vault create, missing credential, and failed ping results tightened to concise single-line instructions.",
|
|
16
|
+
"`@ouro.bot/cli` and the `ouro.bot` wrapper are version-synced for the error classification release."
|
|
17
|
+
]
|
|
18
|
+
},
|
|
4
19
|
{
|
|
5
20
|
"version": "0.1.0-alpha.414",
|
|
6
21
|
"changes": [
|
|
@@ -233,7 +233,7 @@ function missingCredentialResult(agentName, lane, provider, model, credentialPat
|
|
|
233
233
|
return {
|
|
234
234
|
ok: false,
|
|
235
235
|
error: `${lane} provider ${provider} model ${model} has no credentials in ${agentName}'s vault at ${credentialPath}`,
|
|
236
|
-
fix: `Run 'ouro auth --agent ${agentName} --provider ${provider}' to authenticate
|
|
236
|
+
fix: `Run 'ouro auth --agent ${agentName} --provider ${provider}' to authenticate.`,
|
|
237
237
|
issue: (0, readiness_repair_1.providerCredentialMissingIssue)({
|
|
238
238
|
agentName,
|
|
239
239
|
lane,
|
|
@@ -243,7 +243,21 @@ function missingCredentialResult(agentName, lane, provider, model, credentialPat
|
|
|
243
243
|
}),
|
|
244
244
|
};
|
|
245
245
|
}
|
|
246
|
+
function isTransientVaultError(error) {
|
|
247
|
+
const normalized = error.toLowerCase();
|
|
248
|
+
return (normalized.includes("timed out") ||
|
|
249
|
+
normalized.includes("econnrefused") ||
|
|
250
|
+
normalized.includes("socket hang up") ||
|
|
251
|
+
normalized.includes("etimedout"));
|
|
252
|
+
}
|
|
246
253
|
function invalidPoolResult(agentName, lane, provider, model, pool) {
|
|
254
|
+
if (pool.reason === "unavailable" && isTransientVaultError(pool.error)) {
|
|
255
|
+
return {
|
|
256
|
+
ok: false,
|
|
257
|
+
error: `${lane} provider ${provider} model ${model} cannot read provider credentials from ${agentName}'s vault: ${pool.error}`,
|
|
258
|
+
fix: `Vault read timed out -- this usually resolves on retry. Run 'ouro up' again.`,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
247
261
|
if (pool.reason === "unavailable" && isVaultLockedError(pool.error)) {
|
|
248
262
|
return {
|
|
249
263
|
ok: false,
|
|
@@ -284,7 +298,7 @@ function failedPingResult(agentName, lane, provider, model, result) {
|
|
|
284
298
|
return {
|
|
285
299
|
ok: false,
|
|
286
300
|
error: `${lane} provider ${provider} model ${model} failed live check: ${result.message}`,
|
|
287
|
-
fix: `Run 'ouro auth --agent ${agentName} --provider ${provider}' to refresh credentials
|
|
301
|
+
fix: `Run 'ouro auth --agent ${agentName} --provider ${provider}' to refresh credentials.`,
|
|
288
302
|
issue: (0, readiness_repair_1.providerLiveCheckFailedIssue)({
|
|
289
303
|
agentName,
|
|
290
304
|
lane,
|
|
@@ -179,8 +179,8 @@ function providerRepairCountSummary(count) {
|
|
|
179
179
|
return "ok";
|
|
180
180
|
return `${count} ${count === 1 ? "needs" : "need"} attention`;
|
|
181
181
|
}
|
|
182
|
-
async function reportPostRepairProviderHealth(deps, repairedAgents) {
|
|
183
|
-
const remainingDegraded = await checkAgentProviders(deps, repairedAgents);
|
|
182
|
+
async function reportPostRepairProviderHealth(deps, repairedAgents, onProgress) {
|
|
183
|
+
const remainingDegraded = await checkAgentProviders(deps, repairedAgents, onProgress);
|
|
184
184
|
(0, runtime_1.emitNervesEvent)({
|
|
185
185
|
level: remainingDegraded.length > 0 ? "warn" : "info",
|
|
186
186
|
component: "daemon",
|
|
@@ -2700,7 +2700,9 @@ async function runOuroCli(args, deps = (0, cli_defaults_1.createDefaultOuroCliDe
|
|
|
2700
2700
|
const repairedAgents = daemonResult.stability.degraded
|
|
2701
2701
|
.filter(interactive_repair_1.hasRunnableInteractiveRepair)
|
|
2702
2702
|
.map((entry) => entry.agent);
|
|
2703
|
-
|
|
2703
|
+
progress.startPhase("post-repair check");
|
|
2704
|
+
await reportPostRepairProviderHealth(deps, repairedAgents, (msg) => progress.updateDetail(msg));
|
|
2705
|
+
progress.completePhase("post-repair check", providerRepairCountSummary(repairedAgents.length));
|
|
2704
2706
|
}
|
|
2705
2707
|
}
|
|
2706
2708
|
}
|
|
@@ -101,13 +101,8 @@ function missingSecureStoreMessage(config) {
|
|
|
101
101
|
: "Run `ouro vault unlock --store plaintext-file` to store the vault unlock secret in a chmod 0600 local file.",
|
|
102
102
|
].join("\n");
|
|
103
103
|
}
|
|
104
|
-
function vaultUnlockReplaceRecoverFix(agentName,
|
|
105
|
-
return
|
|
106
|
-
`Run 'ouro vault unlock --agent ${agentName}' if you have the saved vault unlock secret.`,
|
|
107
|
-
`If this agent predates vault auth or nobody saved the unlock secret, run 'ouro vault replace --agent ${agentName}' to create a new empty vault, then re-auth/re-enter credentials.`,
|
|
108
|
-
`If you do have a local JSON credential export, run 'ouro vault recover --agent ${agentName} --from <json>' to create the agent vault and import it.`,
|
|
109
|
-
nextStep,
|
|
110
|
-
].join(" ");
|
|
104
|
+
function vaultUnlockReplaceRecoverFix(agentName, _nextStep) {
|
|
105
|
+
return `Run 'ouro vault unlock --agent ${agentName}' or 'ouro vault replace --agent ${agentName}' if the secret is lost.`;
|
|
111
106
|
}
|
|
112
107
|
function credentialVaultNotConfiguredError(agentName, configPath) {
|
|
113
108
|
return (`${CREDENTIAL_VAULT_NOT_CONFIGURED_PREFIX}${configPath}. ` +
|
|
@@ -116,12 +111,8 @@ function credentialVaultNotConfiguredError(agentName, configPath) {
|
|
|
116
111
|
function isCredentialVaultNotConfiguredError(message) {
|
|
117
112
|
return message.includes(CREDENTIAL_VAULT_NOT_CONFIGURED_PREFIX);
|
|
118
113
|
}
|
|
119
|
-
function vaultCreateRecoverFix(agentName,
|
|
120
|
-
return
|
|
121
|
-
`Run 'ouro vault create --agent ${agentName}' to create this agent's vault.`,
|
|
122
|
-
`If you still have a local JSON credential export from an earlier alpha, run 'ouro vault recover --agent ${agentName} --from <json>' instead.`,
|
|
123
|
-
nextStep,
|
|
124
|
-
].join(" ");
|
|
114
|
+
function vaultCreateRecoverFix(agentName, _nextStep) {
|
|
115
|
+
return `Run 'ouro vault create --agent ${agentName}' to set up this agent's vault.`;
|
|
125
116
|
}
|
|
126
117
|
function vaultUnlockSecretStrengthIssues(secret) {
|
|
127
118
|
const issues = [];
|