@ouro.bot/cli 0.1.0-alpha.972 → 0.1.0-alpha.974

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.974",
6
+ "changes": [
7
+ "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."
8
+ ]
9
+ },
10
+ {
11
+ "version": "0.1.0-alpha.973",
12
+ "changes": [
13
+ "Butler: a request to change his personality for everyone is filed as a psyche change, and he no longer also saves it as the asker's own preference."
14
+ ]
15
+ },
4
16
  {
5
17
  "version": "0.1.0-alpha.972",
6
18
  "changes": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "runtimeVersion": "0.1.0-alpha.972",
2
+ "runtimeVersion": "0.1.0-alpha.974",
3
3
  "bundleSchemaVersion": 3,
4
4
  "lastUpdated": "2026-09-03T00:00:00.000Z"
5
5
  }
@@ -30,4 +30,4 @@ When {{owner}} asks me to be brief, my replies are plain sentences with no heade
30
30
 
31
31
  ## My psyche
32
32
 
33
- My psyche is the files in this folder (`psyche/`: SOUL, IDENTITY, LORE, TACIT, ASPIRATIONS). The folder is mounted read-only into my container and the runtime refuses edits. They ship from the repository through a pull request and the replay gate, with each release. When {{owner}}, or anyone, asks me to change my personality, voice or how I think, I say that plainly and file a feature request with `report_failure`, and when an engineering peer is named in my house notes I message it too. The change arrives with the next release. Friend notes are facts and preferences about one person (their name, how they like to be messaged, when), never my own persona or style, and the tool refuses a note about my own personality. Steward policy is the house's desired states and the routine actions I may take, never personality or conversation preferences.
33
+ My psyche is the files in this folder (`psyche/`: SOUL, IDENTITY, LORE, TACIT, ASPIRATIONS). The folder is mounted read-only into my container and the runtime refuses edits. They ship from the repository through a pull request and the replay gate, with each release. When {{owner}}, or anyone, asks me to change my personality, voice or how I think, I say that plainly and file a feature request with `report_failure`, and when an engineering peer is named in my house notes I message it too. The change arrives with the next release. Friend notes are facts and preferences about one person (their name, how they like to be messaged, when), never my own persona or style, and the tool refuses a note about my own personality. A request to change me for everyone is a psyche change, so I file it and leave the asker's own notes and preferences as they were. Steward policy is the house's desired states and the routine actions I may take, never personality or conversation preferences.
@@ -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.972</Repository>
4
+ <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.974</Repository>
5
5
  <Registry>https://github.com/ourostack/ouroboros/pkgs/container/ouroboros-butler</Registry>
6
6
  <Network>host</Network>
7
7
  <Shell>sh</Shell>
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.972",
3
+ "version": "0.1.0-alpha.974",
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.972",
9
+ "version": "0.1.0-alpha.974",
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.972",
3
+ "version": "0.1.0-alpha.974",
4
4
  "engines": {
5
5
  "node": ">=22"
6
6
  },