@ouro.bot/cli 0.1.0-alpha.75 → 0.1.0-alpha.751
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/LICENSE +21 -0
- package/README.md +154 -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/assets/bluebubbles-host +264 -0
- package/changelog.json +4818 -16
- package/deploy/unraid/Dockerfile +48 -0
- package/deploy/unraid/README.txt +2373 -0
- package/deploy/unraid/audit-container-spec.sh +4 -0
- package/deploy/unraid/container-runtime.json +1 -0
- package/deploy/unraid/migrate-sanctuary-bundle.mjs +21 -0
- package/deploy/unraid/ouro-events/bootstrap-spool.sh +92 -0
- package/deploy/unraid/ouro-events/emit-event.mjs +310 -0
- package/deploy/unraid/ouro-events/emit-usenet-event.sh +54 -0
- package/deploy/unraid/ouro-events/install-usenet-guard.sh +435 -0
- package/deploy/unraid/ouro-events/usenet-health.sh +178 -0
- package/deploy/unraid/sanctuary-acceptance-adapter.sh +37 -0
- package/deploy/unraid/sanctuary-acceptance-contract.json +201 -0
- package/deploy/unraid/sanctuary-acceptance-harness.sh +23 -0
- package/deploy/unraid/sanctuary-deployment-target.mjs +709 -0
- package/deploy/unraid/sanctuary-safe-rename.py +24 -0
- package/deploy/unraid/sanctuary-unit16-host-broker.mjs +1800 -0
- package/deploy/unraid/sanctuary-unit16-run.sh +520 -0
- package/deploy/unraid/sanctuary-unit18-target-audit.sh +27 -0
- package/deploy/unraid/sanctuary.ouro/agent.json +24 -0
- package/deploy/unraid/sanctuary.ouro/arc/README.md +3 -0
- package/deploy/unraid/sanctuary.ouro/bundle-meta.json +5 -0
- package/deploy/unraid/sanctuary.ouro/habits/sanctuary-health.md +8 -0
- package/deploy/unraid/sanctuary.ouro/provider-readiness.json +11 -0
- package/deploy/unraid/sanctuary.ouro/psyche/ASPIRATIONS.md +5 -0
- package/deploy/unraid/sanctuary.ouro/psyche/IDENTITY.md +5 -0
- package/deploy/unraid/sanctuary.ouro/psyche/LORE.md +9 -0
- package/deploy/unraid/sanctuary.ouro/psyche/SOUL.md +9 -0
- package/deploy/unraid/sanctuary.ouro/psyche/TACIT.md +9 -0
- package/deploy/unraid/sanctuary.ouro/state/policy/steward.json +7 -0
- package/deploy/unraid/sanctuary.ouro/tool-profiles.json +23 -0
- package/deploy/unraid/sanctuary.xml +28 -0
- package/dist/a2a/card.js +57 -0
- package/dist/a2a/client.js +180 -0
- package/dist/a2a/config.js +50 -0
- package/dist/a2a/delegation-stores.js +56 -0
- package/dist/a2a/did-resolution.js +93 -0
- package/dist/a2a/identity.js +170 -0
- package/dist/a2a/inbound-share.js +107 -0
- package/dist/a2a/mission-result-wire.js +196 -0
- package/dist/a2a/onboarding.js +115 -0
- package/dist/a2a/pin-store.js +132 -0
- package/dist/a2a/seen-ledger.js +120 -0
- package/dist/a2a/server.js +604 -0
- package/dist/a2a/task-store.js +69 -0
- package/dist/a2a/transport.js +45 -0
- package/dist/a2a/types.js +3 -0
- package/dist/arc/attention-types.js +8 -0
- package/dist/arc/cares.js +278 -0
- package/dist/arc/episodes.js +118 -0
- package/dist/arc/evolution.js +490 -0
- package/dist/arc/flight-recorder.js +1034 -0
- package/dist/arc/intentions.js +134 -0
- package/dist/arc/json-store.js +117 -0
- package/dist/arc/obligations.js +386 -0
- package/dist/arc/packets.js +336 -0
- package/dist/arc/presence.js +185 -0
- package/dist/arc/task-lifecycle.js +57 -0
- package/dist/commerce/store.js +755 -0
- package/dist/commerce/types.js +3 -0
- package/dist/heart/active-work.js +820 -28
- package/dist/heart/agent-entry.js +190 -3
- package/dist/heart/approval-files.js +113 -0
- package/dist/heart/approval-store.js +950 -0
- 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/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 +495 -0
- package/dist/heart/autonomy-budget.js +477 -0
- package/dist/heart/awaiting/await-alert.js +148 -0
- package/dist/heart/awaiting/await-expiry.js +143 -0
- package/dist/heart/awaiting/await-loader.js +91 -0
- package/dist/heart/awaiting/await-parser.js +149 -0
- package/dist/heart/awaiting/await-runtime-state.js +100 -0
- package/dist/heart/awaiting/await-scheduler.js +382 -0
- package/dist/heart/background-operations.js +281 -0
- package/dist/heart/bridges/manager.js +137 -17
- package/dist/heart/bridges/store.js +14 -2
- package/dist/heart/bundle-state.js +168 -0
- package/dist/heart/commitments.js +68 -15
- package/dist/heart/config-registry.js +331 -0
- package/dist/heart/config.js +128 -129
- package/dist/heart/context-loss-gauntlet.js +383 -0
- package/dist/heart/context-loss-sentinel.js +1157 -0
- package/dist/heart/core.js +1761 -456
- package/dist/heart/cross-chat-delivery.js +9 -22
- package/dist/heart/daemon/agent-config-check.js +451 -0
- package/dist/heart/daemon/agent-discovery.js +185 -3
- package/dist/heart/daemon/agent-service.js +542 -0
- package/dist/heart/daemon/agentic-repair.js +547 -0
- package/dist/heart/daemon/await-private-wake.js +59 -0
- package/dist/heart/daemon/bluebubbles-cli-integration.js +71 -0
- package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
- package/dist/heart/daemon/bluebubbles-host-protocol.js +433 -0
- package/dist/heart/daemon/bluebubbles-host.js +273 -0
- package/dist/heart/daemon/boot-sync-probe.js +197 -0
- package/dist/heart/daemon/cadence.js +180 -0
- package/dist/heart/daemon/cli-defaults.js +832 -0
- package/dist/heart/daemon/cli-desk.js +322 -0
- package/dist/heart/daemon/cli-exec.js +8692 -0
- package/dist/heart/daemon/cli-help.js +710 -0
- package/dist/heart/daemon/cli-parse.js +2714 -0
- package/dist/heart/daemon/cli-render-doctor.js +57 -0
- package/dist/heart/daemon/cli-render.js +777 -0
- package/dist/heart/daemon/cli-types.js +8 -0
- package/dist/heart/daemon/connect-bay.js +323 -0
- package/dist/heart/daemon/container-credential-bootstrap.js +273 -0
- package/dist/heart/daemon/container-healthcheck.js +96 -0
- package/dist/heart/daemon/container-runtime.js +97 -0
- package/dist/heart/daemon/container-spec-auditor-main.js +160 -0
- package/dist/heart/daemon/container-spec-auditor.js +178 -0
- package/dist/heart/daemon/daemon-bootstrap-startup.js +41 -0
- package/dist/heart/daemon/daemon-cli.js +29 -2144
- package/dist/heart/daemon/daemon-entry.js +944 -10
- package/dist/heart/daemon/daemon-health.js +186 -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 +1830 -88
- package/dist/heart/daemon/dns-workflow.js +394 -0
- package/dist/heart/daemon/doctor-types.js +8 -0
- package/dist/heart/daemon/doctor.js +1755 -0
- package/dist/heart/daemon/freshness.js +345 -0
- package/dist/heart/daemon/habit-private-wake.js +61 -0
- package/dist/heart/daemon/health-monitor.js +142 -11
- package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
- package/dist/heart/daemon/hooks/bundle-meta.js +135 -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 +78 -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 +79 -10
- package/dist/heart/daemon/logs-prune.js +132 -0
- package/dist/heart/daemon/mcp-canary.js +524 -0
- package/dist/heart/daemon/message-router.js +45 -5
- package/dist/heart/daemon/migrate-to-desk.js +848 -0
- package/dist/heart/daemon/os-cron-deps.js +135 -0
- package/dist/heart/daemon/os-cron.js +22 -14
- package/dist/heart/daemon/ouro-bot-entry.js +4 -2
- package/dist/heart/daemon/ouro-entry.js +3 -1
- package/dist/heart/daemon/plugin-cli.js +432 -0
- package/dist/heart/daemon/process-manager.js +624 -61
- package/dist/heart/daemon/provider-discovery.js +137 -0
- package/dist/heart/daemon/provider-ping-progress.js +83 -0
- package/dist/heart/daemon/prunable-bundle.js +144 -0
- package/dist/heart/daemon/pulse.js +511 -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 +47 -14
- package/dist/heart/daemon/runtime-metadata.js +2 -30
- package/dist/heart/daemon/runtime-mode.js +13 -2
- package/dist/heart/daemon/safe-mode.js +161 -0
- package/dist/heart/daemon/sanctuary-acceptance-adapter.js +2426 -0
- package/dist/heart/daemon/sanctuary-acceptance-harness.js +1621 -0
- package/dist/heart/daemon/sanctuary-acceptance-marker.js +267 -0
- package/dist/heart/daemon/sanctuary-acceptance-scenarios.js +976 -0
- package/dist/heart/daemon/sanctuary-bundle-migration.js +398 -0
- package/dist/heart/daemon/sanctuary-scheduler-liveness.js +227 -0
- package/dist/heart/daemon/sanctuary-scheduler-origin.js +132 -0
- package/dist/heart/daemon/sense-manager.js +689 -48
- package/dist/heart/daemon/session-id-resolver.js +131 -0
- package/dist/heart/daemon/skill-management-installer.js +1 -1
- package/dist/heart/daemon/socket-client.js +180 -12
- package/dist/heart/daemon/stale-bundle-prune.js +113 -0
- package/dist/heart/daemon/startup-tui.js +338 -0
- package/dist/heart/daemon/supercronic-supervisor.js +282 -0
- package/dist/heart/daemon/task-scheduler.js +117 -39
- package/dist/heart/daemon/terminal-ui.js +499 -0
- package/dist/heart/daemon/thoughts.js +138 -54
- package/dist/heart/daemon/up-progress.js +366 -0
- package/dist/heart/daemon/vault-items.js +56 -0
- package/dist/heart/delegation.js +1 -4
- package/dist/heart/external-events/router.js +1103 -0
- package/dist/heart/habits/habit-cancel.js +810 -0
- package/dist/heart/habits/habit-lifecycle.js +1327 -0
- package/dist/heart/habits/habit-migration.js +194 -0
- package/dist/heart/habits/habit-parser.js +278 -0
- package/dist/heart/habits/habit-runtime-state.js +93 -0
- package/dist/heart/habits/habit-scheduler.js +653 -0
- package/dist/heart/habits/habit-session-summary.js +318 -0
- package/dist/heart/habits/habit-session.js +636 -0
- package/dist/heart/{daemon → hatch}/hatch-flow.js +55 -62
- 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 +53 -18
- package/dist/heart/identity.js +184 -59
- package/dist/heart/kept-notes.js +289 -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 +98 -0
- package/dist/heart/mailbox/mailbox-http-response.js +7 -0
- package/dist/heart/mailbox/mailbox-http-routes.js +398 -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 +39 -0
- package/dist/heart/mailbox/mailbox-types.js +27 -0
- package/dist/heart/mailbox/mailbox-view.js +197 -0
- package/dist/heart/mailbox/readers/agent-machine.js +428 -0
- package/dist/heart/mailbox/readers/continuity-readers.js +329 -0
- package/dist/heart/mailbox/readers/mail.js +375 -0
- package/dist/heart/mailbox/readers/runtime-readers.js +823 -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 +696 -0
- package/dist/heart/migrate-config.js +100 -0
- package/dist/heart/model-capabilities.js +11 -0
- package/dist/heart/orientation-frame.js +345 -0
- package/dist/heart/platform.js +81 -0
- package/dist/heart/primitives.js +1 -1
- package/dist/heart/private-runtime/decision-renderer.js +156 -0
- package/dist/heart/private-runtime/index.js +18 -0
- package/dist/heart/private-runtime/ledger.js +218 -0
- package/dist/heart/private-runtime/policy.js +214 -0
- package/dist/heart/private-runtime/types.js +2 -0
- package/dist/heart/progress-story.js +1 -1
- package/dist/heart/provider-attempt.js +137 -0
- package/dist/heart/provider-binding-resolver.js +273 -0
- package/dist/heart/provider-credentials.js +449 -0
- package/dist/heart/provider-failover.js +311 -0
- package/dist/heart/provider-models.js +96 -0
- package/dist/heart/provider-ping.js +265 -0
- package/dist/heart/provider-readiness-cache.js +119 -0
- package/dist/heart/provider-visibility.js +188 -0
- package/dist/heart/providers/anthropic-token.js +131 -0
- package/dist/heart/providers/anthropic.js +173 -60
- package/dist/heart/providers/azure.js +23 -11
- package/dist/heart/providers/error-classification.js +127 -0
- package/dist/heart/providers/github-copilot.js +34 -38
- package/dist/heart/providers/minimax-vlm.js +189 -0
- package/dist/heart/providers/minimax.js +26 -8
- package/dist/heart/providers/openai-codex-token.js +349 -0
- package/dist/heart/providers/openai-codex.js +55 -40
- package/dist/heart/providers/openai-compatible.js +177 -0
- package/dist/heart/run-ledger.js +247 -0
- package/dist/heart/runtime-capability-check.js +170 -0
- package/dist/heart/runtime-credentials.js +607 -0
- package/dist/heart/runtime-cwd.js +87 -0
- package/dist/heart/sense-truth.js +22 -4
- package/dist/heart/session-activity.js +90 -24
- package/dist/heart/session-events.js +1318 -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 +133 -0
- package/dist/heart/start-of-turn-packet.js +368 -0
- package/dist/heart/steward-policy.js +302 -0
- package/dist/heart/streaming.js +604 -207
- package/dist/heart/structured-output.js +196 -0
- package/dist/heart/sync-classification.js +176 -0
- package/dist/heart/sync.js +449 -0
- package/dist/heart/target-resolution.js +11 -7
- 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-approval.js +342 -0
- package/dist/heart/tool-description.js +155 -0
- package/dist/heart/tool-friction.js +55 -0
- package/dist/heart/tool-loop.js +200 -0
- package/dist/heart/turn-context.js +481 -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 +432 -0
- package/dist/heart/versioning/ouro-recovery-launcher.js +76 -0
- package/dist/heart/versioning/ouro-version-manager.js +409 -0
- package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
- package/dist/heart/{daemon → versioning}/update-checker.js +6 -1
- package/dist/heart/versioning/update-hooks.js +154 -0
- package/dist/heart/versioning/version-intent.js +114 -0
- package/dist/heart/work-card.js +380 -0
- package/dist/mailbox-ui/assets/index-Du_9G9WO.css +1 -0
- package/dist/mailbox-ui/assets/index-J8zDwHmE.js +1 -0
- package/dist/mailbox-ui/assets/vendor-CcN1XpQ9.js +61 -0
- package/dist/mailbox-ui/index.html +16 -0
- package/dist/mailroom/attention.js +167 -0
- package/dist/mailroom/autonomy.js +209 -0
- package/dist/mailroom/blob-store.js +889 -0
- package/dist/mailroom/body-cache.js +61 -0
- package/dist/mailroom/cache-sync-cli.js +58 -0
- package/dist/mailroom/core.js +803 -0
- package/dist/mailroom/entry.js +160 -0
- package/dist/mailroom/file-store.js +568 -0
- package/dist/mailroom/hosted-cache-sync.js +384 -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 +292 -0
- package/dist/mailroom/search-cache.js +513 -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 +24 -2
- package/dist/mind/context.js +278 -111
- package/dist/mind/desk-section.js +362 -0
- package/dist/mind/diary-integrity.js +60 -0
- package/dist/mind/{memory.js → diary.js} +68 -77
- package/dist/mind/embedding-provider.js +60 -0
- package/dist/mind/file-state.js +179 -0
- package/dist/mind/{associative-recall.js → note-search.js} +47 -58
- package/dist/mind/obligation-steering.js +227 -0
- package/dist/mind/pending.js +34 -8
- package/dist/mind/prompt-budget.js +479 -0
- package/dist/mind/prompt-refresh.js +3 -2
- package/dist/mind/prompt.js +1050 -187
- package/dist/mind/provenance-trust.js +26 -0
- package/dist/mind/record-paths.js +312 -0
- package/dist/mind/scrutiny.js +173 -0
- package/dist/mind/session-transaction.js +379 -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 +139 -5
- package/dist/nerves/coverage/run-artifacts.js +55 -35
- package/dist/nerves/coverage/source-scanner.js +4 -4
- package/dist/nerves/event-buffer.js +111 -0
- package/dist/nerves/index.js +293 -9
- 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 +159 -0
- package/dist/nerves/runtime.js +17 -1
- package/dist/repertoire/ado-client.js +15 -56
- package/dist/repertoire/ado-semantic.js +16 -10
- package/dist/repertoire/api-client.js +97 -0
- package/dist/repertoire/bitwarden-store.js +1045 -0
- package/dist/repertoire/bundle-templates.js +71 -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 +331 -0
- package/dist/repertoire/coding/feedback.js +218 -30
- package/dist/repertoire/coding/index.js +15 -3
- package/dist/repertoire/coding/manager.js +166 -10
- package/dist/repertoire/coding/spawner.js +58 -11
- package/dist/repertoire/coding/tools.js +242 -14
- package/dist/repertoire/coding/workbench-client.js +272 -0
- package/dist/repertoire/coding/workbench-manager.js +346 -0
- 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/desk/classifier.js +362 -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 +813 -18
- package/dist/repertoire/mcp-client.js +44 -3
- package/dist/repertoire/mcp-manager.js +259 -20
- package/dist/repertoire/mcp-tools.js +83 -0
- package/dist/repertoire/plugin-mcp.js +175 -0
- package/dist/repertoire/plugins.js +253 -0
- package/dist/repertoire/relationship-authorization.js +194 -0
- package/dist/repertoire/shell-sessions.js +133 -0
- package/dist/repertoire/skills.js +48 -4
- package/dist/repertoire/stripe-client.js +131 -0
- package/dist/repertoire/tool-arguments.js +143 -0
- package/dist/repertoire/tool-results.js +29 -0
- package/dist/repertoire/tools-a2a.js +699 -0
- package/dist/repertoire/tools-attachments.js +317 -0
- package/dist/repertoire/tools-awaiting.js +575 -0
- package/dist/repertoire/tools-base.js +82 -1124
- package/dist/repertoire/tools-bluebubbles.js +2 -0
- package/dist/repertoire/tools-bridge.js +144 -0
- package/dist/repertoire/tools-bundle.js +993 -0
- package/dist/repertoire/tools-commerce.js +253 -0
- package/dist/repertoire/tools-config.js +186 -0
- package/dist/repertoire/tools-continuity.js +507 -0
- package/dist/repertoire/tools-credential.js +383 -0
- package/dist/repertoire/tools-evolution.js +527 -0
- package/dist/repertoire/tools-files.js +344 -0
- package/dist/repertoire/tools-flight.js +290 -0
- package/dist/repertoire/tools-flow.js +119 -0
- package/dist/repertoire/tools-github.js +3 -8
- package/dist/repertoire/tools-habits.js +103 -0
- package/dist/repertoire/tools-mail.js +1828 -0
- package/dist/repertoire/tools-notes.js +485 -0
- package/dist/repertoire/tools-obligations.js +182 -0
- package/dist/repertoire/tools-orientation.js +31 -0
- package/dist/repertoire/tools-record.js +482 -0
- package/dist/repertoire/tools-rsvp.js +139 -0
- package/dist/repertoire/tools-runtime.js +150 -0
- package/dist/repertoire/tools-session.js +1096 -0
- package/dist/repertoire/tools-shell.js +133 -0
- package/dist/repertoire/tools-steward-policy.js +88 -0
- package/dist/repertoire/tools-stripe.js +224 -0
- package/dist/repertoire/tools-surface.js +355 -0
- package/dist/repertoire/tools-teams.js +12 -39
- package/dist/repertoire/tools-telegram-contacts.js +37 -0
- package/dist/repertoire/tools-travel.js +125 -0
- package/dist/repertoire/tools-trip.js +982 -0
- package/dist/repertoire/tools-unraid.js +461 -0
- package/dist/repertoire/tools-user-profile.js +146 -0
- package/dist/repertoire/tools-vault.js +40 -0
- package/dist/repertoire/tools-voice.js +145 -0
- package/dist/repertoire/tools.js +371 -80
- package/dist/repertoire/travel-api-client.js +360 -0
- package/dist/repertoire/unraid-client.js +155 -0
- package/dist/repertoire/unraid-restart.js +212 -0
- package/dist/repertoire/user-profile.js +131 -0
- package/dist/repertoire/vault-setup.js +246 -0
- package/dist/repertoire/vault-unlock.js +628 -0
- package/dist/rsvp/aisleplanner-client.js +354 -0
- package/dist/rsvp/cli.js +926 -0
- package/dist/rsvp/config.js +327 -0
- package/dist/rsvp/cutover.js +433 -0
- package/dist/rsvp/diagnostics.js +232 -0
- package/dist/rsvp/diff-renderer.js +176 -0
- package/dist/rsvp/habit-policy.js +110 -0
- package/dist/rsvp/habit-stage.js +123 -0
- package/dist/rsvp/incident-bundle.js +97 -0
- package/dist/rsvp/migration.js +204 -0
- package/dist/rsvp/native-habit-runner.js +630 -0
- package/dist/rsvp/outbound-state.js +628 -0
- package/dist/rsvp/query.js +118 -0
- package/dist/rsvp/replay.js +233 -0
- package/dist/rsvp/snapshot.js +232 -0
- package/dist/rsvp/spend-ledger.js +175 -0
- package/dist/scripts/claude-code-hook.js +41 -0
- package/dist/scripts/claude-code-stop-hook.js +47 -0
- package/dist/senses/a2a-entry.js +115 -0
- package/dist/senses/attention-queue.js +186 -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} +355 -40
- package/dist/senses/bluebubbles/context-packet.js +207 -0
- package/dist/senses/bluebubbles/context-smoke.js +144 -0
- package/dist/senses/bluebubbles/entry.js +90 -0
- package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +21 -3
- package/dist/senses/bluebubbles/index.js +3839 -0
- package/dist/senses/bluebubbles/latest-turn.js +311 -0
- package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -71
- package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +159 -28
- package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +24 -13
- package/dist/senses/bluebubbles/outbound-state.js +308 -0
- package/dist/senses/bluebubbles/processed-log.js +133 -0
- package/dist/senses/bluebubbles/reaction-policy.js +47 -0
- package/dist/senses/bluebubbles/replay.js +284 -0
- package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +30 -2
- package/dist/senses/bluebubbles/semantic-receipts.js +1986 -0
- package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
- package/dist/senses/bluebubbles/webhook-registration.js +228 -0
- package/dist/senses/bluebubbles-meta-guard.js +39 -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 +241 -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 +621 -321
- package/dist/senses/commands.js +66 -3
- package/dist/senses/context-packet-ledger.js +371 -0
- package/dist/senses/context-packets.js +154 -0
- package/dist/senses/habit-lifecycle-guard.js +24 -0
- package/dist/senses/habit-turn-message.js +160 -0
- package/dist/senses/ingress-evidence.js +2 -0
- package/dist/senses/mail-entry.js +66 -0
- package/dist/senses/mail.js +524 -0
- package/dist/senses/pipeline.js +1074 -193
- package/dist/senses/private-runtime-worker.js +774 -0
- package/dist/senses/private-runtime.js +1459 -0
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/sanctuary-grounding.js +118 -0
- package/dist/senses/sanctuary-health-acceptance-probe-entry.js +12 -0
- package/dist/senses/sanctuary-health-acceptance-probe.js +774 -0
- package/dist/senses/sanctuary-health-runner.js +101 -0
- package/dist/senses/sanctuary-health.js +408 -0
- package/dist/senses/sanctuary-interactive-control.js +306 -0
- package/dist/senses/sanctuary-media-optimization.js +436 -0
- package/dist/senses/sanctuary-runtime.js +271 -0
- package/dist/senses/sanctuary-sab.js +80 -0
- package/dist/senses/shared-turn.js +487 -0
- package/dist/senses/surface-tool.js +109 -0
- package/dist/senses/teams-entry.js +60 -8
- package/dist/senses/teams.js +515 -217
- package/dist/senses/telegram-admission.js +695 -0
- package/dist/senses/telegram-approval-runtime.js +566 -0
- package/dist/senses/telegram-audit-ledger.js +220 -0
- package/dist/senses/telegram-client.js +1635 -0
- package/dist/senses/telegram-effect-adapter.js +787 -0
- package/dist/senses/telegram-entry.js +83 -0
- package/dist/senses/telegram.js +1914 -0
- package/dist/senses/trust-gate.js +104 -9
- 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 +5081 -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/dist/util/frontmatter.js +69 -0
- package/npm-shrinkwrap.json +8129 -0
- package/package.json +71 -12
- package/skills/agent-commerce.md +113 -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 -430
- package/dist/heart/daemon/ouro-path-installer.js +0 -178
- package/dist/heart/daemon/update-hooks.js +0 -138
- package/dist/heart/safe-workspace.js +0 -228
- package/dist/heart/session-recall.js +0 -116
- package/dist/mind/friends/channel.js +0 -84
- package/dist/mind/friends/group-context.js +0 -144
- package/dist/mind/friends/resolver.js +0 -84
- package/dist/mind/friends/store-file.js +0 -190
- package/dist/mind/friends/store.js +0 -4
- package/dist/mind/friends/tokens.js +0 -26
- package/dist/mind/friends/trust-explanation.js +0 -74
- package/dist/mind/friends/types.js +0 -29
- package/dist/repertoire/tasks/board.js +0 -134
- package/dist/repertoire/tasks/index.js +0 -224
- package/dist/repertoire/tasks/lifecycle.js +0 -80
- package/dist/repertoire/tasks/middleware.js +0 -65
- package/dist/repertoire/tasks/parser.js +0 -173
- package/dist/repertoire/tasks/scanner.js +0 -132
- package/dist/repertoire/tasks/transitions.js +0 -144
- package/dist/senses/bluebubbles-entry.js +0 -13
- package/dist/senses/bluebubbles.js +0 -1180
- package/dist/senses/debug-activity.js +0 -148
- package/dist/senses/inner-dialog-worker.js +0 -90
- package/dist/senses/inner-dialog.js +0 -509
- package/subagents/README.md +0 -7
- /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/{repertoire/tasks/types.js → heart/attachments/sources/adapter.js} +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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Formats
|
|
2
|
+
// Formats private-runtime session turns for human consumption.
|
|
3
3
|
// Used by `ouro thoughts` CLI command to show what the agent has been thinking.
|
|
4
4
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
5
|
if (k2 === undefined) k2 = k;
|
|
@@ -36,18 +36,19 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
})();
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
38
|
exports.formatSurfacedValue = formatSurfacedValue;
|
|
39
|
-
exports.
|
|
39
|
+
exports.derivePrivateRuntimeStatus = derivePrivateRuntimeStatus;
|
|
40
40
|
exports.deriveInnerJob = deriveInnerJob;
|
|
41
|
-
exports.
|
|
41
|
+
exports.formatPrivateRuntimeStatus = formatPrivateRuntimeStatus;
|
|
42
42
|
exports.extractThoughtResponseFromMessages = extractThoughtResponseFromMessages;
|
|
43
|
-
exports.
|
|
43
|
+
exports.parsePrivateRuntimeSession = parsePrivateRuntimeSession;
|
|
44
44
|
exports.formatThoughtTurns = formatThoughtTurns;
|
|
45
|
-
exports.
|
|
46
|
-
exports.
|
|
47
|
-
exports.
|
|
45
|
+
exports.getPrivateRuntimeSessionPath = getPrivateRuntimeSessionPath;
|
|
46
|
+
exports.readPrivateRuntimeStatus = readPrivateRuntimeStatus;
|
|
47
|
+
exports.readPrivateRuntimeRawData = readPrivateRuntimeRawData;
|
|
48
48
|
exports.followThoughts = followThoughts;
|
|
49
49
|
const fs = __importStar(require("fs"));
|
|
50
50
|
const path = __importStar(require("path"));
|
|
51
|
+
const session_events_1 = require("../session-events");
|
|
51
52
|
const runtime_1 = require("../../nerves/runtime");
|
|
52
53
|
function contentToText(content) {
|
|
53
54
|
if (typeof content === "string")
|
|
@@ -93,7 +94,7 @@ function extractToolNames(messages) {
|
|
|
93
94
|
if (msg.role === "assistant" && Array.isArray(msg.tool_calls)) {
|
|
94
95
|
for (const tc of msg.tool_calls) {
|
|
95
96
|
const toolFunction = extractToolFunction(tc);
|
|
96
|
-
if (toolFunction?.name && toolFunction.name !== "
|
|
97
|
+
if (toolFunction?.name && toolFunction.name !== "settle")
|
|
97
98
|
names.push(toolFunction.name);
|
|
98
99
|
}
|
|
99
100
|
}
|
|
@@ -166,11 +167,11 @@ function extractEnrichedFields(pendingMessages) {
|
|
|
166
167
|
...(delegated.obligationStatus === "pending" ? { obligationPending: true } : {}),
|
|
167
168
|
};
|
|
168
169
|
}
|
|
169
|
-
function
|
|
170
|
+
function derivePrivateRuntimeStatus(pendingMessages, turns, runtimeState) {
|
|
170
171
|
if (runtimeState?.status === "running") {
|
|
171
172
|
if (pendingMessages.length > 0) {
|
|
172
173
|
return {
|
|
173
|
-
queue: "queued to
|
|
174
|
+
queue: "queued to private runtime",
|
|
174
175
|
wake: "queued behind active turn",
|
|
175
176
|
processing: "pending",
|
|
176
177
|
surfaced: "nothing yet",
|
|
@@ -186,8 +187,8 @@ function deriveInnerDialogStatus(pendingMessages, turns, runtimeState) {
|
|
|
186
187
|
}
|
|
187
188
|
if (pendingMessages.length > 0) {
|
|
188
189
|
return {
|
|
189
|
-
queue: "queued to
|
|
190
|
-
wake: "awaiting
|
|
190
|
+
queue: "queued to private runtime",
|
|
191
|
+
wake: "awaiting private-runtime turn",
|
|
191
192
|
processing: "pending",
|
|
192
193
|
surfaced: "nothing yet",
|
|
193
194
|
...extractEnrichedFields(pendingMessages),
|
|
@@ -223,8 +224,8 @@ function deriveInnerJob(pendingMessages, turns, runtimeState) {
|
|
|
223
224
|
if (isRunning) {
|
|
224
225
|
(0, runtime_1.emitNervesEvent)({
|
|
225
226
|
component: "engine",
|
|
226
|
-
event: "engine.
|
|
227
|
-
message: "derived
|
|
227
|
+
event: "engine.private_runtime_job_derive",
|
|
228
|
+
message: "derived private-runtime job state",
|
|
228
229
|
meta: { status: "running", mode: pendingMode, hasOrigin: origin !== null, hasObligation: obligationStatus !== null },
|
|
229
230
|
});
|
|
230
231
|
return {
|
|
@@ -242,8 +243,8 @@ function deriveInnerJob(pendingMessages, turns, runtimeState) {
|
|
|
242
243
|
if (pendingMessages.length > 0) {
|
|
243
244
|
(0, runtime_1.emitNervesEvent)({
|
|
244
245
|
component: "engine",
|
|
245
|
-
event: "engine.
|
|
246
|
-
message: "derived
|
|
246
|
+
event: "engine.private_runtime_job_derive",
|
|
247
|
+
message: "derived private-runtime job state",
|
|
247
248
|
meta: { status: "queued", mode: pendingMode, hasOrigin: origin !== null, hasObligation: obligationStatus !== null },
|
|
248
249
|
});
|
|
249
250
|
return {
|
|
@@ -268,8 +269,8 @@ function deriveInnerJob(pendingMessages, turns, runtimeState) {
|
|
|
268
269
|
]);
|
|
269
270
|
(0, runtime_1.emitNervesEvent)({
|
|
270
271
|
component: "engine",
|
|
271
|
-
event: "engine.
|
|
272
|
-
message: "derived
|
|
272
|
+
event: "engine.private_runtime_job_derive",
|
|
273
|
+
message: "derived private-runtime job state",
|
|
273
274
|
meta: { status: "surfaced", mode: "reflect", hasOrigin: false, hasObligation: false },
|
|
274
275
|
});
|
|
275
276
|
return {
|
|
@@ -287,8 +288,8 @@ function deriveInnerJob(pendingMessages, turns, runtimeState) {
|
|
|
287
288
|
}
|
|
288
289
|
(0, runtime_1.emitNervesEvent)({
|
|
289
290
|
component: "engine",
|
|
290
|
-
event: "engine.
|
|
291
|
-
message: "derived
|
|
291
|
+
event: "engine.private_runtime_job_derive",
|
|
292
|
+
message: "derived private-runtime job state",
|
|
292
293
|
meta: { status: "idle", mode: "reflect", hasOrigin: false, hasObligation: false },
|
|
293
294
|
});
|
|
294
295
|
return {
|
|
@@ -303,7 +304,7 @@ function deriveInnerJob(pendingMessages, turns, runtimeState) {
|
|
|
303
304
|
surfacedAt: null,
|
|
304
305
|
};
|
|
305
306
|
}
|
|
306
|
-
function
|
|
307
|
+
function formatPrivateRuntimeStatus(status) {
|
|
307
308
|
const lines = [
|
|
308
309
|
`queue: ${status.queue}`,
|
|
309
310
|
`wake: ${status.wake}`,
|
|
@@ -321,15 +322,15 @@ function formatInnerDialogStatus(status) {
|
|
|
321
322
|
}
|
|
322
323
|
return lines.join("\n");
|
|
323
324
|
}
|
|
324
|
-
/** Extract text from a
|
|
325
|
-
function
|
|
325
|
+
/** Extract text from a settle tool call's arguments. */
|
|
326
|
+
function extractSettleAnswer(messages) {
|
|
326
327
|
for (let k = messages.length - 1; k >= 0; k--) {
|
|
327
328
|
const msg = messages[k];
|
|
328
329
|
if (msg.role !== "assistant" || !Array.isArray(msg.tool_calls))
|
|
329
330
|
continue;
|
|
330
331
|
for (const tc of msg.tool_calls) {
|
|
331
332
|
const toolFunction = extractToolFunction(tc);
|
|
332
|
-
if (toolFunction?.name !== "
|
|
333
|
+
if (toolFunction?.name !== "settle")
|
|
333
334
|
continue;
|
|
334
335
|
try {
|
|
335
336
|
const parsed = JSON.parse(toolFunction.arguments ?? "{}");
|
|
@@ -343,18 +344,85 @@ function extractFinalAnswer(messages) {
|
|
|
343
344
|
}
|
|
344
345
|
return "";
|
|
345
346
|
}
|
|
347
|
+
function parseToolArguments(argumentsValue) {
|
|
348
|
+
if (!argumentsValue)
|
|
349
|
+
return {};
|
|
350
|
+
try {
|
|
351
|
+
const parsed = JSON.parse(argumentsValue);
|
|
352
|
+
return parsed && typeof parsed === "object" && !Array.isArray(parsed)
|
|
353
|
+
? parsed
|
|
354
|
+
: {};
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return {};
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
function toolArgumentText(args, keys) {
|
|
361
|
+
for (const key of keys) {
|
|
362
|
+
const value = args[key];
|
|
363
|
+
if (typeof value === "string" && value.trim()) {
|
|
364
|
+
return value.trim();
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return "";
|
|
368
|
+
}
|
|
369
|
+
function truncateToolSummary(summary) {
|
|
370
|
+
if (summary.length <= 220)
|
|
371
|
+
return summary;
|
|
372
|
+
return `${summary.slice(0, 217)}...`;
|
|
373
|
+
}
|
|
374
|
+
function summarizeToolAction(name, argumentsValue) {
|
|
375
|
+
if (!name)
|
|
376
|
+
return null;
|
|
377
|
+
const args = parseToolArguments(argumentsValue);
|
|
378
|
+
if (name === "surface") {
|
|
379
|
+
const message = toolArgumentText(args, ["message", "text", "content"]);
|
|
380
|
+
return message ? `surfaced: ${message}` : null;
|
|
381
|
+
}
|
|
382
|
+
if (name === "ponder") {
|
|
383
|
+
const thought = toolArgumentText(args, ["summary", "question", "topic", "prompt"]);
|
|
384
|
+
return thought ? `pondered: ${thought}` : null;
|
|
385
|
+
}
|
|
386
|
+
if (name === "diary_write") {
|
|
387
|
+
const note = toolArgumentText(args, ["text", "content", "note", "entry"]);
|
|
388
|
+
return note ? `diary: ${note}` : null;
|
|
389
|
+
}
|
|
390
|
+
if (name === "let_go") {
|
|
391
|
+
const reason = toolArgumentText(args, ["reason", "note", "status"]);
|
|
392
|
+
return reason ? `let go: ${reason}` : null;
|
|
393
|
+
}
|
|
394
|
+
if (name === "rest") {
|
|
395
|
+
const note = toolArgumentText(args, ["note", "status"]);
|
|
396
|
+
return note ? `rested: ${note}` : null;
|
|
397
|
+
}
|
|
398
|
+
return null;
|
|
399
|
+
}
|
|
400
|
+
function extractToolActionSummary(messages) {
|
|
401
|
+
for (let k = messages.length - 1; k >= 0; k--) {
|
|
402
|
+
const msg = messages[k];
|
|
403
|
+
if (msg.role !== "assistant" || !Array.isArray(msg.tool_calls))
|
|
404
|
+
continue;
|
|
405
|
+
for (let i = msg.tool_calls.length - 1; i >= 0; i--) {
|
|
406
|
+
const toolFunction = extractToolFunction(msg.tool_calls[i]);
|
|
407
|
+
const summary = summarizeToolAction(toolFunction?.name, toolFunction?.arguments);
|
|
408
|
+
if (summary)
|
|
409
|
+
return truncateToolSummary(summary);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return "";
|
|
413
|
+
}
|
|
346
414
|
function extractThoughtResponseFromMessages(messages) {
|
|
347
415
|
const assistantMsgs = messages.filter((message) => message.role === "assistant");
|
|
348
416
|
const lastAssistant = assistantMsgs.reverse().find((message) => contentToText(message.content).trim().length > 0);
|
|
349
417
|
return lastAssistant
|
|
350
418
|
? contentToText(lastAssistant.content).trim()
|
|
351
|
-
:
|
|
419
|
+
: extractSettleAnswer(messages) || extractToolActionSummary(messages);
|
|
352
420
|
}
|
|
353
|
-
function
|
|
421
|
+
function parsePrivateRuntimeSession(sessionPath) {
|
|
354
422
|
(0, runtime_1.emitNervesEvent)({
|
|
355
423
|
component: "daemon",
|
|
356
424
|
event: "daemon.thoughts_parse",
|
|
357
|
-
message: "parsing
|
|
425
|
+
message: "parsing private-runtime session",
|
|
358
426
|
meta: { sessionPath },
|
|
359
427
|
});
|
|
360
428
|
let raw;
|
|
@@ -364,21 +432,34 @@ function parseInnerDialogSession(sessionPath) {
|
|
|
364
432
|
catch {
|
|
365
433
|
return [];
|
|
366
434
|
}
|
|
367
|
-
let
|
|
435
|
+
let parsedRaw;
|
|
368
436
|
try {
|
|
369
|
-
|
|
437
|
+
parsedRaw = JSON.parse(raw);
|
|
370
438
|
}
|
|
371
439
|
catch {
|
|
372
440
|
return [];
|
|
373
441
|
}
|
|
374
|
-
|
|
442
|
+
const legacyRecord = parsedRaw && typeof parsedRaw === "object"
|
|
443
|
+
? parsedRaw
|
|
444
|
+
: null;
|
|
445
|
+
const messages = legacyRecord?.version === 1 && Array.isArray(legacyRecord.messages)
|
|
446
|
+
? legacyRecord.messages
|
|
447
|
+
: (() => {
|
|
448
|
+
const envelope = (0, session_events_1.parseSessionEnvelope)(parsedRaw, {
|
|
449
|
+
recordedAt: new Date().toISOString(),
|
|
450
|
+
});
|
|
451
|
+
if (!envelope)
|
|
452
|
+
return null;
|
|
453
|
+
return (0, session_events_1.projectProviderMessages)(envelope);
|
|
454
|
+
})();
|
|
455
|
+
if (!messages)
|
|
375
456
|
return [];
|
|
457
|
+
const normalizedMessages = messages;
|
|
376
458
|
const turns = [];
|
|
377
|
-
const messages = data.messages;
|
|
378
459
|
// Walk messages, pairing user → (tool calls) → assistant sequences
|
|
379
460
|
let i = 0;
|
|
380
|
-
while (i <
|
|
381
|
-
const msg =
|
|
461
|
+
while (i < normalizedMessages.length) {
|
|
462
|
+
const msg = normalizedMessages[i];
|
|
382
463
|
if (msg.role === "system") {
|
|
383
464
|
i++;
|
|
384
465
|
continue;
|
|
@@ -392,12 +473,12 @@ function parseInnerDialogSession(sessionPath) {
|
|
|
392
473
|
// Collect all messages until the next user message (or end)
|
|
393
474
|
const turnMessages = [];
|
|
394
475
|
let j = i + 1;
|
|
395
|
-
while (j <
|
|
396
|
-
turnMessages.push(
|
|
476
|
+
while (j < normalizedMessages.length && normalizedMessages[j].role !== "user") {
|
|
477
|
+
turnMessages.push(normalizedMessages[j]);
|
|
397
478
|
j++;
|
|
398
479
|
}
|
|
399
480
|
// Find the last assistant text response in this turn.
|
|
400
|
-
// With tool_choice="required", the response may be inside a
|
|
481
|
+
// With tool_choice="required", the response may be inside a settle tool call.
|
|
401
482
|
const response = extractThoughtResponseFromMessages(turnMessages);
|
|
402
483
|
const tools = extractToolNames(turnMessages);
|
|
403
484
|
turns.push({
|
|
@@ -413,11 +494,11 @@ function parseInnerDialogSession(sessionPath) {
|
|
|
413
494
|
}
|
|
414
495
|
function formatThoughtTurns(turns, lastN) {
|
|
415
496
|
if (turns.length === 0)
|
|
416
|
-
return "no
|
|
497
|
+
return "no private-runtime activity";
|
|
417
498
|
const selected = lastN > 0 ? turns.slice(-lastN) : turns;
|
|
418
499
|
/* v8 ignore next -- unreachable: turns.length > 0 checked above, slice always returns ≥1 @preserve */
|
|
419
500
|
if (selected.length === 0)
|
|
420
|
-
return "no
|
|
501
|
+
return "no private-runtime activity";
|
|
421
502
|
const lines = [];
|
|
422
503
|
for (const turn of selected) {
|
|
423
504
|
const typeLabel = turn.type === "task" && turn.taskId
|
|
@@ -437,13 +518,13 @@ function formatThoughtTurns(turns, lastN) {
|
|
|
437
518
|
}
|
|
438
519
|
return lines.join("\n").trim();
|
|
439
520
|
}
|
|
440
|
-
function
|
|
521
|
+
function getPrivateRuntimeSessionPath(agentRoot) {
|
|
441
522
|
return path.join(agentRoot, "state", "sessions", "self", "inner", "dialog.json");
|
|
442
523
|
}
|
|
443
|
-
function
|
|
524
|
+
function getPrivateRuntimeStatePath(sessionPath) {
|
|
444
525
|
return path.join(path.dirname(sessionPath), "runtime.json");
|
|
445
526
|
}
|
|
446
|
-
function
|
|
527
|
+
function readPrivateRuntimeState(runtimePath) {
|
|
447
528
|
try {
|
|
448
529
|
const raw = fs.readFileSync(runtimePath, "utf-8");
|
|
449
530
|
const parsed = JSON.parse(raw);
|
|
@@ -462,17 +543,17 @@ function readInnerDialogRuntimeState(runtimePath) {
|
|
|
462
543
|
return null;
|
|
463
544
|
}
|
|
464
545
|
}
|
|
465
|
-
function
|
|
546
|
+
function readPrivateRuntimeStatus(sessionPath, pendingDir, runtimePath = getPrivateRuntimeStatePath(sessionPath)) {
|
|
466
547
|
const pendingMessages = readPendingMessagesForStatus(pendingDir);
|
|
467
|
-
const turns =
|
|
468
|
-
const runtimeState =
|
|
469
|
-
return
|
|
548
|
+
const turns = parsePrivateRuntimeSession(sessionPath);
|
|
549
|
+
const runtimeState = readPrivateRuntimeState(runtimePath);
|
|
550
|
+
return derivePrivateRuntimeStatus(pendingMessages, turns, runtimeState);
|
|
470
551
|
}
|
|
471
|
-
function
|
|
472
|
-
const runtimePath =
|
|
552
|
+
function readPrivateRuntimeRawData(sessionPath, pendingDir) {
|
|
553
|
+
const runtimePath = getPrivateRuntimeStatePath(sessionPath);
|
|
473
554
|
const pendingMessages = readPendingMessagesForStatus(pendingDir);
|
|
474
|
-
const turns =
|
|
475
|
-
const runtimeState =
|
|
555
|
+
const turns = parsePrivateRuntimeSession(sessionPath);
|
|
556
|
+
const runtimeState = readPrivateRuntimeState(runtimePath);
|
|
476
557
|
return { pendingMessages, turns, runtimeState };
|
|
477
558
|
}
|
|
478
559
|
/**
|
|
@@ -480,15 +561,15 @@ function readInnerDialogRawData(sessionPath, pendingDir) {
|
|
|
480
561
|
* Returns a cleanup function that stops the watcher.
|
|
481
562
|
*/
|
|
482
563
|
function followThoughts(sessionPath, onNewTurns, pollIntervalMs = 1000) {
|
|
483
|
-
let displayedCount =
|
|
564
|
+
let displayedCount = parsePrivateRuntimeSession(sessionPath).length;
|
|
484
565
|
(0, runtime_1.emitNervesEvent)({
|
|
485
566
|
component: "daemon",
|
|
486
567
|
event: "daemon.thoughts_follow_start",
|
|
487
|
-
message: "started following
|
|
568
|
+
message: "started following private-runtime session",
|
|
488
569
|
meta: { sessionPath, initialTurns: displayedCount },
|
|
489
570
|
});
|
|
490
571
|
fs.watchFile(sessionPath, { interval: pollIntervalMs }, () => {
|
|
491
|
-
const turns =
|
|
572
|
+
const turns = parsePrivateRuntimeSession(sessionPath);
|
|
492
573
|
if (turns.length > displayedCount) {
|
|
493
574
|
const newTurns = turns.slice(displayedCount);
|
|
494
575
|
onNewTurns(formatThoughtTurns(newTurns, 0));
|
|
@@ -497,10 +578,13 @@ function followThoughts(sessionPath, onNewTurns, pollIntervalMs = 1000) {
|
|
|
497
578
|
});
|
|
498
579
|
return () => {
|
|
499
580
|
fs.unwatchFile(sessionPath);
|
|
581
|
+
// Must be named `_end` (not `_stop`) to satisfy the nerves audit's
|
|
582
|
+
// start/end pairing rule — see src/nerves/coverage/audit-rules.ts which
|
|
583
|
+
// pairs `<prefix>_start` with `<prefix>_end` or `<prefix>_error`.
|
|
500
584
|
(0, runtime_1.emitNervesEvent)({
|
|
501
585
|
component: "daemon",
|
|
502
|
-
event: "daemon.
|
|
503
|
-
message: "stopped following
|
|
586
|
+
event: "daemon.thoughts_follow_end",
|
|
587
|
+
message: "stopped following private-runtime session",
|
|
504
588
|
meta: { sessionPath, totalTurns: displayedCount },
|
|
505
589
|
});
|
|
506
590
|
};
|