@ouro.bot/cli 0.1.0-alpha.912 → 0.1.0-alpha.914

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,18 @@
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.914",
6
+ "changes": [
7
+ "Shepherd still answers a waiting prompt when only a timer or counter ticked on the screen while it was judging; before, any changed digit made it send nothing."
8
+ ]
9
+ },
10
+ {
11
+ "version": "0.1.0-alpha.913",
12
+ "changes": [
13
+ "CLI screens read on light terminals: main text uses the terminal's own colour, and the accent colours hold about 4:1 contrast on both light and dark backgrounds."
14
+ ]
15
+ },
4
16
  {
5
17
  "version": "0.1.0-alpha.912",
6
18
  "changes": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "runtimeVersion": "0.1.0-alpha.912",
2
+ "runtimeVersion": "0.1.0-alpha.914",
3
3
  "bundleSchemaVersion": 3,
4
4
  "lastUpdated": "2026-09-03T00:00:00.000Z"
5
5
  }
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0"?>
2
2
  <Container version="2">
3
3
  <Name>ouro-butler</Name>
4
- <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.912</Repository>
4
+ <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.914</Repository>
5
5
  <Registry>https://github.com/ourostack/ouroboros/pkgs/container/ouroboros-butler</Registry>
6
6
  <Network>host</Network>
7
7
  <Shell>sh</Shell>
@@ -14,12 +14,15 @@ exports.renderTerminalOperation = renderTerminalOperation;
14
14
  const runtime_1 = require("../../nerves/runtime");
15
15
  const RESET = "\x1b[0m";
16
16
  const BOLD = "\x1b[1m";
17
- const CANOPY = "\x1b[38;2;30;61;40m";
17
+ // The terminal's background is unknown, so every tone has to read on light and on dark: each
18
+ // holds about 4:1 contrast against both white and near-black. Main text takes no colour at all
19
+ // and stays in the terminal's own text colour.
20
+ const CANOPY = "\x1b[38;2;84;130;100m";
18
21
  const SCALE = "\x1b[38;2;45;148;71m";
19
- const GLOW = "\x1b[38;2;74;227;108m";
20
- const BONE = "\x1b[38;2;237;242;238m";
21
- const MIST = "\x1b[38;2;154;174;159m";
22
- const ALERT = "\x1b[38;2;255;106;106m";
22
+ const GLOW = "\x1b[38;2;34;160;80m";
23
+ const BONE = "";
24
+ const MIST = "\x1b[38;2;110;130;116m";
25
+ const ALERT = "\x1b[38;2;220;70;70m";
23
26
  const ANSI_RE = /\x1b\[[0-9;]*m/g;
24
27
  const MASTHEAD_WORD = "OUROBOROS";
25
28
  const CLASSIC_WORDMARK_GLYPHS = {
@@ -32,7 +35,8 @@ const CLASSIC_WORDMARK_GLYPHS = {
32
35
  function color(text, tone, bold = false) {
33
36
  if (!text)
34
37
  return text;
35
- return `${tone}${bold ? BOLD : ""}${text}${RESET}`;
38
+ const style = `${tone}${bold ? BOLD : ""}`;
39
+ return style ? `${style}${text}${RESET}` : text;
36
40
  }
37
41
  function stripAnsi(text) {
38
42
  return text.replace(ANSI_RE, "");
@@ -21,7 +21,7 @@ const RESET = "\x1b[0m";
21
21
  const BOLD = "\x1b[1m";
22
22
  const DIM = "\x1b[2m";
23
23
  const GREEN = "\x1b[38;2;46;204;64m";
24
- const RED = "\x1b[38;2;255;106;106m";
24
+ const RED = "\x1b[38;2;220;70;70m";
25
25
  const BASE_UP_PHASE_PLAN = [
26
26
  "update check",
27
27
  "system setup",
@@ -66,6 +66,14 @@ const returns_1 = require("./returns");
66
66
  exports.SHEPHERD_WAKE_TRIGGER = "shepherd";
67
67
  exports.READ_LINES = 200;
68
68
  exports.SCREEN_LINES = 80;
69
+ /**
70
+ * A screen with its numbers blanked: a ticking timer or token counter at a waiting prompt is not
71
+ * the screen moving on. A timer can grow a unit (`59s` to `1m 0s`) and shift the padding beside
72
+ * it, so a run of numbers with time units counts as one, and runs of spaces as one space.
73
+ */
74
+ function withoutNumbers(screen) {
75
+ return screen.replace(/(\d+[hms]?[ \t]*)+/g, "0 ").replace(/[ \t]+/g, " ");
76
+ }
69
77
  exports.JUDGE_TIMEOUT_MS = 20_000;
70
78
  /** Automatic answers in a row with no human focus in between, and per session per hour. */
71
79
  exports.STREAK_MAX = 3;
@@ -232,7 +240,7 @@ async function startShepherdSenseApp(options) {
232
240
  // Never type into the session the human is in, or one they just left.
233
241
  record.reason = `${human} is in this session or just left it, so it is theirs: ${verdict.reason}`;
234
242
  }
235
- else if (tail((0, redact_1.redactSecrets)(await host.read(event.sessionId, exports.READ_LINES)), exports.SCREEN_LINES) !== screen) {
243
+ else if (withoutNumbers(tail((0, redact_1.redactSecrets)(await host.read(event.sessionId, exports.READ_LINES)), exports.SCREEN_LINES)) !== withoutNumbers(screen)) {
236
244
  record.reason = `the screen changed while judging, so nothing was sent: ${verdict.reason}`;
237
245
  }
238
246
  else {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.912",
3
+ "version": "0.1.0-alpha.914",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@ouro.bot/cli",
9
- "version": "0.1.0-alpha.912",
9
+ "version": "0.1.0-alpha.914",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.78.0",
12
12
  "@azure/identity": "^4.13.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.912",
3
+ "version": "0.1.0-alpha.914",
4
4
  "engines": {
5
5
  "node": ">=22"
6
6
  },