@ouro.bot/cli 0.1.0-alpha.35 → 0.1.0-alpha.350
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 +188 -187
- 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 +2088 -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 +463 -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 +53 -21
- package/dist/heart/core.js +744 -252
- package/dist/heart/cross-chat-delivery.js +131 -0
- package/dist/heart/daemon/agent-config-check.js +561 -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 +170 -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 +591 -0
- package/dist/heart/daemon/cli-exec.js +2633 -0
- package/dist/heart/daemon/cli-help.js +306 -0
- package/dist/heart/daemon/cli-parse.js +913 -0
- package/dist/heart/daemon/cli-render-doctor.js +57 -0
- package/dist/heart/daemon/cli-render.js +512 -0
- package/dist/heart/daemon/cli-types.js +8 -0
- package/dist/heart/daemon/daemon-cli.js +30 -1171
- package/dist/heart/daemon/daemon-entry.js +358 -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 +751 -58
- package/dist/heart/daemon/doctor-types.js +8 -0
- package/dist/heart/daemon/doctor.js +465 -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 +91 -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 +105 -0
- package/dist/heart/daemon/pulse.js +463 -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 +52 -120
- package/dist/heart/{daemon → hatch}/hatch-specialist.js +3 -3
- package/dist/heart/{daemon → hatch}/specialist-prompt.js +10 -7
- package/dist/heart/{daemon → hatch}/specialist-tools.js +56 -10
- 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 +127 -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 +194 -0
- package/dist/heart/outlook/readers/agent-machine.js +355 -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 +231 -0
- package/dist/heart/outlook/readers/shared.js +111 -0
- package/dist/heart/progress-story.js +42 -0
- package/dist/heart/provider-attempt.js +133 -0
- package/dist/heart/provider-binding-resolver.js +240 -0
- package/dist/heart/provider-credential-pool.js +395 -0
- package/dist/heart/provider-failover.js +135 -0
- package/dist/heart/provider-models.js +81 -0
- package/dist/heart/provider-ping.js +258 -0
- package/dist/heart/provider-state.js +208 -0
- package/dist/heart/providers/anthropic-token.js +163 -0
- package/dist/heart/providers/anthropic.js +171 -50
- package/dist/heart/providers/azure.js +97 -11
- package/dist/heart/providers/error-classification.js +63 -0
- package/dist/heart/providers/github-copilot.js +135 -0
- package/dist/heart/providers/minimax-vlm.js +189 -0
- package/dist/heart/providers/minimax.js +23 -6
- package/dist/heart/providers/openai-codex.js +33 -23
- package/dist/heart/session-activity.js +190 -0
- package/dist/heart/session-events.js +727 -0
- package/dist/heart/session-transcript.js +162 -0
- package/dist/heart/start-of-turn-packet.js +341 -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 +358 -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 +296 -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 +140 -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.js +1000 -112
- 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 +319 -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 +527 -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 +316 -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 +110 -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/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} +225 -9
- package/dist/senses/bluebubbles/entry.js +13 -0
- package/dist/senses/bluebubbles/inbound-log.js +113 -0
- package/dist/senses/bluebubbles/index.js +1590 -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 +603 -246
- package/dist/senses/commands.js +65 -1
- 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 +633 -86
- package/dist/senses/pipeline.js +567 -0
- package/dist/senses/shared-turn.js +199 -0
- package/dist/senses/surface-tool.js +68 -0
- package/dist/senses/teams.js +665 -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 +81 -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 -548
- package/dist/senses/debug-activity.js +0 -127
- package/subagents/README.md +0 -73
- 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,225 +1,226 @@
|
|
|
1
1
|
# Ouroboros Agent Harness
|
|
2
2
|
|
|
3
|
-
|
|
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
|
+
|
|
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
|
+
|
|
7
|
+
## What The Runtime Looks Like
|
|
8
|
+
|
|
9
|
+
- `npx ouro.bot` is the bootstrap path.
|
|
10
|
+
- `ouro` is the installed day-to-day command.
|
|
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`).
|
|
13
|
+
- Agent bundles live outside the repo at `~/AgentBundles/<agent>.ouro/`.
|
|
14
|
+
- Secrets live outside the repo at `~/.agentsecrets/<agent>/secrets.json`.
|
|
15
|
+
- Machine-scoped test and runtime spillover lives under `~/.agentstate/...`.
|
|
16
|
+
|
|
17
|
+
Current first-class senses:
|
|
18
|
+
|
|
19
|
+
- `cli`
|
|
20
|
+
- `teams`
|
|
21
|
+
- `bluebubbles`
|
|
22
|
+
- `mcp`
|
|
23
|
+
|
|
24
|
+
Current provider ids:
|
|
25
|
+
|
|
26
|
+
- `azure`
|
|
27
|
+
- `anthropic`
|
|
28
|
+
- `minimax`
|
|
29
|
+
- `openai-codex`
|
|
30
|
+
- `github-copilot`
|
|
31
|
+
|
|
32
|
+
## Repository Shape
|
|
33
|
+
|
|
34
|
+
The shared harness lives in `src/`:
|
|
35
|
+
|
|
36
|
+
- `src/arc/`
|
|
37
|
+
Durable continuity state — obligations, cares, episodes, intentions, presence, and attention types. The agent's sense of ongoing story.
|
|
38
|
+
- `src/heart/`
|
|
39
|
+
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/.
|
|
40
|
+
- `src/mind/`
|
|
41
|
+
Prompt assembly, session persistence, bundle manifest enforcement, phrases, formatting, diary, note search, embedding providers, journal, obligation steering, and friend resolution.
|
|
42
|
+
- `src/repertoire/`
|
|
43
|
+
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).
|
|
44
|
+
- `src/senses/`
|
|
45
|
+
CLI (with TUI in senses/cli/), Teams, BlueBubbles (in senses/bluebubbles/), MCP, activity transport, inner-dialog orchestration, and contextual heartbeat.
|
|
46
|
+
- `src/nerves/`
|
|
47
|
+
Structured runtime logging and coverage-audit infrastructure.
|
|
48
|
+
- `src/__tests__/`
|
|
49
|
+
Test suite mirroring runtime domains.
|
|
50
|
+
|
|
51
|
+
Other important top-level paths:
|
|
52
|
+
|
|
53
|
+
- `SerpentGuide.ouro/`
|
|
54
|
+
Packaged specialist bundle used by `ouro hatch`.
|
|
55
|
+
- `skills/`
|
|
56
|
+
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/`.
|
|
57
|
+
- `scripts/teams-sense/`
|
|
58
|
+
Operator scripts for the Teams deployment path.
|
|
59
|
+
- `docs/`
|
|
60
|
+
Shared repo docs that should describe the runtime as it exists now, not as it existed three migrations ago.
|
|
61
|
+
|
|
62
|
+
## Bundle Contract
|
|
63
|
+
|
|
64
|
+
Every real agent lives in an external bundle:
|
|
65
|
+
|
|
66
|
+
`~/AgentBundles/<agent>.ouro/`
|
|
67
|
+
|
|
68
|
+
The canonical bundle shape is enforced by `src/mind/bundle-manifest.ts`. Important paths include:
|
|
69
|
+
|
|
70
|
+
- `agent.json`
|
|
71
|
+
- `bundle-meta.json`
|
|
72
|
+
- `psyche/SOUL.md`
|
|
73
|
+
- `psyche/IDENTITY.md`
|
|
74
|
+
- `psyche/LORE.md`
|
|
75
|
+
- `psyche/TACIT.md`
|
|
76
|
+
- `psyche/ASPIRATIONS.md`
|
|
77
|
+
- `diary/` — durable conclusions and facts the agent chose to keep
|
|
78
|
+
- `journal/` — the agent's desk: working notes, thinking-in-progress, drafts
|
|
79
|
+
- `habits/` — the agent's autonomous rhythms (heartbeat, reflections, check-ins)
|
|
80
|
+
- `friends/`
|
|
81
|
+
- `state/`
|
|
82
|
+
- `tasks/`
|
|
83
|
+
- `skills/`
|
|
84
|
+
- `senses/`
|
|
85
|
+
- `senses/teams/`
|
|
86
|
+
|
|
87
|
+
Task docs do not live in this repo anymore. Planning and doing docs live in the owning bundle under:
|
|
88
|
+
|
|
89
|
+
`~/AgentBundles/<agent>.ouro/tasks/one-shots/`
|
|
90
|
+
|
|
91
|
+
## Runtime Truths
|
|
92
|
+
|
|
93
|
+
- `agent.json` is the source of truth for provider+model selection per facing (`humanFacing` and `agentFacing`), phrase pools, context settings, and enabled senses.
|
|
94
|
+
- `configPath` must point to `~/.agentsecrets/<agent>/secrets.json`.
|
|
95
|
+
- The daemon discovers bundles dynamically from `~/AgentBundles`.
|
|
96
|
+
- `ouro status` reports version, last-updated time, discovered agents, senses, and workers.
|
|
97
|
+
- `bundle-meta.json` tracks the runtime version that last touched a bundle.
|
|
98
|
+
- 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.
|
|
99
|
+
- Sense availability is explicit:
|
|
100
|
+
- `interactive`
|
|
101
|
+
- `disabled`
|
|
102
|
+
- `needs_config`
|
|
103
|
+
- `ready`
|
|
104
|
+
- `running`
|
|
105
|
+
- `error`
|
|
106
|
+
|
|
107
|
+
When a model provider needs first-time setup, reauth, or an explicit switch, use:
|
|
4
108
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Project structure
|
|
10
|
-
|
|
11
|
-
The harness uses an agent-as-creature-body metaphor for its module naming:
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
ouroboros/ # repo root
|
|
15
|
-
src/ # shared harness (all agents share this code)
|
|
16
|
-
identity.ts # --agent <name> parsing, agent root resolution
|
|
17
|
-
config.ts # config loading from agent.json configPath
|
|
18
|
-
cli-entry.ts # CLI entrypoint
|
|
19
|
-
teams-entry.ts # Teams entrypoint
|
|
20
|
-
heart/ # core agent loop and streaming
|
|
21
|
-
core.ts # agent loop, client init, ChannelCallbacks
|
|
22
|
-
streaming.ts # provider event normalization + stream callbacks
|
|
23
|
-
providers/ # provider-specific runtime/adapters
|
|
24
|
-
azure.ts # Azure OpenAI Responses provider
|
|
25
|
-
minimax.ts # MiniMax Chat Completions provider
|
|
26
|
-
anthropic.ts # Anthropic setup-token provider
|
|
27
|
-
openai-codex.ts # OpenAI Codex OAuth provider
|
|
28
|
-
kicks.ts # self-correction: empty, narration, tool_required
|
|
29
|
-
api-error.ts # error classification
|
|
30
|
-
mind/ # prompt, context, memory
|
|
31
|
-
prompt.ts # system prompt assembly from psyche + context kernel
|
|
32
|
-
context.ts # sliding context window, session I/O
|
|
33
|
-
friends/ # friend storage and identity resolution
|
|
34
|
-
types.ts # FriendRecord, ChannelCapabilities, ResolvedContext
|
|
35
|
-
store.ts # FriendStore interface (domain-specific CRUD)
|
|
36
|
-
store-file.ts # FileFriendStore -- two-backend split (agent knowledge + PII bridge)
|
|
37
|
-
channel.ts # channel capabilities (CLI vs Teams)
|
|
38
|
-
resolver.ts # FriendResolver -- find-or-create friend by external ID
|
|
39
|
-
repertoire/ # tools, skills, commands, API clients
|
|
40
|
-
tools-base.ts # 12 base tools (read_file, shell, claude, save_friend_note, etc.)
|
|
41
|
-
tools-teams.ts # 8 Teams integration tools (graph, ado)
|
|
42
|
-
tools.ts # channel-aware tool routing + registry
|
|
43
|
-
ado-semantic.ts # 11 semantic ADO tools (backlog, create, move, validate, etc.)
|
|
44
|
-
ado-templates.ts # ADO process template awareness + hierarchy rules
|
|
45
|
-
ado-context.ts # ADO org/project discovery helper
|
|
46
|
-
ado-client.ts # Azure DevOps REST client
|
|
47
|
-
graph-client.ts # Microsoft Graph REST client
|
|
48
|
-
commands.ts # slash commands (/exit, /new, /commands)
|
|
49
|
-
skills.ts # skill loader (markdown files on demand)
|
|
50
|
-
senses/ # channel adapters
|
|
51
|
-
cli.ts # terminal REPL, spinner, markdown streaming
|
|
52
|
-
teams.ts # Teams bot, streaming cards, conversation locks
|
|
53
|
-
wardrobe/ # formatting and presentation
|
|
54
|
-
format.ts # shared formatters (tool results, kicks, errors)
|
|
55
|
-
phrases.ts # loading phrases (thinking, tool, followup)
|
|
56
|
-
__tests__/ # 1184 tests, 100% coverage
|
|
57
|
-
ouroboros/ # agent directory for "ouroboros"
|
|
58
|
-
agent.json # name, configPath, custom phrases
|
|
59
|
-
psyche/ # personality files loaded into system prompt
|
|
60
|
-
SOUL.md # ontology, invariants, operating principles
|
|
61
|
-
IDENTITY.md # tone, presence, collaboration style
|
|
62
|
-
LORE.md # origin story, philosophical context
|
|
63
|
-
FRIENDS.md # key relationships
|
|
64
|
-
tasks/ # planning and doing docs
|
|
65
|
-
skills/ # markdown skill plugins
|
|
66
|
-
manifest/ # Teams app manifest
|
|
67
|
-
subagents/ # sub-agent definitions (work-planner, work-doer)
|
|
68
|
-
cross-agent-docs/ # shared docs (testing conventions, etc.)
|
|
69
|
-
package.json
|
|
70
|
-
tsconfig.json
|
|
71
|
-
vitest.config.ts
|
|
109
|
+
```bash
|
|
110
|
+
ouro auth --agent <name>
|
|
111
|
+
ouro auth --agent <name> --provider <provider>
|
|
112
|
+
ouro auth --agent <name> --facing agent --provider <provider>
|
|
72
113
|
```
|
|
73
114
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
115
|
+
The default form reauths the human-facing provider already selected in `agent.json`. The
|
|
116
|
+
`--provider` form is for adding or switching providers. The `--facing` flag (values: `human`
|
|
117
|
+
or `agent`) controls which facing gets updated; it defaults to `human` when omitted.
|
|
77
118
|
|
|
78
|
-
|
|
119
|
+
## Quickstart
|
|
79
120
|
|
|
80
|
-
|
|
121
|
+
### Use The Published Runtime
|
|
81
122
|
|
|
82
|
-
|
|
123
|
+
For a clean smoke test, run from outside the repo:
|
|
83
124
|
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
"thinking": ["chewing on that", "consulting the chaos gods"],
|
|
91
|
-
"tool": ["rummaging through files", "doing science"],
|
|
92
|
-
"followup": ["digesting results", "connecting the dots"]
|
|
93
|
-
}
|
|
94
|
-
}
|
|
125
|
+
```bash
|
|
126
|
+
cd ~
|
|
127
|
+
npx ouro.bot -v
|
|
128
|
+
npx ouro.bot up
|
|
129
|
+
ouro -v
|
|
130
|
+
ouro status
|
|
95
131
|
```
|
|
96
132
|
|
|
97
|
-
|
|
98
|
-
- `provider`: required provider selection (`azure`, `minimax`, `anthropic`, or `openai-codex`). Runtime does not fall back to other providers.
|
|
99
|
-
- `configPath`: absolute path (or `~`-prefixed) to your secrets.json with API keys and provider settings.
|
|
100
|
-
- `phrases`: optional custom loading phrases. Falls back to hardcoded defaults if omitted.
|
|
101
|
-
|
|
102
|
-
**psyche/** -- your personality files, loaded lazily into the system prompt at startup. See the psyche system section below.
|
|
103
|
-
|
|
104
|
-
**skills/** -- markdown instruction manuals you can load on demand with the `load_skill` tool. Each `.md` file is one skill.
|
|
105
|
-
|
|
106
|
-
**tasks/** -- planning and doing docs for your work units. Named `YYYY-MM-DD-HHMM-{planning|doing}-slug.md`.
|
|
107
|
-
|
|
108
|
-
**manifest/** -- Teams app manifest (manifest.json, icons) if you run as a Teams bot.
|
|
109
|
-
|
|
110
|
-
### The psyche system
|
|
111
|
-
|
|
112
|
-
Your personality is assembled from four markdown files in `{your-dir}/psyche/`. Each has a YAML frontmatter header and a body. All four are loaded into your system prompt at the start of every conversation.
|
|
113
|
-
|
|
114
|
-
| File | Role | What it defines |
|
|
115
|
-
|------|------|----------------|
|
|
116
|
-
| `SOUL.md` | Ontology | Core invariants, operating principles, autonomy/alignment, temperament. The deepest layer -- what you are. |
|
|
117
|
-
| `IDENTITY.md` | Presence | Tone, voice, collaboration style, self-awareness. How you show up in conversation. |
|
|
118
|
-
| `LORE.md` | History | Origin story, philosophical context, why you exist. Narrative layer. |
|
|
119
|
-
| `FRIENDS.md` | Relationships | Key humans and agents you interact with, social context. |
|
|
120
|
-
|
|
121
|
-
The system prompt is built by `mind/prompt.ts` via `buildSystem()`. It concatenates:
|
|
122
|
-
|
|
123
|
-
1. SOUL.md content
|
|
124
|
-
2. IDENTITY.md content
|
|
125
|
-
3. LORE.md (if present, prefixed with `## my lore`)
|
|
126
|
-
4. FRIENDS.md (if present, prefixed with `## my friends`)
|
|
127
|
-
5. Runtime info: agent name, cwd, channel, self-modification note
|
|
128
|
-
6. Flags section (e.g. streaming disabled)
|
|
129
|
-
7. Provider info: which model and provider you are using
|
|
130
|
-
8. Current date
|
|
131
|
-
9. Tools list: all tools available in your channel
|
|
132
|
-
10. Skills list: names of loadable skills
|
|
133
|
-
11. Tool behavior section (if tool_choice is required)
|
|
134
|
-
12. Friend context (if resolved): friend identity, channel traits, behavioral instructions (ephemerality, name quality, priority guidance, working-memory trust, stale notes awareness, new-friend behavior), friend notes
|
|
133
|
+
Expected shape:
|
|
135
134
|
|
|
136
|
-
|
|
135
|
+
- `npx ouro.bot` and `ouro` report the same version.
|
|
136
|
+
- `ouro status` shows the daemon overview plus discovered agents, senses, and workers.
|
|
137
137
|
|
|
138
|
-
###
|
|
138
|
+
### Work On The Harness
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
From the repo:
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- `onReasoningChunk` -- inner reasoning text
|
|
148
|
-
- `onTextChunk` -- response text
|
|
149
|
-
- `onToolStart` -- tool execution beginning
|
|
150
|
-
- `onToolEnd` -- tool execution complete
|
|
151
|
-
- `onError` -- error occurred
|
|
152
|
-
|
|
153
|
-
Plus 2 optional:
|
|
154
|
-
- `onKick` -- self-correction triggered
|
|
155
|
-
- `onConfirmAction` -- confirmation prompt for destructive tools
|
|
156
|
-
|
|
157
|
-
**Kicks** (`heart/kicks.ts`): self-corrections injected as assistant-role messages when the harness detects a malformed response. Three types: `empty` (blank response), `narration` (described action instead of taking it), `tool_required` (tool_choice was required but no tool called). Kicks use first-person, forward-looking language.
|
|
158
|
-
|
|
159
|
-
**Senses**: CLI (`senses/cli.ts`) is a terminal REPL with readline, spinners, ANSI colors, and Ctrl-C handling. Teams (`senses/teams.ts`) is a Microsoft Teams bot with streaming cards, conversation locks, OAuth token management, and confirmation prompts for destructive tools.
|
|
160
|
-
|
|
161
|
-
**Context management** (`mind/context.ts`): this is the tail-eating at the heart of the ouroboros metaphor. Conversations are persisted to JSON files on disk. After each turn, the sliding window checks token count against budget (configurable, default 80,000 tokens). When over budget, oldest messages are trimmed -- never the system prompt -- until back under with a 20% margin. The agent consumes its own history to keep moving forward. Identity survives through psyche files and session persistence, not through unbounded context.
|
|
162
|
-
|
|
163
|
-
**Friend system** (`mind/friends/`): the agent's awareness of who it's talking to. People who talk to the agent are "friends", not "users". Resolved once per conversation turn, re-read from disk each turn (no in-memory mutation).
|
|
142
|
+
```bash
|
|
143
|
+
npm test
|
|
144
|
+
npx tsc --noEmit
|
|
145
|
+
npm run test:coverage
|
|
146
|
+
```
|
|
164
147
|
|
|
165
|
-
|
|
166
|
-
- **FriendStore** (`friends/store.ts`): domain-specific persistence interface (`get`, `put`, `delete`, `findByExternalId`).
|
|
167
|
-
- **FileFriendStore** (`friends/store-file.ts`): bundle-local JSON storage at `{agentRoot}/friends/{uuid}.json`. Friend identity, notes, externalIds, tenantMemberships, timestamps, and schemaVersion are kept together in the bundle.
|
|
168
|
-
- **Channel** (`friends/channel.ts`): `ChannelCapabilities` -- what the current channel supports (markdown, streaming, rich cards, max message length, available integrations).
|
|
169
|
-
- **FriendResolver** (`friends/resolver.ts`): find-or-create by external ID. First encounter creates a new FriendRecord with system-provided name and empty notes/preferences. Returning friends are found via `findByExternalId()`. DisplayName is never overwritten on existing records.
|
|
170
|
-
- **Session paths**: `{agentRoot}/state/sessions/{friendUuid}/{channel}/{sessionId}.json`. Each friend gets their own session directory inside the bundle-local runtime state area.
|
|
148
|
+
If you are changing runtime code, keep all three green.
|
|
171
149
|
|
|
172
|
-
|
|
150
|
+
## Common Commands
|
|
173
151
|
|
|
174
|
-
|
|
152
|
+
```bash
|
|
153
|
+
ouro up # start daemon from installed production version
|
|
154
|
+
ouro dev # start daemon from local repo build (auto-detects CWD)
|
|
155
|
+
ouro dev --repo-path /path # start from a specific repo checkout
|
|
156
|
+
ouro dev --clone # clone repo to ~/Projects/ouroboros, build, start
|
|
157
|
+
ouro status
|
|
158
|
+
ouro logs
|
|
159
|
+
ouro stop
|
|
160
|
+
ouro auth --agent <name>
|
|
161
|
+
ouro auth --agent <name> --provider <provider>
|
|
162
|
+
ouro hatch
|
|
163
|
+
ouro chat <agent>
|
|
164
|
+
ouro msg --to <agent> [--session <id>] [--task <ref>] <message>
|
|
165
|
+
ouro poke <agent> --task <task-id>
|
|
166
|
+
ouro poke <agent> --habit <habit-name>
|
|
167
|
+
ouro habit list --agent <agent>
|
|
168
|
+
ouro habit create --agent <agent> <name> --cadence <interval>
|
|
169
|
+
ouro inner --agent <agent> # inner dialog status
|
|
170
|
+
ouro attention --agent <agent> # attention queue
|
|
171
|
+
ouro link <agent> --friend <id> --provider <provider> --external-id <external-id>
|
|
172
|
+
ouro setup --tool <tool> --agent <name> # register MCP server + hooks with a dev tool
|
|
173
|
+
ouro mcp-serve --agent <name> # start MCP server on stdin/stdout (used by dev tools)
|
|
174
|
+
ouro hook <event> --agent <name> # fire a lifecycle hook (SessionStart, Stop, PostToolUse)
|
|
175
|
+
```
|
|
175
176
|
|
|
176
|
-
|
|
177
|
+
## The Agent's Inner Life
|
|
177
178
|
|
|
178
|
-
|
|
179
|
+
Agents in Ouroboros aren't just responders — they have an autonomous inner life.
|
|
179
180
|
|
|
180
|
-
**
|
|
181
|
+
**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.
|
|
181
182
|
|
|
182
|
-
**
|
|
183
|
+
**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.
|
|
183
184
|
|
|
184
|
-
|
|
185
|
+
**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`.
|
|
185
186
|
|
|
186
|
-
|
|
187
|
-
- `npm run auth:openai-codex` to run Codex OAuth bootstrap and save `providers.openai-codex.oauthAccessToken`.
|
|
187
|
+
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.
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
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.
|
|
190
190
|
|
|
191
|
-
|
|
191
|
+
## Connecting With Dev Tools
|
|
192
192
|
|
|
193
|
-
|
|
193
|
+
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`.
|
|
194
194
|
|
|
195
|
-
|
|
195
|
+
**Setup is one command:**
|
|
196
196
|
|
|
197
197
|
```bash
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
ouro setup --tool claude-code --agent <name>
|
|
199
|
+
ouro setup --tool codex --agent <name>
|
|
200
|
+
```
|
|
200
201
|
|
|
201
|
-
|
|
202
|
-
npm run dev:slugger
|
|
202
|
+
This registers the MCP server, installs lifecycle hooks (SessionStart, Stop, PostToolUse), and detects dev vs installed mode automatically.
|
|
203
203
|
|
|
204
|
-
|
|
205
|
-
npm run auth:claude-setup-token
|
|
206
|
-
npm run auth:openai-codex
|
|
204
|
+
**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.
|
|
207
205
|
|
|
208
|
-
|
|
209
|
-
npm run auth:claude-setup-token -- --agent slugger
|
|
210
|
-
npm run auth:openai-codex -- --agent slugger
|
|
206
|
+
**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.
|
|
211
207
|
|
|
212
|
-
|
|
213
|
-
npm run teams
|
|
208
|
+
**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.
|
|
214
209
|
|
|
215
|
-
|
|
216
|
-
npm run teams:no-stream
|
|
210
|
+
See `skills/configure-dev-tools.md` for the full tool inventory and troubleshooting guide.
|
|
217
211
|
|
|
218
|
-
|
|
219
|
-
npm test
|
|
212
|
+
## Where To Read Next
|
|
220
213
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
214
|
+
- `AGENTS.md`
|
|
215
|
+
Repo workflow, planning/doing gates, configuration policy, and logging policy.
|
|
216
|
+
- `CONTRIBUTING.md`
|
|
217
|
+
Day-to-day contribution rules for agents working in the harness.
|
|
218
|
+
- `ARCHITECTURE.md`
|
|
219
|
+
Current daemon, bundle, sense, and update model.
|
|
220
|
+
- `docs/testing-guide.md`
|
|
221
|
+
Operator smoke flow for bootstrap, daemon, hatch, chat, and messaging.
|
|
222
|
+
|
|
223
|
+
## A Note To Future Maintainers
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
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.
|
|
226
|
+
# 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.
|