Synced from monorepo
Changes: - Non-blocking coding-data sharing upsell banner - Consolidate remediation in Doctor - Auto mode defers fail-closed gate asks to the classifier - Coalesce marketplace list fetches - Allow removing a marketplace source by name - Contain hung git marketplace sources (timeouts, non-blocking refresh, unbrick modal) - Label failed workspace RPCs with error_kind - Drop redundant explicit tonic/prost deps from xai-grok-shell - Report real exit codes for completed background shells - Narrow the date-rollover reminder to date-bearing templates - Wire toolOverrides through the session and agent - Security: Bash(git:*) allowlist matches whole command chain by prefix - Split prompt-trigger telemetry and record classifier provenance - Raise connectors-manager timeout to 60s - Auto classifier honors recorded approvals for repeat actions - Apply doctor fixes in the TUI - Auto-mode classifier timeouts prompt instead of silently denying - Scope subagent completion drains to the owning session - Add the toolOverrides wire types - Set client_identifier=grok-agent-sdk - Accept both spellings of the workspace-teleport kill switch - Persist one-shot occurrence journal - Stop turns that poll the exact same tool call 16x in a row - Copy compaction checkpoint files when forking sessions - Auto-focus permission prompt from scrollback - Esc cancels the running turn in non-vim and minimal modes - List Ctrl+Z undo and redo in keyboard shortcuts - Out-of-process macOS mic capture - Show active auth mode on session-info - Install the npm binary under $GROK_HOME - Remove hover/click dead zones between dashboard items - Route startup warnings to doctor - Document [feedback.user] author identity config - Extend bang command timeout - Close combine-queued edit-hold race - Integrate relocation recovery - Expose privacy notice rollout flag - Break harness discovery ref cycle so connections can idle-evict - Shift/Alt+Enter inserts newline when editing a queued prompt - Gate project Claude permissions on folder trust - Echo response.create.event_id on response.created - Toast when session creation fails from disk full - Add shared test process lifecycle - Enable dynamic workflows by default - Add relocation transaction state machine - Add shared test sandbox - Surface auth failures on model-switch compact - Persist durable scheduler expiry - Confirm before removing extensions-modal items - Re-run compact and prompt after login when compact hit expired auth - Recap sends hosted tools under backend search
This commit is contained in:
parent
3af4d5d398
commit
a5727c5960
482 changed files with 37627 additions and 13402 deletions
|
|
@ -82,5 +82,54 @@ pub enum WorkspaceError {
|
|||
ToolsetExternallyOwned(String),
|
||||
}
|
||||
|
||||
impl WorkspaceError {
|
||||
/// Low-cardinality `error_kind` metric label: the variant name in
|
||||
/// snake_case; `DeployError` reports its per-kind `wire_code()`.
|
||||
pub fn metric_kind(&self) -> &'static str {
|
||||
match self {
|
||||
Self::ParentSessionNotFound(_) => "parent_session_not_found",
|
||||
Self::SessionNotFound(_) => "session_not_found",
|
||||
Self::SessionAlreadyExists(_) => "session_already_exists",
|
||||
Self::EmptyAgentId => "empty_agent_id",
|
||||
Self::CannotDropMainSession => "cannot_drop_main_session",
|
||||
Self::Finalize(_) => "finalize",
|
||||
Self::CapabilityWidening { .. } => "capability_widening",
|
||||
Self::Unauthorized { .. } => "unauthorized",
|
||||
Self::TurnActive(_) => "turn_active",
|
||||
Self::MaxDepthExceeded { .. } => "max_depth_exceeded",
|
||||
Self::JoinError(_) => "join_error",
|
||||
Self::InvalidHunkAction(_) => "invalid_hunk_action",
|
||||
Self::HunkActionFailed(_) => "hunk_action_failed",
|
||||
Self::HubError(_) => "hub_error",
|
||||
Self::DeployError { kind, .. } => kind.wire_code(),
|
||||
Self::ShuttingDown => "shutting_down",
|
||||
Self::ToolsetExternallyOwned(_) => "toolset_externally_owned",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Convenience alias for the workspace's primary `Result` type.
|
||||
pub type WorkspaceResult<T> = Result<T, WorkspaceError>;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::WorkspaceError;
|
||||
use xai_grok_workspace_types::rpc::deploy::DeployError;
|
||||
|
||||
#[test]
|
||||
fn metric_kind_reports_deploy_wire_code() {
|
||||
for kind in DeployError::ALL {
|
||||
let err = WorkspaceError::DeployError {
|
||||
kind,
|
||||
message: "m".into(),
|
||||
};
|
||||
assert_eq!(err.metric_kind(), kind.wire_code());
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn metric_kind_is_message_free() {
|
||||
let err = WorkspaceError::HubError("something wildly unique 12345".into());
|
||||
assert_eq!(err.metric_kind(), "hub_error");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue