@ouro.bot/cli 0.1.0-alpha.66 → 0.1.0-alpha.661
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 +4216 -13
- package/dist/a2a/card.js +56 -0
- package/dist/a2a/client.js +143 -0
- package/dist/a2a/config.js +50 -0
- package/dist/a2a/onboarding.js +111 -0
- package/dist/a2a/server.js +498 -0
- package/dist/a2a/task-store.js +69 -0
- package/dist/a2a/types.js +3 -0
- package/dist/arc/attention-types.js +8 -0
- package/dist/arc/cares.js +144 -0
- package/dist/arc/episodes.js +118 -0
- package/dist/arc/evolution.js +487 -0
- package/dist/arc/flight-recorder.js +369 -0
- package/dist/arc/intentions.js +134 -0
- package/dist/arc/json-store.js +117 -0
- package/dist/arc/obligations.js +292 -0
- package/dist/arc/packets.js +288 -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 +860 -43
- 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/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 +100 -0
- package/dist/heart/awaiting/await-scheduler.js +377 -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 +135 -0
- package/dist/heart/config-registry.js +331 -0
- package/dist/heart/config.js +118 -119
- package/dist/heart/context-loss-gauntlet.js +354 -0
- package/dist/heart/core.js +1123 -247
- 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 +523 -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 +780 -0
- package/dist/heart/daemon/cli-desk.js +322 -0
- package/dist/heart/daemon/cli-exec.js +7767 -0
- package/dist/heart/daemon/cli-help.js +558 -0
- package/dist/heart/daemon/cli-parse.js +1688 -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 -1750
- 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 +937 -74
- 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 +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 +110 -0
- package/dist/heart/daemon/mcp-canary.js +297 -0
- package/dist/heart/daemon/message-router.js +6 -2
- 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 +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/plugin-cli.js +432 -0
- package/dist/heart/daemon/process-manager.js +511 -40
- 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 +35 -14
- 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 +564 -38
- 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 +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 +117 -39
- package/dist/heart/daemon/terminal-ui.js +499 -0
- package/dist/heart/daemon/thoughts.js +229 -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 -4
- package/dist/heart/habits/habit-migration.js +189 -0
- package/dist/heart/habits/habit-parser.js +203 -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 +40 -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 +45 -18
- package/dist/heart/identity.js +174 -57
- 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 +67 -0
- package/dist/heart/mailbox/mailbox-http-response.js +7 -0
- package/dist/heart/mailbox/mailbox-http-routes.js +250 -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 +32 -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 +418 -0
- package/dist/heart/mailbox/readers/continuity-readers.js +324 -0
- package/dist/heart/mailbox/readers/mail.js +375 -0
- package/dist/heart/mailbox/readers/runtime-readers.js +728 -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 +19 -0
- package/dist/heart/orientation-frame.js +217 -0
- package/dist/heart/platform.js +81 -0
- package/dist/heart/provider-attempt.js +134 -0
- package/dist/heart/provider-binding-resolver.js +272 -0
- package/dist/heart/provider-credentials.js +425 -0
- package/dist/heart/provider-failover.js +311 -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-token.js +349 -0
- 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 +17 -4
- package/dist/heart/session-activity.js +48 -24
- package/dist/heart/session-events.js +1133 -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 +351 -0
- package/dist/heart/streaming.js +44 -27
- 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 +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 +155 -0
- package/dist/heart/tool-friction.js +55 -0
- package/dist/heart/tool-loop.js +200 -0
- package/dist/heart/turn-context.js +430 -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 +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/work-card.js +386 -0
- package/dist/mailbox-ui/assets/index-B-V9vRQ0.js +61 -0
- package/dist/mailbox-ui/assets/index-BOZbGbkL.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 +715 -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 +568 -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 +334 -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 +21 -2
- package/dist/mind/context.js +250 -101
- 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/friends/channel.js +48 -0
- package/dist/mind/friends/resolver.js +107 -4
- package/dist/mind/friends/store-file.js +61 -4
- package/dist/mind/friends/types.js +2 -2
- package/dist/mind/{associative-recall.js → note-search.js} +47 -58
- package/dist/mind/obligation-steering.js +221 -0
- package/dist/mind/pending.js +6 -1
- package/dist/mind/prompt-refresh.js +3 -2
- package/dist/mind/prompt.js +1015 -140
- 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/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/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 +16 -10
- package/dist/repertoire/api-client.js +97 -0
- package/dist/repertoire/bitwarden-store.js +1041 -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 +197 -30
- package/dist/repertoire/coding/manager.js +166 -10
- package/dist/repertoire/coding/spawner.js +55 -9
- package/dist/repertoire/coding/tools.js +219 -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/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 +159 -25
- package/dist/repertoire/mcp-client.js +295 -0
- package/dist/repertoire/mcp-manager.js +434 -0
- 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/shell-sessions.js +133 -0
- package/dist/repertoire/skills.js +48 -4
- package/dist/repertoire/stripe-client.js +131 -0
- package/dist/repertoire/tool-results.js +29 -0
- package/dist/repertoire/tools-a2a.js +283 -0
- package/dist/repertoire/tools-attachments.js +317 -0
- package/dist/repertoire/tools-awaiting.js +372 -0
- package/dist/repertoire/tools-base.js +63 -1082
- 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 +252 -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-mail.js +1975 -0
- package/dist/repertoire/tools-notes.js +418 -0
- package/dist/repertoire/tools-obligations.js +143 -0
- package/dist/repertoire/tools-orientation.js +31 -0
- package/dist/repertoire/tools-record.js +469 -0
- package/dist/repertoire/tools-runtime.js +150 -0
- package/dist/repertoire/tools-session.js +766 -0
- package/dist/repertoire/tools-shell.js +120 -0
- package/dist/repertoire/tools-stripe.js +224 -0
- package/dist/repertoire/tools-surface.js +344 -0
- package/dist/repertoire/tools-teams.js +12 -39
- package/dist/repertoire/tools-travel.js +125 -0
- package/dist/repertoire/tools-trip.js +982 -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 +243 -79
- 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/a2a-entry.js +78 -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} +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 +2737 -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 +517 -204
- package/dist/senses/commands.js +66 -3
- package/dist/senses/habit-turn-message.js +122 -0
- package/dist/senses/inner-dialog-worker.js +303 -22
- package/dist/senses/inner-dialog.js +525 -41
- package/dist/senses/mail-entry.js +66 -0
- package/dist/senses/mail.js +379 -0
- package/dist/senses/pipeline.js +857 -180
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/shared-turn.js +419 -0
- package/dist/senses/surface-tool.js +108 -0
- package/dist/senses/teams-entry.js +60 -8
- package/dist/senses/teams.js +390 -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 +5079 -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/package.json +55 -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 -351
- 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/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 -1177
- package/dist/senses/debug-activity.js +0 -148
- 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
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shellToolDefinitions = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const shell_sessions_1 = require("./shell-sessions");
|
|
6
|
+
const identity_1 = require("../heart/identity");
|
|
7
|
+
const runtime_1 = require("../nerves/runtime");
|
|
8
|
+
exports.shellToolDefinitions = [
|
|
9
|
+
{
|
|
10
|
+
tool: {
|
|
11
|
+
type: "function",
|
|
12
|
+
function: {
|
|
13
|
+
name: "shell",
|
|
14
|
+
description: "Run a shell command and return stdout/stderr. Working directory persists between calls. Use dedicated tools instead of shell when available: read_file instead of cat, edit_file instead of sed, glob instead of find, grep instead of grep/rg. Reserve shell for operations that genuinely need the shell: installing packages, running builds/tests, git operations, process management. Be careful with destructive commands -- consider reversibility before running. If a command fails, read the error output before retrying with a different approach.",
|
|
15
|
+
parameters: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
command: { type: "string" },
|
|
19
|
+
timeout_ms: {
|
|
20
|
+
type: "number",
|
|
21
|
+
description: "Timeout in milliseconds. Default: 30000. Max: 600000.",
|
|
22
|
+
},
|
|
23
|
+
background: {
|
|
24
|
+
type: "boolean",
|
|
25
|
+
description: "Run in background. Returns immediately with a process ID. Use shell_status/shell_tail to monitor.",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
required: ["command"],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
handler: (a) => {
|
|
33
|
+
// Destructive pattern detection (friction, not a block)
|
|
34
|
+
const destructivePatterns = (0, shell_sessions_1.detectDestructivePatterns)(a.command);
|
|
35
|
+
if (destructivePatterns.length > 0) {
|
|
36
|
+
(0, runtime_1.emitNervesEvent)({
|
|
37
|
+
level: "warn",
|
|
38
|
+
event: "tool.shell.destructive_detected",
|
|
39
|
+
component: "tools",
|
|
40
|
+
message: `destructive pattern detected: ${destructivePatterns.join(", ")}`,
|
|
41
|
+
meta: { command: a.command, patterns: destructivePatterns },
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// Background mode: spawn and return immediately
|
|
45
|
+
if (a.background === "true") {
|
|
46
|
+
const session = (0, shell_sessions_1.spawnBackgroundShell)(a.command);
|
|
47
|
+
return JSON.stringify({ id: session.id, command: session.command, status: session.status });
|
|
48
|
+
}
|
|
49
|
+
const MAX_TIMEOUT = 600000;
|
|
50
|
+
const requestedTimeout = Number(a.timeout_ms) || 0;
|
|
51
|
+
let configDefault = 30000;
|
|
52
|
+
try {
|
|
53
|
+
configDefault = (0, identity_1.loadAgentConfig)().shell?.defaultTimeout ?? 30000;
|
|
54
|
+
}
|
|
55
|
+
catch { /* test env: no --agent flag */ }
|
|
56
|
+
const baseTimeout = requestedTimeout > 0 ? requestedTimeout : configDefault;
|
|
57
|
+
const timeout = Math.min(baseTimeout, MAX_TIMEOUT);
|
|
58
|
+
const output = (0, child_process_1.execSync)(a.command, {
|
|
59
|
+
encoding: "utf-8",
|
|
60
|
+
timeout,
|
|
61
|
+
});
|
|
62
|
+
if (destructivePatterns.length > 0) {
|
|
63
|
+
return `${output}\n\n--- destructive pattern detected: ${destructivePatterns.join(", ")} ---`;
|
|
64
|
+
}
|
|
65
|
+
return output;
|
|
66
|
+
},
|
|
67
|
+
summaryKeys: ["command"],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
tool: {
|
|
71
|
+
type: "function",
|
|
72
|
+
function: {
|
|
73
|
+
name: "shell_status",
|
|
74
|
+
description: "Check status of background shell processes. Omit id to list all.",
|
|
75
|
+
parameters: {
|
|
76
|
+
type: "object",
|
|
77
|
+
properties: {
|
|
78
|
+
id: { type: "string", description: "Background shell process ID" },
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
handler: (a) => {
|
|
84
|
+
if (!a.id) {
|
|
85
|
+
return JSON.stringify((0, shell_sessions_1.listShellSessions)());
|
|
86
|
+
}
|
|
87
|
+
const session = (0, shell_sessions_1.getShellSession)(a.id);
|
|
88
|
+
if (!session)
|
|
89
|
+
return `process not found: ${a.id}`;
|
|
90
|
+
return JSON.stringify(session);
|
|
91
|
+
},
|
|
92
|
+
summaryKeys: ["id"],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
tool: {
|
|
96
|
+
type: "function",
|
|
97
|
+
function: {
|
|
98
|
+
name: "shell_tail",
|
|
99
|
+
description: "Show recent output from a background shell process.",
|
|
100
|
+
parameters: {
|
|
101
|
+
type: "object",
|
|
102
|
+
properties: {
|
|
103
|
+
id: { type: "string", description: "Background shell process ID" },
|
|
104
|
+
},
|
|
105
|
+
required: ["id"],
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
handler: (a) => {
|
|
110
|
+
/* v8 ignore next -- schema requires id, defensive guard @preserve */
|
|
111
|
+
if (!a.id)
|
|
112
|
+
return "id is required";
|
|
113
|
+
const output = (0, shell_sessions_1.tailShellSession)(a.id);
|
|
114
|
+
if (output === undefined)
|
|
115
|
+
return `process not found: ${a.id}`;
|
|
116
|
+
return output || "(no output yet)";
|
|
117
|
+
},
|
|
118
|
+
summaryKeys: ["id"],
|
|
119
|
+
},
|
|
120
|
+
];
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stripeToolDefinitions = void 0;
|
|
4
|
+
exports.resetStripeClient = resetStripeClient;
|
|
5
|
+
const stripe_client_1 = require("./stripe-client");
|
|
6
|
+
const runtime_1 = require("../nerves/runtime");
|
|
7
|
+
const store_1 = require("../commerce/store");
|
|
8
|
+
// Lazy-initialized Stripe client singleton
|
|
9
|
+
let _stripeClient = null;
|
|
10
|
+
async function getStripeClient() {
|
|
11
|
+
if (!_stripeClient) {
|
|
12
|
+
_stripeClient = await (0, stripe_client_1.createStripeClient)();
|
|
13
|
+
}
|
|
14
|
+
return _stripeClient;
|
|
15
|
+
}
|
|
16
|
+
function requireFamilyContext(ctx) {
|
|
17
|
+
if (!ctx?.context?.friend?.id) {
|
|
18
|
+
return "no friend context — cannot access payment tools.";
|
|
19
|
+
}
|
|
20
|
+
if (ctx.context.friend.trustLevel !== "family") {
|
|
21
|
+
return "payment tools require family trust level.";
|
|
22
|
+
}
|
|
23
|
+
return { friendId: ctx.context.friend.id };
|
|
24
|
+
}
|
|
25
|
+
function parseExactSpendLimit(raw) {
|
|
26
|
+
const value = raw.trim();
|
|
27
|
+
if (!/^\d+(?:\.\d{1,2})?$/.test(value))
|
|
28
|
+
throw new Error("spend_limit must be an exact decimal with at most two places");
|
|
29
|
+
return Number(value);
|
|
30
|
+
}
|
|
31
|
+
function consumeReservedCommerce(ctx, toolName) {
|
|
32
|
+
if (!ctx?.commerceAuthority || !ctx.agentRoot)
|
|
33
|
+
return null;
|
|
34
|
+
const result = (0, store_1.consumeReservedCommerceAuthority)({
|
|
35
|
+
agentRoot: ctx.agentRoot,
|
|
36
|
+
checkoutId: ctx.commerceAuthority.checkoutId,
|
|
37
|
+
reservationToken: ctx.commerceAuthority.reservationToken,
|
|
38
|
+
toolName,
|
|
39
|
+
friendId: ctx.context?.friend?.id,
|
|
40
|
+
});
|
|
41
|
+
return result.ok ? null : `commerce authority consume error: ${result.reason}`;
|
|
42
|
+
}
|
|
43
|
+
function markCommerceAttempted(ctx, toolName) {
|
|
44
|
+
if (!ctx?.commerceAuthority || !ctx.agentRoot)
|
|
45
|
+
return null;
|
|
46
|
+
const result = (0, store_1.markReservedCommerceAuthorityAttempted)({
|
|
47
|
+
agentRoot: ctx.agentRoot,
|
|
48
|
+
checkoutId: ctx.commerceAuthority.checkoutId,
|
|
49
|
+
reservationToken: ctx.commerceAuthority.reservationToken,
|
|
50
|
+
toolName,
|
|
51
|
+
friendId: ctx.context?.friend?.id,
|
|
52
|
+
});
|
|
53
|
+
return result.ok ? null : `commerce authority attempt error: ${result.reason}`;
|
|
54
|
+
}
|
|
55
|
+
exports.stripeToolDefinitions = [
|
|
56
|
+
{
|
|
57
|
+
tool: {
|
|
58
|
+
type: "function",
|
|
59
|
+
function: {
|
|
60
|
+
name: "stripe_create_card",
|
|
61
|
+
description: "Create a virtual card for an approved transaction. Returns card ID and last 4 digits (never the full card number). Requires family trust level and a matching confirmed commerce checkout.",
|
|
62
|
+
parameters: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: {
|
|
65
|
+
type: {
|
|
66
|
+
type: "string",
|
|
67
|
+
enum: ["single_use", "persistent"],
|
|
68
|
+
description: "Card type: single_use (one transaction) or persistent (recurring)",
|
|
69
|
+
},
|
|
70
|
+
spend_limit: {
|
|
71
|
+
type: "string",
|
|
72
|
+
description: "Maximum spend limit in dollars (e.g. '500')",
|
|
73
|
+
},
|
|
74
|
+
currency: {
|
|
75
|
+
type: "string",
|
|
76
|
+
description: "Currency code (e.g. 'usd')",
|
|
77
|
+
},
|
|
78
|
+
merchant_categories: {
|
|
79
|
+
type: "string",
|
|
80
|
+
description: "Comma-separated allowed merchant categories from the confirmed commerce constraints.",
|
|
81
|
+
},
|
|
82
|
+
commerce_authority: {
|
|
83
|
+
type: "string",
|
|
84
|
+
description: "Optional explicit authority token for external/manual flows; normally omit so Ouro consumes the matching confirmed checkout without exposing a bearer token.",
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: ["type", "spend_limit", "currency", "merchant_categories"],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
handler: async (args, ctx) => {
|
|
92
|
+
(0, runtime_1.emitNervesEvent)({
|
|
93
|
+
component: "repertoire",
|
|
94
|
+
event: "repertoire.tool_stripe_create_card",
|
|
95
|
+
message: "stripe_create_card invoked",
|
|
96
|
+
meta: { tool: "stripe_create_card" },
|
|
97
|
+
});
|
|
98
|
+
const guard = requireFamilyContext(ctx);
|
|
99
|
+
if (typeof guard === "string")
|
|
100
|
+
return guard;
|
|
101
|
+
try {
|
|
102
|
+
const categories = args.merchant_categories.split(",").map((c) => c.trim()).filter(Boolean);
|
|
103
|
+
if (categories.length === 0)
|
|
104
|
+
throw new Error("merchant_categories is required");
|
|
105
|
+
const spendLimit = parseExactSpendLimit(args.spend_limit);
|
|
106
|
+
const attemptError = markCommerceAttempted(ctx, "stripe_create_card");
|
|
107
|
+
if (attemptError)
|
|
108
|
+
return attemptError;
|
|
109
|
+
const client = await getStripeClient();
|
|
110
|
+
const card = await client.createVirtualCard({
|
|
111
|
+
type: args.type,
|
|
112
|
+
spendLimit,
|
|
113
|
+
currency: args.currency,
|
|
114
|
+
merchantCategories: categories,
|
|
115
|
+
});
|
|
116
|
+
const consumeError = consumeReservedCommerce(ctx, "stripe_create_card");
|
|
117
|
+
if (consumeError)
|
|
118
|
+
return consumeError;
|
|
119
|
+
return JSON.stringify({
|
|
120
|
+
cardId: card.cardId,
|
|
121
|
+
last4: card.last4,
|
|
122
|
+
status: card.status,
|
|
123
|
+
spendLimit: args.spend_limit,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
/* v8 ignore next -- defensive: Stripe errors are always Error instances @preserve */
|
|
128
|
+
return `card creation error: ${err instanceof Error ? err.message : String(err)}`;
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
summaryKeys: ["type", "spend_limit", "currency"],
|
|
132
|
+
riskProfile: { mutates: "external_side_effect", risk: "high", reason: "creates a virtual payment card" },
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
tool: {
|
|
136
|
+
type: "function",
|
|
137
|
+
function: {
|
|
138
|
+
name: "stripe_deactivate_card",
|
|
139
|
+
description: "Deactivate (cancel) a virtual card. Use after a transaction is complete or to revoke access. Requires family trust level.",
|
|
140
|
+
parameters: {
|
|
141
|
+
type: "object",
|
|
142
|
+
properties: {
|
|
143
|
+
card_id: {
|
|
144
|
+
type: "string",
|
|
145
|
+
description: "The Stripe card ID to deactivate (e.g. 'ic_...')",
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
required: ["card_id"],
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
handler: async (args, ctx) => {
|
|
153
|
+
(0, runtime_1.emitNervesEvent)({
|
|
154
|
+
component: "repertoire",
|
|
155
|
+
event: "repertoire.tool_stripe_deactivate_card",
|
|
156
|
+
message: "stripe_deactivate_card invoked",
|
|
157
|
+
meta: { tool: "stripe_deactivate_card", cardId: args.card_id },
|
|
158
|
+
});
|
|
159
|
+
const guard = requireFamilyContext(ctx);
|
|
160
|
+
if (typeof guard === "string")
|
|
161
|
+
return guard;
|
|
162
|
+
try {
|
|
163
|
+
const client = await getStripeClient();
|
|
164
|
+
const card = await client.deactivateCard(args.card_id);
|
|
165
|
+
return JSON.stringify({
|
|
166
|
+
cardId: card.cardId,
|
|
167
|
+
last4: card.last4,
|
|
168
|
+
status: card.status,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
/* v8 ignore next -- defensive: Stripe errors are always Error instances @preserve */
|
|
173
|
+
return `card deactivation error: ${err instanceof Error ? err.message : String(err)}`;
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
summaryKeys: ["card_id"],
|
|
177
|
+
riskProfile: { mutates: "external_side_effect", risk: "high", reason: "deactivates a virtual payment card" },
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
tool: {
|
|
181
|
+
type: "function",
|
|
182
|
+
function: {
|
|
183
|
+
name: "stripe_list_cards",
|
|
184
|
+
description: "List all active virtual cards. Shows card IDs and last 4 digits only. Requires family trust level.",
|
|
185
|
+
parameters: {
|
|
186
|
+
type: "object",
|
|
187
|
+
properties: {},
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
handler: async (_args, ctx) => {
|
|
192
|
+
(0, runtime_1.emitNervesEvent)({
|
|
193
|
+
component: "repertoire",
|
|
194
|
+
event: "repertoire.tool_stripe_list_cards",
|
|
195
|
+
message: "stripe_list_cards invoked",
|
|
196
|
+
meta: { tool: "stripe_list_cards" },
|
|
197
|
+
});
|
|
198
|
+
const guard = requireFamilyContext(ctx);
|
|
199
|
+
if (typeof guard === "string")
|
|
200
|
+
return guard;
|
|
201
|
+
try {
|
|
202
|
+
const client = await getStripeClient();
|
|
203
|
+
const cards = await client.listCards();
|
|
204
|
+
if (cards.length === 0) {
|
|
205
|
+
return "no active cards.";
|
|
206
|
+
}
|
|
207
|
+
return JSON.stringify(cards.map((c) => ({
|
|
208
|
+
cardId: c.cardId,
|
|
209
|
+
last4: c.last4,
|
|
210
|
+
status: c.status,
|
|
211
|
+
})));
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
/* v8 ignore next -- defensive: Stripe errors are always Error instances @preserve */
|
|
215
|
+
return `card listing error: ${err instanceof Error ? err.message : String(err)}`;
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
summaryKeys: [],
|
|
219
|
+
},
|
|
220
|
+
];
|
|
221
|
+
/** Reset the Stripe client singleton (for testing). */
|
|
222
|
+
function resetStripeClient() {
|
|
223
|
+
_stripeClient = null;
|
|
224
|
+
}
|