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
|
|
@ -191,7 +191,7 @@ impl WorkspaceClient {
|
|||
}
|
||||
let tool_id = xai_tool_protocol::ToolId::new(WORKSPACE_RPC_TOOL_ID)
|
||||
.expect("constant tool id is valid");
|
||||
let args = serde_json::json!({ "method" : method, "params" : params });
|
||||
let args = serde_json::json!({ "method": method, "params": params });
|
||||
tracing::debug!(method, "WorkspaceClient::rpc");
|
||||
let fut = async {
|
||||
let mut stream = self
|
||||
|
|
@ -582,28 +582,28 @@ mod tests {
|
|||
ToolDescription::new(WORKSPACE_RPC_TOOL_ID, "fake workspace rpc")
|
||||
}
|
||||
async fn run(&self, _ctx: ToolCallContext, args: Self::Args) -> Result<RawOut, ToolError> {
|
||||
let ok = |v: serde_json::Value| Ok(RawOut(serde_json::json!({ "ok" : v })));
|
||||
let ok = |v: serde_json::Value| Ok(RawOut(serde_json::json!({ "ok": v })));
|
||||
match args.method.as_str() {
|
||||
"workspace.info" => ok(serde_json::json!(
|
||||
{ "os" : "linux", "shell" : "bash", "cwd" : "/workspace", }
|
||||
)),
|
||||
"workspace.info" => ok(serde_json::json!({
|
||||
"os": "linux", "shell": "bash", "cwd": "/workspace",
|
||||
})),
|
||||
"workspace.git_status" => ok(serde_json::json!("On branch main")),
|
||||
"workspace.discover_skills" => ok(serde_json::json!(
|
||||
[{ "name" : "my-skill", "description" : "A test skill",
|
||||
"path" : "/workspace/.grok/skills/my-skill/SKILL.md", "scope"
|
||||
: "local", }]
|
||||
)),
|
||||
"workspace.discover_agents_md" => ok(serde_json::json!(
|
||||
[{ "file_name" : "AGENTS.md", "file_path" :
|
||||
"/workspace/AGENTS.md", "content" : "# Project instructions",
|
||||
}]
|
||||
)),
|
||||
"workspace.discover_skills" => ok(serde_json::json!([{
|
||||
"name": "my-skill",
|
||||
"description": "A test skill",
|
||||
"path": "/workspace/.grok/skills/my-skill/SKILL.md",
|
||||
"scope": "local",
|
||||
}])),
|
||||
"workspace.discover_agents_md" => ok(serde_json::json!([{
|
||||
"file_name": "AGENTS.md",
|
||||
"file_path": "/workspace/AGENTS.md",
|
||||
"content": "# Project instructions",
|
||||
}])),
|
||||
"workspace.echo_params" => ok(args.params),
|
||||
"workspace.err" => Ok(RawOut(serde_json::json!(
|
||||
{ "err" : { "code" : "session_not_found", "message" :
|
||||
"ghost" }, }
|
||||
))),
|
||||
"workspace.malformed" => Ok(RawOut(serde_json::json!({ "neither" : true }))),
|
||||
"workspace.err" => Ok(RawOut(serde_json::json!({
|
||||
"err": { "code": "session_not_found", "message": "ghost" },
|
||||
}))),
|
||||
"workspace.malformed" => Ok(RawOut(serde_json::json!({ "neither": true }))),
|
||||
"workspace.slow" => {
|
||||
tokio::time::sleep(Duration::from_secs(60)).await;
|
||||
ok(serde_json::Value::Null)
|
||||
|
|
@ -667,7 +667,7 @@ mod tests {
|
|||
type Response = Value;
|
||||
}
|
||||
let echoed = client().rpc(&EchoReq { flag: true, n: 7 }).await.unwrap();
|
||||
assert_eq!(echoed, serde_json::json!({ "flag" : true, "n" : 7 }));
|
||||
assert_eq!(echoed, serde_json::json!({ "flag": true, "n": 7 }));
|
||||
}
|
||||
#[tokio::test]
|
||||
async fn err_envelope_maps_to_rpc_error() {
|
||||
|
|
@ -780,7 +780,7 @@ mod tests {
|
|||
}
|
||||
#[tokio::test]
|
||||
async fn consume_stream_terminal_returns_ok() {
|
||||
let value = serde_json::json!({ "result" : "hello" });
|
||||
let value = serde_json::json!({"result": "hello"});
|
||||
let typed = TypedToolOutput::from_value(ToolId::new("t").unwrap(), value.clone());
|
||||
let mut stream = xai_tool_runtime::terminal_only(Ok(typed));
|
||||
assert_eq!(
|
||||
|
|
|
|||
Loading…
Reference in a new issue