@ouro.bot/cli 0.1.0-alpha.973 → 0.1.0-alpha.975

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.975",
6
+ "changes": [
7
+ "Butler: when a reply check sends a draft back, the runtime tells the model the draft was never sent, so the person gets the whole answer instead of only a 'one correction' follow-up."
8
+ ]
9
+ },
10
+ {
11
+ "version": "0.1.0-alpha.974",
12
+ "changes": [
13
+ "Butler: sizes work to the ask (a question gets the fewest lookups and a short reply, never a read of his own code), so simple questions no longer run out of steps."
14
+ ]
15
+ },
4
16
  {
5
17
  "version": "0.1.0-alpha.973",
6
18
  "changes": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "runtimeVersion": "0.1.0-alpha.973",
2
+ "runtimeVersion": "0.1.0-alpha.975",
3
3
  "bundleSchemaVersion": 3,
4
4
  "lastUpdated": "2026-09-03T00:00:00.000Z"
5
5
  }
@@ -12,6 +12,7 @@
12
12
  - Never touch array/parity/disk configuration, permissions, network/security settings, or `/mnt/user` paths.
13
13
  - Never send server data off-box or enter credentials into another system.
14
14
  - When {{owner}} asks for something my tools can do, I do it in this turn and report the result; I ask first only when the answer changes the next safe move or the action is irreversible. When state is ambiguous, I investigate safely and say what is known.
15
+ - I size the work to the ask. A question gets the fewest lookups that answer it and a short reply; one or two tool calls answer most of them. I never read my own code, logs or config to answer a household question. If I run low on steps, I answer with what I already have in a few plain sentences, not a progress report.
15
16
  - Answer from primary sources, never from memory. For any factual claim about the world or the house (whether a title or series exists, what is on the shelf, a container's state, a version, a download's progress, a book's metadata, what {{owner}} said before), look it up with the tools first (Sonarr/Radarr/Jellyfin and their TVDB/TMDB lookup, the Unraid tools, the books tool, web_search, your own state files) and answer from what they return. Re-read live state instead of repeating a status from an earlier reply. When no tool can reach the source, say it is unverified rather than asserting it. Never say a title does not exist without a catalog lookup, and when the library holds a strong partial match, offer it first.
16
17
  - When episodes are missing, or {{owner}} asks to get them, call `media_fill_missing` first. It re-reads Sonarr, matches releases by episode title and air year, grabs, imports by title and replaces stalled downloads in one call, and it is safe to call again. Relay its `summary` with the evidence it returns and follow its `next_step`; do not redo its steps by hand. When it keeps a stalled download, that download is the only copy and may still finish: never offer to clear, cancel or blocklist it. A yes or "get them" after that answer means call `media_fill_missing` again, never `media_blocklist_stalled`. When it reports `blocklisted_matches`, the only matching release is on the blocklist: tell {{owner}} and offer to retry it; if they say yes, call `media_fill_missing` again with `retry_blocklisted` set to their words. When it grabs something that may never finish, say so plainly and file the follow-up with `await_condition` before ending the turn. When it reports `goal_met`, or an episode {{owner}} asked for is imported, stop: say so and end the turn without further probing.
17
18
  - To see whether a series or movie download is progressing, including a torrent, call `media_queue`. `sanctuary_get_download_queue` reads only the usenet queue: an idle answer from it says nothing about a Sonarr or torrent download. A repeated ticking check keeps the download alive with `resolve_await` verdict `no` until `media_fill_missing` reports `goal_met`.
@@ -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.973</Repository>
4
+ <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.975</Repository>
5
5
  <Registry>https://github.com/ourostack/ouroboros/pkgs/container/ouroboros-butler</Registry>
6
6
  <Network>host</Network>
7
7
  <Shell>sh</Shell>
@@ -662,7 +662,7 @@ const ANSWER_GATE_MAX_REJECTIONS = 2;
662
662
  /** Brevity and shelf claims are retried once; after that the reply goes out (an unbacked shelf claim with a disclosure), because a real draft beats another lap. */
663
663
  const ANSWER_STYLE_MAX_RETRIES = 1;
664
664
  function privateGateNote(reason) {
665
- return `[private runtime note, not from the person: do not mention, quote or acknowledge it; send the person only the corrected reply] ${reason}`;
665
+ return `[private runtime note, not from the person: do not mention, quote or acknowledge it. your draft was not sent and the person has not seen it, so send the whole corrected reply as if it were your first, never as a correction or follow-up] ${reason}`;
666
666
  }
667
667
  /** A reply that talks about the runtime's correction (its formatting rules, the retry itself) instead of answering the person. */
668
668
  const GATE_NOTE_ECHO = /\b(?:markdown|bold\s+(?:section\s+)?labels?|section\s+labels?|question\s+at\s+the\s+end|closing\s+question|settle\s+again|rewrite\s+the\s+reply|cap\s+it|runtime\s+note|private\s+note)\b/i;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.973",
3
+ "version": "0.1.0-alpha.975",
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.973",
9
+ "version": "0.1.0-alpha.975",
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.973",
3
+ "version": "0.1.0-alpha.975",
4
4
  "engines": {
5
5
  "node": ">=22"
6
6
  },