Teknium
5ba559c9e4
fix(relay): keep migrated Relay configs off 0.10's OTLP auto-export
...
Relay 0.10 starts gen_ai trace/log/metric export on its own whenever an
active configuration meets an OTEL_EXPORTER_OTLP_* endpoint in the process
environment, and those spans carry prompt and response messages. The
legacy HERMES_NEMO_RELAY_ATIF/ATOF variables never exported OTLP, so the
generated relay-plugins.toml now pins opentelemetry.enabled = false.
Also restore the discovery-only test's DISABLED-state assertions: they
pass on 0.10 and only trip on a host with a machine plugins.toml.
2026-10-09 19:58:29 -07:00
mnajafian-nv
6caac042b1
chore(relay): upgrade to 0.10.0
...
Signed-off-by: mnajafian-nv <mnajafian@nvidia.com >
2026-10-09 19:58:29 -07:00
emozilla
51aa249efd
feat(relay): name the Relay plugin files in doctor and the startup log
...
Relay 0.9 discovers user and system plugins.toml files outside the Hermes
home, so an exporter or middleware can apply to every Hermes session without
any Hermes setting naming it. Hermes now says which files apply.
The startup line that reports an active plugin host lists the files the
activation loaded. `hermes doctor` gains a NeMo Relay Plugins section: it
resolves the same layers through Relay's validator, which loads no plugin
code and leaves the process-wide host alone, then lists each file, whether
anything is enabled, and any error or warning Relay reports. A configuration
Relay would reject counts as a doctor issue. Validation cannot load dynamic
plugins, so a warning marks the row without counting as an issue.
The docs give the user and system file locations for each platform and point
to `hermes doctor`.
2026-09-29 12:16:43 -04:00
Alex Fournier
f5448560e9
Merge origin/main into chore/relay-0.9
...
Signed-off-by: Alex Fournier <afournier@nvidia.com >
2026-09-27 11:52:04 -04:00
Alex Fournier
f1cddf129a
Merge origin/main into chore/relay-0.9
...
Signed-off-by: Alex Fournier <afournier@nvidia.com >
2026-09-23 10:59:09 -04:00
ethernet
890bbbda1f
Merge remote-tracking branch 'origin/main' into ethie/pm-clean
...
# Conflicts:
# apps/desktop/e2e/archived-hidden-session-recoverable.spec.ts
# apps/desktop/e2e/bot-chat-message-agent-friendly-name.spec.ts
# apps/desktop/e2e/bot-mailbox-unreadable-ticket.spec.ts
# apps/desktop/e2e/bot-mode-roster-localized.spec.ts
# apps/desktop/e2e/bot-mode-row-click-mirrors-registry.spec.ts
# apps/desktop/e2e/bot-mode-tab-shows-bot-name.spec.ts
# apps/desktop/e2e/bot-roster-group-row-organisation.spec.ts
# apps/desktop/e2e/bot-roster-ignores-infra-dirs.spec.ts
# apps/desktop/e2e/bot-roster-timestamp-meta.spec.ts
# apps/desktop/e2e/bot-roster-user-sections.spec.ts
# apps/desktop/e2e/bot-routines-pane-narrow.spec.ts
# apps/desktop/e2e/bot-row-open-recent-session.spec.ts
# apps/desktop/e2e/bot-tile-ignores-ambient-composer-model.spec.ts
# apps/desktop/e2e/group-composer-auto-grow.spec.ts
# apps/desktop/e2e/group-create-gate-remote-roster.spec.ts
# apps/desktop/e2e/group-prompt-renamed-primary-handle.spec.ts
# apps/desktop/e2e/hosted-room-backend-continuity.spec.ts
# apps/desktop/e2e/hosted-room-legacy-store-migration.spec.ts
# apps/desktop/e2e/settings-scope-chips-bot-title.spec.ts
# apps/desktop/e2e/worktree-branch-status.spec.ts
# apps/desktop/electron/backend-probes.test.ts
# apps/desktop/electron/connection-apply.test.ts
# apps/desktop/electron/desktop-electron-pin.test.ts
# apps/desktop/electron/desktop-uninstall.test.ts
# apps/desktop/electron/gateway-file-download-transport.test.ts
# apps/desktop/electron/gateway-stop-before-update.test.ts
# apps/desktop/electron/github-api-auth.test.ts
# apps/desktop/electron/registry-primary-profile-scope.test.ts
# apps/desktop/electron/update-api-check.test.ts
# apps/desktop/electron/update-handoff-marker.test.ts
# apps/desktop/electron/venv-blocker-scan.test.ts
# apps/desktop/scripts/after-extract.test.mjs
# apps/desktop/scripts/local-pack-publish.test.mjs
# apps/desktop/scripts/tasks-scroll.test.mjs
# apps/desktop/src/app/settings/model-settings.test.tsx
# apps/desktop/src/app/updates-overlay.blockers.test.tsx
# apps/desktop/src/components/desktop-install-overlay.test.tsx
# apps/desktop/src/lib/update-copy.test.ts
# scripts/ci/check_os_marker_fakes.py
# tests-js/desktop-mac-usage-descriptions.test.ts
# tests-js/node-engine-alignment.test.ts
# tests/agent/lsp/test_install_and_lint_fixes.py
# tests/agent/test_command_token_source.py
# tests/agent/test_compression_boundary_hook.py
# tests/agent/test_create_openai_client_ssl_verify.py
# tests/agent/test_custom_provider_ca_probes.py
# tests/agent/test_endpoint_blackhole.py
# tests/agent/test_estimator_parity.py
# tests/agent/test_in_place_compaction.py
# tests/agent/test_moa_loop_mode.py
# tests/agent/test_model_metadata.py
# tests/agent/test_skill_session_platform_gate.py
# tests/agent/test_skill_utils.py
# tests/agent/test_ssl_ca_guard.py
# tests/computer_use/test_doctor.py
# tests/cron/test_codex_execution_paths.py
# tests/cron/test_cron_bot_chat_delivery.py
# tests/cron/test_cron_script.py
# tests/cron/test_media_delivery_parity.py
# tests/cron/test_misfire_catchup.py
# tests/cron/test_parallel_pool.py
# tests/cron/test_recurring_eagain_redispatch.py
# tests/gateway/test_choice_picker.py
# tests/gateway/test_control_socket_windows_live.py
# tests/gateway/test_dingtalk.py
# tests/gateway/test_feishu.py
# tests/gateway/test_feishu_onboard.py
# tests/gateway/test_gateway_shutdown.py
# tests/gateway/test_matrix.py
# tests/gateway/test_model_command_custom_providers.py
# tests/gateway/test_reasoning_command.py
# tests/gateway/test_runtime_footer.py
# tests/gateway/test_session.py
# tests/gateway/test_session_hygiene.py
# tests/gateway/test_status.py
# tests/gateway/test_teams.py
# tests/gateway/test_turn_lease.py
# tests/gateway/test_whatsapp_connect.py
# tests/hermes_cli/test_approvals_command.py
# tests/hermes_cli/test_auth_store_lock_concurrent.py
# tests/hermes_cli/test_backup.py
# tests/hermes_cli/test_banner_git_state.py
# tests/hermes_cli/test_certifi_repair.py
# tests/hermes_cli/test_cmd_update.py
# tests/hermes_cli/test_compat_manifest_targets.py
# tests/hermes_cli/test_computer_use_cli.py
# tests/hermes_cli/test_cpr_local_leak.py
# tests/hermes_cli/test_dashboard_auth_gate.py
# tests/hermes_cli/test_dashboard_procs_kill_grace.py
# tests/hermes_cli/test_desktop_lifecycle_windows_live.py
# tests/hermes_cli/test_doctor.py
# tests/hermes_cli/test_doctor_command_install.py
# tests/hermes_cli/test_fleet_config_migration_windows_live.py
# tests/hermes_cli/test_gateway.py
# tests/hermes_cli/test_gateway_platform_gating.py
# tests/hermes_cli/test_gateway_restart_loop.py
# tests/hermes_cli/test_gateway_task_probe.py
# tests/hermes_cli/test_gateway_wsl.py
# tests/hermes_cli/test_gui_command.py
# tests/hermes_cli/test_install_cua_driver.py
# tests/hermes_cli/test_kanban_db.py
# tests/hermes_cli/test_lazy_command_exports.py
# tests/hermes_cli/test_lazy_refresh_venv_repair.py
# tests/hermes_cli/test_linux_desktop_entry.py
# tests/hermes_cli/test_local_runtime.py
# tests/hermes_cli/test_local_runtime_updates.py
# tests/hermes_cli/test_managed_uv.py
# tests/hermes_cli/test_mcp_reload_confirm_gate.py
# tests/hermes_cli/test_nous_subscription.py
# tests/hermes_cli/test_npm_engine.py
# tests/hermes_cli/test_personality_none.py
# tests/hermes_cli/test_pet_toggle.py
# tests/hermes_cli/test_plan_reconciliation_windows_live.py
# tests/hermes_cli/test_plugin_event_bus.py
# tests/hermes_cli/test_plugin_manifest_v2.py
# tests/hermes_cli/test_plugin_packs.py
# tests/hermes_cli/test_plugins_cmd.py
# tests/hermes_cli/test_plugins_cmd_enable_disable_nested.py
# tests/hermes_cli/test_process_identity.py
# tests/hermes_cli/test_profiles.py
# tests/hermes_cli/test_profiles_sidebar_cache.py
# tests/hermes_cli/test_pty_bridge.py
# tests/hermes_cli/test_resolve_turn_limit.py
# tests/hermes_cli/test_serve_runtime_inventory.py
# tests/hermes_cli/test_session_vacuum_config.py
# tests/hermes_cli/test_set_config_value.py
# tests/hermes_cli/test_signal_handler_kanban_worker.py
# tests/hermes_cli/test_slash_confirm_windows.py
# tests/hermes_cli/test_stale_pid_guard.py
# tests/hermes_cli/test_startup_fast_guards.py
# tests/hermes_cli/test_status.py
# tests/hermes_cli/test_telegram_managed_bot.py
# tests/hermes_cli/test_tools_config.py
# tests/hermes_cli/test_update_apply_shallow_count.py
# tests/hermes_cli/test_update_autostash.py
# tests/hermes_cli/test_update_concurrent_quarantine.py
# tests/hermes_cli/test_update_fetch_failure_classifier.py
# tests/hermes_cli/test_update_fleet_probe_resume_token.py
# tests/hermes_cli/test_update_handoff_backend_reap.py
# tests/hermes_cli/test_update_handoff_desktop_rebuild.py
# tests/hermes_cli/test_update_head_moved_gate.py
# tests/hermes_cli/test_update_host_obligation.py
# tests/hermes_cli/test_update_import_guard.py
# tests/hermes_cli/test_update_interrupted_recovery.py
# tests/hermes_cli/test_update_inventory.py
# tests/hermes_cli/test_update_launchd_unloaded_gateway.py
# tests/hermes_cli/test_update_missing_configured_deps.py
# tests/hermes_cli/test_update_modified_notice.py
# tests/hermes_cli/test_update_multiplex_migration_hook.py
# tests/hermes_cli/test_update_no_gateway_restart.py
# tests/hermes_cli/test_update_orphan_backend_reap.py
# tests/hermes_cli/test_update_parked_branch_guard.py
# tests/hermes_cli/test_update_post_pull_syntax_guard.py
# tests/hermes_cli/test_update_receipt.py
# tests/hermes_cli/test_update_self_lock.py
# tests/hermes_cli/test_update_shim_fail_closed.py
# tests/hermes_cli/test_update_shim_self_lock.py
# tests/hermes_cli/test_update_sqlite_remediation.py
# tests/hermes_cli/test_update_stale_dashboard.py
# tests/hermes_cli/test_update_stale_virtualenv.py
# tests/hermes_cli/test_update_venv_health.py
# tests/hermes_cli/test_update_venv_ownership_preflight.py
# tests/hermes_cli/test_update_wedged_gateway.py
# tests/hermes_cli/test_update_yes_flag.py
# tests/hermes_cli/test_update_zip_two_phase.py
# tests/hermes_cli/test_urllib_security.py
# tests/hermes_cli/test_ux_messages_auth_config.py
# tests/hermes_cli/test_ux_messages_startup.py
# tests/hermes_cli/test_venv_holder_classifier.py
# tests/hermes_cli/test_verify_console_scripts.py
# tests/hermes_cli/test_verify_core_dependencies.py
# tests/hermes_cli/test_web_server.py
# tests/hermes_cli/test_web_server_console_ws.py
# tests/hermes_cli/test_web_server_ws_ping.py
# tests/hermes_cli/test_web_ui_build.py
# tests/hermes_state/test_fts_rebuild_admission.py
# tests/hermes_state/test_hermes_state.py
# tests/plugins/memory/test_memory_lazy_install.py
# tests/plugins/test_google_meet_plugin.py
# tests/plugins/test_langfuse_plugin.py
# tests/plugins/test_security_guidance_plugin.py
# tests/plugins/test_transform_llm_output_hook.py
# tests/scripts/desktop_update/test_desktop_update_windows_gateway_flag.py
# tests/scripts/desktop_update/test_desktop_update_windows_python_handoff.py
# tests/scripts/desktop_update/test_desktop_update_windows_timestamp.py
# tests/scripts/install/test_install_clone_throttle_fallback.py
# tests/scripts/install/test_install_lockfile_churn.py
# tests/scripts/install/test_install_no_initial_commit.py
# tests/scripts/install/test_install_sh_browser_install.py
# tests/scripts/install/test_install_sh_node_prerelease.py
# tests/scripts/install/test_install_sh_symlink_stomp.py
# tests/scripts/install/test_install_sh_uv_lock_config.py
# tests/scripts/install/test_install_unmerged_index.py
# tests/scripts/test_contributor_map.py
# tests/scripts/test_run_tests_parallel.py
# tests/skills/test_competitor_news_monitor_skill.py
# tests/skills/test_document_to_action_items_skill.py
# tests/skills/test_google_workspace_setup.py
# tests/skills/test_google_workspace_setup_deps.py
# tests/skills/test_grounded_citations_skill.py
# tests/skills/test_ip_as_logo_skill.py
# tests/skills/test_live_dashboard_skill.py
# tests/skills/test_mcp_oauth_remote_gateway_skill.py
# tests/skills/test_office_document_skills.py
# tests/skills/test_openclaw_migration.py
# tests/skills/test_product_price_monitor_skill.py
# tests/skills/test_scrollcraft_skill.py
# tests/skills/test_setup_wizard_generator_skill.py
# tests/skills/test_weekly_review_planning_skill.py
# tests/test_engines_satisfiable.py
# tests/test_fast_safe_load.py
# tests/test_hermes_bootstrap.py
# tests/test_hermes_constants.py
# tests/test_hermes_logging.py
# tests/test_managed_runtime_resolution.py
# tests/test_model_tools_async_bridge.py
# tests/test_packaging_build_guard.py
# tests/test_packaging_metadata.py
# tests/test_yaml_indent_consistency.py
# tests/tools/test_approval_timeout_overflow.py
# tests/tools/test_base_environment.py
# tests/tools/test_bot_mode_dm.py
# tests/tools/test_browser_chromium_check.py
# tests/tools/test_browser_hardening.py
# tests/tools/test_browser_homebrew_paths.py
# tests/tools/test_browser_npx_warmup.py
# tests/tools/test_browser_orphan_reaper.py
# tests/tools/test_browser_real_profile.py
# tests/tools/test_browser_use_cli.py
# tests/tools/test_clipboard.py
# tests/tools/test_code_execution.py
# tests/tools/test_code_execution_modes.py
# tests/tools/test_code_execution_windows_env.py
# tests/tools/test_computer_use.py
# tests/tools/test_delegate_liveness_timeout.py
# tests/tools/test_execute_code_approval_cluster.py
# tests/tools/test_execution_flag_detection.py
# tests/tools/test_fal_common.py
# tests/tools/test_file_operations.py
# tests/tools/test_file_tools.py
# tests/tools/test_file_tools_cwd_resolution.py
# tests/tools/test_file_tools_live.py
# tests/tools/test_lazy_deps.py
# tests/tools/test_lazy_deps_durable_target.py
# tests/tools/test_lazy_deps_managed.py
# tests/tools/test_local_env_blocklist.py
# tests/tools/test_local_tempdir.py
# tests/tools/test_macos_protected_search.py
# tests/tools/test_mcp_npx_cached_bin.py
# tests/tools/test_oneshot_completion_linger.py
# tests/tools/test_process_registry.py
# tests/tools/test_read_file_schema_gating.py
# tests/tools/test_skill_improvements.py
# tests/tools/test_skills_sync.py
# tests/tools/test_termux_api_detection.py
# tests/tools/test_tirith_security.py
# tests/tools/test_transcription_tools.py
# tests/tools/test_tts_streaming.py
# tests/tools/test_wake_word.py
# tests/tui_gateway/test_compute_host_borrowed_lease.py
# tests/tui_gateway/test_compute_host_turn_protocol.py
# tests/tui_gateway/test_isolated_orphan_activity.py
# tests/tui_gateway/test_protocol.py
# tests/tui_gateway/test_slash_worker_profile_home.py
# tests/tui_gateway/test_subprocess_encoding.py
# tests/tui_gateway/test_tui_gateway_server.py
# ui-tui/src/__tests__/terminalParity.test.ts
# ui-tui/src/__tests__/termuxComposerLayout.test.ts
# ui-tui/src/__tests__/textInputFastEcho.test.ts
2026-09-23 07:02:44 -04:00
teknium1
19f76d7498
test: purge low-value tests, lane py03 (499 removed)
...
Change-detectors, tautologies, source-reading tests, redundant duplicates,
mock-echo tests and dead/unrunnable tests. Per-test rationale in the lane
ledger (category + reason for every removal).
2026-09-23 03:15:26 -07:00
Alex Fournier
68fb2e9160
fix(relay): skip managed execution for empty activation
...
Signed-off-by: Alex Fournier <afournier@nvidia.com >
2026-09-22 14:43:45 -04:00
Alex Fournier
ab8a99c730
fix(relay): honor ambient plugin configuration
...
Signed-off-by: Alex Fournier <afournier@nvidia.com >
2026-09-21 14:02:05 -07:00
Alex Fournier
7d2d106d27
fix(relay): narrow foreign host conflict detection
...
Signed-off-by: Alex Fournier <afournier@nvidia.com >
Signed-off-by: mschwab <mschwab@nvidia.com >
2026-09-21 14:01:33 -07:00
mschwab
bac12f35ee
docs(relay): trim comments to the files' norm
...
The migrate module had no inline comments and the test files carry intent in their names; the additions were over that line.
Signed-off-by: mschwab <mschwab@nvidia.com >
2026-09-21 14:01:33 -07:00
mschwab
1477d8e659
feat(relay): move to the NeMo Relay 0.9 plugin-host API
...
Relay 0.9 (NVIDIA/NeMo-Relay#943 ) removed the process-global plugin
lifecycle Hermes was built on: plugin.report(), clear()/clear_async(),
load_dynamic_plugin_activation_specs() and initialize_with_dynamic_plugins()
are gone, initialize() now returns an owned PluginHostActivation, and the
validation report nests config diagnostics under "config".
The runtime now hands the selected plugins.toml to initialize() as
additional_plugins_toml, so Relay reads static components and
[[plugins.dynamic]] records from one file in place of user-file discovery,
and keeps the returned activation for teardown via close(). Hermes still
parses the file locally only to reject its own legacy [[dynamic_plugins]]
records before Relay sees them.
The foreign-activation preflight had no query to lean on any more; it is
now inferred from initialize() refusing the host lease, matched on the two
PluginError::Conflict messages Relay raises for that. Any other failure
stays fail-open as before.
validate_relay_plugin_payload uses plugin.validate() and no longer
activates the host to check a document.
Bumps nemo-relay to >=0.9,<0.10 and relocks (0.8.3 -> 0.9.0). Verified
against the real 0.9.0 binding: the four Relay suites pass 80/80 and the
other suites importing relay_runtime pass 199/199.
Signed-off-by: mschwab <mschwab@nvidia.com >
2026-09-21 14:01:33 -07:00
ethernet
92686159d1
fix(pm): integrate audited runtime and lifecycle repairs
...
Prepare dependency generations before selecting them. Keep shipped tool
bytes separate from writable additions, and store facts beside their entries.
Validate proposed plugin sets before config publication. Restore the previous
config if the facts write fails.
Consolidate duplicate updater, backup, setup, and voice helpers. Repair
launcher selection, dependency consumers, download ownership, update feeds,
and native Windows process and file handling.
Verification: 206 changed/prior-failing Python files reported 4630 passed,
one failed, and 330 skipped. Fix the remaining Hindsight fixture boundary.
The final targeted rerun reported 234 passed and two skipped. The store
review regression batch reported 83 passed and one skipped. Desktop
TypeScript checks, 56 selected Electron tests, 24 release tests, and the
removed-import/compatibility guards passed.
This is an integration checkpoint, not full audit acceptance. The complete
Python suite has not run on this fixed tree. Crash-atomic plugin publication,
generation cleanup, receipt correlation, and packaged lifecycle acceptance
remain open in docs/pm-audit-status.md.
2026-09-05 22:36:48 -04:00
ethernet
642579db60
Merge remote-tracking branch 'upstream/main' into ethie/pm-clean
...
# Conflicts:
# .github/actions/detect-changes/action.yml
# .github/workflows/ci.yaml
# .github/workflows/tests-os.yml
# agent/prompt_builder.py
# agent/ssl_verify.py
# agent/subdirectory_hints.py
# apps/desktop/electron/main.ts
# apps/desktop/electron/preload.ts
# apps/desktop/src/app/settings/about-settings.tsx
# apps/desktop/src/global.d.ts
# apps/desktop/src/i18n/ar.ts
# apps/desktop/src/store/updates.ts
# cron/suggestions.py
# gateway/channel_directory.py
# hermes_cli/config.py
# hermes_cli/doctor.py
# hermes_cli/linux_desktop_entry.py
# hermes_cli/main.py
# hermes_cli/web_routers/profiles.py
# hermes_constants.py
# plugins/platforms/photon/adapter.py
# scripts/ci/classify_changes.py
# scripts/install.ps1
# tests/agent/test_relay_runtime_plugins.py
# tests/ci/test_classify_changes.py
# tests/hermes_cli/test_gui_command.py
# tests/hermes_cli/test_linux_desktop_entry.py
# tests/hermes_cli/test_update_fleet_restart_pending.py
# tests/state/test_fts_runtime_rebuild.py
# tests/tools/test_lazy_deps.py
# tests/tools/test_macos_protected_search.py
# tools/browser_tool.py
# tools/file_operations.py
# tools/lazy_deps.py
# tools/mcp_tool.py
# tools/working_diff.py
# uv.lock
2026-09-04 03:18:16 -04:00
ethernet
bd258480d3
fix(tests): make the test suite pass on Windows without regressing Linux
...
Gate the POSIX-only and symlink-only tests with the linux_only and
require_symlinks markers. Fix the real cross-platform bugs:
- file_operations: use the translate_path flag, send snippets as base64, and
use sys.executable (the MS Store python3 stub and the list2cmdline
backslash collapse both broke snippets)
- approval: treat backslash as a Windows path separator, not an escape
- registry, browser_registry, secret_sources, plugins: normalize scope-key case
- checkpoint_manager, plugins_cmd: clear read-only bits before delete
- deadline: make MAX_SAFE_TIMEOUT_S fit the Windows limit
- image_routing, acp, cua_backend, daytona: fix Windows and POSIX paths
- hermes_state: match backslash in the retag LIKE clause
- kanban, disk-cleanup: match drive paths and split command arguments
- scripts: emit host separators through as_posix
207 test files are gated or isolated.
2026-08-31 17:52:30 -04:00
Alex Fournier
31e7237adb
fix(relay): upgrade to 0.8.1
...
Signed-off-by: Alex Fournier <afournier@nvidia.com >
2026-08-28 08:28:21 -04:00
Alex Fournier
31402f630b
fix(relay): complete native plugin cutover
...
Signed-off-by: Alex Fournier <afournier@nvidia.com >
2026-08-19 08:52:03 -07:00
Bryan Bednarski
6ec2c0ba8b
fix(relay): define process-wide profile policy
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:03 -07:00
Bryan Bednarski
3fad83df31
fix(relay): guard native plugin ownership cutover
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:03 -07:00
Bryan Bednarski
ad9fb060c5
fix(relay): clarify opt-in plugin layering
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:02 -07:00
Bryan Bednarski
c86fd74e28
refactor(relay): require 0.7 plugin APIs
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:02 -07:00
Bryan Bednarski
4e34dfc932
refactor(relay): use canonical dynamic plugin config
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:02 -07:00
Bryan Bednarski
e8644e05a3
refactor(relay): remove legacy observability plugin
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:01 -07:00
Bryan Bednarski
0b7288ebcb
fix(relay): require explicit plugin configuration
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:01 -07:00
Bryan Bednarski
e7da915f67
fix(relay): defer subscriber flush to shutdown
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:01 -07:00
Bryan Bednarski
918dd8a265
feat(relay): load standard dynamic plugin records
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:01 -07:00
Bryan Bednarski
88300217c2
feat(relay): activate configured dynamic plugins
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:01 -07:00
Bryan Bednarski
c4ae7f7a3b
feat(relay): initialize discovered plugin components
...
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com >
2026-08-19 08:52:01 -07:00