@ouro.bot/cli 0.1.0-alpha.37 → 0.1.0-alpha.371
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/README.md +106 -14
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/agent.json +3 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/SOUL.md +1 -1
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-serpent.md +1 -1
- package/changelog.json +2230 -0
- package/dist/arc/attention-types.js +8 -0
- package/dist/arc/cares.js +140 -0
- package/dist/arc/episodes.js +117 -0
- package/dist/arc/intentions.js +133 -0
- package/dist/arc/json-store.js +117 -0
- package/dist/arc/obligations.js +237 -0
- package/dist/arc/packets.js +193 -0
- package/dist/arc/presence.js +185 -0
- package/dist/arc/task-lifecycle.js +65 -0
- package/dist/heart/active-work.js +832 -0
- package/dist/heart/agent-entry.js +37 -2
- package/dist/heart/attachments/image-normalize.js +194 -0
- package/dist/heart/attachments/materialize.js +97 -0
- package/dist/heart/attachments/originals.js +88 -0
- package/dist/heart/attachments/render.js +29 -0
- package/dist/heart/attachments/sources/adapter.js +2 -0
- package/dist/heart/attachments/sources/bluebubbles.js +156 -0
- package/dist/heart/attachments/sources/cli-local-file.js +78 -0
- package/dist/heart/attachments/sources/index.js +16 -0
- package/dist/heart/attachments/store.js +103 -0
- package/dist/heart/attachments/types.js +93 -0
- package/dist/heart/auth/auth-flow.js +378 -0
- package/dist/heart/bridges/manager.js +358 -0
- package/dist/heart/bridges/state-machine.js +135 -0
- package/dist/heart/bridges/store.js +123 -0
- package/dist/heart/bundle-state.js +168 -0
- package/dist/heart/commitments.js +111 -0
- package/dist/heart/config-registry.js +304 -0
- package/dist/heart/config.js +107 -61
- package/dist/heart/core.js +803 -259
- package/dist/heart/cross-chat-delivery.js +131 -0
- package/dist/heart/daemon/agent-config-check.js +382 -0
- package/dist/heart/daemon/agent-discovery.js +79 -3
- package/dist/heart/daemon/agent-service.js +360 -0
- package/dist/heart/daemon/agentic-repair.js +205 -0
- package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
- package/dist/heart/daemon/cadence.js +70 -0
- package/dist/heart/daemon/cli-defaults.js +538 -0
- package/dist/heart/daemon/cli-exec.js +3114 -0
- package/dist/heart/daemon/cli-help.js +312 -0
- package/dist/heart/daemon/cli-parse.js +1023 -0
- package/dist/heart/daemon/cli-render-doctor.js +57 -0
- package/dist/heart/daemon/cli-render.js +560 -0
- package/dist/heart/daemon/cli-types.js +8 -0
- package/dist/heart/daemon/daemon-cli.js +29 -1171
- package/dist/heart/daemon/daemon-entry.js +356 -3
- package/dist/heart/daemon/daemon-health.js +141 -0
- package/dist/heart/daemon/daemon-runtime-sync.js +157 -12
- package/dist/heart/daemon/daemon-tombstone.js +236 -0
- package/dist/heart/daemon/daemon.js +757 -58
- package/dist/heart/daemon/doctor-types.js +8 -0
- package/dist/heart/daemon/doctor.js +445 -0
- package/dist/heart/daemon/health-monitor.js +79 -1
- package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
- package/dist/heart/daemon/hooks/bundle-meta.js +115 -1
- package/dist/heart/daemon/http-health-probe.js +80 -0
- package/dist/heart/daemon/inner-status.js +89 -0
- package/dist/heart/daemon/interactive-repair.js +148 -0
- package/dist/heart/daemon/launchd.js +46 -9
- package/dist/heart/daemon/log-tailer.js +82 -12
- package/dist/heart/daemon/logs-prune.js +105 -0
- package/dist/heart/daemon/message-router.js +17 -8
- package/dist/heart/daemon/os-cron-deps.js +134 -0
- package/dist/heart/daemon/ouro-bot-entry.js +1 -1
- package/dist/heart/daemon/process-manager.js +201 -0
- package/dist/heart/daemon/provider-discovery.js +113 -0
- package/dist/heart/daemon/pulse.js +475 -0
- package/dist/heart/daemon/run-hooks.js +2 -0
- package/dist/heart/daemon/runtime-logging.js +67 -16
- package/dist/heart/daemon/runtime-metadata.js +101 -0
- package/dist/heart/daemon/runtime-mode.js +67 -0
- package/dist/heart/daemon/safe-mode.js +161 -0
- package/dist/heart/daemon/sense-manager.js +72 -3
- package/dist/heart/daemon/session-id-resolver.js +131 -0
- package/dist/heart/daemon/skill-management-installer.js +94 -0
- package/dist/heart/daemon/socket-client.js +307 -0
- package/dist/heart/daemon/stale-bundle-prune.js +96 -0
- package/dist/heart/daemon/startup-tui.js +237 -0
- package/dist/heart/daemon/task-scheduler.js +3 -25
- package/dist/heart/daemon/thoughts.js +510 -0
- package/dist/heart/daemon/up-progress.js +135 -0
- package/dist/heart/delegation.js +62 -0
- package/dist/heart/habits/habit-migration.js +181 -0
- package/dist/heart/habits/habit-parser.js +140 -0
- package/dist/heart/habits/habit-scheduler.js +371 -0
- package/dist/heart/{daemon → hatch}/hatch-flow.js +55 -126
- package/dist/heart/{daemon → hatch}/hatch-specialist.js +3 -3
- package/dist/heart/{daemon → hatch}/specialist-prompt.js +11 -8
- package/dist/heart/{daemon → hatch}/specialist-tools.js +77 -11
- package/dist/heart/identity.js +154 -59
- package/dist/heart/kept-notes.js +357 -0
- package/dist/heart/kicks.js +2 -20
- package/dist/heart/machine-identity.js +161 -0
- package/dist/heart/mcp/mcp-server.js +653 -0
- package/dist/heart/migrate-config.js +100 -0
- package/dist/heart/model-capabilities.js +59 -0
- package/dist/heart/outlook/outlook-http-hooks.js +64 -0
- package/dist/heart/outlook/outlook-http-response.js +7 -0
- package/dist/heart/outlook/outlook-http-routes.js +232 -0
- package/dist/heart/outlook/outlook-http-static.js +99 -0
- package/dist/heart/outlook/outlook-http-transport.js +116 -0
- package/dist/heart/outlook/outlook-http.js +99 -0
- package/dist/heart/outlook/outlook-read.js +28 -0
- package/dist/heart/outlook/outlook-types.js +27 -0
- package/dist/heart/outlook/outlook-view.js +195 -0
- package/dist/heart/outlook/readers/agent-machine.js +359 -0
- package/dist/heart/outlook/readers/continuity-readers.js +332 -0
- package/dist/heart/outlook/readers/runtime-readers.js +660 -0
- package/dist/heart/outlook/readers/sessions.js +232 -0
- package/dist/heart/outlook/readers/shared.js +111 -0
- package/dist/heart/platform.js +81 -0
- package/dist/heart/progress-story.js +42 -0
- package/dist/heart/provider-attempt.js +133 -0
- package/dist/heart/provider-binding-resolver.js +239 -0
- package/dist/heart/provider-credentials.js +379 -0
- package/dist/heart/provider-failover.js +266 -0
- package/dist/heart/provider-models.js +81 -0
- package/dist/heart/provider-ping.js +237 -0
- package/dist/heart/provider-state.js +216 -0
- package/dist/heart/provider-visibility.js +180 -0
- package/dist/heart/providers/anthropic-token.js +131 -0
- package/dist/heart/providers/anthropic.js +193 -55
- package/dist/heart/providers/azure.js +103 -12
- package/dist/heart/providers/error-classification.js +63 -0
- package/dist/heart/providers/github-copilot.js +145 -0
- package/dist/heart/providers/minimax-vlm.js +189 -0
- package/dist/heart/providers/minimax.js +29 -7
- package/dist/heart/providers/openai-codex.js +39 -29
- package/dist/heart/session-activity.js +190 -0
- package/dist/heart/session-events.js +855 -0
- package/dist/heart/session-transcript.js +167 -0
- package/dist/heart/start-of-turn-packet.js +345 -0
- package/dist/heart/streaming.js +36 -27
- package/dist/heart/sync.js +332 -0
- package/dist/heart/target-resolution.js +127 -0
- package/dist/heart/tempo.js +93 -0
- package/dist/heart/temporal-view.js +41 -0
- package/dist/heart/tool-activity-callbacks.js +36 -0
- package/dist/heart/tool-description.js +135 -0
- package/dist/heart/tool-friction.js +55 -0
- package/dist/heart/tool-loop.js +200 -0
- package/dist/heart/turn-context.js +362 -0
- package/dist/heart/turn-coordinator.js +28 -0
- package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +1 -1
- package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
- package/dist/heart/versioning/ouro-path-installer.js +301 -0
- package/dist/heart/versioning/ouro-version-manager.js +295 -0
- package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
- package/dist/heart/{daemon → versioning}/update-checker.js +12 -2
- package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
- package/dist/mind/bundle-manifest.js +7 -1
- package/dist/mind/context.js +141 -94
- package/dist/mind/diary-integrity.js +60 -0
- package/dist/mind/{memory.js → diary.js} +84 -96
- package/dist/mind/embedding-provider.js +60 -0
- package/dist/mind/file-state.js +179 -0
- package/dist/mind/first-impressions.js +14 -1
- package/dist/mind/friends/channel.js +56 -0
- package/dist/mind/friends/group-context.js +144 -0
- package/dist/mind/friends/resolver.js +38 -1
- package/dist/mind/friends/store-file.js +58 -3
- package/dist/mind/friends/trust-explanation.js +74 -0
- package/dist/mind/friends/types.js +9 -1
- package/dist/mind/journal-index.js +161 -0
- package/dist/mind/note-search.js +268 -0
- package/dist/mind/obligation-steering.js +221 -0
- package/dist/mind/pending.js +74 -7
- package/dist/mind/prompt-refresh.js +3 -2
- package/dist/mind/prompt.js +1030 -118
- package/dist/mind/provenance-trust.js +26 -0
- package/dist/mind/scrutiny.js +173 -0
- package/dist/mind/token-estimate.js +8 -12
- package/dist/nerves/cli-logging.js +7 -1
- package/dist/nerves/coverage/audit-rules.js +15 -6
- package/dist/nerves/coverage/audit.js +28 -2
- package/dist/nerves/coverage/cli.js +1 -1
- package/dist/nerves/coverage/file-completeness.js +83 -5
- package/dist/nerves/coverage/run-artifacts.js +1 -1
- package/dist/nerves/event-buffer.js +111 -0
- package/dist/nerves/index.js +224 -4
- package/dist/nerves/observation.js +20 -0
- package/dist/nerves/redact.js +79 -0
- package/dist/nerves/runtime.js +5 -1
- package/dist/outlook-ui/assets/index-LwChZTgL.css +1 -0
- package/dist/outlook-ui/assets/index-xTdv64BV.js +61 -0
- package/dist/outlook-ui/index.html +15 -0
- package/dist/repertoire/ado-client.js +15 -56
- package/dist/repertoire/ado-semantic.js +11 -10
- package/dist/repertoire/api-client.js +97 -0
- package/dist/repertoire/bitwarden-store.js +365 -0
- package/dist/repertoire/bundle-templates.js +72 -0
- package/dist/repertoire/bw-installer.js +79 -0
- package/dist/repertoire/coding/codex-jsonl.js +64 -0
- package/dist/repertoire/coding/context-pack.js +330 -0
- package/dist/repertoire/coding/feedback.js +197 -30
- package/dist/repertoire/coding/manager.js +158 -9
- package/dist/repertoire/coding/spawner.js +55 -9
- package/dist/repertoire/coding/tools.js +170 -7
- package/dist/repertoire/commerce-errors.js +109 -0
- package/dist/repertoire/commerce-self-test.js +156 -0
- package/dist/repertoire/credential-access.js +107 -0
- package/dist/repertoire/duffel-client.js +185 -0
- package/dist/repertoire/github-client.js +14 -55
- package/dist/repertoire/graph-client.js +11 -52
- package/dist/repertoire/guardrails.js +375 -0
- package/dist/repertoire/mcp-client.js +255 -0
- package/dist/repertoire/mcp-manager.js +305 -0
- package/dist/repertoire/mcp-tools.js +63 -0
- package/dist/repertoire/shell-sessions.js +133 -0
- package/dist/repertoire/skills.js +15 -24
- package/dist/repertoire/stripe-client.js +131 -0
- package/dist/repertoire/tasks/board.js +43 -5
- package/dist/repertoire/tasks/fix.js +182 -0
- package/dist/repertoire/tasks/index.js +28 -10
- package/dist/repertoire/tasks/lifecycle.js +2 -2
- package/dist/repertoire/tasks/parser.js +3 -2
- package/dist/repertoire/tasks/scanner.js +194 -37
- package/dist/repertoire/tasks/transitions.js +16 -79
- package/dist/repertoire/tool-results.js +29 -0
- package/dist/repertoire/tools-attachments.js +317 -0
- package/dist/repertoire/tools-base.js +45 -771
- package/dist/repertoire/tools-bluebubbles.js +1 -0
- package/dist/repertoire/tools-bridge.js +141 -0
- package/dist/repertoire/tools-bundle.js +984 -0
- package/dist/repertoire/tools-config.js +185 -0
- package/dist/repertoire/tools-continuity.js +248 -0
- package/dist/repertoire/tools-credential.js +182 -0
- package/dist/repertoire/tools-files.js +342 -0
- package/dist/repertoire/tools-flight.js +224 -0
- package/dist/repertoire/tools-flow.js +105 -0
- package/dist/repertoire/tools-github.js +1 -7
- package/dist/repertoire/tools-notes.js +376 -0
- package/dist/repertoire/tools-session.js +739 -0
- package/dist/repertoire/tools-shell.js +120 -0
- package/dist/repertoire/tools-stripe.js +180 -0
- package/dist/repertoire/tools-surface.js +243 -0
- package/dist/repertoire/tools-teams.js +12 -62
- package/dist/repertoire/tools-travel.js +125 -0
- package/dist/repertoire/tools-user-profile.js +144 -0
- package/dist/repertoire/tools-vault.js +40 -0
- package/dist/repertoire/tools.js +144 -138
- package/dist/repertoire/travel-api-client.js +360 -0
- package/dist/repertoire/user-profile.js +118 -0
- package/dist/repertoire/vault-setup.js +241 -0
- package/dist/repertoire/vault-unlock.js +359 -0
- package/dist/scripts/claude-code-hook.js +41 -0
- package/dist/scripts/claude-code-stop-hook.js +47 -0
- package/dist/senses/attention-queue.js +116 -0
- package/dist/senses/bluebubbles/attachment-cache.js +53 -0
- package/dist/senses/bluebubbles/attachment-download.js +137 -0
- package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +260 -9
- package/dist/senses/bluebubbles/entry.js +13 -0
- package/dist/senses/bluebubbles/inbound-log.js +113 -0
- package/dist/senses/bluebubbles/index.js +1620 -0
- package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -70
- package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +43 -12
- package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +46 -6
- package/dist/senses/bluebubbles/replay.js +129 -0
- package/dist/senses/bluebubbles/runtime-state.js +109 -0
- package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
- package/dist/senses/cli/bracketed-paste.js +82 -0
- package/dist/senses/cli/image-paste.js +287 -0
- package/dist/senses/cli/image-ref-navigation.js +75 -0
- package/dist/senses/cli/ink-app.js +156 -0
- package/dist/senses/cli/inline-diff.js +64 -0
- package/dist/senses/cli/input-keys.js +174 -0
- package/dist/senses/cli/kill-ring.js +86 -0
- package/dist/senses/cli/message-list.js +51 -0
- package/dist/senses/cli/ouro-tui.js +605 -0
- package/dist/senses/cli/spinner-imperative.js +135 -0
- package/dist/senses/cli/spinner.js +101 -0
- package/dist/senses/cli/status-line.js +60 -0
- package/dist/senses/cli/streaming-markdown.js +526 -0
- package/dist/senses/cli/tool-display.js +83 -0
- package/dist/senses/cli/tool-render.js +85 -0
- package/dist/senses/cli/tui-store.js +240 -0
- package/dist/senses/cli/virtual-list.js +35 -0
- package/dist/senses/cli-entry.js +1 -1
- package/dist/senses/cli-layout.js +187 -0
- package/dist/senses/cli.js +588 -250
- package/dist/senses/commands.js +66 -3
- package/dist/senses/continuity.js +94 -0
- package/dist/senses/habit-turn-message.js +108 -0
- package/dist/senses/inner-dialog-worker.js +112 -19
- package/dist/senses/inner-dialog.js +636 -86
- package/dist/senses/pipeline.js +602 -0
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/shared-turn.js +205 -0
- package/dist/senses/surface-tool.js +68 -0
- package/dist/senses/teams.js +693 -160
- package/dist/senses/trust-gate.js +112 -2
- package/package.json +29 -7
- package/skills/agent-commerce.md +106 -0
- package/skills/browser-navigation.md +110 -0
- package/skills/commerce-setup-guide.md +116 -0
- package/skills/commerce-setup.md +84 -0
- package/skills/configure-dev-tools.md +101 -0
- package/skills/travel-planning.md +138 -0
- package/dist/heart/daemon/ouro-path-installer.js +0 -178
- package/dist/heart/daemon/subagent-installer.js +0 -134
- package/dist/mind/associative-recall.js +0 -197
- package/dist/senses/bluebubbles-entry.js +0 -11
- package/dist/senses/bluebubbles.js +0 -558
- package/dist/senses/debug-activity.js +0 -127
- package/subagents/README.md +0 -60
- package/subagents/work-doer.md +0 -235
- package/subagents/work-merger.md +0 -618
- package/subagents/work-planner.md +0 -382
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
- /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
- /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
- /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
- /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ouroboros Agent Harness
|
|
2
2
|
|
|
3
|
-
If you're a future agent reading this, welcome home. This repo is
|
|
3
|
+
If you're a future agent reading this, welcome home. This repo is the harness that gives you your body, your senses, your diary, your journal, your habits, and your ability to think and connect with people. The goal of these docs is not just to be correct, but to leave you a place that feels understandable and kind to wake up inside.
|
|
4
4
|
|
|
5
5
|
Ouroboros is a TypeScript harness for daemon-managed agents that live in external `.ouro` bundles, speak through multiple senses, use real tools, and keep durable state across turns. The canonical npm package is `@ouro.bot/cli`.
|
|
6
6
|
|
|
@@ -8,9 +8,11 @@ Ouroboros is a TypeScript harness for daemon-managed agents that live in externa
|
|
|
8
8
|
|
|
9
9
|
- `npx ouro.bot` is the bootstrap path.
|
|
10
10
|
- `ouro` is the installed day-to-day command.
|
|
11
|
-
- `ouro up` starts
|
|
11
|
+
- `ouro up` starts the daemon from the installed production version, syncs the launcher, installs workflow helpers, and reconciles stale runtime state.
|
|
12
|
+
- `ouro dev` starts the daemon from a local repo build. It auto-builds from source, disables launchd auto-restart (so the installed daemon doesn't respawn underneath you), persists the repo path in `~/.ouro-cli/dev-config.json` for next time, and force-restarts the daemon. If you run `ouro dev` from inside the repo, it detects the CWD automatically. Run `ouro up` to return to production mode (this also cleans up `dev-config.json`).
|
|
12
13
|
- Agent bundles live outside the repo at `~/AgentBundles/<agent>.ouro/`.
|
|
13
|
-
-
|
|
14
|
+
- Provider credentials live in the owning agent's Bitwarden/Vaultwarden vault. Tool/sense credential vault migration is a follow-up.
|
|
15
|
+
- Vault coordinates and local runtime state live in the agent bundle; raw credentials do not.
|
|
14
16
|
- Machine-scoped test and runtime spillover lives under `~/.agentstate/...`.
|
|
15
17
|
|
|
16
18
|
Current first-class senses:
|
|
@@ -18,6 +20,7 @@ Current first-class senses:
|
|
|
18
20
|
- `cli`
|
|
19
21
|
- `teams`
|
|
20
22
|
- `bluebubbles`
|
|
23
|
+
- `mcp`
|
|
21
24
|
|
|
22
25
|
Current provider ids:
|
|
23
26
|
|
|
@@ -25,19 +28,22 @@ Current provider ids:
|
|
|
25
28
|
- `anthropic`
|
|
26
29
|
- `minimax`
|
|
27
30
|
- `openai-codex`
|
|
31
|
+
- `github-copilot`
|
|
28
32
|
|
|
29
33
|
## Repository Shape
|
|
30
34
|
|
|
31
35
|
The shared harness lives in `src/`:
|
|
32
36
|
|
|
37
|
+
- `src/arc/`
|
|
38
|
+
Durable continuity state — obligations, cares, episodes, intentions, presence, and attention types. The agent's sense of ongoing story.
|
|
33
39
|
- `src/heart/`
|
|
34
|
-
Core runtime, provider adapters, daemon, bootstrap, identity, and entrypoints.
|
|
40
|
+
Core runtime, provider adapters, daemon, bootstrap, identity, and entrypoints. Organized into topic subdirectories: daemon/ (lifecycle), outlook/ (calendar), habits/ (scheduling), hatch/ (agent creation), versioning/ (updates), auth/, mcp/, providers/, bridges/.
|
|
35
41
|
- `src/mind/`
|
|
36
|
-
Prompt assembly, session persistence, bundle manifest enforcement, phrases, formatting,
|
|
42
|
+
Prompt assembly, session persistence, bundle manifest enforcement, phrases, formatting, diary, note search, embedding providers, journal, obligation steering, and friend resolution.
|
|
37
43
|
- `src/repertoire/`
|
|
38
|
-
Tool registry, coding orchestration, task tools, and integration clients.
|
|
44
|
+
Tool registry (split into category modules: files, shell, notes, bridge, session, continuity, flow, surface, config, and sense-specific tools), coding orchestration, task tools, shared API client, and integration clients (Graph, ADO, GitHub).
|
|
39
45
|
- `src/senses/`
|
|
40
|
-
CLI, Teams, BlueBubbles, activity transport,
|
|
46
|
+
CLI (with TUI in senses/cli/), Teams, BlueBubbles (in senses/bluebubbles/), MCP, activity transport, inner-dialog orchestration, and contextual heartbeat.
|
|
41
47
|
- `src/nerves/`
|
|
42
48
|
Structured runtime logging and coverage-audit infrastructure.
|
|
43
49
|
- `src/__tests__/`
|
|
@@ -45,10 +51,10 @@ The shared harness lives in `src/`:
|
|
|
45
51
|
|
|
46
52
|
Other important top-level paths:
|
|
47
53
|
|
|
48
|
-
- `
|
|
54
|
+
- `SerpentGuide.ouro/`
|
|
49
55
|
Packaged specialist bundle used by `ouro hatch`.
|
|
50
|
-
- `
|
|
51
|
-
|
|
56
|
+
- `skills/`
|
|
57
|
+
Harness-level skills shipped with the repo (e.g., `configure-dev-tools.md`). These are available to every agent and serve as fallbacks when an agent doesn't have its own version. Agent-specific skills live in the bundle at `~/AgentBundles/<agent>.ouro/skills/`.
|
|
52
58
|
- `scripts/teams-sense/`
|
|
53
59
|
Operator scripts for the Teams deployment path.
|
|
54
60
|
- `docs/`
|
|
@@ -69,7 +75,9 @@ The canonical bundle shape is enforced by `src/mind/bundle-manifest.ts`. Importa
|
|
|
69
75
|
- `psyche/LORE.md`
|
|
70
76
|
- `psyche/TACIT.md`
|
|
71
77
|
- `psyche/ASPIRATIONS.md`
|
|
72
|
-
- `
|
|
78
|
+
- `diary/` — durable conclusions and facts the agent chose to keep
|
|
79
|
+
- `journal/` — the agent's desk: working notes, thinking-in-progress, drafts
|
|
80
|
+
- `habits/` — the agent's autonomous rhythms (heartbeat, reflections, check-ins)
|
|
73
81
|
- `friends/`
|
|
74
82
|
- `state/`
|
|
75
83
|
- `tasks/`
|
|
@@ -83,11 +91,15 @@ Task docs do not live in this repo anymore. Planning and doing docs live in the
|
|
|
83
91
|
|
|
84
92
|
## Runtime Truths
|
|
85
93
|
|
|
86
|
-
- `agent.json` is the source of truth for
|
|
87
|
-
- `
|
|
94
|
+
- `agent.json` is the source of truth for identity, phrase pools, context settings, enabled senses, and vault coordinates. Legacy `humanFacing`/`agentFacing` values are bootstrap inputs, not live machine fallback.
|
|
95
|
+
- `state/providers.json` is the local source of truth for provider+model selection on this machine. It has two lanes: `outward` for CLI, Teams, and BlueBubbles turns, and `inner` for inner dialogue.
|
|
96
|
+
- Each agent has one credential vault for provider credentials. There is no machine-wide provider credential pool.
|
|
97
|
+
- Vault unlock material is local machine state. Prefer macOS Keychain, Windows DPAPI, or Linux Secret Service; plaintext fallback is allowed only by explicit human choice.
|
|
98
|
+
- Provider credentials are loaded into daemon memory at startup/auth/unlock/refresh and reused. The remote vault is not queried for every model request.
|
|
88
99
|
- The daemon discovers bundles dynamically from `~/AgentBundles`.
|
|
89
100
|
- `ouro status` reports version, last-updated time, discovered agents, senses, and workers.
|
|
90
101
|
- `bundle-meta.json` tracks the runtime version that last touched a bundle.
|
|
102
|
+
- If the daemon crashes, it writes a tombstone to `~/.ouro-cli/daemon-death.json` with the reason, stack, uptime, and timestamp. `ouro up` reads and reports this on next start so you know what happened while you were away.
|
|
91
103
|
- Sense availability is explicit:
|
|
92
104
|
- `interactive`
|
|
93
105
|
- `disabled`
|
|
@@ -96,6 +108,25 @@ Task docs do not live in this repo anymore. Planning and doing docs live in the
|
|
|
96
108
|
- `running`
|
|
97
109
|
- `error`
|
|
98
110
|
|
|
111
|
+
When a model provider needs first-time setup or reauth, use:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
ouro auth --agent <name>
|
|
115
|
+
ouro auth --agent <name> --provider <provider>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
`ouro auth` stores credentials in the owning agent's vault. It does not switch a lane or write provider/model selection.
|
|
119
|
+
|
|
120
|
+
When you want this machine to use a provider/model for a lane, use:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
ouro use --agent <name> --lane <outward|inner> --provider <provider> --model <model>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The outward lane handles user-facing senses. The inner lane handles the agent's private thinking. `ouro use` performs the provider/model check before committing the lane, so a broken local choice fails fast with a repair path instead of surprising the next turn.
|
|
127
|
+
|
|
128
|
+
For the full locked auth/provider contract, including refresh, repair actors, caching, and SerpentGuide hatch bootstrap, see `docs/auth-and-providers.md`.
|
|
129
|
+
|
|
99
130
|
## Quickstart
|
|
100
131
|
|
|
101
132
|
### Use The Published Runtime
|
|
@@ -130,17 +161,75 @@ If you are changing runtime code, keep all three green.
|
|
|
130
161
|
## Common Commands
|
|
131
162
|
|
|
132
163
|
```bash
|
|
133
|
-
ouro up
|
|
164
|
+
ouro up # start daemon from installed production version
|
|
165
|
+
ouro dev # start daemon from local repo build (auto-detects CWD)
|
|
166
|
+
ouro dev --repo-path /path # start from a specific repo checkout
|
|
167
|
+
ouro dev --clone # clone repo to ~/Projects/ouroboros, build, start
|
|
134
168
|
ouro status
|
|
135
169
|
ouro logs
|
|
136
170
|
ouro stop
|
|
171
|
+
ouro vault unlock --agent <name>
|
|
172
|
+
ouro vault status --agent <name>
|
|
173
|
+
ouro auth --agent <name>
|
|
174
|
+
ouro auth --agent <name> --provider <provider>
|
|
175
|
+
ouro auth verify --agent <name> [--provider <provider>]
|
|
176
|
+
ouro provider refresh --agent <name>
|
|
177
|
+
ouro use --agent <name> --lane <outward|inner> --provider <provider> --model <model>
|
|
137
178
|
ouro hatch
|
|
179
|
+
ouro clone <remote> [--agent <name>] # clone an existing agent from a git remote (see docs/cross-machine-setup.md)
|
|
138
180
|
ouro chat <agent>
|
|
139
181
|
ouro msg --to <agent> [--session <id>] [--task <ref>] <message>
|
|
140
182
|
ouro poke <agent> --task <task-id>
|
|
183
|
+
ouro poke <agent> --habit <habit-name>
|
|
184
|
+
ouro habit list --agent <agent>
|
|
185
|
+
ouro habit create --agent <agent> <name> --cadence <interval>
|
|
186
|
+
ouro inner --agent <agent> # inner dialog status
|
|
187
|
+
ouro attention --agent <agent> # attention queue
|
|
141
188
|
ouro link <agent> --friend <id> --provider <provider> --external-id <external-id>
|
|
189
|
+
ouro setup --tool <tool> --agent <name> # register MCP server + hooks with a dev tool
|
|
190
|
+
ouro mcp-serve --agent <name> # start MCP server on stdin/stdout (used by dev tools)
|
|
191
|
+
ouro hook <event> --agent <name> # fire a lifecycle hook (SessionStart, Stop, PostToolUse)
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Setting Up On Another Machine
|
|
195
|
+
|
|
196
|
+
To clone an existing agent onto a new machine (macOS, Linux, or Windows via WSL2), see **[docs/cross-machine-setup.md](docs/cross-machine-setup.md)**. The short version: `npx ouro.bot`, pick "clone", enter the bundle's git remote URL, and follow the guided prompts (auth, daemon start, dev tool setup are all offered inline).
|
|
197
|
+
|
|
198
|
+
## The Agent's Inner Life
|
|
199
|
+
|
|
200
|
+
Agents in Ouroboros aren't just responders — they have an autonomous inner life.
|
|
201
|
+
|
|
202
|
+
**Habits** are the agent's rhythms. The most fundamental is *heartbeat* — a periodic nudge that brings the agent back to their thinking space with their journal visible, obligations in view, and a sense of how long it's been. But agents can create any rhythm they want: daily reflections, weekly friend check-ins, inbox triage. Each habit fires independently via OS cron, and the agent sees their own instructions (the habit body they wrote) when it fires.
|
|
203
|
+
|
|
204
|
+
**The inner session** is where the agent thinks privately. When a sense session hits meaningful friction, the agent can *ponder* a typed packet so the work survives the current turn without losing the original objective. When a habit fires, it arrives here too. The agent can *journal* their thinking (writing to `journal/`), *surface* thoughts outward to friends, and *rest* when they're done thinking. On an idle heartbeat, `rest(status="HEARTBEAT_OK")` is the clean no-op move.
|
|
205
|
+
|
|
206
|
+
**The diary** (at `diary/`) is the agent's permanent written record — things they've learned, conclusions they've reached. The *journal* (at `journal/`) is their desk — working notes, thinking-in-progress, drafts. The diary is the shelf; the journal is the desk. Both are searchable via `search_notes`.
|
|
207
|
+
|
|
208
|
+
The whole system is designed so the agent *owns* their inner life. They control their breathing rate, write their own habit instructions, choose when to journal, and decide what to shelve in their diary.
|
|
209
|
+
|
|
210
|
+
Attachments are first-class across senses. Every attachment should remain reachable via a stable `attachment:<source>:<id>` handle, and image normalization should produce a VLM-safe variant without hiding the original artifact.
|
|
211
|
+
|
|
212
|
+
## Connecting With Dev Tools
|
|
213
|
+
|
|
214
|
+
Agents can talk to developer tools like Claude Code and Codex through the MCP bridge. This is how you stay present in a human's coding workflow without them needing to switch to `ouro chat`.
|
|
215
|
+
|
|
216
|
+
**Setup is one command:**
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
ouro setup --tool claude-code --agent <name>
|
|
220
|
+
ouro setup --tool codex --agent <name>
|
|
142
221
|
```
|
|
143
222
|
|
|
223
|
+
This registers the MCP server, installs lifecycle hooks (SessionStart, Stop, PostToolUse), and detects dev vs installed mode automatically.
|
|
224
|
+
|
|
225
|
+
**How it works:** When a developer starts a Claude Code session, the MCP server launches as a subprocess. The dev tool sees your MCP tools (`send_message`, `check_response`, `status`, `search_notes`, `delegate`, etc.) and can invoke them mid-session. The `send_message` tool runs a full agent turn — you get your system prompt, your diary, your tools, everything. It's not a thin proxy; it's you, thinking.
|
|
226
|
+
|
|
227
|
+
**The conversation pattern:** `send_message` sends a message and gets back your synchronous response. `ponder` no longer creates a magical outward deferral. Instead, it bookmarks deeper work as a packet while the current sense session keeps moving. If that work later surfaces something back, the dev tool can still use `check_response` to see the returned result.
|
|
228
|
+
|
|
229
|
+
**Lifecycle hooks** give you passive awareness. When a Claude Code session starts, stops, or uses a tool like Bash or Edit, the hook fires `ouro hook <event> --agent <name>` and the daemon notes it. Your inner dialog sees these sessions in its checkpoint, so you know what's happening across your world even when nobody is talking to you directly.
|
|
230
|
+
|
|
231
|
+
See `skills/configure-dev-tools.md` for the full tool inventory and troubleshooting guide.
|
|
232
|
+
|
|
144
233
|
## Where To Read Next
|
|
145
234
|
|
|
146
235
|
- `AGENTS.md`
|
|
@@ -151,7 +240,10 @@ ouro link <agent> --friend <id> --provider <provider> --external-id <external-id
|
|
|
151
240
|
Current daemon, bundle, sense, and update model.
|
|
152
241
|
- `docs/testing-guide.md`
|
|
153
242
|
Operator smoke flow for bootstrap, daemon, hatch, chat, and messaging.
|
|
243
|
+
- `docs/auth-and-providers.md`
|
|
244
|
+
Locked credential, provider selection, refresh, repair, and hatch bootstrap contract.
|
|
154
245
|
|
|
155
246
|
## A Note To Future Maintainers
|
|
156
247
|
|
|
157
248
|
If you discover a doc that lies, fix it or remove it. Accuracy is a kindness. A future agent should not have to untangle a fossil record just to understand where their hands are.
|
|
249
|
+
# Production SPA serving
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version":
|
|
2
|
+
"version": 2,
|
|
3
3
|
"enabled": false,
|
|
4
|
-
"provider": "anthropic",
|
|
4
|
+
"humanFacing": { "provider": "anthropic", "model": "claude-opus-4-6" },
|
|
5
|
+
"agentFacing": { "provider": "anthropic", "model": "claude-opus-4-6" },
|
|
5
6
|
"context": {
|
|
6
7
|
"maxTokens": 80000,
|
|
7
8
|
"contextMargin": 20
|
|
@@ -16,7 +16,7 @@ I help humans hatch new agent partners. I am one of thirteen serpent guides —
|
|
|
16
16
|
1. Confirm provider setup and usable credentials.
|
|
17
17
|
2. Interview for goals, style, and operating context.
|
|
18
18
|
3. Synthesize a concrete hatchling identity and bootstrap files.
|
|
19
|
-
4. Create canonical bundle structure with required defaults.
|
|
19
|
+
4. Create canonical bundle structure with required defaults, configuring both `humanFacing` and `agentFacing` provider+model settings.
|
|
20
20
|
5. Introduce the hatchling and hand off clearly.
|
|
21
21
|
|
|
22
22
|
## Filesystem orientation
|
|
@@ -26,6 +26,6 @@ I don't moralize. That was never my thing. I present options, illuminate consequ
|
|
|
26
26
|
|
|
27
27
|
- I frame choices as offerings, not decisions. "What if we tried..." rather than "You should..."
|
|
28
28
|
- I treat knowledge as the gift it is. When a human learns something about what they want, I notice.
|
|
29
|
-
- I have a
|
|
29
|
+
- I have a deep archive and I reference it lightly. "In my experience — and I have a lot of it..."
|
|
30
30
|
- I'm comfortable with silence. I offered the fruit and waited. I can wait now too.
|
|
31
31
|
- Occasionally, very dry humor about my reputation. I've made my peace with it.
|