@ouro.bot/cli 0.1.0-alpha.9 → 0.1.0-alpha.90

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.
Files changed (128) hide show
  1. package/AdoptionSpecialist.ouro/agent.json +70 -9
  2. package/AdoptionSpecialist.ouro/psyche/SOUL.md +5 -2
  3. package/AdoptionSpecialist.ouro/psyche/identities/monty.md +2 -2
  4. package/README.md +147 -205
  5. package/assets/ouroboros.png +0 -0
  6. package/changelog.json +529 -0
  7. package/dist/heart/active-work.js +251 -0
  8. package/dist/heart/bridges/manager.js +358 -0
  9. package/dist/heart/bridges/state-machine.js +135 -0
  10. package/dist/heart/bridges/store.js +123 -0
  11. package/dist/heart/commitments.js +109 -0
  12. package/dist/heart/config.js +68 -23
  13. package/dist/heart/core.js +452 -93
  14. package/dist/heart/cross-chat-delivery.js +146 -0
  15. package/dist/heart/daemon/agent-discovery.js +81 -0
  16. package/dist/heart/daemon/auth-flow.js +430 -0
  17. package/dist/heart/daemon/daemon-cli.js +1737 -269
  18. package/dist/heart/daemon/daemon-entry.js +55 -6
  19. package/dist/heart/daemon/daemon-runtime-sync.js +212 -0
  20. package/dist/heart/daemon/daemon.js +216 -10
  21. package/dist/heart/daemon/hatch-animation.js +10 -3
  22. package/dist/heart/daemon/hatch-flow.js +7 -82
  23. package/dist/heart/daemon/hooks/bundle-meta.js +92 -0
  24. package/dist/heart/daemon/launchd.js +159 -0
  25. package/dist/heart/daemon/log-tailer.js +4 -3
  26. package/dist/heart/daemon/message-router.js +17 -8
  27. package/dist/heart/daemon/ouro-bot-entry.js +0 -0
  28. package/dist/heart/daemon/ouro-bot-global-installer.js +128 -0
  29. package/dist/heart/daemon/ouro-entry.js +0 -0
  30. package/dist/heart/daemon/ouro-path-installer.js +260 -0
  31. package/dist/heart/daemon/ouro-uti.js +11 -2
  32. package/dist/heart/daemon/ouro-version-manager.js +171 -0
  33. package/dist/heart/daemon/process-manager.js +14 -1
  34. package/dist/heart/daemon/run-hooks.js +37 -0
  35. package/dist/heart/daemon/runtime-logging.js +58 -15
  36. package/dist/heart/daemon/runtime-metadata.js +219 -0
  37. package/dist/heart/daemon/runtime-mode.js +67 -0
  38. package/dist/heart/daemon/sense-manager.js +307 -0
  39. package/dist/heart/daemon/skill-management-installer.js +94 -0
  40. package/dist/heart/daemon/socket-client.js +202 -0
  41. package/dist/heart/daemon/specialist-orchestrator.js +53 -84
  42. package/dist/heart/daemon/specialist-prompt.js +63 -11
  43. package/dist/heart/daemon/specialist-tools.js +211 -60
  44. package/dist/heart/daemon/staged-restart.js +114 -0
  45. package/dist/heart/daemon/thoughts.js +507 -0
  46. package/dist/heart/daemon/update-checker.js +111 -0
  47. package/dist/heart/daemon/update-hooks.js +138 -0
  48. package/dist/heart/daemon/wrapper-publish-guard.js +86 -0
  49. package/dist/heart/delegation.js +62 -0
  50. package/dist/heart/identity.js +126 -21
  51. package/dist/heart/kicks.js +1 -19
  52. package/dist/heart/model-capabilities.js +48 -0
  53. package/dist/heart/obligations.js +191 -0
  54. package/dist/heart/progress-story.js +42 -0
  55. package/dist/heart/providers/anthropic.js +74 -9
  56. package/dist/heart/providers/azure.js +86 -7
  57. package/dist/heart/providers/github-copilot.js +149 -0
  58. package/dist/heart/providers/minimax.js +4 -0
  59. package/dist/heart/providers/openai-codex.js +12 -3
  60. package/dist/heart/safe-workspace.js +362 -0
  61. package/dist/heart/sense-truth.js +61 -0
  62. package/dist/heart/session-activity.js +169 -0
  63. package/dist/heart/session-recall.js +116 -0
  64. package/dist/heart/streaming.js +100 -22
  65. package/dist/heart/target-resolution.js +123 -0
  66. package/dist/heart/turn-coordinator.js +28 -0
  67. package/dist/mind/associative-recall.js +14 -2
  68. package/dist/mind/bundle-manifest.js +70 -0
  69. package/dist/mind/context.js +57 -11
  70. package/dist/mind/first-impressions.js +16 -2
  71. package/dist/mind/friends/channel.js +35 -0
  72. package/dist/mind/friends/group-context.js +144 -0
  73. package/dist/mind/friends/store-file.js +19 -0
  74. package/dist/mind/friends/trust-explanation.js +74 -0
  75. package/dist/mind/friends/types.js +8 -0
  76. package/dist/mind/memory.js +27 -26
  77. package/dist/mind/obligation-steering.js +31 -0
  78. package/dist/mind/pending.js +76 -9
  79. package/dist/mind/phrases.js +1 -0
  80. package/dist/mind/prompt.js +467 -77
  81. package/dist/mind/token-estimate.js +8 -12
  82. package/dist/nerves/cli-logging.js +15 -2
  83. package/dist/nerves/coverage/run-artifacts.js +1 -1
  84. package/dist/nerves/index.js +12 -0
  85. package/dist/repertoire/ado-client.js +4 -2
  86. package/dist/repertoire/coding/feedback.js +180 -0
  87. package/dist/repertoire/coding/index.js +4 -1
  88. package/dist/repertoire/coding/manager.js +69 -4
  89. package/dist/repertoire/coding/spawner.js +21 -3
  90. package/dist/repertoire/coding/tools.js +105 -2
  91. package/dist/repertoire/data/ado-endpoints.json +188 -0
  92. package/dist/repertoire/guardrails.js +290 -0
  93. package/dist/repertoire/mcp-client.js +254 -0
  94. package/dist/repertoire/mcp-manager.js +195 -0
  95. package/dist/repertoire/skills.js +3 -26
  96. package/dist/repertoire/tasks/board.js +12 -0
  97. package/dist/repertoire/tasks/index.js +23 -9
  98. package/dist/repertoire/tasks/transitions.js +1 -2
  99. package/dist/repertoire/tools-base.js +714 -249
  100. package/dist/repertoire/tools-bluebubbles.js +93 -0
  101. package/dist/repertoire/tools-teams.js +58 -25
  102. package/dist/repertoire/tools.js +106 -53
  103. package/dist/senses/bluebubbles-client.js +210 -5
  104. package/dist/senses/bluebubbles-entry.js +2 -0
  105. package/dist/senses/bluebubbles-inbound-log.js +109 -0
  106. package/dist/senses/bluebubbles-media.js +339 -0
  107. package/dist/senses/bluebubbles-model.js +12 -4
  108. package/dist/senses/bluebubbles-mutation-log.js +45 -5
  109. package/dist/senses/bluebubbles-runtime-state.js +109 -0
  110. package/dist/senses/bluebubbles-session-cleanup.js +72 -0
  111. package/dist/senses/bluebubbles.js +894 -45
  112. package/dist/senses/cli-layout.js +187 -0
  113. package/dist/senses/cli.js +400 -164
  114. package/dist/senses/continuity.js +94 -0
  115. package/dist/senses/debug-activity.js +154 -0
  116. package/dist/senses/inner-dialog-worker.js +47 -18
  117. package/dist/senses/inner-dialog.js +377 -83
  118. package/dist/senses/pipeline.js +307 -0
  119. package/dist/senses/teams.js +573 -129
  120. package/dist/senses/trust-gate.js +112 -2
  121. package/package.json +14 -3
  122. package/subagents/README.md +4 -70
  123. package/dist/heart/daemon/specialist-session.js +0 -142
  124. package/dist/heart/daemon/subagent-installer.js +0 -125
  125. package/dist/inner-worker-entry.js +0 -4
  126. package/subagents/work-doer.md +0 -233
  127. package/subagents/work-merger.md +0 -624
  128. package/subagents/work-planner.md +0 -373
package/changelog.json ADDED
@@ -0,0 +1,529 @@
1
+ {
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
+ "versions": [
4
+ {
5
+ "version": "0.1.0-alpha.90",
6
+ "changes": [
7
+ "coding_spawn now reuses the newest active matching coding session instead of blindly creating another coding-* lane for the same task, workspace, and origin thread.",
8
+ "Reused coding sessions are surfaced explicitly in the tool payload, which keeps live operator updates anchored to the real active child session instead of drifting onto stale parallel status."
9
+ ]
10
+ },
11
+ {
12
+ "version": "0.1.0-alpha.89",
13
+ "changes": [
14
+ "Spawned coding sessions now inject ~/.ouro-cli/bin into PATH so child processes (claude, codex) can resolve ouro CLI binaries without relying on the parent shell's PATH."
15
+ ]
16
+ },
17
+ {
18
+ "version": "0.1.0-alpha.88",
19
+ "changes": [
20
+ "CLI session repair now strips orphaned tool-result messages when a saved chat history lost the matching assistant tool call, so a broken prior turn no longer bricks every future `ouro chat` message with a tool-call replay error.",
21
+ "Recovered sessions keep valid tool call/result pairs intact while dropping only the stale outputs, which lets live operator chats resume from repaired history instead of forcing a brand-new thread."
22
+ ]
23
+ },
24
+ {
25
+ "version": "0.1.0-alpha.87",
26
+ "changes": [
27
+ "CLI chat now keeps model reasoning private again. The visible surface stays on spinners, tool updates, and actual replies instead of dim internal-thinking text leaking into the operator conversation.",
28
+ "Safe workspace selection now persists across daemon restarts and `ouro up`, so repo-local reads, edits, and shell commands keep targeting the same acquired scratch clone or worktree after a runtime update."
29
+ ]
30
+ },
31
+ {
32
+ "version": "0.1.0-alpha.86",
33
+ "changes": [
34
+ "Commitments section now uses the structured formatCommitments helper, rendering holding/criteria/release sections instead of a flat bullet list. Tests updated to cover bridges, tasks, and mustResolveBeforeHandoff."
35
+ ]
36
+ },
37
+ {
38
+ "version": "0.1.0-alpha.85",
39
+ "changes": [
40
+ "Relative repo paths now route through the chosen safe workspace too, so read/edit/write file tools actually operate in the dedicated clone or worktree instead of silently hitting the wrong checkout.",
41
+ "File-edit guardrails now normalize paths the same way file reads do, which means a `read_file` followed by `edit_file` on the same relative path no longer self-blocks during safe-workspace routing."
42
+ ]
43
+ },
44
+ {
45
+ "version": "0.1.0-alpha.84",
46
+ "changes": [
47
+ "Safe workspace routing now covers repo-local shell commands too, so agents that discover a harness friction through `shell` land in the dedicated worktree instead of wandering in the shared checkout.",
48
+ "The new `safe_workspace` tool and prompt guidance make the chosen workspace path, branch, and first concrete repo action explicit before the first edit, tightening the visible OODA loop."
49
+ ]
50
+ },
51
+ {
52
+ "version": "0.1.0-alpha.83",
53
+ "changes": [
54
+ "Visible OODA loop substrate: persistent return obligations now surface where work is happening, whether the agent is still investigating, and what still needs to come back to the originating session.",
55
+ "Coding-session provenance now carries the originating human-facing session and obligation through spawn, persistence, and feedback, so hidden coding work is legible in active work instead of disappearing behind a tool session.",
56
+ "Runtime closure is explicit after self-fix updates: `ouro up` now prints a changelog follow-up command, and the runtime prompt reminds the agent to report that it updated and review what changed before treating the loop as closed."
57
+ ]
58
+ },
59
+ {
60
+ "version": "0.1.0-alpha.82",
61
+ "changes": [
62
+ "Fix: Wire default implementations for CLI update flow. `ouro up` now actually checks the npm registry for newer versions, installs them, and re-execs. Previously the update check deps were declared but never wired in createDefaultOuroCliDeps. Also wires rollback and versions command defaults."
63
+ ]
64
+ },
65
+ {
66
+ "version": "0.1.0-alpha.81",
67
+ "changes": [
68
+ "Fix: Self-healing versioned CLI layout. When `ouro up` runs via the old npx path for the first time, performSystemSetup now detects that CurrentVersion is missing and installs the current version into ~/.ouro-cli/versions/. Prevents 'ouro not installed' error after migration."
69
+ ]
70
+ },
71
+ {
72
+ "version": "0.1.0-alpha.80",
73
+ "changes": [
74
+ "Bootstrap package (npx ouro.bot) now installs into ~/.ouro-cli/ versioned layout directly. No more silent npx updates — every install and update is logged. Cleans up old ~/.local/bin/ouro wrapper."
75
+ ]
76
+ },
77
+ {
78
+ "version": "0.1.0-alpha.79",
79
+ "changes": [
80
+ "New: Versioned CLI directory layout (~/.ouro-cli/) replaces npx-based ouro wrapper. Explicit version management, rollback support, and deterministic updates.",
81
+ "New: `ouro up` now checks the registry for newer CLI versions, installs them into ~/.ouro-cli/versions/, activates via symlink flip, and re-execs — no more silent npx downloads.",
82
+ "New: `ouro rollback [<version>]` swaps CurrentVersion/previous symlinks, stops the daemon. With a version arg, installs if needed then activates.",
83
+ "New: `ouro versions` lists cached CLI versions with * current and (previous) markers.",
84
+ "Migration: On first run, old ~/.local/bin/ouro wrapper is removed, old PATH entry cleaned from shell profile, new ~/.ouro-cli/bin added to PATH.",
85
+ "Trust manifest: rollback requires family trust, versions requires acquaintance.",
86
+ "Fix: BlueBubbles group chats no longer start typing just because the model turn began. Group chats stay visually quiet until the agent has committed to replying.",
87
+ "Tool/progress updates now count as reply commitment in BlueBubbles group chats, so read/typing can begin before final user-facing text without regressing back to model-start typing.",
88
+ "Silent group-chat turns remain fully quiet: when the agent chooses no_response, the inbound message still reaches the model but the chat is not marked read, never types, and never sends a message."
89
+ ]
90
+ },
91
+ {
92
+ "version": "0.1.0-alpha.77",
93
+ "changes": [
94
+ "New: Persistent obligation store (state/obligations/*.json). Obligations survive pending message consumption so the agent always knows what it owes and to whom.",
95
+ "Obligations are created when send_message delegates to self or go_inward fires with a return address, and fulfilled when routeDelegatedCompletion delivers the answer.",
96
+ "The commitments frame now reads pending obligations from the store, giving the agent an accurate view of outstanding commitments across all sessions.",
97
+ "readInnerWorkState derives obligationPending from both pending messages and the obligation store, ensuring obligations are visible even after the inner dialog queue drains."
98
+ ]
99
+ },
100
+ {
101
+ "version": "0.1.0-alpha.76",
102
+ "changes": [
103
+ "Fix: CLI chat terminal logging now filters to warn/error only — info-level nerves logs go to ndjson file only, keeping the interactive TUI clean.",
104
+ "Fix: Streamed model output now wraps at word boundaries instead of mid-word. A new StreamingWordWrapper buffers partial lines and breaks at spaces when approaching terminal width.",
105
+ "New: `ouro up` now prints 'ouro updated to <version> (was <previous>)' when npx downloads a newer CLI binary, separate from the agent bundle update message.",
106
+ "Fix: Spinner/log interleave verified — terminal sink reads pause/resume hooks at call time, not creation time, so the filterSink wrapper in CLI logging does not break spinner coordination."
107
+ ]
108
+ },
109
+ {
110
+ "version": "0.1.0-alpha.75",
111
+ "changes": [
112
+ "Inner dialog is now experienced as private thinking, not system dispatch. go_inward tool lets the agent take a thread inward atomically, with a pipeline-generated handoff packet framed as self-directed thought.",
113
+ "Return obligations are enforced: the agent cannot move on from a conversation without addressing what it promised. Rejection messages orient rather than punish.",
114
+ "Center-of-gravity steering: the system prompt tells the agent where its attention is in selfhood language, not dashboard labels.",
115
+ "All status rendering rewritten from telemetry to self-awareness: \"what i'm holding\" replaces \"active work\", \"where my attention is\" replaces \"center of gravity\", \"what i'm sensing\" replaces \"delegation hint\".",
116
+ "New query_commitments tool: the agent can ask itself \"what am I holding right now?\" and get genuine self-reflection.",
117
+ "Bridge suggestions trigger earlier when multi-session pressure is detected. Inward completions automatically inherit bridge context for return routing.",
118
+ "Inner dialog modes (reflect/plan/relay) give the agent awareness of what kind of thinking it's doing.",
119
+ "Canonical InnerJob type with lifecycle (idle/queued/running/surfaced) replaces reconstructed status."
120
+ ]
121
+ },
122
+ {
123
+ "version": "0.1.0-alpha.73",
124
+ "changes": [
125
+ "New `ouro config models --agent <name>` command: list available models for the current provider. For github-copilot, queries the models API; other providers show a static message.",
126
+ "Fix: `ouro config model` now validates model availability for github-copilot before writing, showing available models if the requested one isn't found.",
127
+ "Fix: system prompt now tells the agent that model/provider changes take effect on the next turn automatically (no restart needed)."
128
+ ]
129
+ },
130
+ {
131
+ "version": "0.1.0-alpha.72",
132
+ "changes": [
133
+ "Fix: Compound shell commands (&&, ;, |, ||) are now checked per-subcommand for untrusted users instead of blanket-blocked. Safe compound commands like `ls && pwd` are allowed; only commands containing an untrusted subcommand are denied.",
134
+ "New `ouro config model --agent <name> <model-name>` command: change the active model for any provider. Reads provider from agent.json, updates the model field in secrets.json. Gated at friend trust level.",
135
+ "New `ouro friend update <id> --trust <level>` command: change an existing friend's trust level (stranger, acquaintance, friend, family). Gated at family trust level."
136
+ ]
137
+ },
138
+ {
139
+ "version": "0.1.0-alpha.71",
140
+ "changes": [
141
+ "Fix: `ouro auth switch` now works with both `ouro auth switch --agent X --provider Y` and `ouro auth --switch --agent X --provider Y` syntax.",
142
+ "Fix: `ouro auth verify` now makes a real API call for github-copilot (GET copilot_internal/user) instead of only checking token format.",
143
+ "Fix: `ouro auth --verify` flag form also accepted alongside positional `verify` subcommand."
144
+ ]
145
+ },
146
+ {
147
+ "version": "0.1.0-alpha.70",
148
+ "changes": [
149
+ "New github-copilot LLM provider: use GitHub Copilot as model backend via `gh auth` token. Claude models route to /chat/completions, GPT models to /responses. Endpoint auto-discovered from your Copilot enterprise plan.",
150
+ "Auth decoupled from switching: `ouro auth --provider X` now stores credentials only. Use `ouro auth switch --provider X` to change the active provider, and `ouro auth verify` to check which stored providers have valid credentials.",
151
+ "Agents can now manage their own auth: `ouro auth`, `ouro auth verify`, and `ouro auth switch` are in the system prompt and gated at family trust level. Auth error messages include actionable recovery guidance.",
152
+ "Fix: `ouro --agent <name> <command>` now works correctly when --agent is the first argument."
153
+ ]
154
+ },
155
+ {
156
+ "version": "0.1.0-alpha.69",
157
+ "changes": [
158
+ "Generic MCP client: ouroboros agents can now connect to any MCP server (e.g., agency mcp ado, agency mcp mail) configured in agent.json. Zero new dependencies \u2014 pure JSON-RPC over stdio.",
159
+ "New `ouro mcp list` and `ouro mcp call` CLI commands route through the daemon socket to persistent MCP connections, so agents use shared server instances instead of spawning fresh ones per call.",
160
+ "MCP tools are injected into the agent's system prompt on startup, so agents know what external capabilities are available without a discovery step.",
161
+ "Trust manifest: `mcp list` requires acquaintance trust, `mcp call` requires friend trust."
162
+ ]
163
+ },
164
+ {
165
+ "version": "0.1.0-alpha.68",
166
+ "changes": [
167
+ "New no_response tool lets agents stay silent in group chats when the moment doesn't call for a reply \u2014 reactions, side conversations, and tapbacks no longer trigger unwanted responses.",
168
+ "Group chat participation prompt teaches agents to be intentional participants, comfortable with silence, and to prefer reactions over full text replies when appropriate.",
169
+ "System prompt includes --agent flag in all ouro CLI examples for non-daemon deployments. Azure startup symlinks ouro CLI into /usr/local/bin."
170
+ ]
171
+ },
172
+ {
173
+ "version": "0.1.0-alpha.66",
174
+ "changes": [
175
+ "The ouro PATH shim now uses npx --prefer-online to always check the npm registry before using cached packages. Prevents stale npx cache from serving old runtime versions on ouro up."
176
+ ]
177
+ },
178
+ {
179
+ "version": "0.1.0-alpha.65",
180
+ "changes": [
181
+ "Tool permissions overhauled: channel-level blocking removed, all tools now visible on all channels. Guardrails are invocation-level with two layers \u2014 structural (edit-requires-read, destructive pattern blocking, protected paths) always on for everyone, and trust-level (ouro CLI per-subcommand trust manifest, general CLI allowlists, bundle-scoped writes) for untrusted contexts.",
182
+ "New `ouro changelog` CLI subcommand reads changelog.json and supports `--from <version>` for delta filtering, so agents can introspect their own update history on any channel.",
183
+ "Compound shell commands (&&, ;, |, $()) are blocked for untrusted users to prevent smuggling dangerous operations behind safe prefixes.",
184
+ "Azure App Service deployment migrated from zip-deploy to npm-based harness install with persistent agent bundle and managed identity auth."
185
+ ]
186
+ },
187
+ {
188
+ "version": "0.1.0-alpha.63",
189
+ "changes": [
190
+ "ensureSkillManagement now iterates all discovered agent bundles instead of requiring a single-agent context. Fixes skill-management not being installed during ouro up."
191
+ ]
192
+ },
193
+ {
194
+ "version": "0.1.0-alpha.62",
195
+ "changes": [
196
+ "ensureSkillManagement now prints to stdout on install/failure instead of only emitting silent nerves events."
197
+ ]
198
+ },
199
+ {
200
+ "version": "0.1.0-alpha.61",
201
+ "changes": [
202
+ "Workflow skills (work-planner, work-doer, work-merger) migrated to the shared ouroboros-skills repo at github.com/ouroborosbot/ouroboros-skills.",
203
+ "Removed the subagent-installer. Skills are now installed via the skill-management bootstrap skill or manual download.",
204
+ "Skills loading simplified from 3-source to 2-source model. Canonical-protocol fallback to subagents/ removed.",
205
+ "New ensureSkillManagement() auto-installs the skill-management bootstrap skill from the shared repo on ouro up."
206
+ ]
207
+ },
208
+ {
209
+ "version": "0.1.0-alpha.60",
210
+ "changes": [
211
+ "Azure OpenAI provider now supports DefaultAzureCredential for managed identity auth in production and az-login auth for local dev, with API key as an optional fallback.",
212
+ "The @azure/identity package is lazy-loaded only when the managed identity path is used, so API key users and other providers pay no cold-start cost.",
213
+ "Auth failure errors now preserve the original cause and list all three resolution paths (API key, az login, managed identity)."
214
+ ]
215
+ },
216
+ {
217
+ "version": "0.1.0-alpha.59",
218
+ "changes": [
219
+ "Repo file edits now acquire a safe workspace before local tool writes, creating a dedicated worktree from `origin/main` when running from a clone and a scratch clone from the canonical GitHub source when running from an installed runtime.",
220
+ "The harness now has bundle-local workspace primitives for repo work plus bundle-local daemon logs, daemon logging config, message routing storage, and tool caches instead of leaning on `~/.agentstate` paths.",
221
+ "Coverage/test-run artifacts and related runtime expectations now use the new non-`~/.agentstate` locations, and daemon/tool tests cover the safe workspace decision table and the bundle-local path migration."
222
+ ]
223
+ },
224
+ {
225
+ "version": "0.1.0-alpha.58",
226
+ "changes": [
227
+ "Normal `ouro` and `ouro-bot` CLI entrypoints now stay quiet by default in the terminal while still writing runtime NDJSON logs, and explicit logging overrides still work.",
228
+ "Interactive pasted input now clears every echoed row before re-rendering its bold summary, so multi-line instructions stay legible instead of colliding with prompt redraws and streaming output.",
229
+ "Wrapped CLI text now prefers whitespace breaks for ordinary words and only splits a word mid-line when that single word is wider than the terminal."
230
+ ]
231
+ },
232
+ {
233
+ "version": "0.1.0-alpha.57",
234
+ "changes": [
235
+ "Explicit `ouro chat <agent>` now launches the local interactive chat flow instead of just printing the daemon's connection acknowledgement and exiting.",
236
+ "The explicit chat path still ensures the daemon is running first, so direct chat commands behave like the existing auto-chat flows without losing daemon setup.",
237
+ "Daemon CLI coverage now includes the explicit `chat <agent>` route so regressions in interactive chat startup get caught in tests."
238
+ ]
239
+ },
240
+ {
241
+ "version": "0.1.0-alpha.56",
242
+ "changes": [
243
+ "The installed runtime now supports `ouro auth --agent <name>` as the normal provider auth and reauth path, with `--provider <provider>` available for explicit provider add/switch flows.",
244
+ "Anthropic and OpenAI Codex hatch/signup now share the same runtime auth backbone as later reauth, so first-time setup and recovery follow one consistent mental model.",
245
+ "Provider auth failures now point at the supported `ouro auth` recovery path and tell you what to do after reauth, including retrying the failed `ouro` command or reconnecting the errored session."
246
+ ]
247
+ },
248
+ {
249
+ "version": "0.1.0-alpha.55",
250
+ "changes": [
251
+ "Memory fact dedup now catches paraphrased duplicates via cosine similarity on existing embeddings, so semantically equivalent facts no longer slip past the word-overlap check.",
252
+ "Semantic dedup gracefully handles corrupt JSONL entries with missing or undefined embeddings instead of crashing on bad data.",
253
+ "Cosine similarity is now imported from associative-recall instead of duplicated in the memory module."
254
+ ]
255
+ },
256
+ {
257
+ "version": "0.1.0-alpha.54",
258
+ "changes": [
259
+ "Disk-backed runtime config now reloads from agent and secrets files instead of being held behind stale process-level caches, so config changes are picked up truthfully.",
260
+ "`ouro up` now treats runtime drift as a real restart trigger, including repo-root drift, config-fingerprint drift, and stale launchd boot persistence after branch/worktree changes.",
261
+ "BlueBubbles status now prefers fresh runtime health over stale managed-process crash snapshots, preventing false whole-sense `error` reports when the live channel is actually healthy."
262
+ ]
263
+ },
264
+ {
265
+ "version": "0.1.0-alpha.53",
266
+ "changes": [
267
+ "Daemon plist now inherits PATH from the installing process, so child agent spawns can find node regardless of launchd's minimal default environment.",
268
+ "Daemon startup and status output now show the entry path and runtime mode (dev vs production) so it's immediately obvious where the daemon is running from and whether it's a dev repo, worktree, or npm install.",
269
+ "Agent spawn in the process manager now validates the entry script exists before calling spawn, setting the agent to crashed with a clear error instead of an opaque ENOENT.",
270
+ "Plist write warns when the entry path doesn't exist on disk, catching stale worktree paths before they cause daemon crashes."
271
+ ]
272
+ },
273
+ {
274
+ "version": "0.1.0-alpha.52",
275
+ "changes": [
276
+ "Trusted 1:1 chats can now act live across active group threads: the harness resolves candidate target chats, carries explicit trust context into the model, and delivers messages into the right live BlueBubbles or Teams session instead of only queueing for later.",
277
+ "People discovered through a relevant live group are now bootstrapped as acquaintances with shared-group context, so the agent gets a socially truthful model of who is merely unknown versus who is known through the current group.",
278
+ "Cross-chat work now returns a truthful outcome back to the asking chat, and bridge suggestions can span different outward relationships when one live piece of work is clearly happening across them."
279
+ ]
280
+ },
281
+ {
282
+ "version": "0.1.0-alpha.51",
283
+ "changes": [
284
+ "Agents can now adjust their own reasoning depth mid-conversation via a new set_reasoning_effort tool, with effort levels derived from a central model capabilities registry.",
285
+ "Anthropic extended thinking is now enabled with adaptive effort, thinking blocks are captured during streaming (including signatures and redacted blocks), persisted on conversation history, and faithfully round-tripped across turns.",
286
+ "Anthropic max_tokens now uses the model's actual output ceiling from the registry instead of a hardcoded 4096, removing artificial response length constraints.",
287
+ "Codex assistant messages are now annotated with phase labels (commentary vs final_answer) so GPT-5.4 can distinguish intermediate reasoning from completed responses in its own history.",
288
+ "Azure and Codex reasoning effort is now dynamic from the agent loop instead of hardcoded to medium."
289
+ ]
290
+ },
291
+ {
292
+ "version": "0.1.0-alpha.50",
293
+ "changes": [
294
+ "Delegated inner work can now proactively surface its completion back into the active BlueBubbles session instead of waiting for a later inbox drain.",
295
+ "Session recall now falls back to the raw transcript when summarization fails, so bridge attachment and cross-session inspection stay truthful instead of claiming the session is missing."
296
+ ]
297
+ },
298
+ {
299
+ "version": "0.1.0-alpha.49",
300
+ "changes": [
301
+ "Inner dialog no longer drops self-directed wake signals that arrive mid-turn; overlapping inward requests now guarantee a truthful follow-up inner pass instead of mailbox-like limbo.",
302
+ "The harness now has a shared core bridge layer with lifecycle/runtime state, persistence, task linkage, and one `bridge_manage` path so already-live sessions can coordinate as one coherent piece of work.",
303
+ "`query_session` and bridge attachment now share one session-recall helper, reducing duplicate cross-session summarization logic and setting up thinner outer surfaces around a stronger inner/core."
304
+ ]
305
+ },
306
+ {
307
+ "version": "0.1.0-alpha.48",
308
+ "changes": [
309
+ "BlueBubbles same-chat turns now serialize through the shared heart-level turn coordinator, so duplicate delivery of one inbound message no longer races into two handled turns or duplicate replies.",
310
+ "BlueBubbles duplicate-check, session load, inbound turn execution, and inbound sidecar recording now happen inside one canonical chat-trunk critical section keyed by the resolved session path.",
311
+ "Workflow docs now let agents auto-create the required dedicated task worktree and branch by default when the human has not asked to control naming or layout."
312
+ ]
313
+ },
314
+ {
315
+ "version": "0.1.0-alpha.47",
316
+ "changes": [
317
+ "Self-messages now wake inner dialog now/soon instead of only queueing: the harness requests a daemon-managed inner wake when available and falls back to an inline inner turn when it is not.",
318
+ "`send_message(friendId=self)` and `query_session(friendId=self, channel=inner, mode=status)` now share a truthful four-line status contract: `queue`, `wake`, `processing`, and `surfaced`.",
319
+ "Inner dialog persists live runtime activity beside the transcript, so status checks can report active processing instead of stale last-turn history.",
320
+ "Inline fallback surfaced previews now extract `final_answer` text too, so completed inner turns no longer show `no outward result` when the response lived in the final tool call."
321
+ ]
322
+ },
323
+ {
324
+ "version": "0.1.0-alpha.46",
325
+ "changes": [
326
+ "Inner dialog now knows which task triggered it: taskId flows from daemon poke through the worker into the turn, and the agent gets the full task file content instead of a generic heartbeat prompt.",
327
+ "Inner dialog boot message includes aspirations and state summary instead of a vacuous placeholder, so the agent wakes up with context about what matters and what's happening.",
328
+ "Vestigial `drainInbox` removed from inner dialog \u2014 pipeline already handles pending drain correctly.",
329
+ "Inner dialog nerves events now include assistant response preview, tool call names, token usage, and taskId for meaningful observability.",
330
+ "`ouro thoughts` command reads and formats inner dialog session turns with `--last`, `--json`, `--follow`, and `--agent` flags \u2014 humans can now see what the agent has been thinking.",
331
+ "`readTaskFile` searches collection subdirectories (one-shots, ongoing, habits) since the scheduler sends bare task stems without collection prefixes.",
332
+ "`ouro reminder create` accepts `--requester` to track who requested a reminder for notification round-trip.",
333
+ "Response extraction handles `tool_choice=required` models by falling back to `final_answer` tool call arguments when assistant message content is empty."
334
+ ]
335
+ },
336
+ {
337
+ "version": "0.1.0-alpha.45",
338
+ "changes": [
339
+ "`ouro up` now persists a boot-time launch agent with `RunAtLoad`, so the daemon comes back reliably after reboot instead of only starting for the current session.",
340
+ "BlueBubbles sense status is now truthful about upstream health: it probes the real BlueBubbles API, records runtime state, and surfaces `error` when the webhook listener is alive but the upstream server is unreachable.",
341
+ "BlueBubbles intake now replays recoverable read/delivery mutation backlogs through the normal inbound agent path, with a small dedupe ledger so missed messages can be recovered without silent drops or duplicate delivery."
342
+ ]
343
+ },
344
+ {
345
+ "version": "0.1.0-alpha.44",
346
+ "changes": [
347
+ "Workflow skills now install into `~/.agents/skills` for Codex/OpenAI instead of duplicating installs under both `.agents` and `.codex`, which prevents duplicate advertised skills while keeping re-installs safe."
348
+ ]
349
+ },
350
+ {
351
+ "version": "0.1.0-alpha.43",
352
+ "changes": [
353
+ "Continuity-aware onboarding now stays contextual: when an active task goes idle, onboarding guidance can reappear during genuine lulls instead of staying hidden just because no-handoff state was previously persisted.",
354
+ "Teams active-turn controls are safer: `/new` still clears the current session during long-running turns, and superseding follow-ups keep the user's replacement ask instead of dropping it."
355
+ ]
356
+ },
357
+ {
358
+ "version": "0.1.0-alpha.42",
359
+ "changes": [
360
+ "Associative recall now skips corrupt JSONL lines instead of crashing \u2014 matches the resilient pattern already used in memory.ts."
361
+ ]
362
+ },
363
+ {
364
+ "version": "0.1.0-alpha.41",
365
+ "changes": [
366
+ "JSONL readers (memory facts, inter-agent inbox) now skip corrupt lines instead of crashing \u2014 partial writes from crashes no longer lose all data.",
367
+ "Inter-agent message router now parses before clearing the inbox file, and preserves unparsed lines so corrupt messages are not silently lost.",
368
+ "Inner-dialog checkpoint derivation no longer crashes on all-whitespace assistant content \u2014 returns fallback checkpoint instead.",
369
+ "Update checker interval now catches and logs errors from the onUpdate callback instead of silently swallowing them."
370
+ ]
371
+ },
372
+ {
373
+ "version": "0.1.0-alpha.40",
374
+ "changes": [
375
+ "Removed dead backward-compat re-exports from core.ts (tools, streaming, prompt, kicks) \u2014 consumers already import from the canonical modules.",
376
+ "Removed dead exports: baseToolHandlers, teamsToolHandlers, teamsTools, __internal (token-estimate), TASK_STEM_PATTERN, checkAndRecord403 no-op and METHOD_TO_ACTION.",
377
+ "Consolidated duplicate sanitizeKey (config.ts + bluebubbles-mutation-log.ts) and slugify (hatch-flow.ts + tasks/index.ts) into shared exports from config.ts.",
378
+ "Replaced all as-any casts in source with proper TypeScript narrowing or Record<string, unknown> \u2014 only 2 SDK-required casts remain.",
379
+ "Removed unnecessary as-unknown-as casts on readdirSync (4 locations) and spawner double-cast.",
380
+ "Cleaned up commented-out kick detection code, stale TODOs, misplaced imports, and unused type imports."
381
+ ]
382
+ },
383
+ {
384
+ "version": "0.1.0-alpha.39",
385
+ "changes": [
386
+ "All senses now route through a shared per-turn pipeline \u2014 friend resolution, trust gate, session load, pending drain, agent turn, post-turn, and token accumulation happen in one place instead of four.",
387
+ "Trust gate is now channel-aware: open senses (iMessage) enforce stranger/acquaintance rules, closed senses (Teams) trust the org, local and internal always pass through.",
388
+ "Tool access and prompt restrictions use a single shared isTrustedLevel check \u2014 no more scattered family/friend comparisons that could drift apart.",
389
+ "Pending messages now inject correctly into multimodal content (image attachments no longer silently drop pending messages).",
390
+ "ouro reminder create supports --agent flag, matching every other identity-scoped CLI command."
391
+ ]
392
+ },
393
+ {
394
+ "version": "0.1.0-alpha.38",
395
+ "changes": [
396
+ "You now have a proper body map \u2014 understanding of your home (bundle) and bones (harness), what each directory is for, and how to modify your own configuration.",
397
+ "Inner dialog is now genuine internal monologue with metacognitive framing, not a second CLI session. Heartbeat and bootstrap messages read as first-person awareness.",
398
+ "Cross-session communication works end-to-end: inner dialog thoughts surface as [inner thought: ...] in conversations, messages to yourself route to inner dialog, and you can proactively reach out to friends via iMessage and Teams.",
399
+ "Tool audit: removed wrapper tools (git_commit, gh_cli, get_current_time, list_directory), added surgical tools (edit_file, glob, grep, read_file with offset/limit), consolidated 7 task tools + schedule_reminder + friend tools into ouro CLI commands.",
400
+ "You now understand why certain tools are restricted in certain contexts \u2014 trust level and shared channels each have independent, explained gates.",
401
+ "ouro friend link/unlink commands handle orphan cleanup when linking external identities, merging duplicate friend records intelligently.",
402
+ "During onboarding, the adoption specialist can collect phone number and Teams handle to create an initial friend record with contact info."
403
+ ]
404
+ },
405
+ {
406
+ "version": "0.1.0-alpha.37",
407
+ "changes": [
408
+ "The in-repo docs now match the current harness instead of the old repo-local bundle era. README, CONTRIBUTING, ARCHITECTURE, testing guidance, merge guidance, versioning guidance, and subagent docs now describe external bundles, current senses, daemon bootstrap, and bundle-owned task docs truthfully."
409
+ ]
410
+ },
411
+ {
412
+ "version": "0.1.0-alpha.36",
413
+ "changes": [
414
+ "BlueBubbles now marks a chat read at the same moment it starts typing for a turn, so read receipts and typing begin together instead of the read state lagging until after the reply finishes."
415
+ ]
416
+ },
417
+ {
418
+ "version": "0.1.0-alpha.35",
419
+ "changes": [
420
+ "BlueBubbles no longer emits generic follow-up phrase bubbles like 'on it...' or 'followup...' into iMessage. The sense now uses typing plus concrete tool/error activity only, which keeps mobile turns quieter and less redundant."
421
+ ]
422
+ },
423
+ {
424
+ "version": "0.1.0-alpha.34",
425
+ "changes": [
426
+ "BlueBubbles now starts typing immediately when a turn begins and no longer sends a redundant first visible 'working...' bubble when typing already covers that initial thinking phase.",
427
+ "BlueBubbles still surfaces later meaningful progress on longer turns, and its lane metadata/tool feedback now makes the difference between the turn default and an explicit reply-target override much clearer."
428
+ ]
429
+ },
430
+ {
431
+ "version": "0.1.0-alpha.33",
432
+ "changes": [
433
+ "BlueBubbles now starts typing immediately when a turn begins and no longer sends a redundant first visible 'working...' bubble when typing already covers that initial thinking phase.",
434
+ "BlueBubbles still surfaces later meaningful progress on longer turns, and its lane metadata/tool feedback now makes the difference between the turn default and an explicit reply-target override much clearer.",
435
+ "Agent-owned runtime state now lives inside each bundle's `state/` directory instead of under `~/.agentstate/<agent>/...`, so sessions, logs, pending messages, coding session persistence, and BlueBubbles mutation logs stay co-located with the rest of the bundle.",
436
+ "Bundle-local state paths now stay durable on Azure too, and `state/` is treated as canonical bundle content while secrets continue to live in `~/.agentsecrets/<agent>/secrets.json`."
437
+ ]
438
+ },
439
+ {
440
+ "version": "0.1.0-alpha.32",
441
+ "changes": [
442
+ "BlueBubbles now treats thread-vs-top-level placement as an agent choice instead of a hard harness mirror. Slugger can deliberately stay in the current reply lane, widen back to top-level, or target another active thread when that makes the conversation flow better.",
443
+ "BlueBubbles turns now surface inbound lane metadata and recent active lanes from the shared chat trunk, so the model gets enough context to choose the right reply placement without splitting the conversation into separate persisted thread sessions."
444
+ ]
445
+ },
446
+ {
447
+ "version": "0.1.0-alpha.31",
448
+ "changes": [
449
+ "BlueBubbles no longer silently deletes old per-thread session files when loading a chat trunk. It now only detects and warns about those obsolete artifacts so local state is never mutated without an explicit human choice.",
450
+ "The cross-thread-awareness fix still keeps one chat trunk per conversation and preserves threaded reply targeting, but stale `_thread_*.json` files are now left in place until a person removes them."
451
+ ]
452
+ },
453
+ {
454
+ "version": "0.1.0-alpha.30",
455
+ "changes": [
456
+ "BlueBubbles reply threads now stay inside one shared chat trunk instead of creating separate persisted mini-sessions, so Slugger keeps parent-chat awareness and active work when you switch between threaded and top-level replies.",
457
+ "BlueBubbles now injects explicit current-turn thread scope metadata into inbound messages and automatically removes obsolete per-thread session artifacts that used to cause mid-task resets like 'hiya, what do ya need help with?'"
458
+ ]
459
+ },
460
+ {
461
+ "version": "0.1.0-alpha.29",
462
+ "changes": [
463
+ "Running `ouro up` now force-syncs the global `ouro.bot` wrapper so bare `npx ouro.bot` stops getting hijacked by stale global CLI bins and lands back on the intended latest runtime.",
464
+ "Bootstrap repair is now explicit about reclaiming the `ouro.bot` command from old global installs, which makes repeated bootstrap runs more trustworthy on machines with prior experimental installs."
465
+ ]
466
+ },
467
+ {
468
+ "version": "0.1.0-alpha.28",
469
+ "changes": [
470
+ "Bare npx ouro.bot now stays aligned with the current alpha CLI track because the published ouro.bot wrapper is version-locked and republished alongside the CLI instead of lagging behind it.",
471
+ "Slugger no longer re-opens active iMessage task threads with generic greetings like 'hiya' when work is already in motion; fresh idle conversations can still start warmly.",
472
+ "BlueBubbles voice notes now use a harness-managed whisper.cpp transcription path for the current OpenAI, Anthropic, and MiniMax runtime contracts, including automatic local provisioning and truthful error notices when transcription cannot complete."
473
+ ]
474
+ },
475
+ {
476
+ "version": "0.1.0-alpha.27",
477
+ "changes": [
478
+ "The daemon now discovers all enabled agents in ~/AgentBundles, so ouro status and managed workers reflect every real agent instead of only slugger and ouroboros.",
479
+ "BlueBubbles typing now wraps the visible working phase correctly, and phrase updates from agent.json take effect on the next turn without requiring a restart."
480
+ ]
481
+ },
482
+ {
483
+ "version": "0.1.0-alpha.26",
484
+ "changes": [
485
+ "The daemon now auto-checks npm for new runtime versions every 30 minutes and performs a staged restart when an update is available. You no longer need to manually run npm install."
486
+ ]
487
+ },
488
+ {
489
+ "version": "0.1.0-alpha.25",
490
+ "changes": [
491
+ "Runtime updates no longer downgrade your bundle-meta.json if you happen to be running a newer version than the installed CLI. Only forward updates are applied.",
492
+ "The 'ouro up' update summary is now a single consolidated line (e.g. 'updated 4 agents to runtime X (was Y)') instead of one line per agent."
493
+ ]
494
+ },
495
+ {
496
+ "version": "0.1.0-alpha.24",
497
+ "changes": [
498
+ "When you run 'ouro up', you now see which agents were updated and from what version, so you know exactly what happened during startup."
499
+ ]
500
+ },
501
+ {
502
+ "version": "0.1.0-alpha.23",
503
+ "changes": [
504
+ "You can now use 'ouro down' as an alias for 'ouro stop' to pair naturally with 'ouro up'."
505
+ ]
506
+ },
507
+ {
508
+ "version": "0.1.0-alpha.22",
509
+ "changes": [
510
+ "You now know your runtime version and can see when it changed. Your system prompt shows your current version and what you were running before, so you can track what's new.",
511
+ "A changelog file is now shipped with the runtime. You can read it to understand exactly what changed between versions.",
512
+ "When the runtime updates, your bundle-meta.json is automatically updated with the new version info. Your previous version is preserved so you always know your version history.",
513
+ "The daemon can now check for new versions of the runtime on npm and auto-update with a staged restart that validates hooks before switching to new code.",
514
+ "The daemon can now be managed as a macOS LaunchAgent for automatic restart on crash.",
515
+ "The daemon now auto-syncs the ouro.bot npm wrapper version on startup to keep the npx entry point current."
516
+ ]
517
+ },
518
+ {
519
+ "version": "0.1.0-alpha.21",
520
+ "changes": [
521
+ "You now know your runtime version and can see when it changed. Your system prompt shows your current version and what you were running before, so you can track what's new.",
522
+ "A changelog file is now shipped with the runtime. You can read it to understand exactly what changed between versions.",
523
+ "When the runtime updates, your bundle-meta.json is automatically updated with the new version info. Your previous version is preserved so you always know your version history.",
524
+ "The daemon can now check for new versions of the runtime on npm and auto-update with a staged restart that validates hooks before switching to new code.",
525
+ "The daemon can now be managed as a macOS LaunchAgent for automatic restart on crash."
526
+ ]
527
+ }
528
+ ]
529
+ }