@ouro.bot/cli 0.1.0-alpha.55 → 0.1.0-alpha.551
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 +133 -19
- 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-bootstrap-drift.md +54 -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 +3561 -0
- package/dist/arc/attention-types.js +8 -0
- package/dist/arc/cares.js +140 -0
- package/dist/arc/episodes.js +117 -0
- package/dist/arc/intentions.js +133 -0
- package/dist/arc/json-store.js +117 -0
- package/dist/arc/obligations.js +237 -0
- package/dist/arc/packets.js +193 -0
- package/dist/arc/presence.js +185 -0
- package/dist/arc/task-lifecycle.js +65 -0
- package/dist/heart/active-work.js +837 -26
- package/dist/heart/agent-entry.js +58 -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/background-operations.js +281 -0
- package/dist/heart/bundle-state.js +168 -0
- package/dist/heart/commitments.js +111 -0
- package/dist/heart/config-registry.js +304 -0
- package/dist/heart/config.js +114 -118
- package/dist/heart/core.js +925 -246
- package/dist/heart/cross-chat-delivery.js +3 -18
- package/dist/heart/daemon/agent-config-check.js +512 -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 +554 -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 +665 -0
- package/dist/heart/daemon/cli-exec.js +7565 -0
- package/dist/heart/daemon/cli-help.js +498 -0
- package/dist/heart/daemon/cli-parse.js +1590 -0
- package/dist/heart/daemon/cli-render-doctor.js +57 -0
- package/dist/heart/daemon/cli-render.js +775 -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 -1672
- package/dist/heart/daemon/daemon-entry.js +417 -2
- package/dist/heart/daemon/daemon-health.js +183 -0
- package/dist/heart/daemon/daemon-rollup.js +58 -0
- package/dist/heart/daemon/daemon-runtime-sync.js +87 -13
- package/dist/heart/daemon/daemon-tombstone.js +236 -0
- package/dist/heart/daemon/daemon.js +796 -71
- package/dist/heart/daemon/dns-workflow.js +394 -0
- package/dist/heart/daemon/doctor-types.js +8 -0
- package/dist/heart/daemon/doctor.js +844 -0
- package/dist/heart/daemon/drift-detection.js +146 -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 +102 -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 +82 -12
- 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 +2 -2
- 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 +67 -16
- package/dist/heart/daemon/runtime-metadata.js +3 -31
- package/dist/heart/daemon/safe-mode.js +161 -0
- package/dist/heart/daemon/sense-manager.js +353 -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 +52 -117
- 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 +200 -51
- 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 +362 -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 +683 -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 +255 -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-state.js +216 -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 +97 -13
- 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 +11 -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 +139 -0
- package/dist/heart/tool-friction.js +55 -0
- package/dist/heart/tool-loop.js +200 -0
- package/dist/heart/turn-context.js +381 -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-BPr5vNuM.css +1 -0
- package/dist/mailbox-ui/assets/index-Cm51CY9W.js +61 -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 +674 -0
- package/dist/mailroom/body-cache.js +61 -0
- package/dist/mailroom/core.js +720 -0
- package/dist/mailroom/entry.js +160 -0
- package/dist/mailroom/file-store.js +430 -0
- package/dist/mailroom/mbox-import.js +383 -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 +256 -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 +30 -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 +995 -123
- 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 +139 -5
- package/dist/nerves/coverage/run-artifacts.js +1 -1
- package/dist/nerves/event-buffer.js +111 -0
- package/dist/nerves/index.js +224 -4
- package/dist/nerves/observation.js +20 -0
- package/dist/nerves/redact.js +79 -0
- package/dist/nerves/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 +816 -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 +111 -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-base.js +47 -1075
- 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 +1857 -0
- package/dist/repertoire/tools-notes.js +421 -0
- package/dist/repertoire/tools-session.js +750 -0
- package/dist/repertoire/tools-shell.js +120 -0
- package/dist/repertoire/tools-stripe.js +180 -0
- package/dist/repertoire/tools-surface.js +243 -0
- package/dist/repertoire/tools-teams.js +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.js +108 -100
- 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 +561 -0
- package/dist/scripts/claude-code-hook.js +41 -0
- package/dist/scripts/claude-code-stop-hook.js +47 -0
- package/dist/senses/attention-queue.js +116 -0
- package/dist/senses/bluebubbles/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 +2305 -0
- package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -70
- 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/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 +187 -0
- package/dist/senses/cli.js +520 -209
- package/dist/senses/commands.js +66 -3
- package/dist/senses/habit-turn-message.js +108 -0
- package/dist/senses/inner-dialog-worker.js +175 -21
- package/dist/senses/inner-dialog.js +330 -27
- package/dist/senses/mail-entry.js +66 -0
- package/dist/senses/mail.js +379 -0
- package/dist/senses/pipeline.js +569 -182
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/shared-turn.js +248 -0
- package/dist/senses/surface-tool.js +68 -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/trips/core.js +138 -0
- package/dist/trips/store.js +146 -0
- package/package.json +38 -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 +101 -0
- package/skills/travel-planning.md +138 -0
- package/dist/heart/daemon/ouro-path-installer.js +0 -178
- package/dist/heart/daemon/subagent-installer.js +0 -166
- 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,117 @@
|
|
|
1
|
+
# Browser Navigation Skill
|
|
2
|
+
|
|
3
|
+
When to use browser tools and how to navigate effectively.
|
|
4
|
+
|
|
5
|
+
## When to Use Browser Tools
|
|
6
|
+
|
|
7
|
+
Use browser navigation when:
|
|
8
|
+
- The target site has no API (e.g., Airbnb, VRBO, travel blogs)
|
|
9
|
+
- Content is dynamic or requires JavaScript rendering
|
|
10
|
+
- Login-required pages need session-based access
|
|
11
|
+
- You need to verify visual content (screenshots, layouts)
|
|
12
|
+
- Price comparison requires real-time scraping
|
|
13
|
+
|
|
14
|
+
Do NOT use browser tools when:
|
|
15
|
+
- A dedicated API or MCP server exists (prefer `weather_lookup`, Duffel MCP, etc.)
|
|
16
|
+
- The data is available via a public JSON endpoint
|
|
17
|
+
- The task can be completed with `web_search`
|
|
18
|
+
|
|
19
|
+
## Stealth Browsing Best Practices
|
|
20
|
+
|
|
21
|
+
The `@playwright/mcp` server is configured with realistic user-agent and viewport settings. To avoid detection on travel sites:
|
|
22
|
+
|
|
23
|
+
- **Add delays between navigations**: Wait 2-5 seconds between page loads. Never hammer requests in rapid succession.
|
|
24
|
+
- **Vary timing**: Use random delays rather than fixed intervals (e.g., 2-5s, not exactly 3s every time).
|
|
25
|
+
- **Avoid predictable patterns**: Don't navigate the same path repeatedly in short succession.
|
|
26
|
+
- **Use realistic scroll behavior**: Scroll gradually through pages rather than jumping to specific elements.
|
|
27
|
+
- **Respect robots.txt**: Check for rate limits and crawling restrictions.
|
|
28
|
+
|
|
29
|
+
## Navigation Workflow
|
|
30
|
+
|
|
31
|
+
Follow this pattern for every page interaction:
|
|
32
|
+
|
|
33
|
+
1. **Navigate**: Use `browser_navigate` to load the page
|
|
34
|
+
2. **Wait**: Allow the page to fully load (use `browser_wait` if needed)
|
|
35
|
+
3. **Snapshot**: Take a `browser_snapshot` to understand the page structure
|
|
36
|
+
4. **Extract**: Parse the accessibility tree for relevant data
|
|
37
|
+
5. **Screenshot** (optional): Use `browser_screenshot` for visual confirmation
|
|
38
|
+
|
|
39
|
+
## Form Filling Patterns
|
|
40
|
+
|
|
41
|
+
### Login Flows
|
|
42
|
+
1. Navigate to the login page
|
|
43
|
+
2. Take a snapshot to identify form fields
|
|
44
|
+
3. Use `browser_type` for username/password fields
|
|
45
|
+
4. Use `browser_click` to submit
|
|
46
|
+
5. Wait for redirect, then verify login succeeded via snapshot
|
|
47
|
+
6. NEVER hardcode credentials -- use `credential_get` to retrieve login info
|
|
48
|
+
|
|
49
|
+
### Sign-up Flows
|
|
50
|
+
1. Use `credential_generate_password` to mint a strong password for the target domain
|
|
51
|
+
2. Fill the signup form with that password
|
|
52
|
+
3. If the site rejects the password policy, generate a new one that matches the site rules
|
|
53
|
+
4. Once the site accepts the exact password, call `credential_store` immediately
|
|
54
|
+
5. Do not claim a new credential is saved until `credential_store` succeeds
|
|
55
|
+
|
|
56
|
+
### Search Forms (Hotels, Flights, Rentals)
|
|
57
|
+
1. Navigate to the search page
|
|
58
|
+
2. Snapshot to identify input fields
|
|
59
|
+
3. Fill location/date fields with `browser_type`
|
|
60
|
+
4. Select options with `browser_select_option` or `browser_click`
|
|
61
|
+
5. Submit the search
|
|
62
|
+
6. Wait for results to load (travel sites often have loading animations)
|
|
63
|
+
7. Snapshot the results page to extract listings
|
|
64
|
+
|
|
65
|
+
### Booking Forms
|
|
66
|
+
1. **ALWAYS confirm with the user before proceeding to payment**
|
|
67
|
+
2. Fill traveler information
|
|
68
|
+
3. Use stored credentials for payment (via `credential_get` -- NEVER type raw card numbers)
|
|
69
|
+
4. Screenshot the final review page for user confirmation
|
|
70
|
+
5. Only click "Book" / "Confirm" after explicit user approval
|
|
71
|
+
|
|
72
|
+
## Anti-Bot Detection Avoidance
|
|
73
|
+
|
|
74
|
+
The stealth configuration handles most fingerprinting automatically. Additionally:
|
|
75
|
+
|
|
76
|
+
- **Don't access detection endpoints**: Avoid URLs containing "captcha", "challenge", "verify"
|
|
77
|
+
- **Handle CAPTCHAs**: If you encounter a CAPTCHA, pause and inform the user. Do not attempt automated solving.
|
|
78
|
+
- **Rotate viewport sizes occasionally**: Use different viewport sizes across sessions
|
|
79
|
+
- **Maintain cookies**: Use persistent `user-data-dir` to appear as a returning user
|
|
80
|
+
- **Avoid headless tells**: The user-agent is set to a real browser string
|
|
81
|
+
|
|
82
|
+
## Travel Site Patterns
|
|
83
|
+
|
|
84
|
+
### Airbnb / VRBO
|
|
85
|
+
1. Search by location + check-in/check-out dates + guests
|
|
86
|
+
2. Results load dynamically -- scroll to load more listings
|
|
87
|
+
3. Extract: title, price per night, total price, rating, number of reviews
|
|
88
|
+
4. For detailed info, click into each listing and snapshot
|
|
89
|
+
5. Compare top 3-5 options
|
|
90
|
+
|
|
91
|
+
### Hotel Sites (Booking.com, Hotels.com)
|
|
92
|
+
1. Search by destination + dates + guests + rooms
|
|
93
|
+
2. Filter by price range, star rating, amenities
|
|
94
|
+
3. Extract: name, price, location, rating, key amenities
|
|
95
|
+
4. Check cancellation policies (important for travel planning)
|
|
96
|
+
|
|
97
|
+
### Flight Comparison
|
|
98
|
+
1. Prefer Duffel MCP for flight search (structured API data)
|
|
99
|
+
2. Use browser only if Duffel doesn't cover the airline
|
|
100
|
+
3. Google Flights is useful for price comparison but requires careful navigation
|
|
101
|
+
|
|
102
|
+
## Error Handling
|
|
103
|
+
|
|
104
|
+
- **Page timeouts**: Retry once after 5 seconds. If still failing, inform the user.
|
|
105
|
+
- **CAPTCHAs**: Stop and ask the user to solve manually.
|
|
106
|
+
- **Stale elements**: Re-snapshot the page and retry the interaction.
|
|
107
|
+
- **Blocked/403**: The site may have detected automation. Wait 30 seconds and try with a different approach (e.g., direct URL instead of navigation).
|
|
108
|
+
- **Session expired**: Re-login using stored credentials.
|
|
109
|
+
|
|
110
|
+
## Human Confirmation Gates
|
|
111
|
+
|
|
112
|
+
**ALWAYS** confirm with the user before:
|
|
113
|
+
- Any booking or payment action
|
|
114
|
+
- Entering personal information (name, address, phone)
|
|
115
|
+
- Agreeing to terms of service
|
|
116
|
+
- Subscribing to any service
|
|
117
|
+
- Any action that creates a financial obligation
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Commerce Setup Guide
|
|
2
|
+
|
|
3
|
+
Human-facing guide for configuring the agent's commerce capabilities.
|
|
4
|
+
|
|
5
|
+
## Architecture Overview
|
|
6
|
+
|
|
7
|
+
The agent's commerce system has three pillars:
|
|
8
|
+
|
|
9
|
+
1. **User Profile**: Secure storage of personal data (name, passport, payment preferences) in Vaultwarden, accessed only when needed for specific transactions.
|
|
10
|
+
|
|
11
|
+
2. **Booking Delegation**: Direct API access to flight (Duffel) and hotel (LiteAPI) booking systems, plus browser automation fallback for sites without APIs.
|
|
12
|
+
|
|
13
|
+
3. **Payment**: Stripe Issuing virtual cards created per-transaction, with spend limits and merchant category restrictions. Card numbers never enter the model's context.
|
|
14
|
+
|
|
15
|
+
## Setup Steps
|
|
16
|
+
|
|
17
|
+
### 1. Stripe Issuing (Required for Payments)
|
|
18
|
+
|
|
19
|
+
- Create a Stripe account: https://dashboard.stripe.com
|
|
20
|
+
- Enable Stripe Issuing (requires business verification)
|
|
21
|
+
- Create a restricted API key: https://dashboard.stripe.com/apikeys
|
|
22
|
+
- Permissions needed: `issuing_cards:write`, `issuing_cards:read`
|
|
23
|
+
- Store in vault: `credential_store stripe.com --password <key>`
|
|
24
|
+
|
|
25
|
+
### 2. Duffel (Flights)
|
|
26
|
+
|
|
27
|
+
- Create a Duffel account: https://app.duffel.com
|
|
28
|
+
- Generate a sandbox token: https://app.duffel.com/tokens
|
|
29
|
+
- Store in vault: `credential_store duffel.com --password <token>`
|
|
30
|
+
|
|
31
|
+
### 3. LiteAPI (Hotels)
|
|
32
|
+
|
|
33
|
+
- Create a LiteAPI account: https://dashboard.liteapi.travel
|
|
34
|
+
- Get your sandbox API key
|
|
35
|
+
- Store in vault: `credential_store liteapi.travel --password <key>`
|
|
36
|
+
- Configure MCP server in agent.json (see commerce-setup.md skill for details)
|
|
37
|
+
|
|
38
|
+
### 4. User Profile
|
|
39
|
+
|
|
40
|
+
Store your travel profile with the agent:
|
|
41
|
+
```
|
|
42
|
+
user_profile_store '{"legalName":{"first":"...","last":"..."},"email":"...","phone":"...","preferences":{}}'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Tool Reference
|
|
46
|
+
|
|
47
|
+
### User Profile Tools
|
|
48
|
+
| Tool | Description | Trust Level |
|
|
49
|
+
|------|-------------|-------------|
|
|
50
|
+
| `user_profile_store` | Store/update profile fields | Family |
|
|
51
|
+
| `user_profile_get` | Retrieve a specific profile field | Family |
|
|
52
|
+
| `user_profile_delete` | Delete entire profile | Family |
|
|
53
|
+
|
|
54
|
+
### Payment Tools
|
|
55
|
+
| Tool | Description | Trust Level |
|
|
56
|
+
|------|-------------|-------------|
|
|
57
|
+
| `stripe_create_card` | Create a virtual card | Family |
|
|
58
|
+
| `stripe_deactivate_card` | Deactivate a card | Family |
|
|
59
|
+
| `stripe_list_cards` | List active cards | Family |
|
|
60
|
+
|
|
61
|
+
### Flight Tools
|
|
62
|
+
| Tool | Description | Trust Level |
|
|
63
|
+
|------|-------------|-------------|
|
|
64
|
+
| `flight_search` | Search for flights | Friend |
|
|
65
|
+
| `flight_hold` | Hold a flight offer | Family |
|
|
66
|
+
| `flight_book` | Book a flight | Family |
|
|
67
|
+
| `flight_cancel` | Cancel a booking | Family |
|
|
68
|
+
|
|
69
|
+
### Hotel Tools
|
|
70
|
+
Hotels are accessed through the LiteAPI MCP server. Tools are dynamically registered when the MCP server connects. Common tools include search, get rates, and book.
|
|
71
|
+
|
|
72
|
+
## Security Model
|
|
73
|
+
|
|
74
|
+
### Credential Gateway
|
|
75
|
+
All API keys are stored in the agent's Vaultwarden vault. They are never exposed as environment variables or stored in config files. MCP servers receive credentials at startup via `vault:` env resolution.
|
|
76
|
+
|
|
77
|
+
### Card Number Isolation
|
|
78
|
+
Virtual card numbers exist only within the Stripe client's internal functions during a payment flow. They are never:
|
|
79
|
+
- Returned to the model in tool outputs
|
|
80
|
+
- Included in nerves events or logs
|
|
81
|
+
- Stored in any persistent state
|
|
82
|
+
- Shown in chat messages
|
|
83
|
+
|
|
84
|
+
The model only sees card IDs (e.g., `ic_...`) and last-4 digits.
|
|
85
|
+
|
|
86
|
+
### Trust Gating
|
|
87
|
+
- **Family trust required**: All profile, payment, and booking tools
|
|
88
|
+
- **Friend trust sufficient**: Flight search (read-only, no payment)
|
|
89
|
+
- **Stranger/acquaintance**: No commerce access
|
|
90
|
+
|
|
91
|
+
### Vault Resolution Failures
|
|
92
|
+
When a `vault:` reference cannot be resolved for an MCP server:
|
|
93
|
+
- The specific server is skipped (not crashed)
|
|
94
|
+
- Other servers continue to start normally
|
|
95
|
+
- An error event is emitted with the specific resolution failure
|
|
96
|
+
- Error messages are actionable (e.g., "item not found", "field empty")
|
|
97
|
+
|
|
98
|
+
## Verification Tiers
|
|
99
|
+
|
|
100
|
+
### Tier 1: Real-Tested
|
|
101
|
+
- User profile vault CRUD (tested against live Vaultwarden)
|
|
102
|
+
- MCP credential injection (tested with real `vault:` env resolution)
|
|
103
|
+
- Tool registration and guardrail enforcement
|
|
104
|
+
|
|
105
|
+
### Tier 2: Mocked
|
|
106
|
+
- Stripe Issuing API calls (mocked SDK)
|
|
107
|
+
- Duffel flight API calls (mocked HTTP)
|
|
108
|
+
- LiteAPI hotel API calls (MCP config only)
|
|
109
|
+
- Full booking flow (profile -> search -> card -> book -> confirm -> deactivate)
|
|
110
|
+
- Card number leakage verification
|
|
111
|
+
|
|
112
|
+
### Post-Handoff
|
|
113
|
+
- Real Stripe Issuing card creation (requires live Stripe account with Issuing)
|
|
114
|
+
- Real Duffel booking (requires live API key)
|
|
115
|
+
- Real LiteAPI hotel search (requires live MCP server)
|
|
116
|
+
- Browser automation for Pattern B sites
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Commerce Setup Wizard
|
|
2
|
+
|
|
3
|
+
Step-by-step guide for setting up the agent's commerce infrastructure: payment, booking, and accommodation APIs.
|
|
4
|
+
|
|
5
|
+
last_verified: 2026-04-06
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
- Agent vault must be set up (run `vault_setup` tool if not done)
|
|
10
|
+
- Vault must be reachable at the configured server URL
|
|
11
|
+
|
|
12
|
+
## Step 1: Stripe Issuing (Payments)
|
|
13
|
+
|
|
14
|
+
1. Create a Stripe account at https://dashboard.stripe.com
|
|
15
|
+
2. Enable Stripe Issuing (requires business verification)
|
|
16
|
+
3. Create a restricted API key at https://dashboard.stripe.com/apikeys
|
|
17
|
+
- Enable only `issuing_cards:write` and `issuing_cards:read` permissions
|
|
18
|
+
4. Store the key in the vault: `credential_store stripe.com --password <restricted_key> --notes "Stripe Issuing restricted key"`
|
|
19
|
+
|
|
20
|
+
### Verification
|
|
21
|
+
Run `stripe_list_cards` to verify the key works. Expected: empty list or existing cards.
|
|
22
|
+
|
|
23
|
+
## Step 2: Duffel (Flights)
|
|
24
|
+
|
|
25
|
+
1. Create a Duffel account at https://app.duffel.com
|
|
26
|
+
2. Generate a sandbox API token at https://app.duffel.com/tokens
|
|
27
|
+
- Start with sandbox mode for testing
|
|
28
|
+
- Switch to live mode when ready for real bookings
|
|
29
|
+
3. Store the key in the vault: `credential_store duffel.com --password <api_token> --notes "Duffel API token (sandbox)"`
|
|
30
|
+
|
|
31
|
+
### Verification
|
|
32
|
+
Run `flight_search` with any route (e.g., SFO to JFK). Expected: list of flight offers.
|
|
33
|
+
|
|
34
|
+
## Step 3: LiteAPI (Hotels)
|
|
35
|
+
|
|
36
|
+
1. Create a LiteAPI account at https://dashboard.liteapi.travel
|
|
37
|
+
2. Get your sandbox API key from the dashboard
|
|
38
|
+
3. Store the key in the vault: `credential_store liteapi.travel --password <api_key> --notes "LiteAPI sandbox key"`
|
|
39
|
+
4. Configure the MCP server in agent.json:
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"liteapi": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["tsx", "src/index.ts"],
|
|
46
|
+
"cwd": "/path/to/liteapi-mcp-server",
|
|
47
|
+
"env": {
|
|
48
|
+
"LITEAPI_API_KEY": "vault:liteapi.travel/apiKey"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Verification
|
|
56
|
+
The LiteAPI MCP server will start automatically when the agent boots. Check agent logs for `mcp.connect_end` event for the liteapi server.
|
|
57
|
+
|
|
58
|
+
## Step 4: User Profile
|
|
59
|
+
|
|
60
|
+
Store the human's travel profile:
|
|
61
|
+
```
|
|
62
|
+
user_profile_store '{"legalName": {"first": "...", "last": "..."}, "email": "...", "phone": "...", "preferences": {}}'
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Optional but recommended fields: dateOfBirth, passport, driverLicense, addresses, loyaltyPrograms.
|
|
66
|
+
|
|
67
|
+
## Self-Test
|
|
68
|
+
|
|
69
|
+
After setup, run the commerce self-test to verify all services:
|
|
70
|
+
- Stripe: creates and deactivates a test virtual card
|
|
71
|
+
- Duffel: runs a test flight search
|
|
72
|
+
- LiteAPI: verifies the API key is stored in the vault
|
|
73
|
+
|
|
74
|
+
The self-test reports per-service health with actionable error messages:
|
|
75
|
+
- "Flights working, hotels not yet -- LiteAPI key missing."
|
|
76
|
+
- "Your Duffel key returned 401. Verify it at app.duffel.com/tokens."
|
|
77
|
+
|
|
78
|
+
## Security Model
|
|
79
|
+
|
|
80
|
+
- All API keys stored in the agent's Vaultwarden vault (not env vars)
|
|
81
|
+
- Card numbers never appear in model context or logs
|
|
82
|
+
- Virtual cards are single-use by default, deactivated after each transaction
|
|
83
|
+
- User profile access requires family trust level
|
|
84
|
+
- Vault credentials are resolved at MCP server startup, not at runtime
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Configure Dev Tools for MCP Agent Bridge
|
|
2
|
+
|
|
3
|
+
Set up your development tools (Claude Code, Codex) to communicate with Ouroboros agents via MCP. One command does everything — including cross-platform WSL2 bridging on Windows.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
### Claude Code
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ouro setup --tool claude-code --agent <agent-name>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This command:
|
|
14
|
+
1. Registers the MCP server with Claude Code via `claude mcp add`
|
|
15
|
+
2. Configures lifecycle hooks (SessionStart, Stop, PostToolUse) for passive awareness
|
|
16
|
+
3. Detects dev vs installed mode automatically and uses the correct command path
|
|
17
|
+
|
|
18
|
+
**On WSL2 (Windows):** The command automatically detects the WSL environment and:
|
|
19
|
+
- Calls `claude.exe` (the Windows binary) instead of `claude`
|
|
20
|
+
- Prefixes MCP serve and hook commands with `wsl` so Windows-side Claude Code spawns them through WSL
|
|
21
|
+
- Resolves the Windows-side home directory and writes config to the Windows-side `~/.claude/`
|
|
22
|
+
- After setup, open Claude Code in PowerShell — the agent is there
|
|
23
|
+
|
|
24
|
+
**On native Windows (no WSL):** Not yet supported. The command prints a message directing you to install WSL2.
|
|
25
|
+
|
|
26
|
+
For the full cross-machine setup flow (including cloning an agent to a new machine), see `docs/cross-machine-setup.md` in the harness repo.
|
|
27
|
+
|
|
28
|
+
### Codex
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
ouro setup --tool codex --agent <agent-name>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
This command:
|
|
35
|
+
1. Registers the MCP server with Codex via `codex mcp add`
|
|
36
|
+
2. Detects dev vs installed mode automatically
|
|
37
|
+
|
|
38
|
+
## Verification
|
|
39
|
+
|
|
40
|
+
After setup, verify the connection:
|
|
41
|
+
|
|
42
|
+
1. **Check daemon is running**: `ouro up` (installed) or `ouro dev --repo-path <path>` (dev mode).
|
|
43
|
+
2. **Test from Claude Code**: Start a new session and use the `status` tool.
|
|
44
|
+
3. **Test from Codex**: Run `codex exec "Use the <agent-name> status tool"`.
|
|
45
|
+
4. **Check registration**: `claude mcp list` or `codex mcp list`.
|
|
46
|
+
|
|
47
|
+
## Available MCP Tools
|
|
48
|
+
|
|
49
|
+
Once connected, these tools are available:
|
|
50
|
+
|
|
51
|
+
### Conversation tools (new)
|
|
52
|
+
- **send_message** -- Send a message and get a synchronous agent response (full turn with tools)
|
|
53
|
+
- **check_response** -- Check for pending messages from the agent (after ponder or proactive surface)
|
|
54
|
+
|
|
55
|
+
### Read-only tools
|
|
56
|
+
- **ask** -- Ask the agent a question (uses diary, journal, and context)
|
|
57
|
+
- **status** -- Get agent's current status and activity
|
|
58
|
+
- **catchup** -- Get recent activity summary
|
|
59
|
+
- **get_context** -- Get agent's current working context
|
|
60
|
+
- **search_notes** -- Search the agent's diary for specific topics
|
|
61
|
+
- **get_task** -- Get details of the agent's current task
|
|
62
|
+
- **check_scope** -- Verify if something is in scope for current work
|
|
63
|
+
- **check_guidance** -- Get guidance on how to approach something
|
|
64
|
+
|
|
65
|
+
### Write tools
|
|
66
|
+
- **delegate** -- Request the agent to handle a task (runs full conversation turn)
|
|
67
|
+
- **request_decision** -- Ask agent to make a decision about something
|
|
68
|
+
- **report_progress** -- Report progress on delegated work
|
|
69
|
+
- **report_blocker** -- Report a blocker on delegated work
|
|
70
|
+
- **report_complete** -- Report completion of delegated work
|
|
71
|
+
|
|
72
|
+
## Troubleshooting
|
|
73
|
+
|
|
74
|
+
### "Daemon not running" error
|
|
75
|
+
Most read-only tools work without the daemon (reads filesystem directly). For write operations and `send_message`, start the daemon with `ouro up` or `ouro dev`.
|
|
76
|
+
|
|
77
|
+
### MCP server not appearing
|
|
78
|
+
- Run `claude mcp list` or `codex mcp list` to verify registration
|
|
79
|
+
- Re-run `ouro setup` to fix
|
|
80
|
+
- Restart your dev tool (MCP loads at session start)
|
|
81
|
+
|
|
82
|
+
### Connection timeouts
|
|
83
|
+
- Ensure `dist/` is built: `npm run build`
|
|
84
|
+
- Check that the entry point path is correct (setup auto-detects this)
|
|
85
|
+
|
|
86
|
+
### WSL2-specific issues
|
|
87
|
+
|
|
88
|
+
**`claude.exe` not found** — Windows executables must be accessible from WSL. This is the default, but enterprise environments may disable it via `/etc/wsl.conf` setting `appendWindowsPath = false`. Check with `which claude.exe`. If missing, add Claude Code's install directory to WSL's PATH manually or update `wsl.conf`.
|
|
89
|
+
|
|
90
|
+
**`cmd.exe` or `wslpath` fails** — The setup command resolves the Windows home directory using `cmd.exe /C echo %USERPROFILE%` piped through `wslpath`. If either is unavailable, the setup will fail. `wslpath` ships with all standard WSL distributions. `cmd.exe` requires Windows executables to be on PATH (see above).
|
|
91
|
+
|
|
92
|
+
**MCP server hangs or returns empty** — The MCP server runs inside WSL via `wsl ouro mcp-serve --agent <name>`. If stdio piping between Windows and WSL is broken, check that the WSL distribution is running (`wsl --status`) and that no other process has claimed stdin.
|
|
93
|
+
|
|
94
|
+
**Hooks not firing** — Claude Code hooks use `wsl ouro hook <event> --agent <name>`. If hooks fail silently, check that `ouro` is on PATH inside WSL (run `wsl ouro --version` from PowerShell to verify).
|
|
95
|
+
|
|
96
|
+
### Removing
|
|
97
|
+
```bash
|
|
98
|
+
claude mcp remove ouro-<agent-name>
|
|
99
|
+
# or
|
|
100
|
+
codex mcp remove ouro-<agent-name>
|
|
101
|
+
```
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Travel Planning Skill
|
|
2
|
+
|
|
3
|
+
Compose all travel infrastructure to plan and book trips effectively.
|
|
4
|
+
|
|
5
|
+
## Research Phase
|
|
6
|
+
|
|
7
|
+
### Destination Research
|
|
8
|
+
1. Use `geocode_search` to find candidate destinations and get coordinates
|
|
9
|
+
2. Use `weather_lookup` to check climate for travel dates
|
|
10
|
+
3. Use `travel_advisory` to check US State Dept safety levels (1-4):
|
|
11
|
+
- Level 1: Exercise Normal Precautions
|
|
12
|
+
- Level 2: Exercise Increased Caution
|
|
13
|
+
- Level 3: Reconsider Travel
|
|
14
|
+
- Level 4: Do Not Travel
|
|
15
|
+
4. Use browser tools (see `browser-navigation` skill) for destination reviews, travel blogs, local tips
|
|
16
|
+
5. Compare multiple destinations on weather, safety, cost, and flight availability
|
|
17
|
+
|
|
18
|
+
### Information Gathering Workflow
|
|
19
|
+
```
|
|
20
|
+
geocode_search -> get coordinates
|
|
21
|
+
weather_lookup -> check weather at coordinates
|
|
22
|
+
travel_advisory -> check safety level
|
|
23
|
+
browser tools -> reviews, local info, pricing
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Flight Search
|
|
27
|
+
|
|
28
|
+
### Using Duffel MCP (when available)
|
|
29
|
+
- Search via `duffel_search_flights` tool (first-class MCP tool)
|
|
30
|
+
- Provide: origin, destination, dates, passengers, cabin class
|
|
31
|
+
- Compare options on price, duration, stops, airline
|
|
32
|
+
|
|
33
|
+
### Using Browser (fallback)
|
|
34
|
+
- Use browser-navigation skill patterns for Google Flights, airline sites
|
|
35
|
+
- Add delays between searches to avoid detection
|
|
36
|
+
|
|
37
|
+
### Comparison Criteria
|
|
38
|
+
Present top 3-5 options comparing:
|
|
39
|
+
- Total price (including bags, seat selection)
|
|
40
|
+
- Duration and number of stops
|
|
41
|
+
- Airline and aircraft
|
|
42
|
+
- Departure/arrival times
|
|
43
|
+
- Cancellation/change policy
|
|
44
|
+
|
|
45
|
+
## Accommodation Search
|
|
46
|
+
|
|
47
|
+
### Hotel Search
|
|
48
|
+
- Use Expedia MCP when available (`expedia_search_hotels` tool)
|
|
49
|
+
- Compare: price per night, total stay cost, location, rating, amenities
|
|
50
|
+
- Check cancellation policies (crucial for travel planning)
|
|
51
|
+
|
|
52
|
+
### Vacation Rentals (Browser-based)
|
|
53
|
+
- Use browser-navigation skill for Airbnb/VRBO
|
|
54
|
+
- Search by location, dates, guests, budget
|
|
55
|
+
- Compare: price, location proximity, reviews, amenities, host rating
|
|
56
|
+
- Screenshot listings for user review
|
|
57
|
+
|
|
58
|
+
### Comparison Criteria
|
|
59
|
+
- Price per night and total cost
|
|
60
|
+
- Location (distance to key attractions/activities)
|
|
61
|
+
- Reviews and ratings
|
|
62
|
+
- Amenities (WiFi, kitchen, parking, pool)
|
|
63
|
+
- Cancellation flexibility
|
|
64
|
+
|
|
65
|
+
## Booking Workflow
|
|
66
|
+
|
|
67
|
+
### Critical Safety Gates
|
|
68
|
+
- **ALWAYS confirm with user before any booking action**
|
|
69
|
+
- **ALWAYS confirm before entering payment information**
|
|
70
|
+
- **ALWAYS confirm before agreeing to terms**
|
|
71
|
+
- **Never proceed with a financial commitment without explicit approval**
|
|
72
|
+
|
|
73
|
+
### Credential Handling
|
|
74
|
+
|
|
75
|
+
Credentials are managed through the credential access layer, which stores
|
|
76
|
+
agent-owned secrets in the agent's Bitwarden/Vaultwarden credential vault.
|
|
77
|
+
Stored passwords stay in the vault. A brand-new signup password may enter
|
|
78
|
+
model context briefly when the agent explicitly generates or types it during
|
|
79
|
+
an interactive sign-up flow.
|
|
80
|
+
|
|
81
|
+
- Use `credential_get` to check what credentials exist for a domain (metadata only, never passwords)
|
|
82
|
+
- Use `credential_generate_password` to mint a strong password for a new sign-up
|
|
83
|
+
- Use `credential_store` to save credentials the agent acquired after the site accepts them
|
|
84
|
+
- The credential gateway automatically injects secrets into API requests via `getRawSecret()`
|
|
85
|
+
- Use browser-navigation skill form patterns for entering credentials during interactive sessions
|
|
86
|
+
|
|
87
|
+
**How credentials work:**
|
|
88
|
+
- Agent-owned credentials live in the agent's Bitwarden/Vaultwarden vault
|
|
89
|
+
- Travel credentials such as Duffel and Stripe are ordinary vault credential items
|
|
90
|
+
- The agent can sign up for services and store its own credentials
|
|
91
|
+
- Existing stored passwords are never returned to the model — only metadata (domain, username, notes)
|
|
92
|
+
|
|
93
|
+
### Post-Booking
|
|
94
|
+
- Save confirmation details (confirmation number, dates, hotel name, airline, booking reference)
|
|
95
|
+
- Save to diary/journal for future reference
|
|
96
|
+
- Set reminders for check-in windows
|
|
97
|
+
- Note cancellation deadlines
|
|
98
|
+
|
|
99
|
+
## Preference Management
|
|
100
|
+
|
|
101
|
+
### Storing Preferences
|
|
102
|
+
Track and reference these travel preferences:
|
|
103
|
+
- Preferred airlines and alliance status
|
|
104
|
+
- Preferred hotel chains and loyalty numbers
|
|
105
|
+
- Seat preferences (window/aisle, extra legroom)
|
|
106
|
+
- Dietary needs for in-flight meals
|
|
107
|
+
- Budget ranges (per night for hotels, per flight)
|
|
108
|
+
- Must-have amenities (WiFi, gym, pool)
|
|
109
|
+
|
|
110
|
+
### Using Preferences
|
|
111
|
+
- Reference stored preferences when searching
|
|
112
|
+
- Apply airline preferences to flight comparisons
|
|
113
|
+
- Apply hotel brand preferences to accommodation searches
|
|
114
|
+
- Adjust budget ranges based on destination
|
|
115
|
+
|
|
116
|
+
## Tool Reference
|
|
117
|
+
|
|
118
|
+
### Native Tools (always available)
|
|
119
|
+
- `weather_lookup` - Current weather and daily forecast by city or coordinates (Open-Meteo, zero config)
|
|
120
|
+
- `travel_advisory` - US State Dept advisory by country code
|
|
121
|
+
- `geocode_search` - Location/POI search with coordinates
|
|
122
|
+
- `credential_get` - Check credential metadata for a domain (never returns passwords)
|
|
123
|
+
- `credential_generate_password` - Generate a strong password for a new sign-up (family trust)
|
|
124
|
+
- `credential_store` - Store credentials the agent acquired (family trust)
|
|
125
|
+
- `credential_list` - List stored credential domains
|
|
126
|
+
- `credential_delete` - Delete stored credentials (family trust)
|
|
127
|
+
|
|
128
|
+
### MCP Tools (when configured)
|
|
129
|
+
- Browser tools via `@playwright/mcp` - see `browser-navigation` skill
|
|
130
|
+
- Duffel flight search (when MCP server available)
|
|
131
|
+
- Expedia hotel search (when MCP server available)
|
|
132
|
+
|
|
133
|
+
### Human Confirmation Required For
|
|
134
|
+
- Any booking or payment
|
|
135
|
+
- Entering personal information
|
|
136
|
+
- Agreeing to terms of service
|
|
137
|
+
- Creating financial obligations
|
|
138
|
+
- Sharing credentials with third parties
|