@ouro.bot/cli 0.1.0-alpha.8 → 0.1.0-alpha.800
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 +249 -176
- 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/SerpentGuide.ouro/agent.json +83 -0
- package/SerpentGuide.ouro/psyche/SOUL.md +25 -0
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +2 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-serpent.md +1 -1
- package/assets/bluebubbles-host +264 -0
- package/assets/ouroboros.png +0 -0
- package/changelog.json +5563 -0
- package/deploy/unraid/Dockerfile +48 -0
- package/deploy/unraid/README.txt +3012 -0
- package/deploy/unraid/audit-container-spec.sh +4 -0
- package/deploy/unraid/container-runtime.json +1 -0
- package/deploy/unraid/docker-man-template-transaction.mjs +526 -0
- package/deploy/unraid/docker-man-template-xml.cjs +105 -0
- package/deploy/unraid/migrate-sanctuary-bundle.mjs +60 -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 +176 -0
- package/deploy/unraid/sanctuary-acceptance-adapter.sh +43 -0
- package/deploy/unraid/sanctuary-acceptance-contract.json +198 -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 +2030 -0
- package/deploy/unraid/sanctuary-unit16-run.sh +560 -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 +11 -0
- package/deploy/unraid/sanctuary.ouro/psyche/SOUL.md +25 -0
- package/deploy/unraid/sanctuary.ouro/psyche/TACIT.md +11 -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 +27 -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 +360 -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 +1009 -0
- package/dist/heart/agent-entry.js +252 -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 +18 -0
- package/dist/heart/attachments/sources/telegram.js +71 -0
- package/dist/heart/attachments/store.js +132 -0
- package/dist/heart/attachments/types.js +93 -0
- package/dist/heart/auth/auth-flow.js +495 -0
- package/dist/heart/autonomy-budget.js +478 -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 +478 -0
- package/dist/heart/bridges/state-machine.js +135 -0
- package/dist/heart/bridges/store.js +135 -0
- 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 +195 -137
- package/dist/heart/context-loss-gauntlet.js +387 -0
- package/dist/heart/context-loss-sentinel.js +1157 -0
- package/dist/heart/core.js +2257 -338
- package/dist/heart/cross-chat-delivery.js +133 -0
- package/dist/heart/daemon/agent-config-check.js +451 -0
- package/dist/heart/daemon/agent-discovery.js +263 -0
- 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 +836 -0
- package/dist/heart/daemon/cli-desk.js +322 -0
- package/dist/heart/daemon/cli-exec.js +8730 -0
- package/dist/heart/daemon/cli-help.js +710 -0
- package/dist/heart/daemon/cli-parse.js +2719 -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 +112 -0
- package/dist/heart/daemon/container-runtime.js +97 -0
- package/dist/heart/daemon/container-spec-auditor-main.js +170 -0
- package/dist/heart/daemon/container-spec-auditor.js +236 -0
- package/dist/heart/daemon/daemon-bootstrap-startup.js +107 -0
- package/dist/heart/daemon/daemon-cli.js +30 -786
- package/dist/heart/daemon/daemon-entry.js +971 -13
- 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 +287 -0
- package/dist/heart/daemon/daemon-tombstone.js +236 -0
- package/dist/heart/daemon/daemon.js +2156 -28
- 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 +226 -0
- 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 +188 -0
- package/dist/heart/daemon/log-tailer.js +82 -12
- 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 +80 -11
- 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 +739 -54
- 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 +39 -0
- package/dist/heart/daemon/runtime-logging.js +92 -16
- package/dist/heart/daemon/runtime-metadata.js +191 -0
- package/dist/{repertoire/tasks/lifecycle.js → heart/daemon/runtime-mode.js} +37 -39
- package/dist/heart/daemon/safe-mode.js +161 -0
- package/dist/heart/daemon/sanctuary-acceptance-adapter.js +2609 -0
- package/dist/heart/daemon/sanctuary-acceptance-harness.js +1866 -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 +728 -0
- package/dist/heart/daemon/sanctuary-package-management.js +103 -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 +948 -0
- 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 +370 -0
- package/dist/heart/daemon/stale-bundle-prune.js +113 -0
- package/dist/heart/daemon/startup-tui.js +339 -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 +591 -0
- package/dist/heart/daemon/up-progress.js +366 -0
- package/dist/heart/daemon/vault-items.js +56 -0
- package/dist/heart/delegation.js +59 -0
- package/dist/heart/external-events/router.js +1414 -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-animation.js +10 -3
- package/dist/heart/{daemon → hatch}/hatch-flow.js +57 -139
- package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
- package/dist/heart/hatch/specialist-orchestrator.js +129 -0
- package/dist/heart/hatch/specialist-prompt.js +102 -0
- package/dist/heart/hatch/specialist-tools.js +318 -0
- package/dist/heart/identity.js +297 -67
- package/dist/heart/kept-notes.js +289 -0
- package/dist/heart/kicks.js +2 -20
- 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 +129 -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 +59 -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 +158 -0
- package/dist/heart/private-runtime/index.js +18 -0
- package/dist/heart/private-runtime/ledger.js +221 -0
- package/dist/heart/private-runtime/policy.js +252 -0
- package/dist/heart/private-runtime/types.js +2 -0
- package/dist/heart/progress-story.js +42 -0
- 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 +236 -58
- package/dist/heart/providers/azure.js +104 -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 +29 -7
- package/dist/heart/providers/openai-codex-token.js +349 -0
- package/dist/heart/providers/openai-codex.js +63 -39
- 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 +79 -0
- package/dist/heart/session-activity.js +235 -0
- 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 +372 -0
- package/dist/heart/steward-policy.js +302 -0
- package/dist/heart/streaming.js +682 -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 +127 -0
- 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/turn-coordinator.js +28 -0
- package/dist/heart/versioning/ouro-bot-global-installer.js +129 -0
- 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/{daemon → versioning}/ouro-uti.js +11 -2
- package/dist/heart/versioning/ouro-version-manager.js +409 -0
- package/dist/heart/versioning/staged-restart.js +146 -0
- package/dist/heart/versioning/update-checker.js +116 -0
- package/dist/heart/versioning/update-hooks.js +154 -0
- package/dist/heart/versioning/version-intent.js +114 -0
- package/dist/heart/versioning/wrapper-publish-guard.js +86 -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 +93 -1
- package/dist/mind/context.js +287 -104
- package/dist/mind/desk-section.js +362 -0
- package/dist/mind/diary-integrity.js +60 -0
- package/dist/mind/{memory.js → diary.js} +90 -98
- package/dist/mind/embedding-provider.js +60 -0
- package/dist/mind/file-state.js +179 -0
- package/dist/mind/first-impressions.js +16 -2
- package/dist/mind/{associative-recall.js → note-search.js} +61 -60
- package/dist/mind/obligation-steering.js +227 -0
- package/dist/mind/pending.js +102 -9
- package/dist/mind/phrases.js +1 -0
- package/dist/mind/prompt-budget.js +479 -0
- package/dist/mind/prompt-refresh.js +3 -2
- package/dist/mind/prompt.js +1377 -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/mind/session-transaction.js +415 -0
- package/dist/mind/token-estimate.js +8 -12
- package/dist/nerves/cli-logging.js +22 -3
- 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 +56 -36
- package/dist/nerves/coverage/source-scanner.js +4 -4
- package/dist/nerves/event-buffer.js +111 -0
- package/dist/nerves/index.js +305 -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 +17 -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 +322 -0
- package/dist/repertoire/coding/index.js +18 -3
- package/dist/repertoire/coding/manager.js +228 -14
- package/dist/repertoire/coding/spawner.js +61 -14
- package/dist/repertoire/coding/tools.js +279 -12
- 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/data/ado-endpoints.json +188 -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 +1083 -0
- 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/relationship-authorization.js +194 -0
- package/dist/repertoire/shell-sessions.js +133 -0
- package/dist/repertoire/skills.js +45 -24
- package/dist/repertoire/stripe-client.js +131 -0
- package/dist/repertoire/tool-arguments.js +148 -0
- package/dist/repertoire/tool-results.js +29 -0
- package/dist/repertoire/tools-a2a.js +699 -0
- package/dist/repertoire/tools-attachments.js +322 -0
- package/dist/repertoire/tools-awaiting.js +575 -0
- package/dist/repertoire/tools-base.js +85 -707
- package/dist/repertoire/tools-bluebubbles.js +95 -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 +575 -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 +1108 -0
- package/dist/repertoire/tools-shell.js +133 -0
- package/dist/repertoire/tools-steward-policy.js +95 -0
- package/dist/repertoire/tools-stripe.js +224 -0
- package/dist/repertoire/tools-surface.js +369 -0
- package/dist/repertoire/tools-teams.js +67 -61
- 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 +484 -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 +441 -102
- 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 +799 -0
- 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 +127 -0
- package/dist/senses/bluebubbles/index.js +3839 -0
- package/dist/senses/bluebubbles/latest-turn.js +311 -0
- package/dist/senses/bluebubbles/media.js +389 -0
- package/dist/senses/bluebubbles/model.js +392 -0
- package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +57 -6
- 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 +137 -0
- package/dist/senses/bluebubbles/semantic-receipts.js +1986 -0
- package/dist/senses/bluebubbles/session-cleanup.js +72 -0
- 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 +187 -0
- package/dist/senses/cli.js +813 -281
- 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/continuity.js +94 -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 +1213 -0
- package/dist/senses/private-runtime-worker.js +859 -0
- package/dist/senses/private-runtime.js +1496 -0
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/sanctuary-download-credit-presentation.js +31 -0
- package/dist/senses/sanctuary-full-visibility-contract.js +302 -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-catalog-contract.js +235 -0
- package/dist/senses/sanctuary-media-optimization.js +514 -0
- package/dist/senses/sanctuary-runtime.js +338 -0
- package/dist/senses/sanctuary-sab.js +85 -0
- package/dist/senses/sanctuary-storage-optimization-contract.js +32 -0
- package/dist/senses/shared-turn.js +571 -0
- package/dist/senses/surface-tool.js +109 -0
- package/dist/senses/teams-entry.js +60 -8
- package/dist/senses/teams.js +953 -211
- package/dist/senses/telegram-admission.js +711 -0
- package/dist/senses/telegram-approval-runtime.js +566 -0
- package/dist/senses/telegram-attachments.js +182 -0
- package/dist/senses/telegram-audit-ledger.js +220 -0
- package/dist/senses/telegram-client.js +1677 -0
- package/dist/senses/telegram-effect-adapter.js +859 -0
- package/dist/senses/telegram-entry.js +83 -0
- package/dist/senses/telegram.js +2026 -0
- package/dist/senses/trust-gate.js +207 -2
- 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 +8144 -0
- package/package.json +82 -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/AdoptionSpecialist.ouro/agent.json +0 -20
- package/AdoptionSpecialist.ouro/psyche/SOUL.md +0 -22
- package/dist/heart/daemon/specialist-orchestrator.js +0 -160
- package/dist/heart/daemon/specialist-prompt.js +0 -47
- package/dist/heart/daemon/specialist-session.js +0 -142
- package/dist/heart/daemon/specialist-tools.js +0 -132
- package/dist/heart/daemon/subagent-installer.js +0 -125
- package/dist/inner-worker-entry.js +0 -4
- package/dist/mind/friends/channel.js +0 -49
- package/dist/mind/friends/resolver.js +0 -84
- package/dist/mind/friends/store-file.js +0 -171
- package/dist/mind/friends/store.js +0 -4
- package/dist/mind/friends/tokens.js +0 -26
- package/dist/mind/friends/types.js +0 -21
- package/dist/repertoire/tasks/board.js +0 -122
- package/dist/repertoire/tasks/index.js +0 -210
- 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 -145
- package/dist/senses/bluebubbles-client.js +0 -279
- package/dist/senses/bluebubbles-entry.js +0 -11
- package/dist/senses/bluebubbles-model.js +0 -253
- package/dist/senses/bluebubbles.js +0 -332
- package/dist/senses/inner-dialog-worker.js +0 -61
- package/dist/senses/inner-dialog.js +0 -231
- package/subagents/README.md +0 -73
- package/subagents/work-doer.md +0 -233
- package/subagents/work-merger.md +0 -624
- package/subagents/work-planner.md +0 -373
- /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/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
|
@@ -1,19 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.toAnthropicMessages = toAnthropicMessages;
|
|
40
|
+
exports.classifyAnthropicError = classifyAnthropicError;
|
|
6
41
|
exports.createAnthropicProviderRuntime = createAnthropicProviderRuntime;
|
|
7
42
|
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
8
43
|
const config_1 = require("../config");
|
|
9
44
|
const identity_1 = require("../identity");
|
|
10
45
|
const runtime_1 = require("../../nerves/runtime");
|
|
46
|
+
const streaming_1 = require("../streaming");
|
|
47
|
+
const model_capabilities_1 = require("../model-capabilities");
|
|
48
|
+
const error_classification_1 = require("./error-classification");
|
|
11
49
|
const ANTHROPIC_SETUP_TOKEN_PREFIX = "sk-ant-oat01-";
|
|
12
50
|
const ANTHROPIC_SETUP_TOKEN_MIN_LENGTH = 80;
|
|
13
51
|
const ANTHROPIC_OAUTH_BETA_HEADER = "claude-code-20250219,oauth-2025-04-20,fine-grained-tool-streaming-2025-05-14,interleaved-thinking-2025-05-14";
|
|
14
|
-
function getAnthropicSecretsPathForGuidance() {
|
|
15
|
-
return (0, identity_1.getAgentSecretsPath)();
|
|
16
|
-
}
|
|
17
52
|
function getAnthropicAgentNameForGuidance() {
|
|
18
53
|
return (0, identity_1.getAgentName)();
|
|
19
54
|
}
|
|
@@ -21,10 +56,8 @@ function getAnthropicSetupTokenInstructions() {
|
|
|
21
56
|
const agentName = getAnthropicAgentNameForGuidance();
|
|
22
57
|
return [
|
|
23
58
|
"Fix:",
|
|
24
|
-
` 1. Run \`
|
|
25
|
-
"
|
|
26
|
-
` 2. Open ${getAnthropicSecretsPathForGuidance()}`,
|
|
27
|
-
" 3. Confirm providers.anthropic.setupToken is set",
|
|
59
|
+
` 1. Run \`ouro auth --agent ${agentName} --provider anthropic\``,
|
|
60
|
+
" 2. After reauth, retry the failed ouro command or reconnect this session.",
|
|
28
61
|
].join("\n");
|
|
29
62
|
}
|
|
30
63
|
function getAnthropicReauthGuidance(reason) {
|
|
@@ -34,8 +67,7 @@ function getAnthropicReauthGuidance(reason) {
|
|
|
34
67
|
getAnthropicSetupTokenInstructions(),
|
|
35
68
|
].join("\n");
|
|
36
69
|
}
|
|
37
|
-
function resolveAnthropicSetupTokenCredential() {
|
|
38
|
-
const anthropicConfig = (0, config_1.getAnthropicConfig)();
|
|
70
|
+
function resolveAnthropicSetupTokenCredential(anthropicConfig) {
|
|
39
71
|
const token = anthropicConfig.setupToken?.trim();
|
|
40
72
|
if (!token) {
|
|
41
73
|
throw new Error(getAnthropicReauthGuidance("Anthropic provider is selected but no setup-token credential was found."));
|
|
@@ -72,14 +104,13 @@ function parseToolCallInput(argumentsJson) {
|
|
|
72
104
|
}
|
|
73
105
|
}
|
|
74
106
|
function toAnthropicMessages(messages) {
|
|
75
|
-
|
|
107
|
+
const systemParts = [];
|
|
76
108
|
const converted = [];
|
|
77
109
|
for (const msg of messages) {
|
|
78
110
|
if (msg.role === "system") {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
111
|
+
const text = toAnthropicTextContent(msg.content).trim();
|
|
112
|
+
if (text)
|
|
113
|
+
systemParts.push(text);
|
|
83
114
|
continue;
|
|
84
115
|
}
|
|
85
116
|
if (msg.role === "user") {
|
|
@@ -92,6 +123,18 @@ function toAnthropicMessages(messages) {
|
|
|
92
123
|
if (msg.role === "assistant") {
|
|
93
124
|
const assistant = msg;
|
|
94
125
|
const blocks = [];
|
|
126
|
+
// Restore thinking blocks before text/tool_use blocks
|
|
127
|
+
const thinkingBlocks = assistant._thinking_blocks;
|
|
128
|
+
if (thinkingBlocks) {
|
|
129
|
+
for (const tb of thinkingBlocks) {
|
|
130
|
+
if (tb.type === "thinking") {
|
|
131
|
+
blocks.push({ type: "thinking", thinking: tb.thinking, signature: tb.signature });
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
blocks.push({ type: "redacted_thinking", data: tb.data });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
95
138
|
const text = toAnthropicTextContent(assistant.content);
|
|
96
139
|
if (text) {
|
|
97
140
|
blocks.push({ type: "text", text });
|
|
@@ -129,7 +172,7 @@ function toAnthropicMessages(messages) {
|
|
|
129
172
|
});
|
|
130
173
|
}
|
|
131
174
|
}
|
|
132
|
-
return { system, messages: converted };
|
|
175
|
+
return { system: systemParts.length > 0 ? systemParts.join("\n\n") : undefined, messages: converted };
|
|
133
176
|
}
|
|
134
177
|
function toAnthropicTools(tools) {
|
|
135
178
|
return tools.map((tool) => ({
|
|
@@ -172,52 +215,87 @@ function mergeAnthropicToolArguments(current, partial) {
|
|
|
172
215
|
}
|
|
173
216
|
return current + partial;
|
|
174
217
|
}
|
|
218
|
+
function classifyAnthropicError(error) {
|
|
219
|
+
return (0, error_classification_1.classifyHttpError)(error, {
|
|
220
|
+
isAuthFailure: isAnthropicAuthFailure,
|
|
221
|
+
isServerError: (e) => e.status === 529,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
175
224
|
function isAnthropicAuthFailure(error) {
|
|
176
|
-
if (!(error instanceof Error))
|
|
177
|
-
return false;
|
|
178
|
-
const status = error.status;
|
|
179
|
-
if (status === 401 || status === 403)
|
|
180
|
-
return true;
|
|
181
225
|
const lower = error.message.toLowerCase();
|
|
182
226
|
return (lower.includes("oauth authentication") ||
|
|
183
227
|
lower.includes("authentication failed") ||
|
|
184
228
|
lower.includes("unauthorized") ||
|
|
185
229
|
lower.includes("invalid api key"));
|
|
186
230
|
}
|
|
187
|
-
function withAnthropicAuthGuidance(error) {
|
|
188
|
-
const base = error instanceof Error ? error.message : String(error);
|
|
189
|
-
if (isAnthropicAuthFailure(error)) {
|
|
190
|
-
return new Error(getAnthropicReauthGuidance(`Anthropic authentication failed (${base}).`));
|
|
191
|
-
}
|
|
192
|
-
return error instanceof Error ? error : new Error(String(error));
|
|
193
|
-
}
|
|
194
231
|
async function streamAnthropicMessages(client, model, request) {
|
|
195
232
|
const { system, messages } = toAnthropicMessages(request.messages);
|
|
233
|
+
const additionalSystemParts = request.messages
|
|
234
|
+
.filter((message) => message.role === "system")
|
|
235
|
+
.slice(1)
|
|
236
|
+
.map((message) => toAnthropicTextContent(message.content).trim())
|
|
237
|
+
.filter((text) => text.length > 0);
|
|
196
238
|
const anthropicTools = toAnthropicTools(request.activeTools);
|
|
239
|
+
const modelCaps = (0, model_capabilities_1.getModelCapabilities)(model);
|
|
240
|
+
const maxTokens = modelCaps.maxOutputTokens ?? 16384;
|
|
197
241
|
const params = {
|
|
198
242
|
model,
|
|
199
|
-
max_tokens:
|
|
243
|
+
max_tokens: maxTokens,
|
|
200
244
|
messages,
|
|
201
245
|
stream: true,
|
|
246
|
+
thinking: { type: "adaptive" },
|
|
247
|
+
output_config: { effort: request.reasoningEffort ?? "medium" },
|
|
202
248
|
};
|
|
203
|
-
|
|
204
|
-
|
|
249
|
+
// The Anthropic API requires a Claude Code identification block in the system
|
|
250
|
+
// prompt when using OAuth setup tokens (sk-ant-oat01). Without it, Opus/Sonnet
|
|
251
|
+
// 4.6 requests are rejected with 400. This is the API's validation that the
|
|
252
|
+
// token is being used by a Claude Code client.
|
|
253
|
+
const preambleText = "You are Claude Code, Anthropic's official CLI for Claude.";
|
|
254
|
+
if (request.systemPrompt) {
|
|
255
|
+
// Structured SystemPrompt: merge preamble + stable prefix into one cached block,
|
|
256
|
+
// volatile suffix as a separate uncached block.
|
|
257
|
+
const stableBlock = {
|
|
258
|
+
type: "text",
|
|
259
|
+
text: preambleText + "\n\n" + request.systemPrompt.stable,
|
|
260
|
+
cache_control: { type: "ephemeral" },
|
|
261
|
+
};
|
|
262
|
+
params.system = [
|
|
263
|
+
stableBlock,
|
|
264
|
+
...(request.systemPrompt.volatile
|
|
265
|
+
? [{ type: "text", text: request.systemPrompt.volatile }]
|
|
266
|
+
: []),
|
|
267
|
+
...additionalSystemParts.map((text) => ({ type: "text", text })),
|
|
268
|
+
];
|
|
269
|
+
}
|
|
270
|
+
else if (system) {
|
|
271
|
+
// Fallback: no structured prompt, extract from messages (legacy path)
|
|
272
|
+
params.system = [{ type: "text", text: preambleText }, { type: "text", text: system }];
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
params.system = [{ type: "text", text: preambleText }];
|
|
276
|
+
}
|
|
205
277
|
if (anthropicTools.length > 0)
|
|
206
278
|
params.tools = anthropicTools;
|
|
207
279
|
if (request.toolChoiceRequired && anthropicTools.length > 0) {
|
|
208
|
-
|
|
280
|
+
// Thinking (adaptive or enabled) only supports tool_choice "auto" or "none".
|
|
281
|
+
// "any" forces tool use which is incompatible with extended thinking.
|
|
282
|
+
params.tool_choice = params.thinking ? { type: "auto" } : /* v8 ignore next -- no-thinking path: thinking always set for 4.6 models @preserve */ { type: "any" };
|
|
209
283
|
}
|
|
210
284
|
let response;
|
|
211
285
|
try {
|
|
212
286
|
response = await client.messages.create(params, request.signal ? { signal: request.signal } : {});
|
|
213
287
|
}
|
|
214
288
|
catch (error) {
|
|
215
|
-
throw
|
|
289
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
216
290
|
}
|
|
217
291
|
let content = "";
|
|
218
292
|
let streamStarted = false;
|
|
219
293
|
let usage;
|
|
220
294
|
const toolCalls = new Map();
|
|
295
|
+
const thinkingBlocks = new Map();
|
|
296
|
+
const redactedBlocks = new Map();
|
|
297
|
+
const answerStreamer = new streaming_1.SettleStreamer(request.callbacks, request.eagerSettleStreaming);
|
|
298
|
+
const textOutput = new streaming_1.ProviderTextOutput(request.callbacks);
|
|
221
299
|
try {
|
|
222
300
|
for await (const event of response) {
|
|
223
301
|
if (request.signal?.aborted)
|
|
@@ -225,17 +303,30 @@ async function streamAnthropicMessages(client, model, request) {
|
|
|
225
303
|
const eventType = String(event.type ?? "");
|
|
226
304
|
if (eventType === "content_block_start") {
|
|
227
305
|
const block = event.content_block;
|
|
228
|
-
|
|
229
|
-
|
|
306
|
+
const index = Number(event.index);
|
|
307
|
+
if (block?.type === "thinking") {
|
|
308
|
+
thinkingBlocks.set(index, { type: "thinking", thinking: "", signature: "" });
|
|
309
|
+
}
|
|
310
|
+
else if (block?.type === "redacted_thinking") {
|
|
311
|
+
redactedBlocks.set(index, { type: "redacted_thinking", data: String(block.data ?? "") });
|
|
312
|
+
}
|
|
313
|
+
else if (block?.type === "tool_use") {
|
|
230
314
|
const rawInput = block.input;
|
|
231
315
|
const input = rawInput && typeof rawInput === "object"
|
|
232
316
|
? JSON.stringify(rawInput)
|
|
233
317
|
: "";
|
|
318
|
+
const name = String(block.name ?? "");
|
|
234
319
|
toolCalls.set(index, {
|
|
235
320
|
id: String(block.id ?? ""),
|
|
236
|
-
name
|
|
321
|
+
name,
|
|
237
322
|
arguments: input,
|
|
238
323
|
});
|
|
324
|
+
// Activate eager streaming for sole settle tool call
|
|
325
|
+
/* v8 ignore next -- settle streaming activation, tested via SettleStreamer unit tests @preserve */
|
|
326
|
+
if (name === "settle" && toolCalls.size === 1) {
|
|
327
|
+
answerStreamer.activate();
|
|
328
|
+
textOutput.suppress();
|
|
329
|
+
}
|
|
239
330
|
}
|
|
240
331
|
continue;
|
|
241
332
|
}
|
|
@@ -249,7 +340,7 @@ async function streamAnthropicMessages(client, model, request) {
|
|
|
249
340
|
}
|
|
250
341
|
const text = String(delta?.text ?? "");
|
|
251
342
|
content += text;
|
|
252
|
-
|
|
343
|
+
textOutput.emit(text);
|
|
253
344
|
continue;
|
|
254
345
|
}
|
|
255
346
|
if (deltaType === "thinking_delta") {
|
|
@@ -257,14 +348,31 @@ async function streamAnthropicMessages(client, model, request) {
|
|
|
257
348
|
request.callbacks.onModelStreamStart();
|
|
258
349
|
streamStarted = true;
|
|
259
350
|
}
|
|
260
|
-
|
|
351
|
+
const thinkingText = String(delta?.thinking ?? "");
|
|
352
|
+
request.callbacks.onReasoningChunk(thinkingText);
|
|
353
|
+
const thinkingIndex = Number(event.index);
|
|
354
|
+
const thinkingBlock = thinkingBlocks.get(thinkingIndex);
|
|
355
|
+
if (thinkingBlock)
|
|
356
|
+
thinkingBlock.thinking += thinkingText;
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
if (deltaType === "signature_delta") {
|
|
360
|
+
const sigIndex = Number(event.index);
|
|
361
|
+
const sigBlock = thinkingBlocks.get(sigIndex);
|
|
362
|
+
if (sigBlock)
|
|
363
|
+
sigBlock.signature += String(delta?.signature ?? "");
|
|
261
364
|
continue;
|
|
262
365
|
}
|
|
263
366
|
if (deltaType === "input_json_delta") {
|
|
264
367
|
const index = Number(event.index);
|
|
265
368
|
const existing = toolCalls.get(index);
|
|
266
369
|
if (existing) {
|
|
267
|
-
|
|
370
|
+
const partialJson = String(delta?.partial_json ?? "");
|
|
371
|
+
existing.arguments = mergeAnthropicToolArguments(existing.arguments, partialJson);
|
|
372
|
+
/* v8 ignore next -- settle delta streaming, tested via SettleStreamer unit tests @preserve */
|
|
373
|
+
if (existing.name === "settle" && toolCalls.size === 1) {
|
|
374
|
+
answerStreamer.processDelta(partialJson);
|
|
375
|
+
}
|
|
268
376
|
}
|
|
269
377
|
continue;
|
|
270
378
|
}
|
|
@@ -286,47 +394,117 @@ async function streamAnthropicMessages(client, model, request) {
|
|
|
286
394
|
}
|
|
287
395
|
}
|
|
288
396
|
catch (error) {
|
|
289
|
-
|
|
397
|
+
textOutput.discard();
|
|
398
|
+
answerStreamer.cancel();
|
|
399
|
+
throw error instanceof Error ? error : /* v8 ignore next -- defensive: stream errors are always Error @preserve */ new Error(String(error));
|
|
400
|
+
}
|
|
401
|
+
const completedToolCalls = [...toolCalls.values()];
|
|
402
|
+
let settleFinalization;
|
|
403
|
+
if (request.signal?.aborted) {
|
|
404
|
+
textOutput.discard();
|
|
405
|
+
answerStreamer.cancel();
|
|
290
406
|
}
|
|
407
|
+
else if (completedToolCalls.length === 1
|
|
408
|
+
&& completedToolCalls[0].name === "settle"
|
|
409
|
+
&& answerStreamer.detected) {
|
|
410
|
+
textOutput.discard();
|
|
411
|
+
settleFinalization = (0, streaming_1.finalizeSettleStream)(answerStreamer, completedToolCalls[0].arguments);
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
answerStreamer.cancel();
|
|
415
|
+
textOutput.flush();
|
|
416
|
+
}
|
|
417
|
+
// Collect all thinking blocks (regular + redacted) sorted by index to preserve ordering
|
|
418
|
+
const allThinkingIndices = [...thinkingBlocks.keys(), ...redactedBlocks.keys()].sort((a, b) => a - b);
|
|
419
|
+
const outputItems = allThinkingIndices.map((idx) => {
|
|
420
|
+
const tb = thinkingBlocks.get(idx);
|
|
421
|
+
if (tb)
|
|
422
|
+
return tb;
|
|
423
|
+
return redactedBlocks.get(idx);
|
|
424
|
+
});
|
|
291
425
|
return {
|
|
292
426
|
content,
|
|
293
|
-
toolCalls:
|
|
294
|
-
outputItems
|
|
427
|
+
toolCalls: completedToolCalls,
|
|
428
|
+
outputItems,
|
|
295
429
|
usage,
|
|
430
|
+
settleStreamed: answerStreamer.streamed,
|
|
431
|
+
...(settleFinalization ? { settleFinalization } : {}),
|
|
296
432
|
};
|
|
297
433
|
}
|
|
298
|
-
function createAnthropicProviderRuntime() {
|
|
434
|
+
function createAnthropicProviderRuntime(model, anthropicConfig = (0, config_1.getAnthropicConfig)()) {
|
|
299
435
|
(0, runtime_1.emitNervesEvent)({
|
|
300
436
|
component: "engine",
|
|
301
437
|
event: "engine.provider_init",
|
|
302
438
|
message: "anthropic provider init",
|
|
303
439
|
meta: { provider: "anthropic" },
|
|
304
440
|
});
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
throw new Error(getAnthropicReauthGuidance("provider 'anthropic' is selected in agent.json but providers.anthropic.model/setupToken is incomplete in secrets.json."));
|
|
441
|
+
if (!anthropicConfig.setupToken) {
|
|
442
|
+
throw new Error(getAnthropicReauthGuidance("provider 'anthropic' is selected but anthropic.setupToken is missing in the agent vault."));
|
|
308
443
|
}
|
|
309
|
-
const
|
|
310
|
-
const
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
444
|
+
const modelCaps = (0, model_capabilities_1.getModelCapabilities)(model);
|
|
445
|
+
const capabilities = new Set();
|
|
446
|
+
if (modelCaps.reasoningEffort)
|
|
447
|
+
capabilities.add("reasoning-effort");
|
|
448
|
+
const credential = resolveAnthropicSetupTokenCredential(anthropicConfig);
|
|
449
|
+
const refreshToken = anthropicConfig.refreshToken;
|
|
450
|
+
const expiresAt = anthropicConfig.expiresAt;
|
|
451
|
+
function createClient(token) {
|
|
452
|
+
return new sdk_1.default({
|
|
453
|
+
authToken: token,
|
|
454
|
+
maxRetries: 0,
|
|
455
|
+
defaultHeaders: {
|
|
456
|
+
"anthropic-beta": ANTHROPIC_OAUTH_BETA_HEADER,
|
|
457
|
+
"anthropic-dangerous-direct-browser-access": "true",
|
|
458
|
+
"user-agent": "claude-cli/2.1.2 (external, cli)",
|
|
459
|
+
"x-app": "cli",
|
|
460
|
+
},
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
let currentToken = credential.token;
|
|
464
|
+
let client = createClient(currentToken);
|
|
465
|
+
/* v8 ignore start -- token refresh: dynamic import + ensureFreshToken, tested via integration @preserve */
|
|
466
|
+
async function ensureClient() {
|
|
467
|
+
try {
|
|
468
|
+
const { ensureFreshToken } = await Promise.resolve().then(() => __importStar(require("./anthropic-token")));
|
|
469
|
+
const { getAgentName } = await Promise.resolve().then(() => __importStar(require("../identity")));
|
|
470
|
+
const freshToken = await ensureFreshToken(currentToken, refreshToken, expiresAt, getAgentName());
|
|
471
|
+
if (freshToken !== currentToken) {
|
|
472
|
+
currentToken = freshToken;
|
|
473
|
+
client = createClient(freshToken);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
catch {
|
|
477
|
+
// refresh failed — use existing client
|
|
478
|
+
}
|
|
479
|
+
return client;
|
|
480
|
+
}
|
|
481
|
+
/* v8 ignore stop */
|
|
318
482
|
return {
|
|
319
483
|
id: "anthropic",
|
|
320
|
-
model
|
|
321
|
-
client
|
|
484
|
+
model,
|
|
485
|
+
/* v8 ignore next -- getter: returns mutable client ref @preserve */
|
|
486
|
+
get client() { return client; },
|
|
487
|
+
capabilities,
|
|
488
|
+
supportedReasoningEfforts: modelCaps.reasoningEffort,
|
|
322
489
|
resetTurnState(_messages) {
|
|
323
490
|
// Anthropic request payload is derived from canonical messages each turn.
|
|
324
491
|
},
|
|
325
492
|
appendToolOutput(_callId, _output) {
|
|
326
493
|
// Anthropic uses canonical messages for tool_result tracking.
|
|
327
494
|
},
|
|
328
|
-
streamTurn(request) {
|
|
329
|
-
|
|
495
|
+
async streamTurn(request) {
|
|
496
|
+
const freshClient = await ensureClient();
|
|
497
|
+
return streamAnthropicMessages(freshClient, model, request);
|
|
498
|
+
},
|
|
499
|
+
/* v8 ignore start -- ping: tested via provider-ping.test.ts @preserve */
|
|
500
|
+
async ping(signal) {
|
|
501
|
+
const freshClient = await ensureClient();
|
|
502
|
+
await freshClient.messages.create({ model: "claude-haiku-4-5-20251001", max_tokens: 1, messages: [{ role: "user", content: "ping" }] }, { signal, headers: { "anthropic-beta": "claude-code-20250219,oauth-2025-04-20" } });
|
|
503
|
+
},
|
|
504
|
+
/* v8 ignore stop */
|
|
505
|
+
/* v8 ignore next 3 -- delegation: classification logic tested via classifyAnthropicError @preserve */
|
|
506
|
+
classifyError(error) {
|
|
507
|
+
return classifyAnthropicError(error);
|
|
330
508
|
},
|
|
331
509
|
};
|
|
332
510
|
}
|
|
@@ -1,35 +1,117 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.classifyAzureError = classifyAzureError;
|
|
37
|
+
exports.createAzureTokenProvider = createAzureTokenProvider;
|
|
3
38
|
exports.createAzureProviderRuntime = createAzureProviderRuntime;
|
|
4
39
|
const openai_1 = require("openai");
|
|
5
40
|
const config_1 = require("../config");
|
|
6
41
|
const runtime_1 = require("../../nerves/runtime");
|
|
7
42
|
const streaming_1 = require("../streaming");
|
|
8
|
-
|
|
43
|
+
const model_capabilities_1 = require("../model-capabilities");
|
|
44
|
+
const error_classification_1 = require("./error-classification");
|
|
45
|
+
const COGNITIVE_SERVICES_SCOPE = "https://cognitiveservices.azure.com/.default";
|
|
46
|
+
function classifyAzureError(error) {
|
|
47
|
+
return (0, error_classification_1.classifyHttpError)(error);
|
|
48
|
+
}
|
|
49
|
+
// @azure/identity is imported dynamically (below) rather than at the top level
|
|
50
|
+
// because it's a heavy package (~30+ transitive deps) and we only need it when
|
|
51
|
+
// using the managed-identity auth path. API-key users and other providers
|
|
52
|
+
// shouldn't pay the cold-start cost.
|
|
53
|
+
function createAzureTokenProvider(managedIdentityClientId) {
|
|
54
|
+
let credential = null;
|
|
55
|
+
return async () => {
|
|
56
|
+
try {
|
|
57
|
+
if (!credential) {
|
|
58
|
+
const { DefaultAzureCredential } = await Promise.resolve().then(() => __importStar(require("@azure/identity")));
|
|
59
|
+
const credentialOptions = managedIdentityClientId
|
|
60
|
+
? { managedIdentityClientId }
|
|
61
|
+
: undefined;
|
|
62
|
+
credential = new DefaultAzureCredential(credentialOptions);
|
|
63
|
+
}
|
|
64
|
+
const tokenResponse = await credential.getToken(COGNITIVE_SERVICES_SCOPE);
|
|
65
|
+
return tokenResponse.token;
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
69
|
+
throw new Error(`Azure OpenAI authentication failed: ${detail}\n` +
|
|
70
|
+
"To fix this, either:\n" +
|
|
71
|
+
" 1. Run `ouro auth --agent <agent> --provider azure`, or\n" +
|
|
72
|
+
" 2. Run 'az login' to authenticate with your Azure account (for local dev), or\n" +
|
|
73
|
+
" 3. Attach a managed identity to your App Service and store azure.managedIdentityClientId in the agent vault.");
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function createAzureProviderRuntime(model, azureConfig = (0, config_1.getAzureConfig)()) {
|
|
78
|
+
const useApiKey = !!azureConfig.apiKey;
|
|
79
|
+
const authMethod = useApiKey ? "key" : "managed-identity";
|
|
9
80
|
(0, runtime_1.emitNervesEvent)({
|
|
10
81
|
component: "engine",
|
|
11
82
|
event: "engine.provider_init",
|
|
12
83
|
message: "azure provider init",
|
|
13
|
-
meta: { provider: "azure" },
|
|
84
|
+
meta: { provider: "azure", authMethod },
|
|
14
85
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
throw new Error("provider 'azure' is selected in agent.json but providers.azure is incomplete in secrets.json.");
|
|
86
|
+
if (!(azureConfig.endpoint && azureConfig.deployment)) {
|
|
87
|
+
throw new Error("provider 'azure' is selected but azure endpoint/deployment is incomplete in the agent vault. Run `ouro auth --agent <agent> --provider azure`.");
|
|
18
88
|
}
|
|
19
|
-
const
|
|
20
|
-
|
|
89
|
+
const modelCaps = (0, model_capabilities_1.getModelCapabilities)(model);
|
|
90
|
+
const capabilities = new Set();
|
|
91
|
+
if (modelCaps.reasoningEffort)
|
|
92
|
+
capabilities.add("reasoning-effort");
|
|
93
|
+
const clientOptions = {
|
|
21
94
|
endpoint: azureConfig.endpoint.replace(/\/openai.*$/, ""),
|
|
22
95
|
deployment: azureConfig.deployment,
|
|
23
96
|
apiVersion: azureConfig.apiVersion,
|
|
24
|
-
timeout: 30000,
|
|
25
97
|
maxRetries: 0,
|
|
26
|
-
}
|
|
98
|
+
};
|
|
99
|
+
if (useApiKey) {
|
|
100
|
+
clientOptions.apiKey = azureConfig.apiKey;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const managedIdentityClientId = azureConfig.managedIdentityClientId || undefined;
|
|
104
|
+
clientOptions.azureADTokenProvider = createAzureTokenProvider(managedIdentityClientId);
|
|
105
|
+
}
|
|
106
|
+
const client = new openai_1.AzureOpenAI(clientOptions);
|
|
27
107
|
let nativeInput = null;
|
|
28
108
|
let nativeInstructions = "";
|
|
29
109
|
return {
|
|
30
110
|
id: "azure",
|
|
31
|
-
model
|
|
111
|
+
model,
|
|
32
112
|
client,
|
|
113
|
+
capabilities,
|
|
114
|
+
supportedReasoningEfforts: modelCaps.reasoningEffort,
|
|
33
115
|
resetTurnState(messages) {
|
|
34
116
|
const { instructions, input } = (0, streaming_1.toResponsesInput)(messages);
|
|
35
117
|
nativeInput = input;
|
|
@@ -38,7 +120,7 @@ function createAzureProviderRuntime() {
|
|
|
38
120
|
appendToolOutput(callId, output) {
|
|
39
121
|
if (!nativeInput)
|
|
40
122
|
return;
|
|
41
|
-
nativeInput.push({ type: "function_call_output", call_id: callId, output });
|
|
123
|
+
nativeInput.push({ type: "function_call_output", call_id: callId, output: (0, streaming_1.truncateResponsesFunctionCallOutput)(output) });
|
|
42
124
|
},
|
|
43
125
|
async streamTurn(request) {
|
|
44
126
|
if (!nativeInput)
|
|
@@ -48,7 +130,7 @@ function createAzureProviderRuntime() {
|
|
|
48
130
|
input: nativeInput,
|
|
49
131
|
instructions: nativeInstructions,
|
|
50
132
|
tools: (0, streaming_1.toResponsesTools)(request.activeTools),
|
|
51
|
-
reasoning: { effort: "medium", summary: "detailed" },
|
|
133
|
+
reasoning: { effort: request.reasoningEffort ?? "medium", summary: "detailed" },
|
|
52
134
|
stream: true,
|
|
53
135
|
store: false,
|
|
54
136
|
include: ["reasoning.encrypted_content"],
|
|
@@ -57,10 +139,19 @@ function createAzureProviderRuntime() {
|
|
|
57
139
|
params.metadata = { trace_id: request.traceId };
|
|
58
140
|
if (request.toolChoiceRequired)
|
|
59
141
|
params.tool_choice = "required";
|
|
60
|
-
const result = await (0, streaming_1.streamResponsesApi)(this.client, params, request.callbacks, request.signal);
|
|
142
|
+
const result = await (0, streaming_1.streamResponsesApi)(this.client, params, request.callbacks, request.signal, request.eagerSettleStreaming);
|
|
61
143
|
for (const item of result.outputItems)
|
|
62
144
|
nativeInput.push(item);
|
|
63
145
|
return result;
|
|
64
146
|
},
|
|
147
|
+
/* v8 ignore start -- ping: tested via provider-ping.test.ts @preserve */
|
|
148
|
+
async ping(signal) {
|
|
149
|
+
await this.client.responses.create({ model: this.model, input: "ping", max_output_tokens: 16 }, { signal });
|
|
150
|
+
},
|
|
151
|
+
/* v8 ignore stop */
|
|
152
|
+
/* v8 ignore next 3 -- delegation: classification logic tested via classifyAzureError @preserve */
|
|
153
|
+
classifyError(error) {
|
|
154
|
+
return classifyAzureError(error);
|
|
155
|
+
},
|
|
65
156
|
};
|
|
66
157
|
}
|