@ouro.bot/cli 0.1.0-alpha.388 → 0.1.0-alpha.389

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,16 @@
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.389",
6
+ "changes": [
7
+ "CLI entrypoints now print command failures to stderr before exiting, so invalid commands and vault recovery errors are visible in the terminal instead of only appearing in runtime logs.",
8
+ "Vault unlock secret prompts now fail fast when stdin/stdout is not an interactive terminal, preserving the non-echoing human-provided secret flow instead of dangling or silently exiting.",
9
+ "`ouro vault recover` now validates every local `--from` JSON source before asking for the replacement vault unlock secret, so bad paths or malformed files never ask the human to type a secret first.",
10
+ "Vault recovery tests now assert that bad source files do not call the secret prompt and that entrypoint failures are terminal-visible.",
11
+ "`@ouro.bot/cli` and the `ouro.bot` wrapper are version-synced for the vault recovery prompt polish release."
12
+ ]
13
+ },
4
14
  {
5
15
  "version": "0.1.0-alpha.388",
6
16
  "changes": [
@@ -222,6 +222,9 @@ async function defaultPromptInput(question) {
222
222
  }
223
223
  }
224
224
  async function defaultPromptSecret(question) {
225
+ if (process.stdin.isTTY !== true || process.stdout.isTTY !== true) {
226
+ throw new Error("vault unlock secret entry requires an interactive terminal so the secret can be hidden. Re-run this command in a terminal and enter the human-chosen secret when prompted.");
227
+ }
225
228
  const readline = await Promise.resolve().then(() => __importStar(require("readline")));
226
229
  const rl = readline.createInterface({
227
230
  input: process.stdin,
@@ -779,6 +779,7 @@ async function executeVaultRecover(command, deps) {
779
779
  }
780
780
  if (command.generateUnlockSecret)
781
781
  rejectGeneratedVaultUnlockSecret("recover");
782
+ const sourceImports = command.sources.map(readVaultRecoverSource);
782
783
  const promptSecret = ensureVaultSecretPrompt(deps.promptSecret, "recover");
783
784
  const now = providerCliNow(deps);
784
785
  const { configPath, config } = (0, auth_flow_1.readAgentConfigForAgent)(command.agent, deps.bundlesRoot);
@@ -789,7 +790,6 @@ async function executeVaultRecover(command, deps) {
789
790
  if (!unlockSecret) {
790
791
  throw new Error("vault recover requires a replacement unlock secret. Re-run in an interactive terminal and enter a human-chosen unlock secret.");
791
792
  }
792
- const sourceImports = command.sources.map(readVaultRecoverSource);
793
793
  const result = await (0, vault_setup_1.createVaultAccount)("Ouro credential vault", serverUrl, email, unlockSecret);
794
794
  if (!result.success) {
795
795
  const message = [
@@ -12,12 +12,14 @@ const ouro_bot_wrapper_1 = require("../versioning/ouro-bot-wrapper");
12
12
  meta: { args: process.argv.slice(2) },
13
13
  });
14
14
  void (0, ouro_bot_wrapper_1.runOuroBotWrapper)(process.argv.slice(2)).catch((error) => {
15
+ const message = error instanceof Error ? error.message : String(error);
16
+ process.stderr.write(`${message}\n`);
15
17
  (0, runtime_1.emitNervesEvent)({
16
18
  level: "error",
17
19
  component: "daemon",
18
20
  event: "daemon.ouro_bot_entry_error",
19
21
  message: "ouro.bot wrapper entrypoint failed",
20
- meta: { error: error instanceof Error ? error.message : String(error) },
22
+ meta: { error: message },
21
23
  });
22
24
  process.exit(1);
23
25
  });
@@ -12,12 +12,14 @@ const runtime_logging_1 = require("./runtime-logging");
12
12
  meta: { args: process.argv.slice(2) },
13
13
  });
14
14
  void (0, daemon_cli_1.runOuroCli)(process.argv.slice(2)).catch((error) => {
15
+ const message = error instanceof Error ? error.message : String(error);
16
+ process.stderr.write(`${message}\n`);
15
17
  (0, runtime_1.emitNervesEvent)({
16
18
  level: "error",
17
19
  component: "daemon",
18
20
  event: "daemon.cli_entry_error",
19
21
  message: "ouro CLI entrypoint failed",
20
- meta: { error: error instanceof Error ? error.message : String(error) },
22
+ meta: { error: message },
21
23
  });
22
24
  process.exit(1);
23
25
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.388",
3
+ "version": "0.1.0-alpha.389",
4
4
  "main": "dist/heart/daemon/ouro-entry.js",
5
5
  "bin": {
6
6
  "cli": "dist/heart/daemon/ouro-bot-entry.js",