From c0cf526ee31f7cb9a50d98123e756e0bbe54fe59 Mon Sep 17 00:00:00 2001 From: Oz Date: Fri, 31 Jul 2026 17:38:03 +0000 Subject: [PATCH 1/2] docs: missing_docs audit bookkeeping and OpenAPI path-parsing fix Fix parse_openapi_paths() to accept YAML-quoted path keys. Every parameterized endpoint looked absent from the spec, producing 6 false positives this run. Map GeminiEnterprise (dogfood -> GA), the three new TUI-only slash commands, agents.voice.voice_input_hold_key, and the x-internal messaging/events endpoints. Prune the two removed slash commands. Regenerate the surface snapshot. Co-Authored-By: Oz --- .../references/feature_surface_map.md | 38 +++++++++++++++++-- .../references/surface_snapshot.json | 13 +++++-- .../skills/missing_docs/scripts/audit_docs.py | 13 +++++-- 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/.agents/skills/missing_docs/references/feature_surface_map.md b/.agents/skills/missing_docs/references/feature_surface_map.md index fe23dd7df..5f2dc2aa4 100644 --- a/.agents/skills/missing_docs/references/feature_surface_map.md +++ b/.agents/skills/missing_docs/references/feature_surface_map.md @@ -201,6 +201,9 @@ NamedAgents -> src/content/docs/platform/agents.mdx # Inference: BYOK and custom endpoints SoloUserByok -> src/content/docs/agent-platform/inference/bring-your-own-api-key.mdx +# Gemini Enterprise (Vertex AI) BYOLLM routing. Promoted dogfood -> GA; the +# feature has a dedicated Enterprise page. +GeminiEnterprise -> src/content/docs/enterprise/enterprise-features/byollm-gemini-enterprise.mdx # CustomInferenceEndpoints flag was removed after the feature stabilized (GA); # the feature remains documented at inference/custom-inference-endpoint.mdx. # Connect a SuperGrok subscription instead of pasting an xAI API key. @@ -379,6 +382,24 @@ GET /factory/scorers -> internal POST /factory/scorers -> internal GET /factory/scorers/{scorer_id}/results -> internal +# Orchestration messaging and lifecycle-event endpoints. These are marked +# `x-internal: true` in warp-server's canonical spec (public_api/openapi.yaml), +# so the publish filter deliberately strips them from the public docs copy. +# They back the agent-to-agent messaging tools and the documented +# `oz run message` CLI, but the REST surface itself is not part of the released +# public Oz Agent API. Revisit if warp-server drops the x-internal marker. +POST /agent/messages -> internal +GET /agent/messages/{run_id} -> internal +POST /agent/messages/{id}/read -> internal +POST /agent/messages/{id}/delivered -> internal +GET /agent/events -> internal +POST /agent/events/{run_id} -> internal + +# SSE lifecycle-event stream consumed by the Warp client and the Oz web app. +# Absent from warp-server's canonical public spec entirely, and registered only +# on the RTC host, so it is not a released public API operation. +GET /agent/events/stream -> internal + # Agent Memory REST API — research preview (gating flag AIMemories is non-GA), # deferred via `gated:` and auto-surfaces when AIMemories goes GA. See # "Public vs. private surfaces" in SKILL.md. @@ -423,12 +444,16 @@ GET /memory_stores/{uid}/memories/{memoryUid}/versions -> gated:AIMemories # - /status: show session and account status # - /clear: clear the transcript and start a new conversation # - /statusline: configure the Warp Agent CLI statusline (agents.statusline, internal) -# - /add-api-key, /clear-provider-api-key: store/remove a model-provider API key +# - /reset-statusline: restore the statusline default items and ordering +# - /api-keys: view and manage model-provider API keys. Replaces the removed +# /add-api-key and /clear-provider-api-key pair, whose entries were pruned. +# - /vim-mode: toggle Vim mode in the Warp Agent CLI input /status -> internal /clear -> internal /statusline -> internal -/add-api-key -> internal -/clear-provider-api-key -> internal +/reset-statusline -> internal +/api-keys -> internal +/vim-mode -> internal # TUI-only color-theme picker (Warp Agent CLI surface, SlashCommandSurfaces::TuiOnly # in static_commands/commands.rs). It sets the Warp Agent CLI theme # (appearance.theme, mapped internal below) and isn't present in the GUI, so it @@ -474,6 +499,13 @@ appearance.zero_state.object -> internal appearance.zero_state.rotation_period_seconds -> internal appearance.zero_state.extrusion_depth -> internal +# Warp Agent CLI-only (crates/warp_tui) push-to-talk modifier for voice input +# (surface: SettingSurfaces::TUI in app/src/settings/tui_voice.rs). The GUI knob +# is the separate agents.voice.voice_input_toggle_key, which is documented in the +# all-settings reference. Paired with the /voice Warp Agent CLI slash command +# mapped internal above. +agents.voice.voice_input_hold_key -> internal + ## Unlisted docs pages to ignore # Pages intentionally absent from src/sidebar.ts (one slug per line, e.g. diff --git a/.agents/skills/missing_docs/references/surface_snapshot.json b/.agents/skills/missing_docs/references/surface_snapshot.json index 0564a2627..94e978f80 100644 --- a/.agents/skills/missing_docs/references/surface_snapshot.json +++ b/.agents/skills/missing_docs/references/surface_snapshot.json @@ -127,7 +127,7 @@ "FullScreenZenMode": "ga", "FullSourceCodeEmbedding": "dogfood", "GPTConfigurableContextWindow": "dogfood", - "GeminiEnterprise": "dogfood", + "GeminiEnterprise": "ga", "GeminiNotifications": "dogfood", "GetStartedTab": "ga", "GitCredentialRefresh": "ga", @@ -917,20 +917,20 @@ "PUT /api/v1/memory_stores/{uid}/memories/{memoryUid}" ], "slash_commands": [ - "/add-api-key", "/add-mcp", "/add-prompt", "/add-rule", "/agent", + "/api-keys", "/auto-approve", "/changelog", "/clear", - "/clear-provider-api-key", "/cloud-agent", "/compact", "/compact-and", "/continue-locally", "/conversations", + "/copy-debugging-id", "/cost", "/create-environment", "/create-new-project", @@ -967,6 +967,7 @@ "/remote-control", "/rename-conversation", "/rename-tab", + "/reset-statusline", "/rewind", "/set-tab-color", "/skills", @@ -975,6 +976,7 @@ "/theme", "/usage", "/view-logs", + "/vim-mode", "/voice" ], "settings": { @@ -1000,6 +1002,7 @@ "agents.third_party.submit_on_ctrl_enter": "always_on", "agents.usage_display_mode": "always_on", "agents.voice.voice_input_enabled": "always_on", + "agents.voice.voice_input_hold_key": "always_on", "agents.voice.voice_input_language": "always_on", "agents.voice.voice_input_toggle_key": "always_on", "agents.warp_agent.active_ai.agent_mode_query_suggestions_enabled": "always_on", @@ -1019,6 +1022,7 @@ "agents.warp_agent.input.show_model_selectors_in_prompt": "always_on", "agents.warp_agent.is_any_ai_enabled": "always_on", "agents.warp_agent.other.agent_attribution_enabled": "always_on", + "agents.warp_agent.other.auto_approve_bypasses_command_denylist": "always_on", "agents.warp_agent.other.auto_handoff_on_sleep_enabled": "always_on", "agents.warp_agent.other.cloud_agent_computer_use_enabled": "always_on", "agents.warp_agent.other.default_prompt_submission_mode": "ga", @@ -1266,6 +1270,7 @@ "read_skill", "read_todos", "remove_todos", + "report_external_reference", "report_intent", "report_outcome", "report_pr", @@ -1311,5 +1316,5 @@ "verify-ui-change-in-cloud": "dogfood", "warpctrl": "bundled" }, - "changelog_last_version": "2026.07.23" + "changelog_last_version": "2026.07.31" } diff --git a/.agents/skills/missing_docs/scripts/audit_docs.py b/.agents/skills/missing_docs/scripts/audit_docs.py index 8afed9df8..16fa5b6cb 100755 --- a/.agents/skills/missing_docs/scripts/audit_docs.py +++ b/.agents/skills/missing_docs/scripts/audit_docs.py @@ -939,10 +939,17 @@ def _normalize_path_params(path: str) -> str: def parse_openapi_paths(openapi_text: str) -> set[str]: - """Extract normalized path keys from the OpenAPI YAML text.""" + """Extract normalized path keys from the OpenAPI YAML text. + + Path keys containing `{param}` are usually emitted quoted (YAML treats a + leading `{` as a flow mapping), so both ` /agent/runs:` and + ` '/agent/runs/{runId}':` must be recognized. Missing the quoted form made + every parameterized endpoint look absent from the spec. + """ paths = set() - for match in re.finditer(r"(?m)^\s{2}(/[^\s:]+):", openapi_text): - paths.add(_normalize_path_params(match.group(1))) + for match in re.finditer(r"""(?m)^\s{2}(?:'(/[^']+)'|"(/[^"]+)"|(/[^\s:'"]+)):""", openapi_text): + path = match.group(1) or match.group(2) or match.group(3) + paths.add(_normalize_path_params(path)) return paths # --------------------------------------------------------------------------- From dc2d5047740b026638f8c2602efc30d9ff9093c9 Mon Sep 17 00:00:00 2001 From: Oz Date: Fri, 31 Jul 2026 17:42:22 +0000 Subject: [PATCH 2/2] docs: drop surface map entries already covered by #430 Narrow this PR to the audit-script parser fix, the API internal mappings, and the snapshot regen, so it doesn't conflict with #430's edits to the same regions of feature_surface_map.md. Co-Authored-By: Oz --- .../references/feature_surface_map.md | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/.agents/skills/missing_docs/references/feature_surface_map.md b/.agents/skills/missing_docs/references/feature_surface_map.md index 5f2dc2aa4..1f012b017 100644 --- a/.agents/skills/missing_docs/references/feature_surface_map.md +++ b/.agents/skills/missing_docs/references/feature_surface_map.md @@ -201,9 +201,6 @@ NamedAgents -> src/content/docs/platform/agents.mdx # Inference: BYOK and custom endpoints SoloUserByok -> src/content/docs/agent-platform/inference/bring-your-own-api-key.mdx -# Gemini Enterprise (Vertex AI) BYOLLM routing. Promoted dogfood -> GA; the -# feature has a dedicated Enterprise page. -GeminiEnterprise -> src/content/docs/enterprise/enterprise-features/byollm-gemini-enterprise.mdx # CustomInferenceEndpoints flag was removed after the feature stabilized (GA); # the feature remains documented at inference/custom-inference-endpoint.mdx. # Connect a SuperGrok subscription instead of pasting an xAI API key. @@ -444,16 +441,12 @@ GET /memory_stores/{uid}/memories/{memoryUid}/versions -> gated:AIMemories # - /status: show session and account status # - /clear: clear the transcript and start a new conversation # - /statusline: configure the Warp Agent CLI statusline (agents.statusline, internal) -# - /reset-statusline: restore the statusline default items and ordering -# - /api-keys: view and manage model-provider API keys. Replaces the removed -# /add-api-key and /clear-provider-api-key pair, whose entries were pruned. -# - /vim-mode: toggle Vim mode in the Warp Agent CLI input +# - /add-api-key, /clear-provider-api-key: store/remove a model-provider API key /status -> internal /clear -> internal /statusline -> internal -/reset-statusline -> internal -/api-keys -> internal -/vim-mode -> internal +/add-api-key -> internal +/clear-provider-api-key -> internal # TUI-only color-theme picker (Warp Agent CLI surface, SlashCommandSurfaces::TuiOnly # in static_commands/commands.rs). It sets the Warp Agent CLI theme # (appearance.theme, mapped internal below) and isn't present in the GUI, so it @@ -499,13 +492,6 @@ appearance.zero_state.object -> internal appearance.zero_state.rotation_period_seconds -> internal appearance.zero_state.extrusion_depth -> internal -# Warp Agent CLI-only (crates/warp_tui) push-to-talk modifier for voice input -# (surface: SettingSurfaces::TUI in app/src/settings/tui_voice.rs). The GUI knob -# is the separate agents.voice.voice_input_toggle_key, which is documented in the -# all-settings reference. Paired with the /voice Warp Agent CLI slash command -# mapped internal above. -agents.voice.voice_input_hold_key -> internal - ## Unlisted docs pages to ignore # Pages intentionally absent from src/sidebar.ts (one slug per line, e.g.