@ouro.bot/cli 0.1.0-alpha.60 → 0.1.0-alpha.601
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 +127 -23
- package/RepairGuide.ouro/agent.json +5 -0
- package/RepairGuide.ouro/psyche/IDENTITY.md +19 -0
- package/RepairGuide.ouro/psyche/SOUL.md +55 -0
- package/RepairGuide.ouro/skills/diagnose-broken-remote.md +63 -0
- package/RepairGuide.ouro/skills/diagnose-stacked-typed-issues.md +35 -0
- package/RepairGuide.ouro/skills/diagnose-sync-blocked.md +54 -0
- package/RepairGuide.ouro/skills/diagnose-vault-expired.md +60 -0
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/agent.json +4 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/SOUL.md +2 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-serpent.md +1 -1
- package/changelog.json +3863 -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 +254 -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 +837 -26
- package/dist/heart/agent-entry.js +69 -3
- 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 +479 -0
- package/dist/heart/awaiting/await-alert.js +146 -0
- package/dist/heart/awaiting/await-expiry.js +108 -0
- package/dist/heart/awaiting/await-loader.js +91 -0
- package/dist/heart/awaiting/await-parser.js +141 -0
- package/dist/heart/awaiting/await-runtime-state.js +97 -0
- package/dist/heart/awaiting/await-scheduler.js +377 -0
- package/dist/heart/background-operations.js +281 -0
- package/dist/heart/bundle-state.js +168 -0
- package/dist/heart/commitments.js +142 -0
- package/dist/heart/config-registry.js +322 -0
- package/dist/heart/config.js +114 -119
- package/dist/heart/core.js +909 -246
- package/dist/heart/cross-chat-delivery.js +3 -18
- package/dist/heart/daemon/agent-config-check.js +419 -0
- package/dist/heart/daemon/agent-discovery.js +102 -3
- package/dist/heart/daemon/agent-service.js +522 -0
- package/dist/heart/daemon/agentic-repair.js +547 -0
- package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
- package/dist/heart/daemon/boot-sync-probe.js +197 -0
- package/dist/heart/daemon/cadence.js +70 -0
- package/dist/heart/daemon/cli-defaults.js +776 -0
- package/dist/heart/daemon/cli-exec.js +7571 -0
- package/dist/heart/daemon/cli-help.js +498 -0
- package/dist/heart/daemon/cli-parse.js +1599 -0
- package/dist/heart/daemon/cli-render-doctor.js +57 -0
- package/dist/heart/daemon/cli-render.js +763 -0
- package/dist/heart/daemon/cli-types.js +8 -0
- package/dist/heart/daemon/connect-bay.js +323 -0
- package/dist/heart/daemon/daemon-cli.js +29 -1703
- package/dist/heart/daemon/daemon-entry.js +485 -2
- package/dist/heart/daemon/daemon-health.js +176 -0
- package/dist/heart/daemon/daemon-rollup.js +57 -0
- package/dist/heart/daemon/daemon-runtime-sync.js +88 -13
- package/dist/heart/daemon/daemon-tombstone.js +236 -0
- package/dist/heart/daemon/daemon.js +842 -69
- package/dist/heart/daemon/dns-workflow.js +394 -0
- package/dist/heart/daemon/doctor-types.js +8 -0
- package/dist/heart/daemon/doctor.js +873 -0
- package/dist/heart/daemon/health-monitor.js +122 -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/human-command-screens.js +234 -0
- package/dist/heart/daemon/human-readiness.js +114 -0
- package/dist/heart/daemon/inner-status.js +89 -0
- package/dist/heart/daemon/interactive-repair.js +394 -0
- package/dist/heart/daemon/launchd.js +37 -8
- package/dist/heart/daemon/log-tailer.js +78 -9
- package/dist/heart/daemon/logs-prune.js +110 -0
- package/dist/heart/daemon/mcp-canary.js +297 -0
- package/dist/heart/daemon/os-cron-deps.js +135 -0
- package/dist/heart/daemon/os-cron.js +14 -12
- package/dist/heart/daemon/ouro-bot-entry.js +4 -2
- package/dist/heart/daemon/ouro-entry.js +3 -1
- package/dist/heart/daemon/process-manager.js +375 -33
- package/dist/heart/daemon/provider-discovery.js +137 -0
- package/dist/heart/daemon/provider-ping-progress.js +83 -0
- package/dist/heart/daemon/pulse.js +475 -0
- package/dist/heart/daemon/readiness-repair.js +365 -0
- package/dist/heart/daemon/run-hooks.js +2 -0
- package/dist/heart/daemon/runtime-logging.js +10 -2
- package/dist/heart/daemon/runtime-metadata.js +2 -30
- package/dist/heart/daemon/safe-mode.js +161 -0
- package/dist/heart/daemon/sense-manager.js +462 -38
- 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 +158 -11
- package/dist/heart/daemon/stale-bundle-prune.js +96 -0
- package/dist/heart/daemon/startup-tui.js +330 -0
- package/dist/heart/daemon/task-scheduler.js +3 -25
- package/dist/heart/daemon/terminal-ui.js +499 -0
- package/dist/heart/daemon/thoughts.js +162 -17
- package/dist/heart/daemon/up-progress.js +366 -0
- package/dist/heart/daemon/vault-items.js +56 -0
- package/dist/heart/delegation.js +1 -1
- package/dist/heart/habits/habit-migration.js +189 -0
- package/dist/heart/habits/habit-parser.js +140 -0
- package/dist/heart/habits/habit-runtime-state.js +100 -0
- package/dist/heart/habits/habit-scheduler.js +372 -0
- package/dist/heart/{daemon → hatch}/hatch-flow.js +32 -56
- package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
- package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
- package/dist/heart/{daemon → hatch}/specialist-tools.js +35 -12
- package/dist/heart/identity.js +166 -55
- package/dist/heart/kept-notes.js +357 -0
- package/dist/heart/kicks.js +1 -1
- package/dist/heart/machine-identity.js +161 -0
- package/dist/heart/mail-import-discovery.js +353 -0
- package/dist/heart/mailbox/mailbox-http-hooks.js +66 -0
- package/dist/heart/mailbox/mailbox-http-response.js +7 -0
- package/dist/heart/mailbox/mailbox-http-routes.js +246 -0
- package/dist/heart/mailbox/mailbox-http-static.js +103 -0
- package/dist/heart/mailbox/mailbox-http-transport.js +116 -0
- package/dist/heart/mailbox/mailbox-http.js +99 -0
- package/dist/heart/mailbox/mailbox-read.js +31 -0
- package/dist/heart/mailbox/mailbox-types.js +27 -0
- package/dist/heart/mailbox/mailbox-view.js +195 -0
- package/dist/heart/mailbox/readers/agent-machine.js +382 -0
- package/dist/heart/mailbox/readers/continuity-readers.js +338 -0
- package/dist/heart/mailbox/readers/mail.js +375 -0
- package/dist/heart/mailbox/readers/runtime-readers.js +651 -0
- package/dist/heart/mailbox/readers/sessions.js +232 -0
- package/dist/heart/mailbox/readers/shared.js +111 -0
- package/dist/heart/mcp/mcp-server.js +656 -0
- package/dist/heart/migrate-config.js +100 -0
- package/dist/heart/model-capabilities.js +19 -0
- package/dist/heart/platform.js +81 -0
- package/dist/heart/provider-attempt.js +134 -0
- package/dist/heart/provider-binding-resolver.js +267 -0
- package/dist/heart/provider-credentials.js +425 -0
- package/dist/heart/provider-failover.js +301 -0
- package/dist/heart/provider-models.js +81 -0
- package/dist/heart/provider-ping.js +262 -0
- package/dist/heart/provider-readiness-cache.js +40 -0
- package/dist/heart/provider-visibility.js +188 -0
- package/dist/heart/providers/anthropic-token.js +131 -0
- package/dist/heart/providers/anthropic.js +139 -52
- package/dist/heart/providers/azure.js +23 -11
- package/dist/heart/providers/error-classification.js +127 -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 +26 -8
- package/dist/heart/providers/openai-codex.js +55 -40
- package/dist/heart/runtime-capability-check.js +170 -0
- package/dist/heart/runtime-credentials.js +367 -0
- package/dist/heart/runtime-cwd.js +87 -0
- package/dist/heart/sense-truth.js +13 -4
- package/dist/heart/session-activity.js +43 -22
- package/dist/heart/session-events.js +1149 -0
- package/dist/heart/session-playback-cli-main.js +5 -0
- package/dist/heart/session-playback-cli.js +36 -0
- package/dist/heart/session-playback.js +231 -0
- package/dist/heart/session-stats-cli-main.js +5 -0
- package/dist/heart/session-stats.js +182 -0
- package/dist/heart/session-transcript.js +243 -0
- package/dist/heart/start-of-turn-packet.js +345 -0
- package/dist/heart/streaming.js +44 -27
- package/dist/heart/sync-classification.js +176 -0
- package/dist/heart/sync.js +449 -0
- package/dist/heart/target-resolution.js +9 -5
- package/dist/heart/tempo.js +93 -0
- package/dist/heart/temporal-view.js +41 -0
- package/dist/heart/timeouts.js +101 -0
- package/dist/heart/tool-activity-callbacks.js +59 -0
- package/dist/heart/tool-description.js +143 -0
- package/dist/heart/tool-friction.js +55 -0
- package/dist/heart/tool-loop.js +200 -0
- package/dist/heart/turn-context.js +421 -0
- package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +6 -5
- package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
- package/dist/heart/versioning/ouro-path-installer.js +426 -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 +6 -1
- package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
- package/dist/mailbox-ui/assets/index-B-461hes.js +61 -0
- package/dist/mailbox-ui/assets/index-BPr5vNuM.css +1 -0
- package/dist/mailbox-ui/index.html +15 -0
- package/dist/mailroom/attention.js +167 -0
- package/dist/mailroom/autonomy.js +209 -0
- package/dist/mailroom/blob-store.js +712 -0
- package/dist/mailroom/body-cache.js +61 -0
- package/dist/mailroom/core.js +788 -0
- package/dist/mailroom/entry.js +160 -0
- package/dist/mailroom/file-store.js +460 -0
- package/dist/mailroom/mbox-import.js +393 -0
- package/dist/mailroom/migration.js +164 -0
- package/dist/mailroom/outbound.js +380 -0
- package/dist/mailroom/policy.js +263 -0
- package/dist/mailroom/reader.js +233 -0
- package/dist/mailroom/search-cache.js +268 -0
- package/dist/mailroom/search-relevance.js +319 -0
- package/dist/mailroom/smtp-ingress.js +176 -0
- package/dist/mailroom/source-state.js +176 -0
- package/dist/mailroom/thread.js +109 -0
- package/dist/mailroom/travel-extract.js +89 -0
- package/dist/mind/bundle-manifest.js +7 -1
- package/dist/mind/context.js +165 -101
- package/dist/mind/diary-integrity.js +60 -0
- package/dist/mind/{memory.js → diary.js} +62 -75
- package/dist/mind/embedding-provider.js +60 -0
- package/dist/mind/file-state.js +179 -0
- package/dist/mind/friends/channel.js +39 -0
- package/dist/mind/friends/resolver.js +54 -2
- package/dist/mind/friends/store-file.js +39 -3
- package/dist/mind/friends/types.js +2 -2
- 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 +4 -0
- package/dist/mind/prompt-refresh.js +3 -2
- package/dist/mind/prompt.js +1050 -135
- package/dist/mind/provenance-trust.js +26 -0
- package/dist/mind/scrutiny.js +173 -0
- 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/contract.js +5 -5
- package/dist/nerves/coverage/file-completeness.js +129 -5
- 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/review/cli-main.js +5 -0
- package/dist/nerves/review/cli.js +156 -0
- package/dist/nerves/review/core.js +152 -0
- package/dist/nerves/runtime.js +5 -1
- 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 +997 -0
- package/dist/repertoire/bundle-templates.js +72 -0
- package/dist/repertoire/bw-installer.js +180 -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 +178 -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 +396 -0
- package/dist/repertoire/mcp-client.js +295 -0
- package/dist/repertoire/mcp-manager.js +362 -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 +31 -5
- package/dist/repertoire/tasks/fix.js +182 -0
- package/dist/repertoire/tasks/index.js +16 -4
- 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 -78
- package/dist/repertoire/tool-results.js +29 -0
- package/dist/repertoire/tools-attachments.js +317 -0
- package/dist/repertoire/tools-awaiting.js +360 -0
- package/dist/repertoire/tools-base.js +53 -1082
- package/dist/repertoire/tools-bluebubbles.js +1 -0
- package/dist/repertoire/tools-bridge.js +142 -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 +381 -0
- package/dist/repertoire/tools-files.js +342 -0
- package/dist/repertoire/tools-flight.js +224 -0
- package/dist/repertoire/tools-flow.js +119 -0
- package/dist/repertoire/tools-github.js +1 -7
- package/dist/repertoire/tools-mail.js +1916 -0
- package/dist/repertoire/tools-notes.js +421 -0
- package/dist/repertoire/tools-obligations.js +142 -0
- package/dist/repertoire/tools-runtime.js +61 -0
- package/dist/repertoire/tools-session.js +809 -0
- package/dist/repertoire/tools-shell.js +120 -0
- package/dist/repertoire/tools-stripe.js +180 -0
- package/dist/repertoire/tools-surface.js +345 -0
- package/dist/repertoire/tools-teams.js +9 -39
- package/dist/repertoire/tools-travel.js +125 -0
- package/dist/repertoire/tools-trip.js +604 -0
- package/dist/repertoire/tools-user-profile.js +144 -0
- package/dist/repertoire/tools-vault.js +40 -0
- package/dist/repertoire/tools-voice.js +144 -0
- package/dist/repertoire/tools.js +115 -103
- package/dist/repertoire/travel-api-client.js +360 -0
- package/dist/repertoire/user-profile.js +131 -0
- package/dist/repertoire/vault-setup.js +246 -0
- package/dist/repertoire/vault-unlock.js +594 -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/await-turn-message.js +58 -0
- package/dist/senses/bluebubbles/active-turns.js +216 -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} +219 -18
- package/dist/senses/bluebubbles/entry.js +77 -0
- package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
- package/dist/senses/bluebubbles/index.js +2548 -0
- package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -71
- package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
- package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
- package/dist/senses/bluebubbles/processed-log.js +133 -0
- package/dist/senses/bluebubbles/replay.js +137 -0
- package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +30 -2
- package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
- package/dist/senses/bluebubbles-meta-guard.js +40 -0
- 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 +607 -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 +85 -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 +60 -8
- package/dist/senses/cli-layout.js +100 -0
- package/dist/senses/cli.js +516 -204
- package/dist/senses/commands.js +66 -3
- package/dist/senses/habit-turn-message.js +108 -0
- package/dist/senses/inner-dialog-worker.js +185 -21
- package/dist/senses/inner-dialog.js +372 -27
- package/dist/senses/mail-entry.js +66 -0
- package/dist/senses/mail.js +379 -0
- package/dist/senses/pipeline.js +654 -181
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/shared-turn.js +392 -0
- package/dist/senses/surface-tool.js +70 -0
- package/dist/senses/teams-entry.js +60 -8
- package/dist/senses/teams.js +387 -98
- package/dist/senses/trust-gate.js +100 -5
- package/dist/senses/voice/audio-playback.js +237 -0
- package/dist/senses/voice/audio-routing.js +119 -0
- package/dist/senses/voice/elevenlabs.js +202 -0
- package/dist/senses/voice/floor-control.js +431 -0
- package/dist/senses/voice/floor-controller.js +115 -0
- package/dist/senses/voice/golden-path.js +116 -0
- package/dist/senses/voice/index.js +29 -0
- package/dist/senses/voice/meeting.js +113 -0
- package/dist/senses/voice/outbound.js +190 -0
- package/dist/senses/voice/phone.js +33 -0
- package/dist/senses/voice/playback.js +139 -0
- package/dist/senses/voice/realtime-eval.js +496 -0
- package/dist/senses/voice/realtime-trace.js +531 -0
- package/dist/senses/voice/transcript.js +70 -0
- package/dist/senses/voice/turn.js +191 -0
- package/dist/senses/voice/twilio-phone-runtime.js +807 -0
- package/dist/senses/voice/twilio-phone.js +5077 -0
- package/dist/senses/voice/types.js +2 -0
- package/dist/senses/voice/whisper.js +161 -0
- package/dist/senses/voice-entry.js +81 -0
- package/dist/senses/voice-realtime-eval-command.js +99 -0
- package/dist/senses/voice-realtime-eval-entry.js +21 -0
- package/dist/senses/voice-twilio-entry.js +87 -0
- package/dist/trips/core.js +138 -0
- package/dist/trips/store.js +265 -0
- package/package.json +41 -7
- package/skills/agent-commerce.md +106 -0
- package/skills/browser-navigation.md +117 -0
- package/skills/commerce-setup-guide.md +116 -0
- package/skills/commerce-setup.md +84 -0
- package/skills/configure-dev-tools.md +99 -0
- package/skills/travel-planning.md +138 -0
- package/dist/heart/daemon/auth-flow.js +0 -351
- package/dist/heart/daemon/ouro-path-installer.js +0 -178
- package/dist/heart/daemon/subagent-installer.js +0 -166
- package/dist/heart/safe-workspace.js +0 -228
- package/dist/heart/session-recall.js +0 -116
- package/dist/mind/associative-recall.js +0 -209
- package/dist/senses/bluebubbles-entry.js +0 -13
- package/dist/senses/bluebubbles.js +0 -1177
- package/dist/senses/debug-activity.js +0 -148
- package/subagents/README.md +0 -86
- package/subagents/work-doer.md +0 -237
- package/subagents/work-merger.md +0 -618
- package/subagents/work-planner.md +0 -390
- /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
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TurnContext: a single pre-read snapshot of all state sources needed
|
|
4
|
+
* by the inbound-turn pipeline and prompt assembly.
|
|
5
|
+
*
|
|
6
|
+
* Before this module existed, pipeline.ts read ~10 state sources inline
|
|
7
|
+
* and prompt.ts did several ad-hoc filesystem reads. This centralizes
|
|
8
|
+
* all reads into one place so the rest of the turn is pure derivation.
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.buildTurnContext = buildTurnContext;
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const runtime_1 = require("../nerves/runtime");
|
|
48
|
+
const manager_1 = require("./bridges/manager");
|
|
49
|
+
const identity_1 = require("./identity");
|
|
50
|
+
const tasks_1 = require("../repertoire/tasks");
|
|
51
|
+
const coding_1 = require("../repertoire/coding");
|
|
52
|
+
const session_activity_1 = require("./session-activity");
|
|
53
|
+
const thoughts_1 = require("./daemon/thoughts");
|
|
54
|
+
const pending_1 = require("../mind/pending");
|
|
55
|
+
const obligations_1 = require("../arc/obligations");
|
|
56
|
+
const target_resolution_1 = require("./target-resolution");
|
|
57
|
+
const episodes_1 = require("../arc/episodes");
|
|
58
|
+
const cares_1 = require("../arc/cares");
|
|
59
|
+
const config_1 = require("./config");
|
|
60
|
+
const runtime_credentials_1 = require("./runtime-credentials");
|
|
61
|
+
const daemon_health_1 = require("./daemon/daemon-health");
|
|
62
|
+
const prompt_1 = require("../mind/prompt");
|
|
63
|
+
const provider_visibility_1 = require("./provider-visibility");
|
|
64
|
+
const mail_import_discovery_1 = require("./mail-import-discovery");
|
|
65
|
+
// ── Helpers ─────────────────────────────────────────────────────────
|
|
66
|
+
const DAEMON_SOCKET_PATH = "/tmp/ouroboros-daemon.sock";
|
|
67
|
+
function isLiveCodingSessionStatus(status) {
|
|
68
|
+
return status === "spawning"
|
|
69
|
+
|| status === "running"
|
|
70
|
+
|| status === "waiting_input"
|
|
71
|
+
|| status === "stalled";
|
|
72
|
+
}
|
|
73
|
+
function emptyTaskBoard() {
|
|
74
|
+
return {
|
|
75
|
+
compact: "",
|
|
76
|
+
full: "",
|
|
77
|
+
byStatus: {
|
|
78
|
+
drafting: [],
|
|
79
|
+
processing: [],
|
|
80
|
+
validating: [],
|
|
81
|
+
collaborating: [],
|
|
82
|
+
paused: [],
|
|
83
|
+
blocked: [],
|
|
84
|
+
done: [],
|
|
85
|
+
cancelled: [],
|
|
86
|
+
},
|
|
87
|
+
issues: [],
|
|
88
|
+
actionRequired: [],
|
|
89
|
+
unresolvedDependencies: [],
|
|
90
|
+
activeSessions: [],
|
|
91
|
+
activeBridges: [],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function readInnerWorkState() {
|
|
95
|
+
const defaultJob = {
|
|
96
|
+
status: "idle",
|
|
97
|
+
content: null,
|
|
98
|
+
origin: null,
|
|
99
|
+
mode: "reflect",
|
|
100
|
+
obligationStatus: null,
|
|
101
|
+
surfacedResult: null,
|
|
102
|
+
queuedAt: null,
|
|
103
|
+
startedAt: null,
|
|
104
|
+
surfacedAt: null,
|
|
105
|
+
};
|
|
106
|
+
try {
|
|
107
|
+
const agentRoot = (0, identity_1.getAgentRoot)();
|
|
108
|
+
const pendingDir = (0, pending_1.getInnerDialogPendingDir)((0, identity_1.getAgentName)());
|
|
109
|
+
const sessionPath = (0, thoughts_1.getInnerDialogSessionPath)(agentRoot);
|
|
110
|
+
const { pendingMessages, turns, runtimeState } = (0, thoughts_1.readInnerDialogRawData)(sessionPath, pendingDir);
|
|
111
|
+
const dialogStatus = (0, thoughts_1.deriveInnerDialogStatus)(pendingMessages, turns, runtimeState);
|
|
112
|
+
const job = (0, thoughts_1.deriveInnerJob)(pendingMessages, turns, runtimeState);
|
|
113
|
+
const storeObligationPending = (0, obligations_1.readPendingObligations)(agentRoot).length > 0;
|
|
114
|
+
return {
|
|
115
|
+
status: dialogStatus.processing === "started" ? "running" : "idle",
|
|
116
|
+
hasPending: dialogStatus.queue !== "clear",
|
|
117
|
+
origin: dialogStatus.origin,
|
|
118
|
+
contentSnippet: dialogStatus.contentSnippet,
|
|
119
|
+
obligationPending: dialogStatus.obligationPending || storeObligationPending,
|
|
120
|
+
job,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
124
|
+
return {
|
|
125
|
+
status: "idle",
|
|
126
|
+
hasPending: false,
|
|
127
|
+
job: defaultJob,
|
|
128
|
+
/* v8 ignore stop */
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function checkDaemonRunning() {
|
|
133
|
+
try {
|
|
134
|
+
return fs.existsSync(DAEMON_SOCKET_PATH);
|
|
135
|
+
}
|
|
136
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
137
|
+
return false;
|
|
138
|
+
/* v8 ignore stop */
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function hasTextField(record, key) {
|
|
142
|
+
return typeof record?.[key] === "string" && record[key].trim().length > 0;
|
|
143
|
+
}
|
|
144
|
+
function hasTrueField(record, key) {
|
|
145
|
+
return record?.[key] === true;
|
|
146
|
+
}
|
|
147
|
+
function hasOpenAIRealtimeVoiceConfig(options) {
|
|
148
|
+
return hasTextField(options.portableVoice, "openaiRealtimeApiKey")
|
|
149
|
+
|| hasTextField(options.integrations, "openaiApiKey")
|
|
150
|
+
|| hasTextField(options.integrations, "openaiEmbeddingsApiKey");
|
|
151
|
+
}
|
|
152
|
+
function recordOrUndefined(value) {
|
|
153
|
+
return !!value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
|
|
154
|
+
}
|
|
155
|
+
function readSenseStatusLines() {
|
|
156
|
+
const config = (0, identity_1.loadAgentConfig)();
|
|
157
|
+
const configuredSenses = config.senses ?? {};
|
|
158
|
+
const senses = {
|
|
159
|
+
...configuredSenses,
|
|
160
|
+
cli: configuredSenses.cli ?? { enabled: true },
|
|
161
|
+
teams: configuredSenses.teams ?? { enabled: false },
|
|
162
|
+
bluebubbles: configuredSenses.bluebubbles ?? { enabled: false },
|
|
163
|
+
mail: configuredSenses.mail ?? { enabled: false },
|
|
164
|
+
voice: configuredSenses.voice ?? { enabled: false },
|
|
165
|
+
};
|
|
166
|
+
const payload = (0, config_1.loadConfig)();
|
|
167
|
+
const agentName = (0, identity_1.getAgentName)();
|
|
168
|
+
const runtimeConfig = (0, runtime_credentials_1.readRuntimeCredentialConfig)(agentName);
|
|
169
|
+
const machineRuntimeConfig = (0, runtime_credentials_1.readMachineRuntimeCredentialConfig)(agentName);
|
|
170
|
+
const runtimePayload = runtimeConfig.ok ? runtimeConfig.config : {};
|
|
171
|
+
const machinePayload = machineRuntimeConfig.ok ? machineRuntimeConfig.config : {};
|
|
172
|
+
const teams = recordOrUndefined(runtimePayload.teams) ?? recordOrUndefined(payload.teams);
|
|
173
|
+
const bluebubbles = recordOrUndefined(machinePayload.bluebubbles) ?? recordOrUndefined(payload.bluebubbles);
|
|
174
|
+
const mailroom = recordOrUndefined(runtimePayload.mailroom) ?? recordOrUndefined(payload.mailroom);
|
|
175
|
+
const voice = recordOrUndefined(machinePayload.voice) ?? recordOrUndefined(payload.voice);
|
|
176
|
+
const portableVoice = recordOrUndefined(runtimePayload.voice) ?? recordOrUndefined(payload.voice);
|
|
177
|
+
const integrations = recordOrUndefined(runtimePayload.integrations) ?? recordOrUndefined(payload.integrations);
|
|
178
|
+
/* v8 ignore start -- voice readiness permutations are covered by voice runtime tests; turn-context keeps a compact status projection for prompts @preserve */
|
|
179
|
+
const voiceConversationEngine = (typeof voice?.twilioConversationEngine === "string" ? voice.twilioConversationEngine
|
|
180
|
+
: typeof voice?.conversationEngine === "string" ? voice.conversationEngine
|
|
181
|
+
: typeof portableVoice?.twilioConversationEngine === "string" ? portableVoice.twilioConversationEngine
|
|
182
|
+
: typeof portableVoice?.conversationEngine === "string" ? portableVoice.conversationEngine
|
|
183
|
+
: "cascade").trim().toLowerCase();
|
|
184
|
+
const openAIRealtimeVoiceReady = hasOpenAIRealtimeVoiceConfig({ integrations, portableVoice });
|
|
185
|
+
const openAISipVoiceReady = openAIRealtimeVoiceReady
|
|
186
|
+
&& (hasTextField(portableVoice, "openaiSipProjectId") || hasTextField(voice, "openaiSipProjectId"))
|
|
187
|
+
&& (hasTrueField(portableVoice, "openaiSipAllowUnsignedWebhooks")
|
|
188
|
+
|| hasTrueField(voice, "openaiSipAllowUnsignedWebhooks")
|
|
189
|
+
|| hasTextField(portableVoice, "openaiSipWebhookSecret")
|
|
190
|
+
|| hasTextField(voice, "openaiSipWebhookSecret"));
|
|
191
|
+
/* v8 ignore stop */
|
|
192
|
+
const cascadeVoiceReady = hasTextField(integrations, "elevenLabsApiKey")
|
|
193
|
+
&& (hasTextField(integrations, "elevenLabsVoiceId") || hasTextField(portableVoice, "elevenLabsVoiceId"))
|
|
194
|
+
&& hasTextField(voice, "whisperCliPath")
|
|
195
|
+
&& hasTextField(voice, "whisperModelPath");
|
|
196
|
+
const privateKeys = mailroom?.privateKeys;
|
|
197
|
+
const configured = {
|
|
198
|
+
cli: true,
|
|
199
|
+
teams: hasTextField(teams, "clientId") && hasTextField(teams, "clientSecret") && hasTextField(teams, "tenantId"),
|
|
200
|
+
bluebubbles: hasTextField(bluebubbles, "serverUrl") && hasTextField(bluebubbles, "password"),
|
|
201
|
+
mail: hasTextField(mailroom, "mailboxAddress") && !!privateKeys && typeof privateKeys === "object" && !Array.isArray(privateKeys),
|
|
202
|
+
/* v8 ignore next 5 -- full voice mode matrix lives in the voice runtime resolver; this row only mirrors that result into prompt context @preserve */
|
|
203
|
+
voice: voiceConversationEngine === "openai-sip"
|
|
204
|
+
? openAISipVoiceReady
|
|
205
|
+
: voiceConversationEngine === "openai-realtime"
|
|
206
|
+
? openAIRealtimeVoiceReady
|
|
207
|
+
: cascadeVoiceReady,
|
|
208
|
+
};
|
|
209
|
+
const rows = [
|
|
210
|
+
{ label: "CLI", status: "interactive" },
|
|
211
|
+
{
|
|
212
|
+
label: "Teams",
|
|
213
|
+
status: !senses.teams.enabled ? "disabled" : configured.teams ? "ready" : "needs_config",
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
label: "BlueBubbles",
|
|
217
|
+
status: !senses.bluebubbles.enabled ? "disabled" : configured.bluebubbles ? "ready" : "not_attached",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
label: "Mail",
|
|
221
|
+
status: !senses.mail.enabled ? "disabled" : configured.mail ? "ready" : "needs_config",
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
label: "Voice",
|
|
225
|
+
status: !senses.voice.enabled ? "disabled" : configured.voice ? "ready" : "needs_config",
|
|
226
|
+
},
|
|
227
|
+
];
|
|
228
|
+
return rows.map((row) => `- ${row.label}: ${row.status}`);
|
|
229
|
+
}
|
|
230
|
+
function readBundleMetaFile() {
|
|
231
|
+
try {
|
|
232
|
+
const metaPath = path.join((0, identity_1.getAgentRoot)(), "bundle-meta.json");
|
|
233
|
+
const raw = fs.readFileSync(metaPath, "utf-8");
|
|
234
|
+
return JSON.parse(raw);
|
|
235
|
+
}
|
|
236
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
237
|
+
return null;
|
|
238
|
+
/* v8 ignore stop */
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// ── Builder ─────────────────────────────────────────────────────────
|
|
242
|
+
async function buildTurnContext(input) {
|
|
243
|
+
const agentRoot = (0, identity_1.getAgentRoot)();
|
|
244
|
+
const agentName = (0, identity_1.getAgentName)();
|
|
245
|
+
// Sync config
|
|
246
|
+
let syncConfig = { enabled: false, remote: "origin" };
|
|
247
|
+
try {
|
|
248
|
+
syncConfig = (0, config_1.getSyncConfig)();
|
|
249
|
+
}
|
|
250
|
+
catch { /* v8 ignore next -- defensive @preserve */ /* config not available */ }
|
|
251
|
+
// Bridges
|
|
252
|
+
const activeBridges = (0, manager_1.createBridgeManager)().findBridgesForSession({
|
|
253
|
+
friendId: input.currentSession.friendId,
|
|
254
|
+
channel: input.currentSession.channel,
|
|
255
|
+
key: input.currentSession.key,
|
|
256
|
+
});
|
|
257
|
+
// Session activity
|
|
258
|
+
let sessionActivity = [];
|
|
259
|
+
try {
|
|
260
|
+
sessionActivity = (0, session_activity_1.listSessionActivity)({
|
|
261
|
+
sessionsDir: `${agentRoot}/state/sessions`,
|
|
262
|
+
friendsDir: `${agentRoot}/friends`,
|
|
263
|
+
agentName,
|
|
264
|
+
currentSession: {
|
|
265
|
+
friendId: input.currentSession.friendId,
|
|
266
|
+
channel: input.currentSession.channel,
|
|
267
|
+
key: input.currentSession.key,
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
272
|
+
sessionActivity = [];
|
|
273
|
+
/* v8 ignore stop */
|
|
274
|
+
}
|
|
275
|
+
// Target candidates
|
|
276
|
+
let targetCandidates = [];
|
|
277
|
+
try {
|
|
278
|
+
if (input.channel !== "inner") {
|
|
279
|
+
targetCandidates = await (0, target_resolution_1.listTargetSessionCandidates)({
|
|
280
|
+
sessionsDir: `${agentRoot}/state/sessions`,
|
|
281
|
+
friendsDir: `${agentRoot}/friends`,
|
|
282
|
+
agentName,
|
|
283
|
+
currentSession: {
|
|
284
|
+
friendId: input.currentSession.friendId,
|
|
285
|
+
channel: input.currentSession.channel,
|
|
286
|
+
key: input.currentSession.key,
|
|
287
|
+
},
|
|
288
|
+
friendStore: input.friendStore,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
293
|
+
targetCandidates = [];
|
|
294
|
+
/* v8 ignore stop */
|
|
295
|
+
}
|
|
296
|
+
// Pending obligations
|
|
297
|
+
let pendingObligations = [];
|
|
298
|
+
try {
|
|
299
|
+
pendingObligations = (0, obligations_1.readPendingObligations)(agentRoot);
|
|
300
|
+
}
|
|
301
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
302
|
+
pendingObligations = [];
|
|
303
|
+
/* v8 ignore stop */
|
|
304
|
+
}
|
|
305
|
+
// Coding sessions
|
|
306
|
+
let codingSessions = [];
|
|
307
|
+
let otherCodingSessions = [];
|
|
308
|
+
try {
|
|
309
|
+
const liveCodingSessions = (0, coding_1.getCodingSessionManager)()
|
|
310
|
+
.listSessions()
|
|
311
|
+
.filter((session) => isLiveCodingSessionStatus(session.status) && Boolean(session.originSession));
|
|
312
|
+
codingSessions = liveCodingSessions.filter((session) => session.originSession?.friendId === input.currentSession.friendId
|
|
313
|
+
&& session.originSession.channel === input.currentSession.channel
|
|
314
|
+
&& session.originSession.key === input.currentSession.key);
|
|
315
|
+
otherCodingSessions = liveCodingSessions.filter((session) => !(session.originSession?.friendId === input.currentSession.friendId
|
|
316
|
+
&& session.originSession.channel === input.currentSession.channel
|
|
317
|
+
&& session.originSession.key === input.currentSession.key));
|
|
318
|
+
}
|
|
319
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
320
|
+
codingSessions = [];
|
|
321
|
+
otherCodingSessions = [];
|
|
322
|
+
/* v8 ignore stop */
|
|
323
|
+
}
|
|
324
|
+
const backgroundOperations = (0, mail_import_discovery_1.listVisibleBackgroundOperations)({
|
|
325
|
+
agentName,
|
|
326
|
+
agentRoot,
|
|
327
|
+
repoRoot: process.cwd(),
|
|
328
|
+
homeDir: process.env.HOME,
|
|
329
|
+
nowMs: Date.now(),
|
|
330
|
+
limit: 5,
|
|
331
|
+
});
|
|
332
|
+
// Inner work state
|
|
333
|
+
const innerWorkState = readInnerWorkState();
|
|
334
|
+
// Task board
|
|
335
|
+
let taskBoard;
|
|
336
|
+
try {
|
|
337
|
+
taskBoard = (0, tasks_1.getTaskModule)().getBoard();
|
|
338
|
+
}
|
|
339
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
340
|
+
taskBoard = emptyTaskBoard();
|
|
341
|
+
/* v8 ignore stop */
|
|
342
|
+
}
|
|
343
|
+
// Return obligations
|
|
344
|
+
let returnObligations = [];
|
|
345
|
+
try {
|
|
346
|
+
returnObligations = (0, obligations_1.listActiveReturnObligations)(agentName);
|
|
347
|
+
}
|
|
348
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
349
|
+
returnObligations = [];
|
|
350
|
+
/* v8 ignore stop */
|
|
351
|
+
}
|
|
352
|
+
// Recent episodes
|
|
353
|
+
const recentEpisodes = (0, episodes_1.readRecentEpisodes)(agentRoot, { limit: 20 });
|
|
354
|
+
// Active cares
|
|
355
|
+
const activeCares = (0, cares_1.readActiveCares)(agentRoot);
|
|
356
|
+
// ── Prompt-assembly pre-reads ──────────────────────────────────────
|
|
357
|
+
const daemonRunning = checkDaemonRunning();
|
|
358
|
+
let senseStatusLines = [];
|
|
359
|
+
try {
|
|
360
|
+
senseStatusLines = readSenseStatusLines();
|
|
361
|
+
}
|
|
362
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
363
|
+
senseStatusLines = [];
|
|
364
|
+
/* v8 ignore stop */
|
|
365
|
+
}
|
|
366
|
+
const bundleMeta = readBundleMetaFile();
|
|
367
|
+
const providerVisibility = (0, provider_visibility_1.buildAgentProviderVisibility)({ agentName, agentRoot });
|
|
368
|
+
let daemonHealth = null;
|
|
369
|
+
try {
|
|
370
|
+
daemonHealth = (0, daemon_health_1.readHealth)((0, daemon_health_1.getDefaultHealthPath)());
|
|
371
|
+
}
|
|
372
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
373
|
+
daemonHealth = null;
|
|
374
|
+
/* v8 ignore stop */
|
|
375
|
+
}
|
|
376
|
+
let journalFiles = [];
|
|
377
|
+
try {
|
|
378
|
+
const journalDir = path.join(agentRoot, "journal");
|
|
379
|
+
journalFiles = (0, prompt_1.readJournalFiles)(journalDir);
|
|
380
|
+
}
|
|
381
|
+
catch { /* v8 ignore start -- defensive: fallback on read failure @preserve */
|
|
382
|
+
journalFiles = [];
|
|
383
|
+
/* v8 ignore stop */
|
|
384
|
+
}
|
|
385
|
+
(0, runtime_1.emitNervesEvent)({
|
|
386
|
+
component: "senses",
|
|
387
|
+
event: "senses.turn_context_built",
|
|
388
|
+
message: "turn context snapshot assembled",
|
|
389
|
+
meta: {
|
|
390
|
+
channel: input.channel,
|
|
391
|
+
obligationCount: pendingObligations.length,
|
|
392
|
+
bridgeCount: activeBridges.length,
|
|
393
|
+
codingSessionCount: codingSessions.length,
|
|
394
|
+
backgroundOperationCount: backgroundOperations.length,
|
|
395
|
+
episodeCount: recentEpisodes.length,
|
|
396
|
+
providerLaneCount: providerVisibility.lanes.length,
|
|
397
|
+
},
|
|
398
|
+
});
|
|
399
|
+
return {
|
|
400
|
+
activeBridges,
|
|
401
|
+
sessionActivity,
|
|
402
|
+
targetCandidates,
|
|
403
|
+
pendingObligations,
|
|
404
|
+
codingSessions,
|
|
405
|
+
otherCodingSessions,
|
|
406
|
+
backgroundOperations,
|
|
407
|
+
innerWorkState,
|
|
408
|
+
taskBoard,
|
|
409
|
+
returnObligations,
|
|
410
|
+
recentEpisodes,
|
|
411
|
+
activeCares,
|
|
412
|
+
syncConfig,
|
|
413
|
+
syncFailure: undefined, // Set by pipeline after preTurnPull
|
|
414
|
+
providerVisibility,
|
|
415
|
+
daemonRunning,
|
|
416
|
+
senseStatusLines,
|
|
417
|
+
bundleMeta,
|
|
418
|
+
daemonHealth,
|
|
419
|
+
journalFiles,
|
|
420
|
+
};
|
|
421
|
+
}
|
|
@@ -38,7 +38,7 @@ const child_process_1 = require("child_process");
|
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
40
|
const runtime_1 = require("../../nerves/runtime");
|
|
41
|
-
const runtime_metadata_1 = require("
|
|
41
|
+
const runtime_metadata_1 = require("../daemon/runtime-metadata");
|
|
42
42
|
function normalizeOutput(output) {
|
|
43
43
|
return (typeof output === "string" ? output : output.toString("utf-8")).trim();
|
|
44
44
|
}
|
|
@@ -98,12 +98,13 @@ function syncGlobalOuroBotWrapper(deps = {}) {
|
|
|
98
98
|
const globalRoot = resolveGlobalRoot(execFileSyncImpl);
|
|
99
99
|
const installedVersion = readInstalledWrapperVersion(globalRoot, existsSyncImpl, readFileSyncImpl);
|
|
100
100
|
const executableOwner = resolveExecutableOwner(globalPrefix, platform, existsSyncImpl, realpathSyncImpl);
|
|
101
|
-
|
|
101
|
+
const installTarget = `ouro.bot@${runtimeVersion}`;
|
|
102
|
+
if (executableOwner === "wrapper" && installedVersion === runtimeVersion) {
|
|
102
103
|
(0, runtime_1.emitNervesEvent)({
|
|
103
104
|
component: "daemon",
|
|
104
105
|
event: "daemon.ouro_bot_global_sync_end",
|
|
105
106
|
message: "global ouro.bot wrapper already current",
|
|
106
|
-
meta: { version: runtimeVersion, installedVersion, executableOwner, installed: false },
|
|
107
|
+
meta: { version: runtimeVersion, installedVersion, executableOwner, installed: false, installTarget },
|
|
107
108
|
});
|
|
108
109
|
return {
|
|
109
110
|
installed: false,
|
|
@@ -112,12 +113,12 @@ function syncGlobalOuroBotWrapper(deps = {}) {
|
|
|
112
113
|
executableOwner,
|
|
113
114
|
};
|
|
114
115
|
}
|
|
115
|
-
execFileSyncImpl("npm", ["install", "-g", "--force",
|
|
116
|
+
execFileSyncImpl("npm", ["install", "-g", "--force", installTarget], { stdio: "pipe", encoding: "utf-8" });
|
|
116
117
|
(0, runtime_1.emitNervesEvent)({
|
|
117
118
|
component: "daemon",
|
|
118
119
|
event: "daemon.ouro_bot_global_sync_end",
|
|
119
120
|
message: "global ouro.bot wrapper synced",
|
|
120
|
-
meta: { version: runtimeVersion, installedVersion, executableOwner, installed: true },
|
|
121
|
+
meta: { version: runtimeVersion, installedVersion, executableOwner, installed: true, installTarget },
|
|
121
122
|
});
|
|
122
123
|
return {
|
|
123
124
|
installed: true,
|
|
@@ -35,7 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.runOuroBotWrapper = runOuroBotWrapper;
|
|
37
37
|
const runtime_1 = require("../../nerves/runtime");
|
|
38
|
-
const daemon_cli_1 = require("
|
|
38
|
+
const daemon_cli_1 = require("../daemon/daemon-cli");
|
|
39
39
|
async function defaultLoadCanonicalRunner() {
|
|
40
40
|
// Use the subpath export so we get the daemon-cli module directly,
|
|
41
41
|
// NOT the root entry point which has side-effects (immediately runs the CLI).
|