@cavi-ai/api-client 0.1.0
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/ARCHITECTURE.md +12 -0
- package/CHANGELOG.md +80 -0
- package/CONTRIBUTING.md +158 -0
- package/LICENSE +21 -0
- package/README.md +618 -0
- package/SECURITY.md +48 -0
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +4 -0
- package/dist/contracts/paths.d.ts +154 -0
- package/dist/contracts/paths.d.ts.map +1 -0
- package/dist/contracts/paths.js +89 -0
- package/dist/contracts/resolve.d.ts +7 -0
- package/dist/contracts/resolve.d.ts.map +1 -0
- package/dist/contracts/resolve.js +22 -0
- package/dist/contracts/surfaces.d.ts +13 -0
- package/dist/contracts/surfaces.d.ts.map +1 -0
- package/dist/contracts/surfaces.js +332 -0
- package/dist/contracts/team-manifest.d.ts +200 -0
- package/dist/contracts/team-manifest.d.ts.map +1 -0
- package/dist/contracts/team-manifest.js +951 -0
- package/dist/core/data/guards.d.ts +6 -0
- package/dist/core/data/guards.d.ts.map +1 -0
- package/dist/core/data/guards.js +22 -0
- package/dist/core/data/index.d.ts +2 -0
- package/dist/core/data/index.d.ts.map +1 -0
- package/dist/core/data/index.js +1 -0
- package/dist/core/env/config.d.ts +40 -0
- package/dist/core/env/config.d.ts.map +1 -0
- package/dist/core/env/config.js +44 -0
- package/dist/core/env/index.d.ts +3 -0
- package/dist/core/env/index.d.ts.map +1 -0
- package/dist/core/env/index.js +2 -0
- package/dist/core/env/repo-root.d.ts +11 -0
- package/dist/core/env/repo-root.d.ts.map +1 -0
- package/dist/core/env/repo-root.js +36 -0
- package/dist/core/gateway/agent/commands.d.ts +93 -0
- package/dist/core/gateway/agent/commands.d.ts.map +1 -0
- package/dist/core/gateway/agent/commands.js +351 -0
- package/dist/core/gateway/agent/config.d.ts +158 -0
- package/dist/core/gateway/agent/config.d.ts.map +1 -0
- package/dist/core/gateway/agent/config.js +536 -0
- package/dist/core/gateway/agent/index.d.ts +4 -0
- package/dist/core/gateway/agent/index.d.ts.map +1 -0
- package/dist/core/gateway/agent/index.js +3 -0
- package/dist/core/gateway/agent/voice-config.d.ts +20 -0
- package/dist/core/gateway/agent/voice-config.d.ts.map +1 -0
- package/dist/core/gateway/agent/voice-config.js +65 -0
- package/dist/core/gateway/client/capabilities.d.ts +28 -0
- package/dist/core/gateway/client/capabilities.d.ts.map +1 -0
- package/dist/core/gateway/client/capabilities.js +288 -0
- package/dist/core/gateway/client/client.d.ts +106 -0
- package/dist/core/gateway/client/client.d.ts.map +1 -0
- package/dist/core/gateway/client/client.js +41 -0
- package/dist/core/gateway/client/error-details.d.ts +17 -0
- package/dist/core/gateway/client/error-details.d.ts.map +1 -0
- package/dist/core/gateway/client/error-details.js +50 -0
- package/dist/core/gateway/client/fetch.d.ts +24 -0
- package/dist/core/gateway/client/fetch.d.ts.map +1 -0
- package/dist/core/gateway/client/fetch.js +98 -0
- package/dist/core/gateway/client/index.d.ts +6 -0
- package/dist/core/gateway/client/index.d.ts.map +1 -0
- package/dist/core/gateway/client/index.js +5 -0
- package/dist/core/gateway/client/runtime-targets.d.ts +11 -0
- package/dist/core/gateway/client/runtime-targets.d.ts.map +1 -0
- package/dist/core/gateway/client/runtime-targets.js +86 -0
- package/dist/core/gateway/envelope/envelope.d.ts +25 -0
- package/dist/core/gateway/envelope/envelope.d.ts.map +1 -0
- package/dist/core/gateway/envelope/envelope.js +141 -0
- package/dist/core/gateway/envelope/index.d.ts +3 -0
- package/dist/core/gateway/envelope/index.d.ts.map +1 -0
- package/dist/core/gateway/envelope/index.js +1 -0
- package/dist/core/gateway/envelope/types.d.ts +32 -0
- package/dist/core/gateway/envelope/types.d.ts.map +1 -0
- package/dist/core/gateway/envelope/types.js +1 -0
- package/dist/core/gateway/index.d.ts +11 -0
- package/dist/core/gateway/index.d.ts.map +1 -0
- package/dist/core/gateway/index.js +10 -0
- package/dist/core/gateway/jobs.d.ts +44 -0
- package/dist/core/gateway/jobs.d.ts.map +1 -0
- package/dist/core/gateway/jobs.js +104 -0
- package/dist/core/gateway/portal/config-patch.d.ts +42 -0
- package/dist/core/gateway/portal/config-patch.d.ts.map +1 -0
- package/dist/core/gateway/portal/config-patch.js +99 -0
- package/dist/core/gateway/portal/index.d.ts +2 -0
- package/dist/core/gateway/portal/index.d.ts.map +1 -0
- package/dist/core/gateway/portal/index.js +1 -0
- package/dist/core/gateway/providers/factory.d.ts +18 -0
- package/dist/core/gateway/providers/factory.d.ts.map +1 -0
- package/dist/core/gateway/providers/factory.js +40 -0
- package/dist/core/gateway/providers/index.d.ts +5 -0
- package/dist/core/gateway/providers/index.d.ts.map +1 -0
- package/dist/core/gateway/providers/index.js +4 -0
- package/dist/core/gateway/providers/normalize.d.ts +2 -0
- package/dist/core/gateway/providers/normalize.d.ts.map +1 -0
- package/dist/core/gateway/providers/normalize.js +6 -0
- package/dist/core/gateway/providers/registry.d.ts +5 -0
- package/dist/core/gateway/providers/registry.d.ts.map +1 -0
- package/dist/core/gateway/providers/registry.js +76 -0
- package/dist/core/gateway/providers/types.d.ts +42 -0
- package/dist/core/gateway/providers/types.d.ts.map +1 -0
- package/dist/core/gateway/providers/types.js +4 -0
- package/dist/core/gateway/resources/index.d.ts +3 -0
- package/dist/core/gateway/resources/index.d.ts.map +1 -0
- package/dist/core/gateway/resources/index.js +2 -0
- package/dist/core/gateway/resources/media.d.ts +165 -0
- package/dist/core/gateway/resources/media.d.ts.map +1 -0
- package/dist/core/gateway/resources/media.js +170 -0
- package/dist/core/gateway/resources/wiki.d.ts +136 -0
- package/dist/core/gateway/resources/wiki.d.ts.map +1 -0
- package/dist/core/gateway/resources/wiki.js +72 -0
- package/dist/core/gateway/rpc/client.d.ts +150 -0
- package/dist/core/gateway/rpc/client.d.ts.map +1 -0
- package/dist/core/gateway/rpc/client.js +675 -0
- package/dist/core/gateway/rpc/device-crypto.d.ts +19 -0
- package/dist/core/gateway/rpc/device-crypto.d.ts.map +1 -0
- package/dist/core/gateway/rpc/device-crypto.js +75 -0
- package/dist/core/gateway/rpc/device-store.d.ts +8 -0
- package/dist/core/gateway/rpc/device-store.d.ts.map +1 -0
- package/dist/core/gateway/rpc/device-store.js +113 -0
- package/dist/core/gateway/rpc/error.d.ts +5 -0
- package/dist/core/gateway/rpc/error.d.ts.map +1 -0
- package/dist/core/gateway/rpc/error.js +9 -0
- package/dist/core/gateway/rpc/index.d.ts +6 -0
- package/dist/core/gateway/rpc/index.d.ts.map +1 -0
- package/dist/core/gateway/rpc/index.js +5 -0
- package/dist/core/gateway/rpc/preauth-handshake.d.ts +39 -0
- package/dist/core/gateway/rpc/preauth-handshake.d.ts.map +1 -0
- package/dist/core/gateway/rpc/preauth-handshake.js +58 -0
- package/dist/core/gateway/run/contracts.d.ts +126 -0
- package/dist/core/gateway/run/contracts.d.ts.map +1 -0
- package/dist/core/gateway/run/contracts.js +23 -0
- package/dist/core/gateway/run/event-stream.d.ts +106 -0
- package/dist/core/gateway/run/event-stream.d.ts.map +1 -0
- package/dist/core/gateway/run/event-stream.js +264 -0
- package/dist/core/gateway/run/index.d.ts +5 -0
- package/dist/core/gateway/run/index.d.ts.map +1 -0
- package/dist/core/gateway/run/index.js +4 -0
- package/dist/core/gateway/run/sse-run-event-provider.d.ts +55 -0
- package/dist/core/gateway/run/sse-run-event-provider.d.ts.map +1 -0
- package/dist/core/gateway/run/sse-run-event-provider.js +394 -0
- package/dist/core/gateway/run/stream-failure.d.ts +11 -0
- package/dist/core/gateway/run/stream-failure.d.ts.map +1 -0
- package/dist/core/gateway/run/stream-failure.js +101 -0
- package/dist/core/gateway/snapshots/cache.d.ts +7 -0
- package/dist/core/gateway/snapshots/cache.d.ts.map +1 -0
- package/dist/core/gateway/snapshots/cache.js +13 -0
- package/dist/core/gateway/snapshots/contracts.d.ts +279 -0
- package/dist/core/gateway/snapshots/contracts.d.ts.map +1 -0
- package/dist/core/gateway/snapshots/contracts.js +1 -0
- package/dist/core/gateway/snapshots/index.d.ts +7 -0
- package/dist/core/gateway/snapshots/index.d.ts.map +1 -0
- package/dist/core/gateway/snapshots/index.js +6 -0
- package/dist/core/gateway/snapshots/loaders.d.ts +76 -0
- package/dist/core/gateway/snapshots/loaders.d.ts.map +1 -0
- package/dist/core/gateway/snapshots/loaders.js +515 -0
- package/dist/core/gateway/snapshots/session-loaders.d.ts +116 -0
- package/dist/core/gateway/snapshots/session-loaders.d.ts.map +1 -0
- package/dist/core/gateway/snapshots/session-loaders.js +310 -0
- package/dist/core/gateway/snapshots/system-loaders.d.ts +16 -0
- package/dist/core/gateway/snapshots/system-loaders.d.ts.map +1 -0
- package/dist/core/gateway/snapshots/system-loaders.js +61 -0
- package/dist/core/gateway/snapshots/transforms.d.ts +38 -0
- package/dist/core/gateway/snapshots/transforms.d.ts.map +1 -0
- package/dist/core/gateway/snapshots/transforms.js +328 -0
- package/dist/core/http/client-id.d.ts +6 -0
- package/dist/core/http/client-id.d.ts.map +1 -0
- package/dist/core/http/client-id.js +29 -0
- package/dist/core/http/client.d.ts +25 -0
- package/dist/core/http/client.d.ts.map +1 -0
- package/dist/core/http/client.js +234 -0
- package/dist/core/http/contracts.d.ts +3 -0
- package/dist/core/http/contracts.d.ts.map +1 -0
- package/dist/core/http/contracts.js +5 -0
- package/dist/core/http/errors.d.ts +17 -0
- package/dist/core/http/errors.d.ts.map +1 -0
- package/dist/core/http/errors.js +16 -0
- package/dist/core/http/gateway-error.d.ts +15 -0
- package/dist/core/http/gateway-error.d.ts.map +1 -0
- package/dist/core/http/gateway-error.js +15 -0
- package/dist/core/http/index.d.ts +10 -0
- package/dist/core/http/index.d.ts.map +1 -0
- package/dist/core/http/index.js +9 -0
- package/dist/core/http/json-client.d.ts +17 -0
- package/dist/core/http/json-client.d.ts.map +1 -0
- package/dist/core/http/json-client.js +62 -0
- package/dist/core/http/raw-client.d.ts +16 -0
- package/dist/core/http/raw-client.d.ts.map +1 -0
- package/dist/core/http/raw-client.js +36 -0
- package/dist/core/http/redaction.d.ts +20 -0
- package/dist/core/http/redaction.d.ts.map +1 -0
- package/dist/core/http/redaction.js +58 -0
- package/dist/core/http/types.d.ts +44 -0
- package/dist/core/http/types.d.ts.map +1 -0
- package/dist/core/http/types.js +3 -0
- package/dist/core/runtime/index.d.ts +2 -0
- package/dist/core/runtime/index.d.ts.map +1 -0
- package/dist/core/runtime/index.js +1 -0
- package/dist/core/runtime/paths.d.ts +5 -0
- package/dist/core/runtime/paths.d.ts.map +1 -0
- package/dist/core/runtime/paths.js +29 -0
- package/dist/core/sse/index.d.ts +2 -0
- package/dist/core/sse/index.d.ts.map +1 -0
- package/dist/core/sse/index.js +1 -0
- package/dist/core/sse/stream.d.ts +17 -0
- package/dist/core/sse/stream.d.ts.map +1 -0
- package/dist/core/sse/stream.js +106 -0
- package/dist/core/ws/close.d.ts +11 -0
- package/dist/core/ws/close.d.ts.map +1 -0
- package/dist/core/ws/close.js +34 -0
- package/dist/core/ws/gateway-websocket.d.ts +2 -0
- package/dist/core/ws/gateway-websocket.d.ts.map +1 -0
- package/dist/core/ws/gateway-websocket.js +1 -0
- package/dist/core/ws/index.d.ts +4 -0
- package/dist/core/ws/index.d.ts.map +1 -0
- package/dist/core/ws/index.js +3 -0
- package/dist/core/ws/targets.d.ts +21 -0
- package/dist/core/ws/targets.d.ts.map +1 -0
- package/dist/core/ws/targets.js +61 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.d.ts +21 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.d.ts.map +1 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.js +22 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.d.ts +30 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.d.ts.map +1 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.js +72 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/library-live.d.ts +4 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/library-live.d.ts.map +1 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/library-live.js +66 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.d.ts +7 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.d.ts.map +1 -0
- package/dist/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.js +318 -0
- package/dist/extensions/cavi/adapters/create-cavi-control-adapters.d.ts +88 -0
- package/dist/extensions/cavi/adapters/create-cavi-control-adapters.d.ts.map +1 -0
- package/dist/extensions/cavi/adapters/create-cavi-control-adapters.js +172 -0
- package/dist/extensions/cavi/client.d.ts +72 -0
- package/dist/extensions/cavi/client.d.ts.map +1 -0
- package/dist/extensions/cavi/client.js +19 -0
- package/dist/extensions/cavi/contracts/index.d.ts +6 -0
- package/dist/extensions/cavi/contracts/index.d.ts.map +1 -0
- package/dist/extensions/cavi/contracts/index.js +5 -0
- package/dist/extensions/cavi/contracts/mobile.d.ts +441 -0
- package/dist/extensions/cavi/contracts/mobile.d.ts.map +1 -0
- package/dist/extensions/cavi/contracts/mobile.js +467 -0
- package/dist/extensions/cavi/contracts/paths.d.ts +121 -0
- package/dist/extensions/cavi/contracts/paths.d.ts.map +1 -0
- package/dist/extensions/cavi/contracts/paths.js +197 -0
- package/dist/extensions/cavi/contracts/portals.d.ts +78 -0
- package/dist/extensions/cavi/contracts/portals.d.ts.map +1 -0
- package/dist/extensions/cavi/contracts/portals.js +70 -0
- package/dist/extensions/cavi/contracts/resolve.d.ts +3 -0
- package/dist/extensions/cavi/contracts/resolve.d.ts.map +1 -0
- package/dist/extensions/cavi/contracts/resolve.js +4 -0
- package/dist/extensions/cavi/contracts/surfaces.d.ts +5 -0
- package/dist/extensions/cavi/contracts/surfaces.d.ts.map +1 -0
- package/dist/extensions/cavi/contracts/surfaces.js +551 -0
- package/dist/extensions/cavi/discourse/contracts.d.ts +5 -0
- package/dist/extensions/cavi/discourse/contracts.d.ts.map +1 -0
- package/dist/extensions/cavi/discourse/contracts.js +7 -0
- package/dist/extensions/cavi/discourse/fallback.d.ts +3 -0
- package/dist/extensions/cavi/discourse/fallback.d.ts.map +1 -0
- package/dist/extensions/cavi/discourse/fallback.js +364 -0
- package/dist/extensions/cavi/discourse/live.d.ts +5 -0
- package/dist/extensions/cavi/discourse/live.d.ts.map +1 -0
- package/dist/extensions/cavi/discourse/live.js +22 -0
- package/dist/extensions/cavi/discourse/normalize-helpers.d.ts +11 -0
- package/dist/extensions/cavi/discourse/normalize-helpers.d.ts.map +1 -0
- package/dist/extensions/cavi/discourse/normalize-helpers.js +155 -0
- package/dist/extensions/cavi/discourse/normalize.d.ts +4 -0
- package/dist/extensions/cavi/discourse/normalize.d.ts.map +1 -0
- package/dist/extensions/cavi/discourse/normalize.js +287 -0
- package/dist/extensions/cavi/domain/discourse.d.ts +161 -0
- package/dist/extensions/cavi/domain/discourse.d.ts.map +1 -0
- package/dist/extensions/cavi/domain/discourse.js +1 -0
- package/dist/extensions/cavi/domain/index.d.ts +6 -0
- package/dist/extensions/cavi/domain/index.d.ts.map +1 -0
- package/dist/extensions/cavi/domain/index.js +5 -0
- package/dist/extensions/cavi/domain/library.d.ts +80 -0
- package/dist/extensions/cavi/domain/library.d.ts.map +1 -0
- package/dist/extensions/cavi/domain/library.js +2 -0
- package/dist/extensions/cavi/domain/observability.d.ts +34 -0
- package/dist/extensions/cavi/domain/observability.d.ts.map +1 -0
- package/dist/extensions/cavi/domain/observability.js +1 -0
- package/dist/extensions/cavi/domain/operator.d.ts +420 -0
- package/dist/extensions/cavi/domain/operator.d.ts.map +1 -0
- package/dist/extensions/cavi/domain/operator.js +1 -0
- package/dist/extensions/cavi/domain/project-board.d.ts +96 -0
- package/dist/extensions/cavi/domain/project-board.d.ts.map +1 -0
- package/dist/extensions/cavi/domain/project-board.js +1 -0
- package/dist/extensions/cavi/fallbacks/provider.d.ts +13 -0
- package/dist/extensions/cavi/fallbacks/provider.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/provider.js +23 -0
- package/dist/extensions/cavi/fallbacks/snapshots/agent-memory.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/agent-memory.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/agent-memory.js +6 -0
- package/dist/extensions/cavi/fallbacks/snapshots/cost-history.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/cost-history.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/cost-history.js +73 -0
- package/dist/extensions/cavi/fallbacks/snapshots/incidents.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/incidents.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/incidents.js +50 -0
- package/dist/extensions/cavi/fallbacks/snapshots/index.d.ts +10 -0
- package/dist/extensions/cavi/fallbacks/snapshots/index.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/index.js +9 -0
- package/dist/extensions/cavi/fallbacks/snapshots/library.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/library.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/library.js +110 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/defaults.d.ts +8 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/defaults.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/defaults.js +29 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/index.d.ts +4 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/index.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/index.js +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.js +63 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.js +716 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.js +38 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.js +84 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.js +111 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.js +16 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.js +43 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.js +16 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/transports.d.ts +4 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/transports.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/operator-control/transports.js +65 -0
- package/dist/extensions/cavi/fallbacks/snapshots/overview.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/overview.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/overview.js +40 -0
- package/dist/extensions/cavi/fallbacks/snapshots/routing.d.ts +3 -0
- package/dist/extensions/cavi/fallbacks/snapshots/routing.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/routing.js +36 -0
- package/dist/extensions/cavi/fallbacks/snapshots/runs.d.ts +4 -0
- package/dist/extensions/cavi/fallbacks/snapshots/runs.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/runs.js +133 -0
- package/dist/extensions/cavi/fallbacks/snapshots/shared.d.ts +2 -0
- package/dist/extensions/cavi/fallbacks/snapshots/shared.d.ts.map +1 -0
- package/dist/extensions/cavi/fallbacks/snapshots/shared.js +1 -0
- package/dist/extensions/cavi/index.d.ts +27 -0
- package/dist/extensions/cavi/index.d.ts.map +1 -0
- package/dist/extensions/cavi/index.js +26 -0
- package/dist/extensions/cavi/library/api.d.ts +18 -0
- package/dist/extensions/cavi/library/api.d.ts.map +1 -0
- package/dist/extensions/cavi/library/api.js +67 -0
- package/dist/extensions/cavi/library/client.d.ts +51 -0
- package/dist/extensions/cavi/library/client.d.ts.map +1 -0
- package/dist/extensions/cavi/library/client.js +23 -0
- package/dist/extensions/cavi/library/clip.d.ts +93 -0
- package/dist/extensions/cavi/library/clip.d.ts.map +1 -0
- package/dist/extensions/cavi/library/clip.js +272 -0
- package/dist/extensions/cavi/operator-control/constants.d.ts +4 -0
- package/dist/extensions/cavi/operator-control/constants.d.ts.map +1 -0
- package/dist/extensions/cavi/operator-control/constants.js +3 -0
- package/dist/extensions/cavi/operator-control/defaults.d.ts +11 -0
- package/dist/extensions/cavi/operator-control/defaults.d.ts.map +1 -0
- package/dist/extensions/cavi/operator-control/defaults.js +243 -0
- package/dist/extensions/cavi/operator-control/load-section.d.ts +24 -0
- package/dist/extensions/cavi/operator-control/load-section.d.ts.map +1 -0
- package/dist/extensions/cavi/operator-control/load-section.js +46 -0
- package/dist/extensions/cavi/portal/client.d.ts +16 -0
- package/dist/extensions/cavi/portal/client.d.ts.map +1 -0
- package/dist/extensions/cavi/portal/client.js +38 -0
- package/dist/extensions/cavi/portal/tts.d.ts +69 -0
- package/dist/extensions/cavi/portal/tts.d.ts.map +1 -0
- package/dist/extensions/cavi/portal/tts.js +116 -0
- package/dist/extensions/cavi/project-board/constants.d.ts +68 -0
- package/dist/extensions/cavi/project-board/constants.d.ts.map +1 -0
- package/dist/extensions/cavi/project-board/constants.js +9 -0
- package/dist/extensions/cavi/project-board/fallback.d.ts +3 -0
- package/dist/extensions/cavi/project-board/fallback.d.ts.map +1 -0
- package/dist/extensions/cavi/project-board/fallback.js +127 -0
- package/dist/extensions/cavi/project-board/live.d.ts +16 -0
- package/dist/extensions/cavi/project-board/live.d.ts.map +1 -0
- package/dist/extensions/cavi/project-board/live.js +86 -0
- package/dist/extensions/cavi/project-board/mutations.d.ts +43 -0
- package/dist/extensions/cavi/project-board/mutations.d.ts.map +1 -0
- package/dist/extensions/cavi/project-board/mutations.js +210 -0
- package/dist/extensions/cavi/project-board/normalize.d.ts +23 -0
- package/dist/extensions/cavi/project-board/normalize.d.ts.map +1 -0
- package/dist/extensions/cavi/project-board/normalize.js +410 -0
- package/dist/extensions/cavi/project-board/trace-id.d.ts +2 -0
- package/dist/extensions/cavi/project-board/trace-id.d.ts.map +1 -0
- package/dist/extensions/cavi/project-board/trace-id.js +7 -0
- package/dist/extensions/cavi/registry/canonical-team-registry.d.ts +41 -0
- package/dist/extensions/cavi/registry/canonical-team-registry.d.ts.map +1 -0
- package/dist/extensions/cavi/registry/canonical-team-registry.js +102 -0
- package/dist/extensions/cavi/registry/portal-library-registry.d.ts +6 -0
- package/dist/extensions/cavi/registry/portal-library-registry.d.ts.map +1 -0
- package/dist/extensions/cavi/registry/portal-library-registry.js +17 -0
- package/dist/extensions/cavi/registry/session-keys.d.ts +16 -0
- package/dist/extensions/cavi/registry/session-keys.d.ts.map +1 -0
- package/dist/extensions/cavi/registry/session-keys.js +68 -0
- package/dist/extensions/cavi/registry/team-registry-config.d.ts +6 -0
- package/dist/extensions/cavi/registry/team-registry-config.d.ts.map +1 -0
- package/dist/extensions/cavi/registry/team-registry-config.js +23 -0
- package/dist/extensions/cavi/registry/team-registry.d.ts +49 -0
- package/dist/extensions/cavi/registry/team-registry.d.ts.map +1 -0
- package/dist/extensions/cavi/registry/team-registry.js +290 -0
- package/dist/extensions/cavi/runtime/env-config.d.ts +35 -0
- package/dist/extensions/cavi/runtime/env-config.d.ts.map +1 -0
- package/dist/extensions/cavi/runtime/env-config.js +74 -0
- package/dist/extensions/cavi/runtime/paths.d.ts +11 -0
- package/dist/extensions/cavi/runtime/paths.d.ts.map +1 -0
- package/dist/extensions/cavi/runtime/paths.js +43 -0
- package/dist/extensions/cavi/runtime/standalone-mode.d.ts +3 -0
- package/dist/extensions/cavi/runtime/standalone-mode.d.ts.map +1 -0
- package/dist/extensions/cavi/runtime/standalone-mode.js +15 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +75 -0
- package/dist/providers/hermes/agent-config.d.ts +36 -0
- package/dist/providers/hermes/agent-config.d.ts.map +1 -0
- package/dist/providers/hermes/agent-config.js +242 -0
- package/dist/providers/hermes/chat-run.d.ts +106 -0
- package/dist/providers/hermes/chat-run.d.ts.map +1 -0
- package/dist/providers/hermes/chat-run.js +221 -0
- package/dist/providers/hermes/client.d.ts +13 -0
- package/dist/providers/hermes/client.d.ts.map +1 -0
- package/dist/providers/hermes/client.js +6 -0
- package/dist/providers/hermes/env-config.d.ts +18 -0
- package/dist/providers/hermes/env-config.d.ts.map +1 -0
- package/dist/providers/hermes/env-config.js +38 -0
- package/dist/providers/hermes/index.d.ts +12 -0
- package/dist/providers/hermes/index.d.ts.map +1 -0
- package/dist/providers/hermes/index.js +11 -0
- package/dist/providers/hermes/media.d.ts +6 -0
- package/dist/providers/hermes/media.d.ts.map +1 -0
- package/dist/providers/hermes/media.js +10 -0
- package/dist/providers/hermes/provider-module.d.ts +3 -0
- package/dist/providers/hermes/provider-module.d.ts.map +1 -0
- package/dist/providers/hermes/provider-module.js +22 -0
- package/dist/providers/hermes/sse-run-event-provider.d.ts +24 -0
- package/dist/providers/hermes/sse-run-event-provider.d.ts.map +1 -0
- package/dist/providers/hermes/sse-run-event-provider.js +32 -0
- package/dist/providers/hermes/team-registry-config.d.ts +3 -0
- package/dist/providers/hermes/team-registry-config.d.ts.map +1 -0
- package/dist/providers/hermes/team-registry-config.js +1 -0
- package/dist/providers/hermes/team-registry.d.ts +3 -0
- package/dist/providers/hermes/team-registry.d.ts.map +1 -0
- package/dist/providers/hermes/team-registry.js +5 -0
- package/dist/providers/hermes/websocket.d.ts +6 -0
- package/dist/providers/hermes/websocket.d.ts.map +1 -0
- package/dist/providers/hermes/websocket.js +6 -0
- package/dist/providers/hermes/wiki.d.ts +6 -0
- package/dist/providers/hermes/wiki.d.ts.map +1 -0
- package/dist/providers/hermes/wiki.js +10 -0
- package/dist/providers/openclaw/agent-config.d.ts +6 -0
- package/dist/providers/openclaw/agent-config.d.ts.map +1 -0
- package/dist/providers/openclaw/agent-config.js +10 -0
- package/dist/providers/openclaw/client.d.ts +13 -0
- package/dist/providers/openclaw/client.d.ts.map +1 -0
- package/dist/providers/openclaw/client.js +6 -0
- package/dist/providers/openclaw/index.d.ts +10 -0
- package/dist/providers/openclaw/index.d.ts.map +1 -0
- package/dist/providers/openclaw/index.js +9 -0
- package/dist/providers/openclaw/media.d.ts +6 -0
- package/dist/providers/openclaw/media.d.ts.map +1 -0
- package/dist/providers/openclaw/media.js +10 -0
- package/dist/providers/openclaw/provider-module.d.ts +3 -0
- package/dist/providers/openclaw/provider-module.d.ts.map +1 -0
- package/dist/providers/openclaw/provider-module.js +16 -0
- package/dist/providers/openclaw/sse-run-event-provider.d.ts +6 -0
- package/dist/providers/openclaw/sse-run-event-provider.d.ts.map +1 -0
- package/dist/providers/openclaw/sse-run-event-provider.js +10 -0
- package/dist/providers/openclaw/team-registry-config.d.ts +3 -0
- package/dist/providers/openclaw/team-registry-config.d.ts.map +1 -0
- package/dist/providers/openclaw/team-registry-config.js +1 -0
- package/dist/providers/openclaw/team-registry.d.ts +3 -0
- package/dist/providers/openclaw/team-registry.d.ts.map +1 -0
- package/dist/providers/openclaw/team-registry.js +5 -0
- package/dist/providers/openclaw/websocket.d.ts +6 -0
- package/dist/providers/openclaw/websocket.d.ts.map +1 -0
- package/dist/providers/openclaw/websocket.js +28 -0
- package/dist/providers/openclaw/wiki.d.ts +6 -0
- package/dist/providers/openclaw/wiki.d.ts.map +1 -0
- package/dist/providers/openclaw/wiki.js +10 -0
- package/dist/react/gateway-provider.d.ts +142 -0
- package/dist/react/gateway-provider.d.ts.map +1 -0
- package/dist/react/gateway-provider.js +569 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +1 -0
- package/docs/assets/api-client-hero.svg +73 -0
- package/docs/cavi-team-manifest.example.ts +219 -0
- package/docs/team-manifest.consumer.template.ts +248 -0
- package/docs/team-manifest.md +252 -0
- package/package.json +152 -0
- package/src/contracts/index.ts +4 -0
- package/src/contracts/paths.ts +126 -0
- package/src/contracts/resolve.ts +42 -0
- package/src/contracts/surfaces.ts +366 -0
- package/src/contracts/team-manifest.ts +1402 -0
- package/src/core/data/guards.ts +26 -0
- package/src/core/data/index.ts +1 -0
- package/src/core/env/config.ts +97 -0
- package/src/core/env/index.ts +2 -0
- package/src/core/env/repo-root.ts +59 -0
- package/src/core/gateway/README.md +35 -0
- package/src/core/gateway/agent/commands.ts +482 -0
- package/src/core/gateway/agent/config.ts +786 -0
- package/src/core/gateway/agent/index.ts +3 -0
- package/src/core/gateway/agent/voice-config.ts +91 -0
- package/src/core/gateway/client/capabilities.ts +385 -0
- package/src/core/gateway/client/client.ts +137 -0
- package/src/core/gateway/client/error-details.ts +74 -0
- package/src/core/gateway/client/fetch.ts +180 -0
- package/src/core/gateway/client/index.ts +5 -0
- package/src/core/gateway/client/runtime-targets.ts +132 -0
- package/src/core/gateway/envelope/envelope.ts +204 -0
- package/src/core/gateway/envelope/index.ts +2 -0
- package/src/core/gateway/envelope/types.ts +48 -0
- package/src/core/gateway/index.ts +10 -0
- package/src/core/gateway/jobs.ts +178 -0
- package/src/core/gateway/portal/config-patch.ts +136 -0
- package/src/core/gateway/portal/index.ts +1 -0
- package/src/core/gateway/providers/factory.ts +77 -0
- package/src/core/gateway/providers/index.ts +4 -0
- package/src/core/gateway/providers/normalize.ts +7 -0
- package/src/core/gateway/providers/registry.ts +96 -0
- package/src/core/gateway/providers/types.ts +73 -0
- package/src/core/gateway/resources/index.ts +2 -0
- package/src/core/gateway/resources/media.ts +474 -0
- package/src/core/gateway/resources/wiki.ts +301 -0
- package/src/core/gateway/rpc/client.ts +1067 -0
- package/src/core/gateway/rpc/device-crypto.ts +101 -0
- package/src/core/gateway/rpc/device-store.ts +147 -0
- package/src/core/gateway/rpc/error.ts +11 -0
- package/src/core/gateway/rpc/index.ts +5 -0
- package/src/core/gateway/rpc/preauth-handshake.ts +99 -0
- package/src/core/gateway/run/contracts.ts +155 -0
- package/src/core/gateway/run/event-stream.ts +373 -0
- package/src/core/gateway/run/index.ts +4 -0
- package/src/core/gateway/run/sse-run-event-provider.ts +513 -0
- package/src/core/gateway/run/stream-failure.ts +135 -0
- package/src/core/gateway/snapshots/cache.ts +22 -0
- package/src/core/gateway/snapshots/contracts.ts +293 -0
- package/src/core/gateway/snapshots/index.ts +6 -0
- package/src/core/gateway/snapshots/loaders.ts +738 -0
- package/src/core/gateway/snapshots/session-loaders.ts +534 -0
- package/src/core/gateway/snapshots/system-loaders.ts +93 -0
- package/src/core/gateway/snapshots/transforms.ts +508 -0
- package/src/core/http/client-id.ts +40 -0
- package/src/core/http/client.ts +271 -0
- package/src/core/http/contracts.ts +9 -0
- package/src/core/http/errors.ts +26 -0
- package/src/core/http/gateway-error.ts +38 -0
- package/src/core/http/index.ts +9 -0
- package/src/core/http/json-client.ts +90 -0
- package/src/core/http/raw-client.ts +57 -0
- package/src/core/http/redaction.ts +78 -0
- package/src/core/http/types.ts +59 -0
- package/src/core/runtime/index.ts +1 -0
- package/src/core/runtime/paths.ts +44 -0
- package/src/core/sse/index.ts +1 -0
- package/src/core/sse/stream.ts +118 -0
- package/src/core/ws/close.ts +51 -0
- package/src/core/ws/gateway-websocket.ts +8 -0
- package/src/core/ws/index.ts +3 -0
- package/src/core/ws/targets.ts +74 -0
- package/src/extensions/README.md +16 -0
- package/src/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.ts +33 -0
- package/src/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.ts +152 -0
- package/src/extensions/cavi/adapters/cavi-control-adapters/library-live.ts +120 -0
- package/src/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.ts +422 -0
- package/src/extensions/cavi/adapters/create-cavi-control-adapters.ts +350 -0
- package/src/extensions/cavi/client.ts +25 -0
- package/src/extensions/cavi/contracts/index.ts +5 -0
- package/src/extensions/cavi/contracts/mobile.ts +528 -0
- package/src/extensions/cavi/contracts/paths.ts +242 -0
- package/src/extensions/cavi/contracts/portals.ts +165 -0
- package/src/extensions/cavi/contracts/resolve.ts +6 -0
- package/src/extensions/cavi/contracts/surfaces.ts +567 -0
- package/src/extensions/cavi/discourse/contracts.ts +9 -0
- package/src/extensions/cavi/discourse/fallback.ts +387 -0
- package/src/extensions/cavi/discourse/live.ts +36 -0
- package/src/extensions/cavi/discourse/normalize-helpers.ts +202 -0
- package/src/extensions/cavi/discourse/normalize.ts +415 -0
- package/src/extensions/cavi/domain/discourse.ts +209 -0
- package/src/extensions/cavi/domain/index.ts +5 -0
- package/src/extensions/cavi/domain/library.ts +96 -0
- package/src/extensions/cavi/domain/observability.ts +36 -0
- package/src/extensions/cavi/domain/operator.ts +486 -0
- package/src/extensions/cavi/domain/project-board.ts +107 -0
- package/src/extensions/cavi/fallbacks/provider.ts +57 -0
- package/src/extensions/cavi/fallbacks/snapshots/agent-memory.ts +8 -0
- package/src/extensions/cavi/fallbacks/snapshots/cost-history.ts +101 -0
- package/src/extensions/cavi/fallbacks/snapshots/incidents.ts +56 -0
- package/src/extensions/cavi/fallbacks/snapshots/index.ts +9 -0
- package/src/extensions/cavi/fallbacks/snapshots/library.ts +112 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/defaults.ts +57 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/index.ts +3 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.ts +65 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.ts +735 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.ts +41 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.ts +87 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.ts +113 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.ts +19 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.ts +46 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.ts +18 -0
- package/src/extensions/cavi/fallbacks/snapshots/operator-control/transports.ts +81 -0
- package/src/extensions/cavi/fallbacks/snapshots/overview.ts +42 -0
- package/src/extensions/cavi/fallbacks/snapshots/routing.ts +38 -0
- package/src/extensions/cavi/fallbacks/snapshots/runs.ts +141 -0
- package/src/extensions/cavi/fallbacks/snapshots/shared.ts +1 -0
- package/src/extensions/cavi/index.ts +52 -0
- package/src/extensions/cavi/library/api.ts +120 -0
- package/src/extensions/cavi/library/client.ts +54 -0
- package/src/extensions/cavi/library/clip.ts +389 -0
- package/src/extensions/cavi/operator-control/constants.ts +3 -0
- package/src/extensions/cavi/operator-control/defaults.ts +254 -0
- package/src/extensions/cavi/operator-control/load-section.ts +92 -0
- package/src/extensions/cavi/portal/client.ts +63 -0
- package/src/extensions/cavi/portal/tts.ts +213 -0
- package/src/extensions/cavi/project-board/constants.ts +84 -0
- package/src/extensions/cavi/project-board/fallback.ts +129 -0
- package/src/extensions/cavi/project-board/live.ts +121 -0
- package/src/extensions/cavi/project-board/mutations.ts +306 -0
- package/src/extensions/cavi/project-board/normalize.ts +552 -0
- package/src/extensions/cavi/project-board/trace-id.ts +9 -0
- package/src/extensions/cavi/registry/canonical-team-registry.ts +193 -0
- package/src/extensions/cavi/registry/portal-library-registry.ts +24 -0
- package/src/extensions/cavi/registry/session-keys.ts +92 -0
- package/src/extensions/cavi/registry/team-registry-config.ts +36 -0
- package/src/extensions/cavi/registry/team-registry.ts +414 -0
- package/src/extensions/cavi/runtime/env-config.ts +114 -0
- package/src/extensions/cavi/runtime/paths.ts +82 -0
- package/src/extensions/cavi/runtime/standalone-mode.ts +28 -0
- package/src/index.ts +576 -0
- package/src/providers/hermes/agent-config.ts +322 -0
- package/src/providers/hermes/chat-run.ts +340 -0
- package/src/providers/hermes/client.ts +21 -0
- package/src/providers/hermes/env-config.ts +58 -0
- package/src/providers/hermes/index.ts +11 -0
- package/src/providers/hermes/media.ts +12 -0
- package/src/providers/hermes/provider-module.ts +26 -0
- package/src/providers/hermes/sse-run-event-provider.ts +47 -0
- package/src/providers/hermes/team-registry-config.ts +2 -0
- package/src/providers/hermes/team-registry.ts +12 -0
- package/src/providers/hermes/websocket.ts +16 -0
- package/src/providers/hermes/wiki.ts +12 -0
- package/src/providers/openclaw/agent-config.ts +12 -0
- package/src/providers/openclaw/client.ts +21 -0
- package/src/providers/openclaw/index.ts +9 -0
- package/src/providers/openclaw/media.ts +12 -0
- package/src/providers/openclaw/provider-module.ts +20 -0
- package/src/providers/openclaw/sse-run-event-provider.ts +16 -0
- package/src/providers/openclaw/team-registry-config.ts +2 -0
- package/src/providers/openclaw/team-registry.ts +12 -0
- package/src/providers/openclaw/websocket.ts +56 -0
- package/src/providers/openclaw/wiki.ts +12 -0
- package/src/react/gateway-provider.tsx +835 -0
- package/src/react/index.ts +1 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { GatewayAgentConfigApiClient, GatewayAgentConfigApiError, assertAgentProfileId, buildAgentConfigFromConfigSnapshot, findAgentProfile, isMissingAgentConfigRouteError, normalizeAgentProfiles, setAgentConfigPathValue, } from "../../core/gateway/agent/config.js";
|
|
2
|
+
import { isSensitiveKey } from "../../core/http/redaction.js";
|
|
3
|
+
import { HERMES_AGENT_CONFIG_API_ENDPOINTS } from "../../contracts/paths.js";
|
|
4
|
+
/** Cookie the Hermes host-config plugin reads to select the active profile. */
|
|
5
|
+
export const HERMES_PROFILE_COOKIE_NAME = "hermes_profile";
|
|
6
|
+
const REASONING_EFFORT_OPTIONS = [
|
|
7
|
+
{ value: "", label: "Default" },
|
|
8
|
+
{ value: "none", label: "None" },
|
|
9
|
+
{ value: "minimal", label: "Minimal" },
|
|
10
|
+
{ value: "low", label: "Low" },
|
|
11
|
+
{ value: "medium", label: "Medium" },
|
|
12
|
+
{ value: "high", label: "High" },
|
|
13
|
+
{ value: "xhigh", label: "Extra high" },
|
|
14
|
+
];
|
|
15
|
+
function cleanString(value) {
|
|
16
|
+
return typeof value === "string" ? value.trim() : "";
|
|
17
|
+
}
|
|
18
|
+
function asRecord(value) {
|
|
19
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
20
|
+
? value
|
|
21
|
+
: {};
|
|
22
|
+
}
|
|
23
|
+
function asArray(value) {
|
|
24
|
+
return Array.isArray(value) ? value : [];
|
|
25
|
+
}
|
|
26
|
+
function asBoolean(value) {
|
|
27
|
+
return typeof value === "boolean" ? value : null;
|
|
28
|
+
}
|
|
29
|
+
export function hermesAgentProfileConfigYamlPath(agentId) {
|
|
30
|
+
const id = assertAgentProfileId(agentId);
|
|
31
|
+
return id === "default"
|
|
32
|
+
? "~/.hermes/config.yaml"
|
|
33
|
+
: `~/.hermes/profiles/${id}/config.yaml`;
|
|
34
|
+
}
|
|
35
|
+
export function hermesProfileCookieHeader(agentId) {
|
|
36
|
+
return `${HERMES_PROFILE_COOKIE_NAME}=${assertAgentProfileId(agentId)}`;
|
|
37
|
+
}
|
|
38
|
+
function modelOptionsFromHermesWebuiSnapshot(modelsPayload) {
|
|
39
|
+
const options = [];
|
|
40
|
+
for (const groupValue of asArray(asRecord(modelsPayload).groups)) {
|
|
41
|
+
const group = asRecord(groupValue);
|
|
42
|
+
for (const modelValue of asArray(group.models)) {
|
|
43
|
+
const model = asRecord(modelValue);
|
|
44
|
+
const value = cleanString(model.id) || cleanString(model.value) || cleanString(model.name);
|
|
45
|
+
if (!value)
|
|
46
|
+
continue;
|
|
47
|
+
options.push({
|
|
48
|
+
value,
|
|
49
|
+
label: cleanString(model.label) || cleanString(model.name) || value,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return options;
|
|
54
|
+
}
|
|
55
|
+
function mcpServerNamesFromHermesWebuiSnapshot(mcpServersPayload) {
|
|
56
|
+
return asArray(asRecord(mcpServersPayload).servers)
|
|
57
|
+
.map((value) => {
|
|
58
|
+
if (typeof value === "string")
|
|
59
|
+
return cleanString(value);
|
|
60
|
+
const server = asRecord(value);
|
|
61
|
+
return cleanString(server.name) || cleanString(server.id);
|
|
62
|
+
})
|
|
63
|
+
.filter(Boolean);
|
|
64
|
+
}
|
|
65
|
+
function buildHermesWebuiSnapshotConfig(input) {
|
|
66
|
+
const config = asRecord(input.config);
|
|
67
|
+
if (Object.keys(config).length > 0)
|
|
68
|
+
return config;
|
|
69
|
+
let synthetic = {};
|
|
70
|
+
const models = asRecord(input.models);
|
|
71
|
+
const defaultModel = cleanString(models.default_model);
|
|
72
|
+
if (defaultModel) {
|
|
73
|
+
synthetic = setAgentConfigPathValue(synthetic, "model.default", defaultModel);
|
|
74
|
+
}
|
|
75
|
+
const activeProvider = cleanString(models.active_provider);
|
|
76
|
+
if (activeProvider) {
|
|
77
|
+
synthetic = setAgentConfigPathValue(synthetic, "model.provider", activeProvider);
|
|
78
|
+
}
|
|
79
|
+
const reasoning = asRecord(input.reasoning);
|
|
80
|
+
const reasoningEffort = cleanString(reasoning.reasoning_effort);
|
|
81
|
+
if (reasoningEffort) {
|
|
82
|
+
synthetic = setAgentConfigPathValue(synthetic, "agent.reasoning_effort", reasoningEffort);
|
|
83
|
+
}
|
|
84
|
+
const showReasoning = asBoolean(reasoning.show_reasoning);
|
|
85
|
+
if (showReasoning !== null) {
|
|
86
|
+
synthetic = setAgentConfigPathValue(synthetic, "display.show_reasoning", showReasoning);
|
|
87
|
+
}
|
|
88
|
+
const mcpServers = mcpServerNamesFromHermesWebuiSnapshot(input.mcpServers);
|
|
89
|
+
if (mcpServers.length > 0) {
|
|
90
|
+
synthetic = setAgentConfigPathValue(synthetic, "mcp_servers.enabled", mcpServers);
|
|
91
|
+
}
|
|
92
|
+
return synthetic;
|
|
93
|
+
}
|
|
94
|
+
function buildHermesWebuiSnapshotSchema(input) {
|
|
95
|
+
const schema = asRecord(input.schema);
|
|
96
|
+
if (Object.keys(schema).length > 0)
|
|
97
|
+
return schema;
|
|
98
|
+
const fields = {};
|
|
99
|
+
const modelOptions = modelOptionsFromHermesWebuiSnapshot(input.models);
|
|
100
|
+
if (cleanString(asRecord(input.models).default_model)) {
|
|
101
|
+
fields["model.default"] = {
|
|
102
|
+
type: modelOptions.length > 0 ? "select" : "string",
|
|
103
|
+
category: "model",
|
|
104
|
+
description: "Default model",
|
|
105
|
+
...(modelOptions.length > 0 ? { options: modelOptions } : {}),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (cleanString(asRecord(input.models).active_provider)) {
|
|
109
|
+
fields["model.provider"] = {
|
|
110
|
+
type: "string",
|
|
111
|
+
category: "model",
|
|
112
|
+
description: "Active provider",
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (cleanString(asRecord(input.reasoning).reasoning_effort)) {
|
|
116
|
+
fields["agent.reasoning_effort"] = {
|
|
117
|
+
type: "select",
|
|
118
|
+
category: "agent",
|
|
119
|
+
description: "Reasoning effort",
|
|
120
|
+
options: REASONING_EFFORT_OPTIONS,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (asBoolean(asRecord(input.reasoning).show_reasoning) !== null) {
|
|
124
|
+
fields["display.show_reasoning"] = {
|
|
125
|
+
type: "boolean",
|
|
126
|
+
category: "display",
|
|
127
|
+
description: "Show reasoning",
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
if (mcpServerNamesFromHermesWebuiSnapshot(input.mcpServers).length > 0) {
|
|
131
|
+
fields["mcp_servers.enabled"] = {
|
|
132
|
+
type: "list",
|
|
133
|
+
category: "mcp_servers",
|
|
134
|
+
description: "Enabled MCP servers",
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return Object.keys(fields).length > 0
|
|
138
|
+
? { fields, category_order: ["model", "agent", "mcp_servers", "display"] }
|
|
139
|
+
: {};
|
|
140
|
+
}
|
|
141
|
+
export function buildAgentConfigFromHermesConfigSnapshot(input) {
|
|
142
|
+
return buildAgentConfigFromConfigSnapshot({
|
|
143
|
+
...input,
|
|
144
|
+
defaultSourcePath: hermesAgentProfileConfigYamlPath,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
export function buildAgentConfigFromHermesWebuiSnapshot(input) {
|
|
148
|
+
const agentId = assertAgentProfileId(input.agentId);
|
|
149
|
+
const profile = input.profile ??
|
|
150
|
+
findAgentProfile(normalizeAgentProfiles(input.profiles), agentId) ??
|
|
151
|
+
null;
|
|
152
|
+
return buildAgentConfigFromHermesConfigSnapshot({
|
|
153
|
+
agentId,
|
|
154
|
+
profile,
|
|
155
|
+
config: buildHermesWebuiSnapshotConfig(input),
|
|
156
|
+
schema: buildHermesWebuiSnapshotSchema(input),
|
|
157
|
+
defaults: input.defaults,
|
|
158
|
+
fetchedAt: input.fetchedAt,
|
|
159
|
+
etag: input.etag,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function unsupportedHermesWebuiPatchKeys(diff) {
|
|
163
|
+
return Object.keys(diff).filter((key) => {
|
|
164
|
+
return key.startsWith("profile.") || isSensitiveKey(key);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
export class HermesAgentConfigApiClient extends GatewayAgentConfigApiClient {
|
|
168
|
+
constructor(options) {
|
|
169
|
+
super(options, {
|
|
170
|
+
endpoints: HERMES_AGENT_CONFIG_API_ENDPOINTS,
|
|
171
|
+
surface: "hermes-agent-config-api",
|
|
172
|
+
defaultSourcePath: hermesAgentProfileConfigYamlPath,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
async getProfileConfig(agentId) {
|
|
176
|
+
const id = assertAgentProfileId(agentId);
|
|
177
|
+
try {
|
|
178
|
+
return await super.getProfileConfig(id);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (!isMissingAgentConfigRouteError(error))
|
|
182
|
+
throw error;
|
|
183
|
+
return this.getProfileConfigViaHermesWebui(id);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async getProfileConfigViaHermesWebui(agentId) {
|
|
187
|
+
const id = assertAgentProfileId(agentId);
|
|
188
|
+
const profiles = normalizeAgentProfiles(await this.requestJson(this.endpoints.profiles));
|
|
189
|
+
const profile = findAgentProfile(profiles, id);
|
|
190
|
+
if (!profile && id !== "default") {
|
|
191
|
+
throw new GatewayAgentConfigApiError(`Agent profile "${id}" was not found.`, {
|
|
192
|
+
path: this.endpoints.profiles,
|
|
193
|
+
status: 404,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
const headers = { Cookie: hermesProfileCookieHeader(id) };
|
|
197
|
+
const [config, schema, defaults] = await Promise.all([
|
|
198
|
+
this.requestJson(this.endpoints.config, { headers }),
|
|
199
|
+
this.requestJson(this.endpoints.configSchema, { headers }),
|
|
200
|
+
this.requestJson(this.endpoints.configDefaults, { headers }),
|
|
201
|
+
]);
|
|
202
|
+
return buildAgentConfigFromHermesWebuiSnapshot({
|
|
203
|
+
agentId: id,
|
|
204
|
+
profile,
|
|
205
|
+
config,
|
|
206
|
+
schema,
|
|
207
|
+
defaults,
|
|
208
|
+
fetchedAt: Date.now(),
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
async patchProfileConfig(agentId, diff, options = {}) {
|
|
212
|
+
const id = assertAgentProfileId(agentId);
|
|
213
|
+
try {
|
|
214
|
+
return await super.patchProfileConfig(id, diff, options);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
if (!isMissingAgentConfigRouteError(error))
|
|
218
|
+
throw error;
|
|
219
|
+
return this.patchProfileConfigViaHermesWebui(id, diff);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async patchProfileConfigViaHermesWebui(agentId, diff) {
|
|
223
|
+
const id = assertAgentProfileId(agentId);
|
|
224
|
+
const unsupported = unsupportedHermesWebuiPatchKeys(diff);
|
|
225
|
+
if (unsupported.length > 0) {
|
|
226
|
+
throw new GatewayAgentConfigApiError(`These config keys are not editable through the mobile editor: ${unsupported.join(", ")}.`);
|
|
227
|
+
}
|
|
228
|
+
const headers = { Cookie: hermesProfileCookieHeader(id) };
|
|
229
|
+
let nextConfig = asRecord(await this.requestJson(this.endpoints.config, { headers }));
|
|
230
|
+
for (const [key, value] of Object.entries(diff)) {
|
|
231
|
+
if (value === undefined)
|
|
232
|
+
continue;
|
|
233
|
+
nextConfig = setAgentConfigPathValue(nextConfig, key, value);
|
|
234
|
+
}
|
|
235
|
+
await this.requestJson(this.endpoints.config, {
|
|
236
|
+
method: "PUT",
|
|
237
|
+
headers,
|
|
238
|
+
body: { config: nextConfig },
|
|
239
|
+
});
|
|
240
|
+
return this.getProfileConfigViaHermesWebui(id);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { type RunStreamApprovalChoice, type RunStreamEvent } from "../../core/gateway/run/contracts.js";
|
|
2
|
+
import { type RunPreviewSnapshotFetcher } from "../../core/gateway/run/event-stream.js";
|
|
3
|
+
/**
|
|
4
|
+
* Provider-neutral metadata bag attached to a Hermes chat run. Free-form by
|
|
5
|
+
* design — the gateway forwards untyped fields to route handlers. Use
|
|
6
|
+
* {@link sanitizeHermesRouteMetadata} before sending to strip dict-valued
|
|
7
|
+
* route binding keys some routers reject as malformed.
|
|
8
|
+
*/
|
|
9
|
+
export type HermesRouteMetadata = Record<string, unknown>;
|
|
10
|
+
export type GatewayRouteMetadata = HermesRouteMetadata;
|
|
11
|
+
/**
|
|
12
|
+
* Gateway route bindings are scalar fields (`targetProfile`, `targetAgent`,
|
|
13
|
+
* `sessionKey`, `action`). Some routers validate dict-valued `binding` /
|
|
14
|
+
* `routeBinding` keys and reject the whole chat turn — strip those before
|
|
15
|
+
* forwarding metadata.
|
|
16
|
+
*/
|
|
17
|
+
export declare function sanitizeHermesRouteMetadata(metadata: HermesRouteMetadata | undefined): HermesRouteMetadata | undefined;
|
|
18
|
+
export declare const sanitizeGatewayRouteMetadata: typeof sanitizeHermesRouteMetadata;
|
|
19
|
+
/**
|
|
20
|
+
* A file sent with a chat turn. Base64 keeps it on the HTTP run path (gateway
|
|
21
|
+
* field names are sent in snake AND camel case so the server can read whichever
|
|
22
|
+
* casing it accepts).
|
|
23
|
+
*/
|
|
24
|
+
export type HermesChatRunAttachment = {
|
|
25
|
+
name: string;
|
|
26
|
+
mimeType: string;
|
|
27
|
+
size: number;
|
|
28
|
+
/** Base64-encoded file bytes (no data: prefix). */
|
|
29
|
+
dataBase64: string;
|
|
30
|
+
};
|
|
31
|
+
export type GatewayChatRunAttachment = HermesChatRunAttachment;
|
|
32
|
+
export type StartHermesChatRunParams = {
|
|
33
|
+
httpBase: string;
|
|
34
|
+
authToken: string;
|
|
35
|
+
clientId: string;
|
|
36
|
+
input: string;
|
|
37
|
+
sessionId: string;
|
|
38
|
+
/** Defaults to {@link sessionId} when omitted. */
|
|
39
|
+
sessionKey?: string;
|
|
40
|
+
targetProfile?: string;
|
|
41
|
+
targetAgent?: string;
|
|
42
|
+
action?: string;
|
|
43
|
+
metadata?: HermesRouteMetadata;
|
|
44
|
+
attachments?: readonly HermesChatRunAttachment[];
|
|
45
|
+
signal?: AbortSignal;
|
|
46
|
+
};
|
|
47
|
+
export type StartGatewayChatRunParams = StartHermesChatRunParams;
|
|
48
|
+
/**
|
|
49
|
+
* Starts a Hermes chat run through the configured run endpoint. Sends route binding fields in
|
|
50
|
+
* both snake AND camel case for cross-version gateway compatibility. Sanitizes
|
|
51
|
+
* metadata via {@link sanitizeHermesRouteMetadata} before forwarding.
|
|
52
|
+
*
|
|
53
|
+
* Returns the new `run_id`. Pair with {@link HermesSseRunEventProvider} or
|
|
54
|
+
* {@link streamHermesChatRun} to consume the event stream.
|
|
55
|
+
*/
|
|
56
|
+
export declare function startHermesChatRun(params: StartHermesChatRunParams): Promise<{
|
|
57
|
+
runId: string;
|
|
58
|
+
}>;
|
|
59
|
+
export declare const startGatewayChatRun: typeof startHermesChatRun;
|
|
60
|
+
export type ResolveHermesChatRunApprovalParams = {
|
|
61
|
+
httpBase: string;
|
|
62
|
+
authToken: string;
|
|
63
|
+
clientId: string;
|
|
64
|
+
runId: string;
|
|
65
|
+
choice: RunStreamApprovalChoice;
|
|
66
|
+
sessionKey?: string;
|
|
67
|
+
signal?: AbortSignal;
|
|
68
|
+
};
|
|
69
|
+
export type ResolveGatewayChatRunApprovalParams = ResolveHermesChatRunApprovalParams;
|
|
70
|
+
/**
|
|
71
|
+
* Resolves a pending approval gate through the configured run approval endpoint with
|
|
72
|
+
* one of the canonical {@link RunStreamApprovalChoice} options.
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveHermesChatRunApproval(params: ResolveHermesChatRunApprovalParams): Promise<void>;
|
|
75
|
+
export declare const resolveGatewayChatRunApproval: typeof resolveHermesChatRunApproval;
|
|
76
|
+
export type StreamHermesChatRunResult = {
|
|
77
|
+
/**
|
|
78
|
+
* True when at least one terminal lifecycle event was observed (delta /
|
|
79
|
+
* completed / failed / cancelled). Callers use this to detect a silent
|
|
80
|
+
* stream (no response) and trigger a fallback transport.
|
|
81
|
+
*/
|
|
82
|
+
sawAssistantResponseEvent: boolean;
|
|
83
|
+
};
|
|
84
|
+
export type StreamGatewayChatRunResult = StreamHermesChatRunResult;
|
|
85
|
+
export type StreamHermesChatRunParams = StartHermesChatRunParams & {
|
|
86
|
+
onEvent: (event: RunStreamEvent) => void;
|
|
87
|
+
/**
|
|
88
|
+
* Optional snapshot fetcher — when present, composes a tool-event fallback
|
|
89
|
+
* via {@link RunPreviewPollProvider} so tool calls land in the stream even
|
|
90
|
+
* when the Hermes SSE doesn't surface them. Once Hermes SSE catches up on
|
|
91
|
+
* tool events, the fallback becomes a no-op automatically.
|
|
92
|
+
*/
|
|
93
|
+
fetchToolEventSnapshot?: RunPreviewSnapshotFetcher;
|
|
94
|
+
};
|
|
95
|
+
export type StreamGatewayChatRunParams = StreamHermesChatRunParams;
|
|
96
|
+
/**
|
|
97
|
+
* Canonical orchestrator: starts a Hermes chat run, subscribes to its event
|
|
98
|
+
* stream via {@link HermesSseRunEventProvider}, and optionally stitches in
|
|
99
|
+
* tool events from the post-hoc run preview via
|
|
100
|
+
* {@link createRunStreamWithToolFallback}. Consumers receive canonical
|
|
101
|
+
* {@link RunStreamEvent}s on `onEvent` — switch on `event.event` against
|
|
102
|
+
* {@link RUN_STREAM_EVENT_NAMES}, never inline strings.
|
|
103
|
+
*/
|
|
104
|
+
export declare function streamHermesChatRun(params: StreamHermesChatRunParams): Promise<StreamHermesChatRunResult>;
|
|
105
|
+
export declare const streamGatewayChatRun: typeof streamHermesChatRun;
|
|
106
|
+
//# sourceMappingURL=chat-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-run.d.ts","sourceRoot":"","sources":["../../../src/providers/hermes/chat-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAIL,KAAK,yBAAyB,EAC/B,MAAM,wCAAwC,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1D,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAQvD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,GACxC,mBAAmB,GAAG,SAAS,CAYjC;AAED,eAAO,MAAM,4BAA4B,oCAA8B,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAwB/D,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,WAAW,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACjD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAEjE;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA+C5B;AAED,eAAO,MAAM,mBAAmB,2BAAqB,CAAC;AAEtD,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,uBAAuB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mCAAmC,GAAG,kCAAkC,CAAC;AAErF;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,kCAAkC,GACzC,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,eAAO,MAAM,6BAA6B,qCAA+B,CAAC;AAE1E,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;;OAIG;IACH,yBAAyB,EAAE,OAAO,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AAEnE,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,GAAG;IACjE,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;CACpD,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AAEnE;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,yBAAyB,CAAC,CA4FpC;AAED,eAAO,MAAM,oBAAoB,4BAAsB,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { RUN_STREAM_EVENT_NAMES, } from "../../core/gateway/run/contracts.js";
|
|
2
|
+
import { HERMES_API_ENDPOINTS } from "../../contracts/paths.js";
|
|
3
|
+
import { HermesSseRunEventProvider } from "./sse-run-event-provider.js";
|
|
4
|
+
import { RunPreviewPollProvider, createRunStreamWithToolFallback, } from "../../core/gateway/run/event-stream.js";
|
|
5
|
+
const DICT_REJECTING_ROUTE_METADATA_KEYS = new Set(["binding", "routeBinding"]);
|
|
6
|
+
function isDict(value) {
|
|
7
|
+
return Boolean(value) && typeof value === "object";
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Gateway route bindings are scalar fields (`targetProfile`, `targetAgent`,
|
|
11
|
+
* `sessionKey`, `action`). Some routers validate dict-valued `binding` /
|
|
12
|
+
* `routeBinding` keys and reject the whole chat turn — strip those before
|
|
13
|
+
* forwarding metadata.
|
|
14
|
+
*/
|
|
15
|
+
export function sanitizeHermesRouteMetadata(metadata) {
|
|
16
|
+
if (!metadata || Object.keys(metadata).length === 0) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
21
|
+
if (DICT_REJECTING_ROUTE_METADATA_KEYS.has(key) && isDict(value)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
out[key] = value;
|
|
25
|
+
}
|
|
26
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
27
|
+
}
|
|
28
|
+
export const sanitizeGatewayRouteMetadata = sanitizeHermesRouteMetadata;
|
|
29
|
+
function serializeAttachments(attachments) {
|
|
30
|
+
return attachments.map((a) => ({
|
|
31
|
+
name: a.name,
|
|
32
|
+
mime_type: a.mimeType,
|
|
33
|
+
mimeType: a.mimeType,
|
|
34
|
+
size: a.size,
|
|
35
|
+
data_base64: a.dataBase64,
|
|
36
|
+
dataBase64: a.dataBase64,
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
function addOptionalRunField(body, key, value) {
|
|
40
|
+
const trimmed = value?.trim();
|
|
41
|
+
if (trimmed)
|
|
42
|
+
body[key] = trimmed;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Starts a Hermes chat run through the configured run endpoint. Sends route binding fields in
|
|
46
|
+
* both snake AND camel case for cross-version gateway compatibility. Sanitizes
|
|
47
|
+
* metadata via {@link sanitizeHermesRouteMetadata} before forwarding.
|
|
48
|
+
*
|
|
49
|
+
* Returns the new `run_id`. Pair with {@link HermesSseRunEventProvider} or
|
|
50
|
+
* {@link streamHermesChatRun} to consume the event stream.
|
|
51
|
+
*/
|
|
52
|
+
export async function startHermesChatRun(params) {
|
|
53
|
+
const sessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
54
|
+
const headers = {
|
|
55
|
+
Accept: "application/json",
|
|
56
|
+
"Content-Type": "application/json",
|
|
57
|
+
"X-Portal-Client-Id": params.clientId,
|
|
58
|
+
"X-Hermes-Session-Key": sessionKey,
|
|
59
|
+
};
|
|
60
|
+
if (params.authToken.trim()) {
|
|
61
|
+
headers.Authorization = `Bearer ${params.authToken.trim()}`;
|
|
62
|
+
}
|
|
63
|
+
const body = {
|
|
64
|
+
input: params.input,
|
|
65
|
+
session_id: params.sessionId,
|
|
66
|
+
};
|
|
67
|
+
addOptionalRunField(body, "targetProfile", params.targetProfile);
|
|
68
|
+
addOptionalRunField(body, "target_profile", params.targetProfile);
|
|
69
|
+
addOptionalRunField(body, "targetAgent", params.targetAgent);
|
|
70
|
+
addOptionalRunField(body, "target_agent", params.targetAgent);
|
|
71
|
+
addOptionalRunField(body, "action", params.action);
|
|
72
|
+
if (params.metadata && Object.keys(params.metadata).length > 0) {
|
|
73
|
+
const sanitized = sanitizeHermesRouteMetadata(params.metadata);
|
|
74
|
+
if (sanitized)
|
|
75
|
+
body.metadata = sanitized;
|
|
76
|
+
}
|
|
77
|
+
if (params.attachments && params.attachments.length > 0) {
|
|
78
|
+
body.attachments = serializeAttachments(params.attachments);
|
|
79
|
+
}
|
|
80
|
+
const response = await fetch(`${params.httpBase}${HERMES_API_ENDPOINTS.runs}`, {
|
|
81
|
+
method: "POST",
|
|
82
|
+
headers,
|
|
83
|
+
body: JSON.stringify(body),
|
|
84
|
+
cache: "no-store",
|
|
85
|
+
signal: params.signal,
|
|
86
|
+
});
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
throw new Error(`run start failed with HTTP ${response.status}`);
|
|
89
|
+
}
|
|
90
|
+
const payload = (await response.json());
|
|
91
|
+
const runId = typeof payload.run_id === "string" ? payload.run_id : "";
|
|
92
|
+
if (!runId) {
|
|
93
|
+
throw new Error("run start missing run_id");
|
|
94
|
+
}
|
|
95
|
+
return { runId };
|
|
96
|
+
}
|
|
97
|
+
export const startGatewayChatRun = startHermesChatRun;
|
|
98
|
+
/**
|
|
99
|
+
* Resolves a pending approval gate through the configured run approval endpoint with
|
|
100
|
+
* one of the canonical {@link RunStreamApprovalChoice} options.
|
|
101
|
+
*/
|
|
102
|
+
export async function resolveHermesChatRunApproval(params) {
|
|
103
|
+
const headers = {
|
|
104
|
+
Accept: "application/json",
|
|
105
|
+
"Content-Type": "application/json",
|
|
106
|
+
"X-Portal-Client-Id": params.clientId,
|
|
107
|
+
};
|
|
108
|
+
if (params.authToken.trim()) {
|
|
109
|
+
headers.Authorization = `Bearer ${params.authToken.trim()}`;
|
|
110
|
+
}
|
|
111
|
+
if (params.sessionKey?.trim()) {
|
|
112
|
+
headers["X-Hermes-Session-Key"] = params.sessionKey.trim();
|
|
113
|
+
}
|
|
114
|
+
const response = await fetch(`${params.httpBase}${HERMES_API_ENDPOINTS.runApproval(params.runId)}`, {
|
|
115
|
+
method: "POST",
|
|
116
|
+
headers,
|
|
117
|
+
body: JSON.stringify({ choice: params.choice }),
|
|
118
|
+
cache: "no-store",
|
|
119
|
+
signal: params.signal,
|
|
120
|
+
});
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
throw new Error(`approval resolve failed with HTTP ${response.status}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export const resolveGatewayChatRunApproval = resolveHermesChatRunApproval;
|
|
126
|
+
/**
|
|
127
|
+
* Canonical orchestrator: starts a Hermes chat run, subscribes to its event
|
|
128
|
+
* stream via {@link HermesSseRunEventProvider}, and optionally stitches in
|
|
129
|
+
* tool events from the post-hoc run preview via
|
|
130
|
+
* {@link createRunStreamWithToolFallback}. Consumers receive canonical
|
|
131
|
+
* {@link RunStreamEvent}s on `onEvent` — switch on `event.event` against
|
|
132
|
+
* {@link RUN_STREAM_EVENT_NAMES}, never inline strings.
|
|
133
|
+
*/
|
|
134
|
+
export async function streamHermesChatRun(params) {
|
|
135
|
+
const sessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
136
|
+
const { runId } = await startHermesChatRun({
|
|
137
|
+
httpBase: params.httpBase,
|
|
138
|
+
authToken: params.authToken,
|
|
139
|
+
clientId: params.clientId,
|
|
140
|
+
input: params.input,
|
|
141
|
+
sessionId: params.sessionId,
|
|
142
|
+
sessionKey,
|
|
143
|
+
targetProfile: params.targetProfile,
|
|
144
|
+
targetAgent: params.targetAgent,
|
|
145
|
+
action: params.action,
|
|
146
|
+
metadata: params.metadata,
|
|
147
|
+
attachments: params.attachments,
|
|
148
|
+
signal: params.signal,
|
|
149
|
+
});
|
|
150
|
+
const sseProvider = new HermesSseRunEventProvider({
|
|
151
|
+
httpBase: params.httpBase,
|
|
152
|
+
authToken: params.authToken,
|
|
153
|
+
clientId: params.clientId,
|
|
154
|
+
sessionKey,
|
|
155
|
+
});
|
|
156
|
+
const composed = params.fetchToolEventSnapshot
|
|
157
|
+
? createRunStreamWithToolFallback({
|
|
158
|
+
primary: sseProvider,
|
|
159
|
+
toolEventFallback: new RunPreviewPollProvider({
|
|
160
|
+
fetchSnapshot: params.fetchToolEventSnapshot,
|
|
161
|
+
}),
|
|
162
|
+
})
|
|
163
|
+
: sseProvider;
|
|
164
|
+
let sawAssistantResponseEvent = false;
|
|
165
|
+
return await new Promise((resolve, reject) => {
|
|
166
|
+
let subscription = null;
|
|
167
|
+
let settled = false;
|
|
168
|
+
const settleResolve = () => {
|
|
169
|
+
if (settled)
|
|
170
|
+
return;
|
|
171
|
+
settled = true;
|
|
172
|
+
resolve({ sawAssistantResponseEvent });
|
|
173
|
+
};
|
|
174
|
+
const settleReject = (error) => {
|
|
175
|
+
if (settled)
|
|
176
|
+
return;
|
|
177
|
+
settled = true;
|
|
178
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
179
|
+
};
|
|
180
|
+
composed
|
|
181
|
+
.subscribe({ runId, signal: params.signal }, {
|
|
182
|
+
onEvent: (event) => {
|
|
183
|
+
if (event.event === RUN_STREAM_EVENT_NAMES.MESSAGE_DELTA ||
|
|
184
|
+
event.event === RUN_STREAM_EVENT_NAMES.RUN_COMPLETED ||
|
|
185
|
+
event.event === RUN_STREAM_EVENT_NAMES.RUN_FAILED ||
|
|
186
|
+
event.event === RUN_STREAM_EVENT_NAMES.RUN_CANCELLED) {
|
|
187
|
+
sawAssistantResponseEvent = true;
|
|
188
|
+
}
|
|
189
|
+
try {
|
|
190
|
+
params.onEvent(event);
|
|
191
|
+
}
|
|
192
|
+
catch (handlerError) {
|
|
193
|
+
settleReject(handlerError);
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
onError: settleReject,
|
|
197
|
+
onComplete: settleResolve,
|
|
198
|
+
})
|
|
199
|
+
.then((sub) => {
|
|
200
|
+
subscription = sub;
|
|
201
|
+
if (settled) {
|
|
202
|
+
void Promise.resolve(sub.dispose());
|
|
203
|
+
}
|
|
204
|
+
})
|
|
205
|
+
.catch(settleReject);
|
|
206
|
+
if (params.signal) {
|
|
207
|
+
const onAbort = () => {
|
|
208
|
+
if (subscription)
|
|
209
|
+
void Promise.resolve(subscription.dispose());
|
|
210
|
+
settleReject(new Error("aborted"));
|
|
211
|
+
};
|
|
212
|
+
if (params.signal.aborted) {
|
|
213
|
+
onAbort();
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
params.signal.addEventListener("abort", onAbort, { once: true });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
export const streamGatewayChatRun = streamHermesChatRun;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GatewayApiClient, type GatewayCapabilities, type GatewayRunStatus } from "../../core/gateway/client/client.js";
|
|
2
|
+
import type { HttpApiClientOptions } from "../../core/http/types.js";
|
|
3
|
+
export type HermesCapabilities = GatewayCapabilities & {
|
|
4
|
+
object?: "hermes.api_server.capabilities" | string;
|
|
5
|
+
platform?: "hermes-agent" | string;
|
|
6
|
+
};
|
|
7
|
+
export type HermesRunStatus = GatewayRunStatus & {
|
|
8
|
+
object?: "hermes.run" | string;
|
|
9
|
+
};
|
|
10
|
+
export declare class HermesApiClient extends GatewayApiClient {
|
|
11
|
+
constructor(options: HttpApiClientOptions);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/providers/hermes/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG;IACrD,MAAM,CAAC,EAAE,gCAAgC,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,qBAAa,eAAgB,SAAQ,gBAAgB;gBACvC,OAAO,EAAE,oBAAoB;CAG1C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type HttpApiEnvSource, type HttpApiSurfaceConfig } from "../../core/env/config.js";
|
|
2
|
+
export declare const HERMES_HTTP_API_ENV_KEYS: {
|
|
3
|
+
readonly baseUrl: "HERMES_API_BASE_URL";
|
|
4
|
+
readonly authToken: "HERMES_API_AUTH_TOKEN";
|
|
5
|
+
readonly clientId: "HERMES_API_CLIENT_ID";
|
|
6
|
+
};
|
|
7
|
+
export declare const HERMES_HTTP_API_ENV_ALIASES: {
|
|
8
|
+
readonly baseUrl: readonly ["EXPO_PUBLIC_HERMES_API_BASE_URL", "VITE_HERMES_API_BASE_URL", "GATEWAY_API_BASE_URL", "EXPO_PUBLIC_GATEWAY_API_BASE_URL", "VITE_GATEWAY_API_BASE_URL"];
|
|
9
|
+
readonly authToken: readonly ["EXPO_PUBLIC_HERMES_API_AUTH_TOKEN", "VITE_HERMES_API_AUTH_TOKEN", "GATEWAY_API_AUTH_TOKEN", "EXPO_PUBLIC_GATEWAY_TOKEN", "EXPO_PUBLIC_GATEWAY_API_AUTH_TOKEN", "VITE_GATEWAY_API_AUTH_TOKEN"];
|
|
10
|
+
readonly clientId: readonly ["EXPO_PUBLIC_HERMES_API_CLIENT_ID", "VITE_HERMES_API_CLIENT_ID", "GATEWAY_API_CLIENT_ID", "EXPO_PUBLIC_GATEWAY_CLIENT_ID", "EXPO_PUBLIC_GATEWAY_API_CLIENT_ID", "VITE_GATEWAY_API_CLIENT_ID"];
|
|
11
|
+
};
|
|
12
|
+
export type ResolveHermesHttpApiConfigOptions = {
|
|
13
|
+
defaults?: Partial<HttpApiSurfaceConfig>;
|
|
14
|
+
trimValues?: boolean;
|
|
15
|
+
includeAliases?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare function resolveHermesHttpApiConfigFromEnv(env: HttpApiEnvSource, options?: ResolveHermesHttpApiConfigOptions): HttpApiSurfaceConfig;
|
|
18
|
+
//# sourceMappingURL=env-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-config.d.ts","sourceRoot":"","sources":["../../../src/providers/hermes/env-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;CAwB9B,CAAC;AAEX,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,iCAAsC,GAC9C,oBAAoB,CAUtB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { resolveHttpSurfaceConfigFromEnv, } from "../../core/env/config.js";
|
|
2
|
+
export const HERMES_HTTP_API_ENV_KEYS = {
|
|
3
|
+
baseUrl: "HERMES_API_BASE_URL",
|
|
4
|
+
authToken: "HERMES_API_AUTH_TOKEN",
|
|
5
|
+
clientId: "HERMES_API_CLIENT_ID",
|
|
6
|
+
};
|
|
7
|
+
export const HERMES_HTTP_API_ENV_ALIASES = {
|
|
8
|
+
baseUrl: [
|
|
9
|
+
"EXPO_PUBLIC_HERMES_API_BASE_URL",
|
|
10
|
+
"VITE_HERMES_API_BASE_URL",
|
|
11
|
+
"GATEWAY_API_BASE_URL",
|
|
12
|
+
"EXPO_PUBLIC_GATEWAY_API_BASE_URL",
|
|
13
|
+
"VITE_GATEWAY_API_BASE_URL",
|
|
14
|
+
],
|
|
15
|
+
authToken: [
|
|
16
|
+
"EXPO_PUBLIC_HERMES_API_AUTH_TOKEN",
|
|
17
|
+
"VITE_HERMES_API_AUTH_TOKEN",
|
|
18
|
+
"GATEWAY_API_AUTH_TOKEN",
|
|
19
|
+
"EXPO_PUBLIC_GATEWAY_TOKEN",
|
|
20
|
+
"EXPO_PUBLIC_GATEWAY_API_AUTH_TOKEN",
|
|
21
|
+
"VITE_GATEWAY_API_AUTH_TOKEN",
|
|
22
|
+
],
|
|
23
|
+
clientId: [
|
|
24
|
+
"EXPO_PUBLIC_HERMES_API_CLIENT_ID",
|
|
25
|
+
"VITE_HERMES_API_CLIENT_ID",
|
|
26
|
+
"GATEWAY_API_CLIENT_ID",
|
|
27
|
+
"EXPO_PUBLIC_GATEWAY_CLIENT_ID",
|
|
28
|
+
"EXPO_PUBLIC_GATEWAY_API_CLIENT_ID",
|
|
29
|
+
"VITE_GATEWAY_API_CLIENT_ID",
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
export function resolveHermesHttpApiConfigFromEnv(env, options = {}) {
|
|
33
|
+
return resolveHttpSurfaceConfigFromEnv(env, {
|
|
34
|
+
keys: HERMES_HTTP_API_ENV_KEYS,
|
|
35
|
+
aliases: HERMES_HTTP_API_ENV_ALIASES,
|
|
36
|
+
fallback: { baseUrl: "http://127.0.0.1:8787", clientId: "cavi-api-client" },
|
|
37
|
+
}, options);
|
|
38
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./client.js";
|
|
2
|
+
export * from "./agent-config.js";
|
|
3
|
+
export * from "./chat-run.js";
|
|
4
|
+
export * from "./env-config.js";
|
|
5
|
+
export * from "./media.js";
|
|
6
|
+
export * from "./provider-module.js";
|
|
7
|
+
export * from "./sse-run-event-provider.js";
|
|
8
|
+
export * from "./team-registry.js";
|
|
9
|
+
export * from "./team-registry-config.js";
|
|
10
|
+
export * from "./websocket.js";
|
|
11
|
+
export * from "./wiki.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|