agent-embassy 1.6.1 → 1.7.1
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/CHANGELOG.md +33 -0
- package/README.md +9 -9
- package/README.zh-CN.md +9 -9
- package/SECURITY.md +34 -77
- package/dist/src/gateway/acp-client.d.ts +117 -0
- package/dist/src/gateway/acp-client.js +382 -0
- package/dist/src/gateway/acp-client.js.map +1 -0
- package/dist/src/gateway/acp-provider.d.ts +65 -0
- package/dist/src/gateway/acp-provider.js +163 -0
- package/dist/src/gateway/acp-provider.js.map +1 -0
- package/dist/src/gateway/claude-helper-protocol.d.ts +3 -1
- package/dist/src/gateway/claude-helper-protocol.js +15 -5
- package/dist/src/gateway/claude-helper-protocol.js.map +1 -1
- package/dist/src/gateway/claude-helper-supervisor.d.ts +3 -1
- package/dist/src/gateway/claude-helper-supervisor.js +16 -2
- package/dist/src/gateway/claude-helper-supervisor.js.map +1 -1
- package/dist/src/gateway/claude-helper.js +4 -3
- package/dist/src/gateway/claude-helper.js.map +1 -1
- package/dist/src/gateway/claude-peer.d.ts +1 -1
- package/dist/src/gateway/claude-peer.js +11 -13
- package/dist/src/gateway/claude-peer.js.map +1 -1
- package/dist/src/gateway/claude-runtime.d.ts +0 -20
- package/dist/src/gateway/claude-runtime.js +6 -127
- package/dist/src/gateway/claude-runtime.js.map +1 -1
- package/dist/src/gateway/cli-copy.d.ts +1 -1
- package/dist/src/gateway/cli-copy.en.d.ts +3 -1
- package/dist/src/gateway/cli-copy.en.js +5 -2
- package/dist/src/gateway/cli-copy.en.js.map +1 -1
- package/dist/src/gateway/cli-copy.js +2 -0
- package/dist/src/gateway/cli-copy.js.map +1 -1
- package/dist/src/gateway/cli-copy.zh-CN.d.ts +3 -1
- package/dist/src/gateway/cli-copy.zh-CN.js +5 -2
- package/dist/src/gateway/cli-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/cli.d.ts +2 -2
- package/dist/src/gateway/cli.js +73 -6
- package/dist/src/gateway/cli.js.map +1 -1
- package/dist/src/gateway/codex-app-server.d.ts +5 -74
- package/dist/src/gateway/codex-app-server.js +9 -599
- package/dist/src/gateway/codex-app-server.js.map +1 -1
- package/dist/src/gateway/codex-doctor.d.ts +33 -0
- package/dist/src/gateway/codex-doctor.js +148 -0
- package/dist/src/gateway/codex-doctor.js.map +1 -0
- package/dist/src/gateway/codex-local-transport.d.ts +13 -26
- package/dist/src/gateway/codex-local-transport.js +31 -76
- package/dist/src/gateway/codex-local-transport.js.map +1 -1
- package/dist/src/gateway/compatibility.d.ts +6 -66
- package/dist/src/gateway/compatibility.js +14 -296
- package/dist/src/gateway/compatibility.js.map +1 -1
- package/dist/src/gateway/config.d.ts +9 -0
- package/dist/src/gateway/config.js +6 -2
- package/dist/src/gateway/config.js.map +1 -1
- package/dist/src/gateway/control.d.ts +16 -1
- package/dist/src/gateway/control.js +128 -59
- package/dist/src/gateway/control.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.d.ts +1 -1
- package/dist/src/gateway/dashboard-copy.en.d.ts +19 -44
- package/dist/src/gateway/dashboard-copy.en.js +42 -67
- package/dist/src/gateway/dashboard-copy.en.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.js +19 -44
- package/dist/src/gateway/dashboard-copy.js.map +1 -1
- package/dist/src/gateway/dashboard-copy.zh-CN.d.ts +19 -44
- package/dist/src/gateway/dashboard-copy.zh-CN.js +42 -67
- package/dist/src/gateway/dashboard-copy.zh-CN.js.map +1 -1
- package/dist/src/gateway/dashboard-model.d.ts +41 -76
- package/dist/src/gateway/dashboard-model.js +167 -257
- package/dist/src/gateway/dashboard-model.js.map +1 -1
- package/dist/src/gateway/dashboard.d.ts +0 -3
- package/dist/src/gateway/dashboard.js +77 -76
- package/dist/src/gateway/dashboard.js.map +1 -1
- package/dist/src/gateway/deepseek-detect.d.ts +7 -6
- package/dist/src/gateway/deepseek-detect.js +31 -115
- package/dist/src/gateway/deepseek-detect.js.map +1 -1
- package/dist/src/gateway/live-dashboard-app/app.js +175 -621
- package/dist/src/gateway/live-dashboard-command.js +2 -4
- package/dist/src/gateway/live-dashboard-command.js.map +1 -1
- package/dist/src/gateway/live-dashboard-http.d.ts +1 -2
- package/dist/src/gateway/live-dashboard-http.js +14 -15
- package/dist/src/gateway/live-dashboard-http.js.map +1 -1
- package/dist/src/gateway/progress-watch-machine.d.ts +1 -4
- package/dist/src/gateway/progress-watch-machine.js.map +1 -1
- package/dist/src/gateway/provenance-envelope.d.ts +3 -2
- package/dist/src/gateway/provenance-envelope.js +44 -11
- package/dist/src/gateway/provenance-envelope.js.map +1 -1
- package/dist/src/gateway/providers.d.ts +19 -85
- package/dist/src/gateway/providers.js +132 -835
- package/dist/src/gateway/providers.js.map +1 -1
- package/dist/src/gateway/server.d.ts +8 -9
- package/dist/src/gateway/server.js +63 -99
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/service.d.ts +48 -51
- package/dist/src/gateway/service.js +748 -540
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/store.d.ts +20 -29
- package/dist/src/gateway/store.js +306 -838
- package/dist/src/gateway/store.js.map +1 -1
- package/dist/src/gateway/types.d.ts +63 -54
- package/dist/src/gateway/types.js +51 -91
- package/dist/src/gateway/types.js.map +1 -1
- package/docs/CONFIGURATION.md +11 -10
- package/docs/CONFIGURATION.zh-CN.md +10 -9
- package/docs/DASHBOARD.md +4 -38
- package/docs/DASHBOARD.zh-CN.md +4 -2
- package/docs/GATEWAY-ARCHITECTURE.md +61 -119
- package/package.json +1 -1
- package/skills/embassy-peer/SKILL.md +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DashboardLocale } from "./locale.js";
|
|
2
2
|
export { assertDashboardLocale, dashboardLocales, isDashboardLocale, type DashboardLocale, } from "./locale.js";
|
|
3
|
-
export declare const dashboardCopyKeys: readonly ["meta.title", "skip", "language.label", "language.en", "language.zhCn", "brand.eyebrow", "brand.title", "brand.subtitle", "snapshot.asOf", "snapshot.static", "overall.ready", "overall.setup", "overall.attention", "exchange.eyebrow", "exchange.title", "exchange.note", "inbound.paired.badge", "inbound.paired.body", "inbound.open.badge", "inbound.open.body", "inbound.noPair.body", "exchange.claude.title", "exchange.claude.note", "exchange.codex.title", "exchange.codex.note", "exchange.pouch.title", "exchange.pouch.empty", "exchange.pouch.queued", "exchange.pouch.oldest", "exchange.count.claude", "exchange.count.codex", "status.ready", "status.busy", "status.waiting", "status.missing", "status.attention", "status.selected", "status.available", "status.notSelectable", "status.enabled", "status.disabled", "next.label", "next.none", "next.discoverClaude", "next.selectClaude", "next.pairRoutes", "next.restoreClaude", "next.repairClaude", "next.registerCodex", "next.restoreCodex", "next.reviewCompatibility", "attention.eyebrow", "attention.title", "attention.count", "attention.countVisible", "attention.projectionOnly", "attention.scope", "severity.info", "severity.warning", "severity.error", "guidance.reobserveClaude.title", "guidance.reobserveClaude.body", "guidance.reobserveClaude.action", "guidance.reobserveCodex.title", "guidance.reobserveCodex.body", "guidance.reobserveCodex.action", "guidance.codexReactivationRequired.title", "guidance.codexReactivationRequired.body", "guidance.codexReactivationRequired.action", "guidance.consentEdgeUnavailable.title", "guidance.consentEdgeUnavailable.body", "guidance.consentEdgeUnavailable.action", "guidance.claudeNotObserved.title", "guidance.claudeNotObserved.body", "guidance.claudeNotObserved.action", "guidance.codexStale.title", "guidance.codexStale.body", "guidance.codexStale.action", "guidance.codexAppReconnectRequired.title", "guidance.codexAppReconnectRequired.body", "guidance.codexAppReconnectRequired.action", "guidance.connectorOffline.title", "guidance.connectorOffline.body", "guidance.connectorOffline.action", "guidance.routeStale.title", "guidance.routeStale.body", "guidance.routeStale.action", "guidance.queueStalled.title", "guidance.queueStalled.body", "guidance.queueStalled.action", "guidance.queueStalled.busy", "guidance.recipientWaitingInput.title", "guidance.recipientWaitingInput.body", "guidance.recipientWaitingInput.action", "guidance.unconfirmed.title", "guidance.unconfirmed.body", "guidance.unconfirmed.action", "guidance.degraded.title", "guidance.degraded.body", "guidance.degraded.action", "guidance.providerIncompatible.title", "guidance.providerIncompatible.body", "guidance.providerIncompatible.action", "guidance.generic.title", "guidance.generic.body", "guidance.generic.action", "guidance.codexSuccessionBusy.title", "guidance.codexSuccessionBusy.body", "guidance.codexSuccessionBusy.action", "guidance.codexSuccessionRecovery.title", "guidance.codexSuccessionRecovery.body", "guidance.codexSuccessionRecovery.action", "guidance.progressWatch.title", "guidance.progressWatch.body", "guidance.progressWatch.action", "guidance.registryEmpty.title", "guidance.registryEmpty.body", "guidance.registryEmpty.action", "guidance.registryRejected.title", "guidance.registryRejected.body", "guidance.registryRejected.action", "transit.eyebrow", "transit.title", "transit.queued", "transit.active", "transit.oldest", "transit.empty", "transit.unavailable", "count.atLeast", "watches.eyebrow", "watches.title", "watches.note", "watches.empty", "watches.column.conversation", "watches.column.parties", "watches.column.quietFor", "watches.column.nextAction", "watches.column.nudges", "watches.history.title", "watches.event.opened", "watches.event.replaced", "watches.event.settled", "watches.actor.owner", "watches.actor.worker", "watches.actor.operator", "watches.actor.gateway", "watches.actor.unknown", "watches.reason.done", "watches.reason.untracked", "watches.reason.idleTimeout", "watches.reason.pairRemoved", "watches.reason.endpointRetired", "watches.reason.trackingDisabled", "watches.reason.legacyUpgrade", "watches.reason.legacyDone", "activity.eyebrow", "activity.title", "activity.note", "activity.empty", "activity.column.updated", "activity.column.route", "activity.column.id", "activity.column.result", "activity.column.elapsed", "activity.column.size", "activity.column.history", "activity.history.one", "activity.history.many", "activity.meaning.delivered", "activity.meaning.delivered.codexToClaude", "activity.meaning.delivered.claudeToCodex", "activity.meaning.unconfirmed", "activity.meaning.ambiguous", "activity.meaning.other", "activity.meaning.queued", "activity.meaning.dispatching", "activity.meaning.transportWritten", "activity.meaning.held", "activity.meaning.duplicate", "activity.meaning.rejected", "activity.meaning.senderNotPaired", "activity.meaning.failed", "activity.meaning.expired", "activity.meaning.cancelled", "activity.meaning.abandoned.controllerRestarted", "activity.meaning.abandoned.transientBody", "activity.meaning.abandoned.routeTerminated", "activity.meaning.abandoned.generic", "direction.claudeToCodex", "direction.codexToClaude", "delivery.queued", "delivery.duplicate", "delivery.dispatching", "delivery.transportWritten", "delivery.held", "delivery.delivered", "delivery.unconfirmed", "delivery.failed", "delivery.ambiguous", "delivery.expired", "delivery.cancelled", "delivery.abandoned", "delivery.rejected", "sessions.eyebrow", "sessions.title", "sessions.note", "sessions.peers.title", "sessions.peers.empty", "sessions.peers.caption", "sessions.routes.title", "sessions.routes.empty", "sessions.routes.caption", "column.alias", "column.host", "column.provider", "column.state", "column.compatibility", "column.selection", "column.validation", "status.validated", "status.validationRejected", "column.queue", "column.observed", "column.issue", "diagnostics.title", "diagnostics.note", "diagnostics.connectors", "diagnostics.connectors.empty", "diagnostics.connectors.caption", "diagnostics.compatibilityChecks", "diagnostics.compatibilityChecks.empty", "diagnostics.compatibilityChecks.caption", "diagnostics.version", "diagnostics.testedVersion", "diagnostics.supportedMajor", "diagnostics.tier", "diagnostics.checkedAt", "diagnostics.failure", "compatibilityTier.certified", "compatibilityTier.schema_attested", "compatibilityTier.schema_attested.writesCovered", "compatibilityTier.incompatible", "compatibilityTier.notDetected", "diagnostics.registry.title", "diagnostics.registry.entriesScanned", "diagnostics.registry.parseableRecords", "diagnostics.registry.rejected", "diagnostics.registry.rejectedNone", "diagnostics.registry.rejectedCodesOmitted", "diagnostics.registry.state.parseableRecordObserved", "diagnostics.registry.state.emptySinceBoot", "diagnostics.registry.state.noParseableRecordSinceBoot", "diagnostics.protocol", "diagnostics.health", "diagnostics.accounting", "diagnostics.accepted", "diagnostics.duplicates", "diagnostics.delivered", "diagnostics.unconfirmed", "diagnostics.ambiguous", "diagnostics.failed", "diagnostics.expired", "diagnostics.cancelled", "diagnostics.abandoned", "diagnostics.rejected", "diagnostics.bytesAccepted", "diagnostics.queuedBytes", "diagnostics.omissions", "diagnostics.omissions.none", "diagnostics.omissions.connectors", "diagnostics.omissions.peers", "diagnostics.omissions.routes", "diagnostics.omissions.pairs", "diagnostics.omissions.progressWatches", "diagnostics.omissions.upstreamProgressWatchEvents", "diagnostics.omissions.progressWatchEvents", "diagnostics.omissions.upstreamMessageEvents", "diagnostics.omissions.messageGroups", "diagnostics.omissions.messageEvents", "diagnostics.omissions.upstreamAlerts", "diagnostics.omissions.attentionItems", "diagnostics.omissions.upstreamActivityEvents", "diagnostics.omissions.activityEvents", "provider.claude", "provider.codex", "provider.deepseek", "health.offline", "health.connecting", "health.healthy", "health.degraded", "health.incompatible", "health.meaning.healthy", "health.meaning.connecting", "health.meaning.degraded", "health.meaning.offline", "health.meaning.incompatible", "compatibility.unknown", "compatibility.compatible", "compatibility.incompatible", "compatibility.expired", "compatibility.meaning.compatible", "compatibility.meaning.unknown", "compatibility.meaning.expired", "compatibility.meaning.incompatible", "route.stale", "route.idle", "route.busy", "route.awaitingApproval", "route.offline", "route.incompatible", "route.disabled", "route.meaning.idle", "route.meaning.busy", "route.meaning.awaitingApproval", "route.meaning.stale", "route.meaning.offline", "route.meaning.incompatible", "route.meaning.disabled", "peer.idle", "peer.busy", "peer.awaitingApproval", "peer.offline", "peer.incompatible", "peer.meaning.idle", "peer.meaning.busy", "peer.meaning.awaitingApproval", "peer.meaning.offline", "peer.meaning.incompatible", "peer.reason.aliasCollision", "peer.reason.sessionCollision", "peer.reason.discoveryIncomplete", "peer.reason.incompatible", "peer.reason.offline", "time.atSnapshot", "time.beforeSnapshot", "time.afterSnapshot", "time.unavailable", "time.ago", "live.title", "live.noscript", "live.label", "live.mastheadSubtitle", "live.readonlyFooter", "live.action.authorityLabel", "live.action.authorityBody", "live.action.sectionTitle", "live.action.scope", "live.action.pair", "live.action.unpair", "live.action.removeStaleCodexRegistration", "live.action.refresh", "live.action.confirm", "live.action.cancel", "live.action.pending", "live.action.succeeded", "live.action.failed", "live.action.requiresConnected", "live.connection.connecting", "live.connection.connected", "live.connection.unavailable", "live.connection.capacity", "live.connection.disconnected", "live.connection.fatal", "live.connection.paused", "live.connection.stopped", "live.control.pause", "live.control.reconnect", "live.control.refresh", "live.filter.placeholder", "live.metric.queued", "live.metric.active", "live.attention.empty", "live.activity.empty", "live.sessions.title", "live.diagnostics.title", "live.metric.revision", "live.stream.reset", "live.http.badRequest", "live.http.forbidden", "live.http.notFound", "live.http.methodNotAllowed", "live.http.bodyTooLarge", "live.http.targetTooLarge", "live.http.unsupportedMediaType", "live.http.tooManyStreams", "live.http.headersTooLarge", "live.http.snapshotUnavailable", "live.http.requestFailed", "live.http.starting", "app.tab.overview", "app.tab.deliveries", "app.tab.routes", "app.tab.activity", "app.tab.diagnostics", "app.search.label", "app.search.placeholder", "app.asOf", "app.stale", "app.missedFrames", "app.lowerBound", "app.copy", "app.copied", "app.copyFailed", "app.staleQuiet", "app.notLanded.title", "app.notLanded.body", "app.show", "app.hide", "app.overview.statusStrip", "app.overview.broker", "app.overview.claudeConn", "app.overview.codexConn", "app.overview.compat", "app.overview.connectorMissing", "app.overview.node.claude.title", "app.overview.node.claude.sub", "app.overview.node.codex.title", "app.overview.node.codex.sub", "app.overview.count.codex", "app.overview.noPair.title", "app.overview.noPair.body", "app.overview.degradedEdge", "app.overview.degradedEdges", "app.overview.queueC2x", "app.overview.queueX2c", "app.overview.depth", "app.overview.oldest", "app.overview.pulse.title", "app.overview.pulse.caption", "app.overview.pulse.empty", "app.overview.viewIn", "app.deliveries.title", "app.deliveries.caption", "app.deliveries.dir.label", "app.deliveries.dir.all", "app.deliveries.dir.codexToClaude", "app.deliveries.view.label", "app.deliveries.view.byRoute", "app.deliveries.view.flat", "app.deliveries.state.all", "app.deliveries.search", "app.deliveries.noMatch", "app.deliveries.pickRow", "app.deliveries.lifecycle", "app.deliveries.frames", "app.deliveries.noFrames", "app.deliveries.raw", "app.deliveries.hideRaw", "app.deliveries.bodyLabel", "app.deliveries.bodiesNote", "app.deliveries.noConv", "app.deliveries.eventsTruncated", "app.deliveries.earliestRetained", "app.routes.topology", "app.routes.candidates", "app.routes.claudeSessions", "app.routes.codexRoutes", "app.routes.pairs", "app.routes.pairDescription", "app.routes.pairState.degraded", "app.routes.pairState.unavailable", "app.routes.pairDegradedReason", "app.routes.pairUnavailableReason", "app.routes.pairSummary", "app.routes.unpairedSummary", "app.routes.pairCmd.consequence", "app.routes.unpairCmd.consequence", "app.routes.selectCmd.title", "app.routes.selectCmd.consequence", "app.routes.selectCmd.consequenceOpen", "app.routes.unselectCmd.consequence", "app.routes.unselectCmd.consequenceOpen", "app.routes.refreshCmd", "app.routes.removeStaleCodex.consequence", "app.routes.monitorOnlyReason", "app.routes.noPeers", "app.routes.noCodex", "app.routes.successions", "app.routes.successions.empty", "app.routes.successions.note", "app.routes.detail.absent", "app.routes.expandDetails", "app.routes.collapseDetails", "app.routes.queueDepth", "app.routes.counters", "app.routes.registered", "app.routes.monitorOnly", "app.routes.registerHint", "app.routes.noPairInline", "app.omitted.pairs", "app.activity.title", "app.activity.kinds.all", "app.activity.kinds.delivery", "app.activity.kinds.operation", "app.activity.kinds.alert", "app.activity.operation.discoveryRefreshed", "app.activity.operation.claudeSelected", "app.activity.operation.claudeUnselected", "app.activity.operation.codexRegistered", "app.activity.operation.codexSucceeded", "app.activity.operation.codexUnregistered", "app.activity.operation.routesPaired", "app.activity.operation.routesUnpaired", "app.activity.operation.watchEnded", "app.activity.operation.endpointRefreshed", "app.activity.operation.codexOrphanRemoved", "app.activity.operation.operator", "app.activity.operation.automatic", "app.activity.operation.accepted", "app.activity.operation.rejected", "app.activity.limited", "app.activity.empty", "app.diag.versions", "app.diag.versions.caption", "app.diag.versions.rangeAbsent", "app.diag.col.provider", "app.diag.col.host", "app.diag.col.protocol", "app.diag.col.version", "app.diag.col.compat", "app.diag.providerCompatibility.title", "app.diag.lease.title", "app.diag.lease.absent", "app.diag.limits", "app.diag.limits.hint", "app.diag.deadline.title", "app.diag.deadline.body", "app.diag.deadline.retained", "app.diag.deadline.bucket.under1m", "app.diag.deadline.bucket.1to5m", "app.diag.deadline.bucket.5to15m", "app.diag.deadline.bucket.15to60m", "app.diag.deadline.bucket.over60m", "app.diag.queue.title", "app.diag.queue.body", "app.diag.bytes.title", "app.diag.bytes.body", "app.diag.steering.title", "app.diag.steering.absent", "app.diag.deliveryNotices.title", "app.diag.deliveryNotices.note", "app.diag.editable.title", "app.diag.editable.note", "app.diag.counters", "app.diag.counters.caption", "app.diag.omissions", "app.diag.omissions.caption", "footer"];
|
|
3
|
+
export declare const dashboardCopyKeys: readonly ["meta.title", "skip", "language.label", "language.en", "language.zhCn", "brand.eyebrow", "brand.title", "brand.subtitle", "snapshot.asOf", "snapshot.static", "overall.ready", "overall.setup", "overall.attention", "exchange.eyebrow", "exchange.title", "exchange.note", "inbound.paired.badge", "inbound.paired.body", "inbound.open.badge", "inbound.open.body", "inbound.noPair.body", "exchange.claude.title", "exchange.claude.note", "exchange.codex.title", "exchange.codex.note", "exchange.provider.note", "exchange.pouch.title", "exchange.pouch.empty", "exchange.pouch.queued", "exchange.pouch.oldest", "exchange.count.claude", "exchange.count.codex", "app.overview.count.provider", "status.ready", "status.busy", "status.waiting", "status.missing", "status.attention", "status.selected", "status.available", "status.notSelectable", "status.enabled", "status.disabled", "next.label", "next.none", "next.discoverClaude", "next.selectClaude", "next.pairRoutes", "next.restoreClaude", "next.repairClaude", "next.registerCodex", "next.restoreCodex", "attention.eyebrow", "attention.title", "attention.count", "attention.countVisible", "attention.projectionOnly", "attention.scope", "severity.info", "severity.warning", "severity.error", "guidance.reobserveClaude.title", "guidance.reobserveClaude.body", "guidance.reobserveClaude.action", "guidance.reobserveCodex.title", "guidance.reobserveCodex.body", "guidance.reobserveCodex.action", "guidance.codexReactivationRequired.title", "guidance.codexReactivationRequired.body", "guidance.codexReactivationRequired.action", "guidance.consentEdgeUnavailable.title", "guidance.consentEdgeUnavailable.body", "guidance.consentEdgeUnavailable.action", "guidance.claudeNotObserved.title", "guidance.claudeNotObserved.body", "guidance.claudeNotObserved.action", "guidance.codexStale.title", "guidance.codexStale.body", "guidance.codexStale.action", "guidance.codexAppReconnectRequired.title", "guidance.codexAppReconnectRequired.body", "guidance.codexAppReconnectRequired.action", "guidance.connectorOffline.title", "guidance.connectorOffline.body", "guidance.connectorOffline.action", "guidance.routeStale.title", "guidance.routeStale.body", "guidance.routeStale.action", "guidance.queueStalled.title", "guidance.queueStalled.body", "guidance.queueStalled.action", "guidance.queueStalled.busy", "guidance.recipientWaitingInput.title", "guidance.recipientWaitingInput.body", "guidance.recipientWaitingInput.action", "guidance.unconfirmed.title", "guidance.unconfirmed.body", "guidance.unconfirmed.action", "guidance.degraded.title", "guidance.degraded.body", "guidance.degraded.action", "guidance.generic.title", "guidance.generic.body", "guidance.generic.action", "guidance.codexSuccessionBusy.title", "guidance.codexSuccessionBusy.body", "guidance.codexSuccessionBusy.action", "guidance.codexSuccessionRecovery.title", "guidance.codexSuccessionRecovery.body", "guidance.codexSuccessionRecovery.action", "guidance.progressWatch.title", "guidance.progressWatch.body", "guidance.progressWatch.action", "guidance.registryEmpty.title", "guidance.registryEmpty.body", "guidance.registryEmpty.action", "guidance.registryRejected.title", "guidance.registryRejected.body", "guidance.registryRejected.action", "transit.eyebrow", "transit.title", "transit.queued", "transit.active", "transit.oldest", "transit.empty", "transit.unavailable", "count.atLeast", "watches.eyebrow", "watches.title", "watches.note", "watches.empty", "watches.column.conversation", "watches.column.parties", "watches.column.quietFor", "watches.column.nextAction", "watches.column.nudges", "watches.history.title", "watches.event.opened", "watches.event.replaced", "watches.event.settled", "watches.actor.owner", "watches.actor.worker", "watches.actor.operator", "watches.actor.gateway", "watches.actor.unknown", "watches.reason.done", "watches.reason.untracked", "watches.reason.idleTimeout", "watches.reason.pairRemoved", "watches.reason.endpointRetired", "watches.reason.trackingDisabled", "activity.eyebrow", "activity.title", "activity.note", "activity.empty", "activity.column.updated", "activity.column.route", "activity.column.id", "activity.column.result", "activity.column.elapsed", "activity.column.size", "activity.column.history", "activity.history.one", "activity.history.many", "activity.meaning.delivered", "activity.meaning.delivered.toClaude", "activity.meaning.delivered.toCodex", "activity.meaning.delivered.toDeepSeek", "activity.meaning.delivered.toGrok", "activity.meaning.unconfirmed", "activity.meaning.ambiguous", "activity.meaning.other", "activity.meaning.queued", "activity.meaning.dispatching", "activity.meaning.transportWritten", "activity.meaning.held", "activity.meaning.duplicate", "activity.meaning.rejected", "activity.meaning.senderNotPaired", "activity.meaning.failed", "activity.meaning.expired", "activity.meaning.cancelled", "activity.meaning.abandoned.controllerRestarted", "activity.meaning.abandoned.transientBody", "activity.meaning.abandoned.routeTerminated", "activity.meaning.abandoned.generic", "direction.claudeToCodex", "direction.codexToClaude", "delivery.queued", "delivery.duplicate", "delivery.dispatching", "delivery.transportWritten", "delivery.held", "delivery.delivered", "delivery.unconfirmed", "delivery.failed", "delivery.ambiguous", "delivery.expired", "delivery.cancelled", "delivery.abandoned", "delivery.rejected", "sessions.eyebrow", "sessions.title", "sessions.note", "sessions.peers.title", "sessions.peers.empty", "sessions.peers.caption", "sessions.routes.title", "sessions.routes.empty", "sessions.routes.caption", "column.alias", "column.host", "column.provider", "column.state", "column.selection", "column.validation", "status.validated", "status.validationRejected", "column.queue", "column.observed", "column.issue", "diagnostics.title", "diagnostics.note", "diagnostics.connectors", "diagnostics.connectors.empty", "diagnostics.connectors.caption", "diagnostics.codexDoctor.split_brain", "diagnostics.codexDoctor.orphaned", "diagnostics.codexDoctor.attached", "diagnostics.codexDoctor.observation_stale", "diagnostics.codexDoctor.unknown", "diagnostics.registry.title", "diagnostics.registry.entriesScanned", "diagnostics.registry.parseableRecords", "diagnostics.registry.rejected", "diagnostics.registry.rejectedNone", "diagnostics.registry.rejectedCodesOmitted", "diagnostics.registry.state.parseableRecordObserved", "diagnostics.registry.state.emptySinceBoot", "diagnostics.registry.state.noParseableRecordSinceBoot", "diagnostics.protocol", "diagnostics.health", "diagnostics.accounting", "diagnostics.accepted", "diagnostics.duplicates", "diagnostics.delivered", "diagnostics.unconfirmed", "diagnostics.ambiguous", "diagnostics.failed", "diagnostics.expired", "diagnostics.cancelled", "diagnostics.abandoned", "diagnostics.rejected", "diagnostics.bytesAccepted", "diagnostics.queuedBytes", "diagnostics.omissions", "diagnostics.omissions.none", "diagnostics.omissions.connectors", "diagnostics.omissions.peers", "diagnostics.omissions.routes", "diagnostics.omissions.consentEdges", "diagnostics.omissions.progressWatches", "diagnostics.omissions.upstreamProgressWatchEvents", "diagnostics.omissions.progressWatchEvents", "diagnostics.omissions.upstreamMessageEvents", "diagnostics.omissions.messageGroups", "diagnostics.omissions.messageEvents", "diagnostics.omissions.upstreamAlerts", "diagnostics.omissions.attentionItems", "diagnostics.omissions.upstreamActivityEvents", "diagnostics.omissions.activityEvents", "provider.claude", "provider.codex", "provider.deepseek", "provider.grok", "health.offline", "health.connecting", "health.healthy", "health.degraded", "health.meaning.healthy", "health.meaning.connecting", "health.meaning.degraded", "health.meaning.offline", "route.stale", "route.idle", "route.busy", "route.awaitingApproval", "route.offline", "route.disabled", "route.meaning.idle", "route.meaning.busy", "route.meaning.awaitingApproval", "route.meaning.stale", "route.meaning.offline", "route.meaning.disabled", "peer.idle", "peer.busy", "peer.awaitingApproval", "peer.offline", "peer.meaning.idle", "peer.meaning.busy", "peer.meaning.awaitingApproval", "peer.meaning.offline", "peer.reason.aliasCollision", "peer.reason.sessionCollision", "peer.reason.discoveryIncomplete", "peer.reason.offline", "time.atSnapshot", "time.beforeSnapshot", "time.afterSnapshot", "time.unavailable", "time.ago", "live.title", "live.noscript", "live.label", "live.mastheadSubtitle", "live.readonlyFooter", "live.action.authorityLabel", "live.action.authorityBody", "live.action.sectionTitle", "live.action.scope", "live.action.pair", "live.action.unpair", "live.action.removeStaleCodexRegistration", "live.action.refresh", "live.action.confirm", "live.action.cancel", "live.action.pending", "live.action.succeeded", "live.action.failed", "live.action.requiresConnected", "live.connection.connecting", "live.connection.connected", "live.connection.unavailable", "live.connection.capacity", "live.connection.disconnected", "live.connection.fatal", "live.connection.paused", "live.connection.stopped", "live.control.pause", "live.control.reconnect", "live.control.refresh", "live.filter.placeholder", "live.metric.queued", "live.metric.active", "live.attention.empty", "live.activity.empty", "live.sessions.title", "live.diagnostics.title", "live.metric.revision", "live.stream.reset", "live.http.badRequest", "live.http.forbidden", "live.http.notFound", "live.http.methodNotAllowed", "live.http.bodyTooLarge", "live.http.targetTooLarge", "live.http.unsupportedMediaType", "live.http.tooManyStreams", "live.http.headersTooLarge", "live.http.snapshotUnavailable", "live.http.requestFailed", "live.http.starting", "app.tab.overview", "app.tab.deliveries", "app.tab.routes", "app.tab.activity", "app.tab.diagnostics", "app.search.label", "app.search.placeholder", "app.asOf", "app.stale", "app.missedFrames", "app.lowerBound", "app.copy", "app.copied", "app.copyFailed", "app.staleQuiet", "app.notLanded.title", "app.notLanded.body", "app.show", "app.hide", "app.overview.statusStrip", "app.overview.broker", "app.overview.claudeConn", "app.overview.codexConn", "app.overview.connectorMissing", "app.overview.node.claude.title", "app.overview.node.claude.sub", "app.overview.node.codex.title", "app.overview.node.codex.sub", "app.overview.count.codex", "app.overview.noPair.title", "app.overview.noPair.body", "app.overview.degradedEdge", "app.overview.degradedEdges", "app.overview.queueC2x", "app.overview.queueX2c", "app.overview.depth", "app.overview.oldest", "app.overview.pulse.title", "app.overview.pulse.caption", "app.overview.pulse.empty", "app.overview.viewIn", "app.deliveries.title", "app.deliveries.caption", "app.deliveries.dir.label", "app.deliveries.dir.all", "app.deliveries.dir.codexToClaude", "app.deliveries.fromProvider", "app.deliveries.toProvider", "app.deliveries.providerAll", "app.deliveries.view.label", "app.deliveries.view.byRoute", "app.deliveries.view.flat", "app.deliveries.state.all", "app.deliveries.search", "app.deliveries.noMatch", "app.deliveries.pickRow", "app.deliveries.lifecycle", "app.deliveries.frames", "app.deliveries.noFrames", "app.deliveries.raw", "app.deliveries.hideRaw", "app.deliveries.bodyLabel", "app.deliveries.bodiesNote", "app.deliveries.noConv", "app.deliveries.eventsTruncated", "app.deliveries.earliestRetained", "app.routes.topology", "app.routes.candidates", "app.routes.claudeSessions", "app.routes.codexRoutes", "app.routes.pairs", "app.routes.pairDescription", "app.routes.unpairedProvider", "app.routes.consentEndpoint", "app.routes.consentEdge", "app.routes.pairState.degraded", "app.routes.pairState.unavailable", "app.routes.pairDegradedReason", "app.routes.pairUnavailableReason", "app.routes.pairSummary", "app.routes.unpairedSummary", "app.routes.pairCmd.consequence", "app.routes.unpairCmd.consequence", "app.routes.selectCmd.title", "app.routes.selectCmd.consequence", "app.routes.selectCmd.consequenceOpen", "app.routes.unselectCmd.consequence", "app.routes.unselectCmd.consequenceOpen", "app.routes.refreshCmd", "app.routes.removeStaleCodex.consequence", "app.routes.noPeers", "app.routes.noCodex", "app.routes.successions", "app.routes.successions.empty", "app.routes.successions.note", "app.routes.detail.absent", "app.routes.expandDetails", "app.routes.collapseDetails", "app.routes.queueDepth", "app.routes.counters", "app.routes.registered", "app.routes.registerHint", "app.routes.noPairInline", "app.omitted.pairs", "app.activity.title", "app.activity.kinds.all", "app.activity.kinds.delivery", "app.activity.kinds.operation", "app.activity.kinds.alert", "app.activity.operation.discoveryRefreshed", "app.activity.operation.claudeSelected", "app.activity.operation.claudeUnselected", "app.activity.operation.codexRegistered", "app.activity.operation.codexSucceeded", "app.activity.operation.codexUnregistered", "app.activity.operation.routesPaired", "app.activity.operation.routesUnpaired", "app.activity.operation.watchEnded", "app.activity.operation.endpointRefreshed", "app.activity.operation.codexOrphanRemoved", "app.activity.operation.operator", "app.activity.operation.automatic", "app.activity.operation.accepted", "app.activity.operation.rejected", "app.activity.limited", "app.activity.empty", "app.diag.versions", "app.diag.versions.caption", "app.diag.versions.rangeAbsent", "app.diag.col.provider", "app.diag.col.host", "app.diag.col.protocol", "app.diag.col.version", "app.diag.lease.title", "app.diag.lease.absent", "app.diag.limits", "app.diag.limits.hint", "app.diag.deadline.title", "app.diag.deadline.body", "app.diag.deadline.retained", "app.diag.deadline.bucket.under1m", "app.diag.deadline.bucket.1to5m", "app.diag.deadline.bucket.5to15m", "app.diag.deadline.bucket.15to60m", "app.diag.deadline.bucket.over60m", "app.diag.queue.title", "app.diag.queue.body", "app.diag.bytes.title", "app.diag.bytes.body", "app.diag.steering.title", "app.diag.steering.absent", "app.diag.deliveryNotices.title", "app.diag.deliveryNotices.note", "app.diag.editable.title", "app.diag.editable.note", "app.diag.counters", "app.diag.counters.caption", "app.diag.omissions", "app.diag.omissions.caption", "footer"];
|
|
4
4
|
export type DashboardCopyKey = (typeof dashboardCopyKeys)[number];
|
|
5
5
|
export type DashboardCopy = Readonly<Record<DashboardCopyKey, string>>;
|
|
6
6
|
export declare function getDashboardCopy(locale: DashboardLocale): DashboardCopy;
|
|
@@ -24,12 +24,14 @@ export declare const dashboardCopyEn: {
|
|
|
24
24
|
"exchange.claude.note": string;
|
|
25
25
|
"exchange.codex.title": string;
|
|
26
26
|
"exchange.codex.note": string;
|
|
27
|
+
"exchange.provider.note": string;
|
|
27
28
|
"exchange.pouch.title": string;
|
|
28
29
|
"exchange.pouch.empty": string;
|
|
29
30
|
"exchange.pouch.queued": string;
|
|
30
31
|
"exchange.pouch.oldest": string;
|
|
31
32
|
"exchange.count.claude": string;
|
|
32
33
|
"exchange.count.codex": string;
|
|
34
|
+
"app.overview.count.provider": string;
|
|
33
35
|
"status.ready": string;
|
|
34
36
|
"status.busy": string;
|
|
35
37
|
"status.waiting": string;
|
|
@@ -49,7 +51,6 @@ export declare const dashboardCopyEn: {
|
|
|
49
51
|
"next.repairClaude": string;
|
|
50
52
|
"next.registerCodex": string;
|
|
51
53
|
"next.restoreCodex": string;
|
|
52
|
-
"next.reviewCompatibility": string;
|
|
53
54
|
"attention.eyebrow": string;
|
|
54
55
|
"attention.title": string;
|
|
55
56
|
"attention.count": string;
|
|
@@ -99,9 +100,6 @@ export declare const dashboardCopyEn: {
|
|
|
99
100
|
"guidance.degraded.title": string;
|
|
100
101
|
"guidance.degraded.body": string;
|
|
101
102
|
"guidance.degraded.action": string;
|
|
102
|
-
"guidance.providerIncompatible.title": string;
|
|
103
|
-
"guidance.providerIncompatible.body": string;
|
|
104
|
-
"guidance.providerIncompatible.action": string;
|
|
105
103
|
"guidance.generic.title": string;
|
|
106
104
|
"guidance.generic.body": string;
|
|
107
105
|
"guidance.generic.action": string;
|
|
@@ -152,8 +150,6 @@ export declare const dashboardCopyEn: {
|
|
|
152
150
|
"watches.reason.pairRemoved": string;
|
|
153
151
|
"watches.reason.endpointRetired": string;
|
|
154
152
|
"watches.reason.trackingDisabled": string;
|
|
155
|
-
"watches.reason.legacyUpgrade": string;
|
|
156
|
-
"watches.reason.legacyDone": string;
|
|
157
153
|
"activity.eyebrow": string;
|
|
158
154
|
"activity.title": string;
|
|
159
155
|
"activity.note": string;
|
|
@@ -168,8 +164,10 @@ export declare const dashboardCopyEn: {
|
|
|
168
164
|
"activity.history.one": string;
|
|
169
165
|
"activity.history.many": string;
|
|
170
166
|
"activity.meaning.delivered": string;
|
|
171
|
-
"activity.meaning.delivered.
|
|
172
|
-
"activity.meaning.delivered.
|
|
167
|
+
"activity.meaning.delivered.toClaude": string;
|
|
168
|
+
"activity.meaning.delivered.toCodex": string;
|
|
169
|
+
"activity.meaning.delivered.toDeepSeek": string;
|
|
170
|
+
"activity.meaning.delivered.toGrok": string;
|
|
173
171
|
"activity.meaning.unconfirmed": string;
|
|
174
172
|
"activity.meaning.ambiguous": string;
|
|
175
173
|
"activity.meaning.other": string;
|
|
@@ -215,7 +213,6 @@ export declare const dashboardCopyEn: {
|
|
|
215
213
|
"column.host": string;
|
|
216
214
|
"column.provider": string;
|
|
217
215
|
"column.state": string;
|
|
218
|
-
"column.compatibility": string;
|
|
219
216
|
"column.selection": string;
|
|
220
217
|
"column.validation": string;
|
|
221
218
|
"status.validated": string;
|
|
@@ -228,20 +225,11 @@ export declare const dashboardCopyEn: {
|
|
|
228
225
|
"diagnostics.connectors": string;
|
|
229
226
|
"diagnostics.connectors.empty": string;
|
|
230
227
|
"diagnostics.connectors.caption": string;
|
|
231
|
-
"diagnostics.
|
|
232
|
-
"diagnostics.
|
|
233
|
-
"diagnostics.
|
|
234
|
-
"diagnostics.
|
|
235
|
-
"diagnostics.
|
|
236
|
-
"diagnostics.supportedMajor": string;
|
|
237
|
-
"diagnostics.tier": string;
|
|
238
|
-
"diagnostics.checkedAt": string;
|
|
239
|
-
"diagnostics.failure": string;
|
|
240
|
-
"compatibilityTier.certified": string;
|
|
241
|
-
"compatibilityTier.schema_attested": string;
|
|
242
|
-
"compatibilityTier.schema_attested.writesCovered": string;
|
|
243
|
-
"compatibilityTier.incompatible": string;
|
|
244
|
-
"compatibilityTier.notDetected": string;
|
|
228
|
+
"diagnostics.codexDoctor.split_brain": string;
|
|
229
|
+
"diagnostics.codexDoctor.orphaned": string;
|
|
230
|
+
"diagnostics.codexDoctor.attached": string;
|
|
231
|
+
"diagnostics.codexDoctor.observation_stale": string;
|
|
232
|
+
"diagnostics.codexDoctor.unknown": string;
|
|
245
233
|
"diagnostics.registry.title": string;
|
|
246
234
|
"diagnostics.registry.entriesScanned": string;
|
|
247
235
|
"diagnostics.registry.parseableRecords": string;
|
|
@@ -271,7 +259,7 @@ export declare const dashboardCopyEn: {
|
|
|
271
259
|
"diagnostics.omissions.connectors": string;
|
|
272
260
|
"diagnostics.omissions.peers": string;
|
|
273
261
|
"diagnostics.omissions.routes": string;
|
|
274
|
-
"diagnostics.omissions.
|
|
262
|
+
"diagnostics.omissions.consentEdges": string;
|
|
275
263
|
"diagnostics.omissions.progressWatches": string;
|
|
276
264
|
"diagnostics.omissions.upstreamProgressWatchEvents": string;
|
|
277
265
|
"diagnostics.omissions.progressWatchEvents": string;
|
|
@@ -285,52 +273,38 @@ export declare const dashboardCopyEn: {
|
|
|
285
273
|
"provider.claude": string;
|
|
286
274
|
"provider.codex": string;
|
|
287
275
|
"provider.deepseek": string;
|
|
276
|
+
"provider.grok": string;
|
|
288
277
|
"health.offline": string;
|
|
289
278
|
"health.connecting": string;
|
|
290
279
|
"health.healthy": string;
|
|
291
280
|
"health.degraded": string;
|
|
292
|
-
"health.incompatible": string;
|
|
293
281
|
"health.meaning.healthy": string;
|
|
294
282
|
"health.meaning.connecting": string;
|
|
295
283
|
"health.meaning.degraded": string;
|
|
296
284
|
"health.meaning.offline": string;
|
|
297
|
-
"health.meaning.incompatible": string;
|
|
298
|
-
"compatibility.unknown": string;
|
|
299
|
-
"compatibility.compatible": string;
|
|
300
|
-
"compatibility.incompatible": string;
|
|
301
|
-
"compatibility.expired": string;
|
|
302
|
-
"compatibility.meaning.compatible": string;
|
|
303
|
-
"compatibility.meaning.unknown": string;
|
|
304
|
-
"compatibility.meaning.expired": string;
|
|
305
|
-
"compatibility.meaning.incompatible": string;
|
|
306
285
|
"route.stale": string;
|
|
307
286
|
"route.idle": string;
|
|
308
287
|
"route.busy": string;
|
|
309
288
|
"route.awaitingApproval": string;
|
|
310
289
|
"route.offline": string;
|
|
311
|
-
"route.incompatible": string;
|
|
312
290
|
"route.disabled": string;
|
|
313
291
|
"route.meaning.idle": string;
|
|
314
292
|
"route.meaning.busy": string;
|
|
315
293
|
"route.meaning.awaitingApproval": string;
|
|
316
294
|
"route.meaning.stale": string;
|
|
317
295
|
"route.meaning.offline": string;
|
|
318
|
-
"route.meaning.incompatible": string;
|
|
319
296
|
"route.meaning.disabled": string;
|
|
320
297
|
"peer.idle": string;
|
|
321
298
|
"peer.busy": string;
|
|
322
299
|
"peer.awaitingApproval": string;
|
|
323
300
|
"peer.offline": string;
|
|
324
|
-
"peer.incompatible": string;
|
|
325
301
|
"peer.meaning.idle": string;
|
|
326
302
|
"peer.meaning.busy": string;
|
|
327
303
|
"peer.meaning.awaitingApproval": string;
|
|
328
304
|
"peer.meaning.offline": string;
|
|
329
|
-
"peer.meaning.incompatible": string;
|
|
330
305
|
"peer.reason.aliasCollision": string;
|
|
331
306
|
"peer.reason.sessionCollision": string;
|
|
332
307
|
"peer.reason.discoveryIncomplete": string;
|
|
333
|
-
"peer.reason.incompatible": string;
|
|
334
308
|
"peer.reason.offline": string;
|
|
335
309
|
"time.atSnapshot": string;
|
|
336
310
|
"time.beforeSnapshot": string;
|
|
@@ -411,7 +385,6 @@ export declare const dashboardCopyEn: {
|
|
|
411
385
|
"app.overview.broker": string;
|
|
412
386
|
"app.overview.claudeConn": string;
|
|
413
387
|
"app.overview.codexConn": string;
|
|
414
|
-
"app.overview.compat": string;
|
|
415
388
|
"app.overview.connectorMissing": string;
|
|
416
389
|
"app.overview.node.claude.title": string;
|
|
417
390
|
"app.overview.node.claude.sub": string;
|
|
@@ -435,6 +408,9 @@ export declare const dashboardCopyEn: {
|
|
|
435
408
|
"app.deliveries.dir.label": string;
|
|
436
409
|
"app.deliveries.dir.all": string;
|
|
437
410
|
"app.deliveries.dir.codexToClaude": string;
|
|
411
|
+
"app.deliveries.fromProvider": string;
|
|
412
|
+
"app.deliveries.toProvider": string;
|
|
413
|
+
"app.deliveries.providerAll": string;
|
|
438
414
|
"app.deliveries.view.label": string;
|
|
439
415
|
"app.deliveries.view.byRoute": string;
|
|
440
416
|
"app.deliveries.view.flat": string;
|
|
@@ -458,6 +434,9 @@ export declare const dashboardCopyEn: {
|
|
|
458
434
|
"app.routes.codexRoutes": string;
|
|
459
435
|
"app.routes.pairs": string;
|
|
460
436
|
"app.routes.pairDescription": string;
|
|
437
|
+
"app.routes.unpairedProvider": string;
|
|
438
|
+
"app.routes.consentEndpoint": string;
|
|
439
|
+
"app.routes.consentEdge": string;
|
|
461
440
|
"app.routes.pairState.degraded": string;
|
|
462
441
|
"app.routes.pairState.unavailable": string;
|
|
463
442
|
"app.routes.pairDegradedReason": string;
|
|
@@ -473,7 +452,6 @@ export declare const dashboardCopyEn: {
|
|
|
473
452
|
"app.routes.unselectCmd.consequenceOpen": string;
|
|
474
453
|
"app.routes.refreshCmd": string;
|
|
475
454
|
"app.routes.removeStaleCodex.consequence": string;
|
|
476
|
-
"app.routes.monitorOnlyReason": string;
|
|
477
455
|
"app.routes.noPeers": string;
|
|
478
456
|
"app.routes.noCodex": string;
|
|
479
457
|
"app.routes.successions": string;
|
|
@@ -485,7 +463,6 @@ export declare const dashboardCopyEn: {
|
|
|
485
463
|
"app.routes.queueDepth": string;
|
|
486
464
|
"app.routes.counters": string;
|
|
487
465
|
"app.routes.registered": string;
|
|
488
|
-
"app.routes.monitorOnly": string;
|
|
489
466
|
"app.routes.registerHint": string;
|
|
490
467
|
"app.routes.noPairInline": string;
|
|
491
468
|
"app.omitted.pairs": string;
|
|
@@ -517,9 +494,7 @@ export declare const dashboardCopyEn: {
|
|
|
517
494
|
"app.diag.col.host": string;
|
|
518
495
|
"app.diag.col.protocol": string;
|
|
519
496
|
"app.diag.col.version": string;
|
|
520
|
-
"app.diag.col.compat": string;
|
|
521
497
|
"app.diag.versions.rangeAbsent": string;
|
|
522
|
-
"app.diag.providerCompatibility.title": string;
|
|
523
498
|
"app.diag.lease.title": string;
|
|
524
499
|
"app.diag.lease.absent": string;
|
|
525
500
|
"app.diag.limits": string;
|
|
@@ -6,30 +6,32 @@ export const dashboardCopyEn = {
|
|
|
6
6
|
"language.zhCn": "简体中文",
|
|
7
7
|
"brand.eyebrow": "Local agent exchange",
|
|
8
8
|
"brand.title": "Embassy",
|
|
9
|
-
"brand.subtitle": "A point-in-time, metadata-only register of routes between
|
|
9
|
+
"brand.subtitle": "A point-in-time, metadata-only register of routes between local agent providers.",
|
|
10
10
|
"snapshot.asOf": "Snapshot {time}",
|
|
11
11
|
"snapshot.static": "This file does not update itself. If the broker is not running, run embassy serve first. Then run embassy refresh-dashboard and reload — or run embassy dashboard --live for a streaming view.",
|
|
12
12
|
"overall.ready": "Exchange ready",
|
|
13
13
|
"overall.setup": "Setup incomplete",
|
|
14
14
|
"overall.attention": "Needs attention",
|
|
15
15
|
"exchange.eyebrow": "Exchange board",
|
|
16
|
-
"exchange.title": "
|
|
17
|
-
"exchange.note": "Each consent edge names
|
|
16
|
+
"exchange.title": "Provider routes and explicit boundaries",
|
|
17
|
+
"exchange.note": "Each consent edge names two exact local routes. Current route state and connector health describe what Embassy can observe now.",
|
|
18
18
|
"inbound.paired.badge": "Paired inbound",
|
|
19
|
-
"inbound.paired.body": "Each registered
|
|
19
|
+
"inbound.paired.body": "Each registered endpoint accepts messages only across its explicit consent edges.",
|
|
20
20
|
"inbound.open.badge": "Open inbound",
|
|
21
|
-
"inbound.open.body": "Any live
|
|
21
|
+
"inbound.open.body": "Any live same-user endpoint allowed by the provider may initiate inbound work; explicit sends still require an edge.",
|
|
22
22
|
"inbound.noPair.body": "No consent edge exists; paired-mode endpoints refuse unpaired senders.",
|
|
23
23
|
"exchange.claude.title": "Claude sessions",
|
|
24
24
|
"exchange.claude.note": "Consent-edge endpoints",
|
|
25
25
|
"exchange.codex.title": "Codex tasks",
|
|
26
26
|
"exchange.codex.note": "Consent-edge endpoints",
|
|
27
|
+
"exchange.provider.note": "Consent-edge endpoints",
|
|
27
28
|
"exchange.pouch.title": "Local pouch",
|
|
28
29
|
"exchange.pouch.empty": "Queue clear",
|
|
29
30
|
"exchange.pouch.queued": "{count} queued",
|
|
30
31
|
"exchange.pouch.oldest": "Oldest wait {age}",
|
|
31
32
|
"exchange.count.claude": "{ready} selected · {selectable} selectable · {total} discovered",
|
|
32
33
|
"exchange.count.codex": "{ready} ready · {total} registered",
|
|
34
|
+
"app.overview.count.provider": "{ready} ready · {total} registered",
|
|
33
35
|
"status.ready": "Ready",
|
|
34
36
|
"status.busy": "Busy",
|
|
35
37
|
"status.waiting": "Waiting",
|
|
@@ -44,12 +46,11 @@ export const dashboardCopyEn = {
|
|
|
44
46
|
"next.none": "No action needed.",
|
|
45
47
|
"next.discoverClaude": "Start or keep a Claude Code session running, then run embassy refresh-dashboard.",
|
|
46
48
|
"next.selectClaude": "Run embassy select-claude --alias <alias> to choose a visible session explicitly.",
|
|
47
|
-
"next.pairRoutes": "Create an explicit edge with embassy pair --
|
|
49
|
+
"next.pairRoutes": "Create an explicit edge with embassy pair --from <alias> --to <alias>.",
|
|
48
50
|
"next.restoreClaude": "Refresh discovery, then explicitly select the current Claude alias if it is not restored.",
|
|
49
|
-
"next.repairClaude": "No
|
|
51
|
+
"next.repairClaude": "No live, collision-free session is selectable. Resolve the issue shown in Sessions & routes, then refresh discovery.",
|
|
50
52
|
"next.registerCodex": "Inside the Codex task, run embassy register-codex --alias codex-<name>@<host>.",
|
|
51
53
|
"next.restoreCodex": "Re-run embassy register-codex --alias <alias> inside that exact Codex task.",
|
|
52
|
-
"next.reviewCompatibility": "Run embassy refresh-dashboard, then review Provider compatibility; discovery or registration cannot remove this write fence.",
|
|
53
54
|
"attention.eyebrow": "Needs attention",
|
|
54
55
|
"attention.title": "Resolve before sending",
|
|
55
56
|
"attention.count": "{count} active",
|
|
@@ -97,11 +98,8 @@ export const dashboardCopyEn = {
|
|
|
97
98
|
"guidance.unconfirmed.body": "The local transport write completed, but terminal native evidence was unavailable when the attempt settled.",
|
|
98
99
|
"guidance.unconfirmed.action": "Inspect the recipient before retrying; a retry could duplicate the message.",
|
|
99
100
|
"guidance.degraded.title": "The exchange is degraded",
|
|
100
|
-
"guidance.degraded.body": "Embassy retained a normalized
|
|
101
|
+
"guidance.degraded.body": "Embassy retained a normalized connector warning.",
|
|
101
102
|
"guidance.degraded.action": "Run embassy status. If a broker restart is necessary, queued mail survives and resumes exactly once; only a write in flight at the crash settles ambiguous.",
|
|
102
|
-
"guidance.providerIncompatible.title": "Provider build is write-fenced",
|
|
103
|
-
"guidance.providerIncompatible.body": "Embassy kept the broker and the other provider running. Provider compatibility names the bounded version evidence, this release's tested build, and the supported major.",
|
|
104
|
-
"guidance.providerIncompatible.action": "Run embassy refresh-dashboard, then review Provider compatibility. For an unsupported major, install an Embassy release that supports it; this broker remains running in the meantime.",
|
|
105
103
|
"guidance.generic.title": "Embassy reported a normalized alert",
|
|
106
104
|
"guidance.generic.body": "This safe code has no automatic repair mapped in the dashboard.",
|
|
107
105
|
"guidance.generic.action": "Review embassy status. Never automatically retry an ambiguous delivery.",
|
|
@@ -152,8 +150,6 @@ export const dashboardCopyEn = {
|
|
|
152
150
|
"watches.reason.pairRemoved": "consent edge removed",
|
|
153
151
|
"watches.reason.endpointRetired": "endpoint retired",
|
|
154
152
|
"watches.reason.trackingDisabled": "tracking disabled",
|
|
155
|
-
"watches.reason.legacyUpgrade": "closed during the v1.4 state upgrade",
|
|
156
|
-
"watches.reason.legacyDone": "legacy completion; actor unavailable",
|
|
157
153
|
"activity.eyebrow": "Activity ledger",
|
|
158
154
|
"activity.title": "Recent delivery evidence",
|
|
159
155
|
"activity.note": "Bodies and provider internals are never included.",
|
|
@@ -168,8 +164,10 @@ export const dashboardCopyEn = {
|
|
|
168
164
|
"activity.history.one": "1 stage",
|
|
169
165
|
"activity.history.many": "{count} stages",
|
|
170
166
|
"activity.meaning.delivered": "Reached its terminal delivered state. This does not mean the model read or acted on it.",
|
|
171
|
-
"activity.meaning.delivered.
|
|
172
|
-
"activity.meaning.delivered.
|
|
167
|
+
"activity.meaning.delivered.toClaude": "Embassy wrote the message to Claude's native mailbox immediately; it did not wait for the route to become idle. This does not mean the model read or acted on it.",
|
|
168
|
+
"activity.meaning.delivered.toCodex": "Codex App Server accepted the turn. This does not mean the model completed or acted on it.",
|
|
169
|
+
"activity.meaning.delivered.toDeepSeek": "DeepSeek accepted the delivery. This does not mean the model completed or acted on it.",
|
|
170
|
+
"activity.meaning.delivered.toGrok": "Grok Build accepted the delivery. This does not mean the model completed or acted on it.",
|
|
173
171
|
"activity.meaning.unconfirmed": "The transport write completed, but terminal native evidence was unavailable. Inspect the recipient before retrying.",
|
|
174
172
|
"activity.meaning.ambiguous": "The outcome is unknown after an uncertain write. Do not retry automatically.",
|
|
175
173
|
"activity.meaning.other": "This is the latest normalized delivery state.",
|
|
@@ -215,7 +213,6 @@ export const dashboardCopyEn = {
|
|
|
215
213
|
"column.host": "Host",
|
|
216
214
|
"column.provider": "Provider",
|
|
217
215
|
"column.state": "State",
|
|
218
|
-
"column.compatibility": "Compatibility",
|
|
219
216
|
"column.selection": "Selection",
|
|
220
217
|
"column.validation": "Validation",
|
|
221
218
|
"status.validated": "Validated",
|
|
@@ -223,25 +220,16 @@ export const dashboardCopyEn = {
|
|
|
223
220
|
"column.queue": "Queue",
|
|
224
221
|
"column.observed": "Observed",
|
|
225
222
|
"column.issue": "Issue",
|
|
226
|
-
"diagnostics.title": "
|
|
227
|
-
"diagnostics.note": "
|
|
223
|
+
"diagnostics.title": "System details",
|
|
224
|
+
"diagnostics.note": "Connector health, observed protocol metadata, last safe codes, counters, and bounded-display notes",
|
|
228
225
|
"diagnostics.connectors": "Connectors",
|
|
229
226
|
"diagnostics.connectors.empty": "No connector metadata is available.",
|
|
230
227
|
"diagnostics.connectors.caption": "Local provider connector status",
|
|
231
|
-
"diagnostics.
|
|
232
|
-
"diagnostics.
|
|
233
|
-
"diagnostics.
|
|
234
|
-
"diagnostics.
|
|
235
|
-
"diagnostics.
|
|
236
|
-
"diagnostics.supportedMajor": "Supported major",
|
|
237
|
-
"diagnostics.tier": "Tier",
|
|
238
|
-
"diagnostics.checkedAt": "Checked",
|
|
239
|
-
"diagnostics.failure": "Failure",
|
|
240
|
-
"compatibilityTier.certified": "Supported",
|
|
241
|
-
"compatibilityTier.schema_attested": "Live schema probes passed; build not tested by this release",
|
|
242
|
-
"compatibilityTier.schema_attested.writesCovered": "Live read and write probes passed; build not tested by this release",
|
|
243
|
-
"compatibilityTier.incompatible": "Incompatible",
|
|
244
|
-
"compatibilityTier.notDetected": "Not detected",
|
|
228
|
+
"diagnostics.codexDoctor.split_brain": "Desktop is on a private App Server; its tasks are unreachable by Embassy. Relaunch: /usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT",
|
|
229
|
+
"diagnostics.codexDoctor.orphaned": "The daemon is running but no Desktop client is attached; threads cannot load. Run: /usr/bin/open --env CODEX_APP_SERVER_USE_LOCAL_DAEMON=1 -a ChatGPT, then open your Codex task.",
|
|
230
|
+
"diagnostics.codexDoctor.attached": "Desktop is attached to the managed App Server.",
|
|
231
|
+
"diagnostics.codexDoctor.observation_stale": "Connector observation is stale; current health is not proven.",
|
|
232
|
+
"diagnostics.codexDoctor.unknown": "Desktop attachment could not be determined.",
|
|
245
233
|
"diagnostics.registry.title": "Registry observation",
|
|
246
234
|
"diagnostics.registry.entriesScanned": "Entries scanned",
|
|
247
235
|
"diagnostics.registry.parseableRecords": "Records with parseable required fields",
|
|
@@ -271,7 +259,7 @@ export const dashboardCopyEn = {
|
|
|
271
259
|
"diagnostics.omissions.connectors": "{count} connectors",
|
|
272
260
|
"diagnostics.omissions.peers": "{count} sessions",
|
|
273
261
|
"diagnostics.omissions.routes": "{count} routes",
|
|
274
|
-
"diagnostics.omissions.
|
|
262
|
+
"diagnostics.omissions.consentEdges": "{count} consent edges",
|
|
275
263
|
"diagnostics.omissions.progressWatches": "{count} progress watches",
|
|
276
264
|
"diagnostics.omissions.upstreamProgressWatchEvents": "{count} watch events before dashboard projection",
|
|
277
265
|
"diagnostics.omissions.progressWatchEvents": "{count} watch history rows",
|
|
@@ -285,52 +273,38 @@ export const dashboardCopyEn = {
|
|
|
285
273
|
"provider.claude": "Claude",
|
|
286
274
|
"provider.codex": "Codex",
|
|
287
275
|
"provider.deepseek": "DeepSeek",
|
|
276
|
+
"provider.grok": "Grok Build",
|
|
288
277
|
"health.offline": "Offline",
|
|
289
278
|
"health.connecting": "Connecting",
|
|
290
279
|
"health.healthy": "Healthy",
|
|
291
280
|
"health.degraded": "Degraded",
|
|
292
|
-
"health.
|
|
293
|
-
"health.meaning.healthy": "Connected and exchanging heartbeats.",
|
|
281
|
+
"health.meaning.healthy": "The local connector is currently available.",
|
|
294
282
|
"health.meaning.connecting": "Establishing the local connection.",
|
|
295
283
|
"health.meaning.degraded": "Connected with retained warnings.",
|
|
296
284
|
"health.meaning.offline": "Not reachable on this machine.",
|
|
297
|
-
"health.meaning.incompatible": "Required compatibility evidence is missing or failed; inspect Provider compatibility.",
|
|
298
|
-
"compatibility.unknown": "Unknown",
|
|
299
|
-
"compatibility.compatible": "Compatible",
|
|
300
|
-
"compatibility.incompatible": "Incompatible",
|
|
301
|
-
"compatibility.expired": "Expired",
|
|
302
|
-
"compatibility.meaning.compatible": "Required compatibility evidence passed.",
|
|
303
|
-
"compatibility.meaning.unknown": "Not yet verified.",
|
|
304
|
-
"compatibility.meaning.expired": "Verification lapsed; re-observe.",
|
|
305
|
-
"compatibility.meaning.incompatible": "Required compatibility evidence is missing or failed; inspect Provider compatibility.",
|
|
306
285
|
"route.stale": "Stale",
|
|
307
286
|
"route.idle": "Idle",
|
|
308
287
|
"route.busy": "Busy",
|
|
309
288
|
"route.awaitingApproval": "Awaiting approval",
|
|
310
289
|
"route.offline": "Offline",
|
|
311
|
-
"route.incompatible": "Incompatible",
|
|
312
290
|
"route.disabled": "Disabled",
|
|
313
|
-
"route.meaning.idle": "Enabled
|
|
314
|
-
"route.meaning.busy": "
|
|
291
|
+
"route.meaning.idle": "Enabled and ready to carry messages.",
|
|
292
|
+
"route.meaning.busy": "The endpoint is occupied; delivery timing follows the target provider's transport.",
|
|
315
293
|
"route.meaning.awaitingApproval": "Waiting on the provider's native approval.",
|
|
316
294
|
"route.meaning.stale": "No current endpoint proof; refresh and restore it.",
|
|
317
295
|
"route.meaning.offline": "The route's connector is unreachable.",
|
|
318
|
-
"route.meaning.incompatible": "Protocol versions do not match.",
|
|
319
296
|
"route.meaning.disabled": "Administratively disabled; not a fault.",
|
|
320
297
|
"peer.idle": "Idle",
|
|
321
298
|
"peer.busy": "Busy",
|
|
322
299
|
"peer.awaitingApproval": "Awaiting approval",
|
|
323
300
|
"peer.offline": "Offline",
|
|
324
|
-
"peer.incompatible": "Incompatible",
|
|
325
301
|
"peer.meaning.idle": "Live and selectable.",
|
|
326
302
|
"peer.meaning.busy": "Live but mid-turn.",
|
|
327
303
|
"peer.meaning.awaitingApproval": "Waiting on native approval.",
|
|
328
304
|
"peer.meaning.offline": "Discovered earlier, not currently live — a candidate, not an error.",
|
|
329
|
-
"peer.meaning.incompatible": "Cannot be selected: incompatible protocol.",
|
|
330
305
|
"peer.reason.aliasCollision": "Alias collision: rename one Claude session, then refresh discovery.",
|
|
331
306
|
"peer.reason.sessionCollision": "Session identity collision: close the duplicate session record, then refresh discovery.",
|
|
332
307
|
"peer.reason.discoveryIncomplete": "Discovery was incomplete. Refresh after Claude Code finishes publishing its session inventory.",
|
|
333
|
-
"peer.reason.incompatible": "This session is not compatible with the pinned Embassy protocol.",
|
|
334
308
|
"peer.reason.offline": "This session is not currently live.",
|
|
335
309
|
"time.atSnapshot": "At snapshot",
|
|
336
310
|
"time.beforeSnapshot": "{age} before snapshot",
|
|
@@ -411,15 +385,14 @@ export const dashboardCopyEn = {
|
|
|
411
385
|
"app.overview.broker": "Broker",
|
|
412
386
|
"app.overview.claudeConn": "Claude connector",
|
|
413
387
|
"app.overview.codexConn": "Codex connector",
|
|
414
|
-
"app.overview.compat": "Compatibility",
|
|
415
388
|
"app.overview.connectorMissing": "No connector reported",
|
|
416
389
|
"app.overview.node.claude.title": "claude",
|
|
417
390
|
"app.overview.node.claude.sub": "sessions",
|
|
418
391
|
"app.overview.node.codex.title": "codex",
|
|
419
392
|
"app.overview.node.codex.sub": "tasks",
|
|
420
|
-
"app.overview.count.codex": "{ready} ready · {total} registered
|
|
393
|
+
"app.overview.count.codex": "{ready} ready · {total} registered",
|
|
421
394
|
"app.overview.noPair.title": "No consent edge",
|
|
422
|
-
"app.overview.noPair.body": "Paired inbound accepts only senders connected
|
|
395
|
+
"app.overview.noPair.body": "Paired inbound accepts only senders connected by an explicit consent edge; every provider route follows those same edges.",
|
|
423
396
|
"app.overview.degradedEdge": "One shown consent edge is not ready.",
|
|
424
397
|
"app.overview.degradedEdges": "Some consent edges remain but are not ready.",
|
|
425
398
|
"app.overview.queueC2x": "Claude → Codex",
|
|
@@ -435,6 +408,9 @@ export const dashboardCopyEn = {
|
|
|
435
408
|
"app.deliveries.dir.label": "Direction",
|
|
436
409
|
"app.deliveries.dir.all": "All",
|
|
437
410
|
"app.deliveries.dir.codexToClaude": "Claude ← Codex",
|
|
411
|
+
"app.deliveries.fromProvider": "From provider",
|
|
412
|
+
"app.deliveries.toProvider": "To provider",
|
|
413
|
+
"app.deliveries.providerAll": "All providers",
|
|
438
414
|
"app.deliveries.view.label": "View",
|
|
439
415
|
"app.deliveries.view.byRoute": "By route pair",
|
|
440
416
|
"app.deliveries.view.flat": "Flat list",
|
|
@@ -458,22 +434,24 @@ export const dashboardCopyEn = {
|
|
|
458
434
|
"app.routes.codexRoutes": "Codex tasks",
|
|
459
435
|
"app.routes.pairs": "Consent edges",
|
|
460
436
|
"app.routes.pairDescription": "Consent edge: {claude} ↔ {codex}",
|
|
437
|
+
"app.routes.unpairedProvider": "{provider}: {count} ready without an edge",
|
|
438
|
+
"app.routes.consentEndpoint": "{provider} · {alias}",
|
|
439
|
+
"app.routes.consentEdge": "{left} ↔ {right}",
|
|
461
440
|
"app.routes.pairState.degraded": "Degraded",
|
|
462
441
|
"app.routes.pairState.unavailable": "Unavailable",
|
|
463
442
|
"app.routes.pairDegradedReason": "Consent edge retained; one or both routes need attention.",
|
|
464
443
|
"app.routes.pairUnavailableReason": "Consent edge retained; one or both saved route records are unavailable in this snapshot.",
|
|
465
444
|
"app.routes.pairSummary": "Ready: {ready} · Consent edges: {total}",
|
|
466
|
-
"app.routes.unpairedSummary": "
|
|
467
|
-
"app.routes.pairCmd.consequence": "Create consent only between
|
|
468
|
-
"app.routes.unpairCmd.consequence": "Remove consent only between
|
|
445
|
+
"app.routes.unpairedSummary": "Ready endpoints without consent remain visible in their provider rows.",
|
|
446
|
+
"app.routes.pairCmd.consequence": "Create consent only between these two named provider endpoints. Existing edges stay unchanged.",
|
|
447
|
+
"app.routes.unpairCmd.consequence": "Remove consent only between these two named provider endpoints. Work on adjacent edges stays active.",
|
|
469
448
|
"app.routes.selectCmd.title": "Create a consent edge",
|
|
470
|
-
"app.routes.selectCmd.consequence": "Create one consent edge between
|
|
449
|
+
"app.routes.selectCmd.consequence": "Create one consent edge between the two named provider endpoints. Other edges stay unchanged.",
|
|
471
450
|
"app.routes.selectCmd.consequenceOpen": "Create one outbound destination edge. Open inbound still accepts any live Claude session under this OS user.",
|
|
472
451
|
"app.routes.unselectCmd.consequence": "Remove only this consent edge. Work on adjacent edges stays active.",
|
|
473
452
|
"app.routes.unselectCmd.consequenceOpen": "Remove only this outbound edge. Open inbound remains enabled for every live Claude session under this OS user.",
|
|
474
453
|
"app.routes.refreshCmd": "Re-read local discovery and rewrite the static dashboard file.",
|
|
475
454
|
"app.routes.removeStaleCodex.consequence": "Remove only {alias} if the broker confirms that the registration is stale and its endpoint generation is dead. Its consent edges are removed; a live registration is never touched.",
|
|
476
|
-
"app.routes.monitorOnlyReason": "Monitor only — writes are disabled for this route by CODEX_WRITES_DISABLED.",
|
|
477
455
|
"app.routes.noPeers": "No Claude session was discovered in this snapshot.",
|
|
478
456
|
"app.routes.noCodex": "No Codex task is registered.",
|
|
479
457
|
"app.routes.successions": "Succession history",
|
|
@@ -485,9 +463,8 @@ export const dashboardCopyEn = {
|
|
|
485
463
|
"app.routes.queueDepth": "Queue depth",
|
|
486
464
|
"app.routes.counters": "Route counters",
|
|
487
465
|
"app.routes.registered": "registered",
|
|
488
|
-
"app.routes.monitorOnly": "monitor-only",
|
|
489
466
|
"app.routes.registerHint": "Registration is not a button: it must run inside the Codex task to inherit its identity. Ask your agent to run:",
|
|
490
|
-
"app.routes.noPairInline": "no consent edge — pair
|
|
467
|
+
"app.routes.noPairInline": "no consent edge — pair two ready endpoints from different providers",
|
|
491
468
|
"app.omitted.pairs": "{count} additional consent edges are omitted.",
|
|
492
469
|
"app.activity.title": "Event stream — bounded, most recent first",
|
|
493
470
|
"app.activity.kinds.all": "All kinds",
|
|
@@ -511,15 +488,13 @@ export const dashboardCopyEn = {
|
|
|
511
488
|
"app.activity.operation.rejected": "rejected",
|
|
512
489
|
"app.activity.limited": "The operator-action ledger lasts for this broker process. Operator-action rows carry no message bodies; Deliveries shows retained bodies by design. Full capability tokens are never shown.",
|
|
513
490
|
"app.activity.empty": "Nothing in this window. Events appear as the broker produces them; try",
|
|
514
|
-
"app.diag.versions": "
|
|
515
|
-
"app.diag.versions.caption": "
|
|
491
|
+
"app.diag.versions": "Provider connectors",
|
|
492
|
+
"app.diag.versions.caption": "Best-effort observations for local provider connectors",
|
|
516
493
|
"app.diag.col.provider": "Provider",
|
|
517
494
|
"app.diag.col.host": "Host",
|
|
518
495
|
"app.diag.col.protocol": "Protocol",
|
|
519
496
|
"app.diag.col.version": "Version",
|
|
520
|
-
"app.diag.
|
|
521
|
-
"app.diag.versions.rangeAbsent": "Connector rows show observed protocol tokens. Provider compatibility below shows the observed version, this release's tested build, the supported major, and probe results.",
|
|
522
|
-
"app.diag.providerCompatibility.title": "Provider compatibility",
|
|
497
|
+
"app.diag.versions.rangeAbsent": "Protocol and version are observed metadata, not routing authority. Health and the last safe code describe the current connector.",
|
|
523
498
|
"app.diag.lease.title": "Lease / instance",
|
|
524
499
|
"app.diag.lease.absent": "Lease state is not carried by the live contract. Read the local posture with the command below.",
|
|
525
500
|
"app.diag.limits": "Limits & pressure",
|